WEBVTT

1
00:00:06.440 --> 00:00:11.640
Hello everybody, Welcome to another exciting
episode of JavaScript Jabber. I am Steve

2
00:00:11.759 --> 00:00:14.599
Edwards, the host with the Facebook
Radio as you can see, and the

3
00:00:14.679 --> 00:00:20.079
voice for being the mind. But
I'm still your host today due to last

4
00:00:20.079 --> 00:00:26.199
minute time changes, we won't mention
why I am here with mister Eric Hanchett

5
00:00:26.519 --> 00:00:29.960
of Amazon Aws. You might have
hearved Amazon. How are you doing,

6
00:00:30.079 --> 00:00:33.520
Eric? Hey, thanks for having
me on. I appreciate it, and

7
00:00:34.520 --> 00:00:41.039
thanks for being amazing with the time
slot too, I appreciate it. No

8
00:00:41.159 --> 00:00:45.320
worries for those of you who might
have had the privilege and honor of listening

9
00:00:45.320 --> 00:00:49.079
to Views on View. I've talked
to Eric a few times. Eric is

10
00:00:49.200 --> 00:00:53.880
rather prolific in the view community,
and you can literally say that he wrote

11
00:00:53.880 --> 00:00:58.159
the book on View, or at
least a book on view back in the

12
00:00:58.240 --> 00:01:04.120
days of View two, and now
works for Amazon Web Services incorporating JavaScript and

13
00:01:06.239 --> 00:01:10.840
into AWS and we're going to talk
about that. So and you also might

14
00:01:10.879 --> 00:01:15.159
know him from his program with Eric
channel on YouTube and training courses and many

15
00:01:15.200 --> 00:01:19.920
other things he's done. So welcome
Eric, Hey, thanks for having me.

16
00:01:19.959 --> 00:01:23.079
Steve, Yeah, yeah, I
have. I Me and Steve.

17
00:01:23.719 --> 00:01:27.200
Steve hosted the thes on View podcast
for many years and I got to be

18
00:01:27.319 --> 00:01:33.040
a coast for a little bit of
that and that was amazing. But I

19
00:01:33.120 --> 00:01:37.879
am not here just for View.
I'm here for next, React, Angular

20
00:01:37.920 --> 00:01:42.079
Astro. Now I am today,
I am every framework, a fan of

21
00:01:42.120 --> 00:01:48.319
every framework. And before we go
on, for those of you watching this

22
00:01:48.439 --> 00:01:51.359
or seeing the video later, we
will try not to hold it against Eric

23
00:01:51.439 --> 00:01:56.400
that he's wearing a San Francisco forty
nine ers jersey and just leave it at

24
00:01:56.439 --> 00:02:01.680
that. So anyway, okay,
so let's talk so for history purposes for

25
00:02:01.719 --> 00:02:05.239
a while, when Eric was getting
up and going, he worked for an

26
00:02:05.239 --> 00:02:09.159
insurance company and then doing this always
cracked me up. You did all these

27
00:02:09.280 --> 00:02:15.000
view videos and view stuff, but
you were doing Angular during the day at

28
00:02:15.080 --> 00:02:21.400
work. And then he moved over
to Amazon and started working there. So

29
00:02:21.520 --> 00:02:24.479
why don't you tell us what you
do at Amazon and how you incorporate JavaScript

30
00:02:24.479 --> 00:02:30.479
into what they're doing. Yeah,
for sure, I'll take one step back,

31
00:02:30.560 --> 00:02:32.599
just add a little little bit more
to that story. I was working

32
00:02:34.319 --> 00:02:38.479
at an insurance company more like an
insurance insurre tech startup, and I did

33
00:02:38.520 --> 00:02:42.879
push a lot for them to use
View, but they were dead set on

34
00:02:43.039 --> 00:02:46.960
using Angular. They had a Java
back end, so we ended up going

35
00:02:46.960 --> 00:02:50.400
with Angular. Luckily, before that, I got to work at a job

36
00:02:50.439 --> 00:02:53.400
where I did a lot of Java, but I kind of got to choose

37
00:02:53.439 --> 00:02:54.599
my front end, so I got
to kind of dabble in a lot of

38
00:02:54.639 --> 00:02:59.719
things. So I had a little
bit of time working on Ember, which

39
00:02:59.800 --> 00:03:04.080
was really fun. Think for the
most part, we did just basic jQuery

40
00:03:04.080 --> 00:03:07.919
and HTML in the job before the
insurance company, but it was fun to

41
00:03:08.000 --> 00:03:13.560
kind of test them all out.
So when I moved over to AWS Amazon

42
00:03:13.599 --> 00:03:17.080
Web Services, I was a part
of a team, a front end engineering

43
00:03:17.120 --> 00:03:23.080
team that used view. So that's
one thing I kind of surprised some people

44
00:03:23.080 --> 00:03:27.400
when I talked to them about AWS. First is when you think of AWS,

45
00:03:27.439 --> 00:03:30.400
you probably think of deva, server, lists, Lambda, functions,

46
00:03:30.159 --> 00:03:35.240
infrastructures, code, Kubernetes, and
it's fun to talk to them about Well.

47
00:03:35.400 --> 00:03:38.240
Actually, ABS is a huge org. We have lots of different teams,

48
00:03:38.280 --> 00:03:42.080
and one of the teams deals a
lot with front end. I mean,

49
00:03:42.080 --> 00:03:45.840
obviously there's the front end Amazon dot
Com website, but we actually create

50
00:03:45.879 --> 00:03:49.599
tools for front end developers, and
so I was a part of a team

51
00:03:50.240 --> 00:03:57.120
we called ourselves the Amplifying UI team
that created these tools for developers to connect

52
00:03:57.120 --> 00:04:00.879
to AWS services, and one of
the most more popular ones in there was

53
00:04:01.120 --> 00:04:09.360
something called Cognito and a part of
aw's Amplify, which I to give that

54
00:04:09.400 --> 00:04:15.280
a definition is that's our amplify.
Our definition, our kind of motto for

55
00:04:15.319 --> 00:04:21.240
ABUS Amplify is to help front end
developers create full stack websites using AWS services.

56
00:04:21.920 --> 00:04:27.040
And so when I was using Amplify, or when I joined that team,

57
00:04:27.199 --> 00:04:32.240
we created a UI components library that
made it easier to connect. We

58
00:04:32.279 --> 00:04:39.079
had something called Connected Components, and
those were made it easier to do common

59
00:04:39.120 --> 00:04:41.600
things that you would do on AWS, and one of them was to create

60
00:04:42.040 --> 00:04:46.160
an authenticator and that allowed users to
sign in, sign out, use multi

61
00:04:46.160 --> 00:04:53.199
factor authentication, use federated logins.
So I was responsible for creating the View

62
00:04:53.319 --> 00:04:59.319
version of that, and it was
a really fun year year and a half

63
00:04:59.439 --> 00:05:03.680
working directly in View creating this open
source library that is used by tens of

64
00:05:03.680 --> 00:05:08.920
thousands of developers, which is awesome. And then about it. Bout a

65
00:05:08.959 --> 00:05:13.439
year ago, I moved into more
developer advocacy, which is what I do

66
00:05:13.560 --> 00:05:17.120
now. And so what I do
my job now is to talk to as

67
00:05:17.120 --> 00:05:23.319
many people as I can about AWS
amplify, its services, how I can

68
00:05:23.439 --> 00:05:29.279
find solutions for people, and just
kind of get the word out that AWS

69
00:05:29.360 --> 00:05:33.759
Amplify and ADABS in general is just
not DevOps and back end only, and

70
00:05:33.879 --> 00:05:38.720
that Amazon dot Com website you order
stuff for, but that we have amazing

71
00:05:38.959 --> 00:05:45.360
developer tools for everybody. So one
thing we clarified when we first talked about

72
00:05:45.399 --> 00:05:48.720
this was that basically, this isn't
a front end for you if you want

73
00:05:49.399 --> 00:05:53.160
tools to use if you want to
build sort of your own back end.

74
00:05:53.160 --> 00:05:59.639
The idea is that you're using AWS
services to build your web application or site

75
00:05:59.639 --> 00:06:02.319
for whatever it is, and so
these tools make it a lot easier to

76
00:06:02.319 --> 00:06:05.120
do that, so you're not having
to go in and manually configure a whole

77
00:06:05.120 --> 00:06:09.399
bunch of stuff. Is that a
fair statement, right, Yeah, we

78
00:06:09.480 --> 00:06:13.160
have sane defaults. So let me
get a little bit more specifics that have

79
00:06:13.199 --> 00:06:16.240
been kind of five hundred miles up
right. Now, let's go down a

80
00:06:16.240 --> 00:06:19.360
little bit close to the service.
So, for example, we have a

81
00:06:19.399 --> 00:06:25.120
service called Studio, which is like
a drag and drop interface to create your

82
00:06:25.160 --> 00:06:28.199
back end. So let's say you
need to add in authentication. You just

83
00:06:28.319 --> 00:06:30.040
kind of click a few buttons,
ads, authentication, you want to add

84
00:06:30.040 --> 00:06:33.680
in a database, and what we
recommend is AWS app Sync, which is

85
00:06:33.680 --> 00:06:39.279
our managed graft QL service, and
then you can create your schemas all within

86
00:06:39.360 --> 00:06:41.879
there, and then you can download
it into your app. You can also

87
00:06:41.920 --> 00:06:46.680
add forms, so that's like one
service. One that's really really popular is

88
00:06:46.759 --> 00:06:51.839
our AWS Amplify hosting, and so
we saw that what other hosting companies doing,

89
00:06:53.319 --> 00:06:56.120
we wanted to do the same.
So we have a hosting that works

90
00:06:56.160 --> 00:07:00.600
really well with Next thirteen Next fourteen
for service side rendering or stat site generation,

91
00:07:01.079 --> 00:07:05.319
but you can also host any sort
of static site on it that you'd

92
00:07:05.439 --> 00:07:09.240
like, and it's just a couple
of clicks. You run a couple of

93
00:07:09.279 --> 00:07:14.160
commands the command line, and you
can push it up directly to Amazon Amazon

94
00:07:14.199 --> 00:07:16.720
Services and that's completely managed, so
you don't have to necessarily know how to

95
00:07:16.720 --> 00:07:21.160
set up your cloud front distribution,
how to set up all the internals and

96
00:07:21.560 --> 00:07:26.399
get the LAMB to servers, server
list stuff, or for next we do

97
00:07:26.480 --> 00:07:28.839
that all for you, so we
have like more of a managed service.

98
00:07:29.480 --> 00:07:33.240
And then one new product would we
just created and it's in developer preview right

99
00:07:33.279 --> 00:07:40.040
now, is something called Atabase amplified
Gen two and we have we're very focused

100
00:07:40.079 --> 00:07:45.879
on the front end developer experience.
So in that case, you can create

101
00:07:45.959 --> 00:07:49.319
like your new next app, and
then through the command line you can type

102
00:07:49.319 --> 00:07:54.519
a couple of commands and will auto
generate a bunch of boilerplate code for you.

103
00:07:54.959 --> 00:07:58.800
Actually it's not even that much a
boilerplate code, but that code can

104
00:07:58.839 --> 00:08:01.519
be used as what we call infrastructure's
code and you can run it and it'll

105
00:08:01.560 --> 00:08:07.560
provision and create in the background,
using something called CloudFormation a back end for

106
00:08:07.720 --> 00:08:13.360
you, so you can get everything
for You can add in your identity provider,

107
00:08:13.639 --> 00:08:16.160
which is Cognito, you can add
in app sync and the schemas.

108
00:08:16.399 --> 00:08:20.120
You can also go down to what
we call the Cloud Development Kit and then

109
00:08:20.120 --> 00:08:24.279
add any other AWOS services. And
so we wanted to make it very straightforward

110
00:08:24.639 --> 00:08:30.879
to use this command, generate it
and then create this code first experience to

111
00:08:30.920 --> 00:08:35.039
your back end, and then it
connects. It almost has like a end

112
00:08:35.080 --> 00:08:41.799
to end type script type safety feature
where you can create your database and then

113
00:08:41.840 --> 00:08:43.919
have it available in your front end. The schema for that in your front

114
00:08:45.000 --> 00:08:48.799
end, so it's typically when you
use graft ql you get some of that,

115
00:08:48.960 --> 00:08:54.159
but it's usually not typescript specific,
but this is typeescript specific. You

116
00:08:54.200 --> 00:08:58.159
can create an advanced schema for your
back end, all your models, and

117
00:08:58.159 --> 00:09:01.120
then have that available in your front
end. So those are kind of some

118
00:09:01.159 --> 00:09:07.720
of the things that that we do
at AWS amplify. And thank you for

119
00:09:07.720 --> 00:09:11.919
putting the links on the screen too, that's very helpful. I'm all about

120
00:09:11.960 --> 00:09:18.840
banners. They so much more fun. Okay, so let's go back and

121
00:09:18.879 --> 00:09:22.600
talk about a little of that.
So databases. You said, now the

122
00:09:22.639 --> 00:09:26.759
graphic QL is obviously not your database. That's your way you connect to you

123
00:09:26.840 --> 00:09:33.519
that's your API, right, So
what are the database types that that you

124
00:09:33.600 --> 00:09:39.440
support. Obviously there's your your my
SQOL and your postcis right. I'm going

125
00:09:39.519 --> 00:09:43.000
to guess there's some sort of Mango
or document database option or what other options

126
00:09:43.000 --> 00:09:48.360
do you have available? Right,
Well, there's a couple of things there.

127
00:09:48.440 --> 00:09:52.399
So depending on what sort of API
that you want to set up for

128
00:09:52.480 --> 00:09:58.200
your back end, you have some
flexibility. You can have a RESTful API

129
00:09:58.399 --> 00:10:03.080
that you can set up and you
can do that also with AWS amplify.

130
00:10:03.159 --> 00:10:07.399
You can create basically using our cli
utility or using what I talked to you

131
00:10:07.440 --> 00:10:13.519
before that amplify gen two UH and
using something called CDK or this infrastructures code,

132
00:10:13.840 --> 00:10:16.639
you can create an API gateway and
then have that API gateway connect to

133
00:10:16.720 --> 00:10:20.399
let's say a LAMB to function,
and then that LAMB to function then can

134
00:10:20.440 --> 00:10:24.120
talk to any sort of back end
database that we support. So we have

135
00:10:24.360 --> 00:10:28.559
SQL, no SQL, Aurora,
anything you want. Dynamo dB is pretty

136
00:10:28.559 --> 00:10:31.799
popular. If you want to go
with the graph ql route, then we

137
00:10:31.919 --> 00:10:37.919
recommend that you use our managed graph
QIL service called appsync, and then that

138
00:10:37.080 --> 00:10:43.519
defaults to Dynamo dB, but you
can connect other databases up to that as

139
00:10:43.519 --> 00:10:46.320
well if you need. So that's
a few of the options, and you

140
00:10:46.399 --> 00:10:50.080
kind of have the flexibility setting it
up. If if I was going to

141
00:10:50.080 --> 00:10:52.519
recommend something to someone who's listening right
now, kind of want to gives I

142
00:10:52.559 --> 00:10:58.799
amplify aw's s amplify a spin first, obviously create your awos account for it's

143
00:11:00.159 --> 00:11:03.600
you can there's a pretty hefty free
tier. You can get hundreds and hundreds

144
00:11:03.600 --> 00:11:07.360
of hours, and even most of
the services I'm talking about right now are

145
00:11:07.399 --> 00:11:09.480
on demand, so you only get
charged when you use you know, hundreds

146
00:11:09.480 --> 00:11:13.919
of hours or have thousands of users. So usually the free tiers are pretty

147
00:11:13.960 --> 00:11:20.279
pretty wide, but I would recommend
to use the at the Apsinc service.

148
00:11:20.639 --> 00:11:24.000
And what's really nice about it is
if you're familiar with graph col you have

149
00:11:24.080 --> 00:11:28.039
to create resolvers. You have to
kind of connect do all this connective tissue

150
00:11:28.080 --> 00:11:33.720
between the equeries that are coming in
and connect them them up to your back

151
00:11:33.799 --> 00:11:35.759
end, and then adding if you
have off in that's like another layer of

152
00:11:35.799 --> 00:11:39.879
complexity that you have to deal with. Well, what we have in the

153
00:11:39.919 --> 00:11:46.120
Appsinc. We have this model schema
where you just put whatever the data,

154
00:11:46.159 --> 00:11:50.480
whatever the data is dot model and
then we'll create all those resolvers for you

155
00:11:50.519 --> 00:11:52.480
to do all the common things you
would need to do with the graph ql

156
00:11:54.080 --> 00:11:56.519
service like create, read, update, and delete, uh, and it

157
00:11:56.639 --> 00:11:58.639
kind of does that all for you. And of course if you need to

158
00:11:58.720 --> 00:12:03.200
kind of into those internals and change
those there's ways of overriding it. Used

159
00:12:03.200 --> 00:12:05.759
to raise it creating your own custom
resolvers, but for most people, if

160
00:12:05.759 --> 00:12:09.159
you just want to kind of play
around, that's all that's all there for

161
00:12:09.360 --> 00:12:15.519
you. So that that's that's how
I would start. I would obviously first

162
00:12:15.519 --> 00:12:18.519
make sure you have an awos account
and have that up and running you'll need

163
00:12:18.559 --> 00:12:24.639
a credit card to start an AWS
account and then try out some aablese amplify

164
00:12:24.679 --> 00:12:30.960
and use perhaps our gen to product
and then create your back end using app

165
00:12:30.960 --> 00:12:33.720
sync. Does that make sense?
I know that's a lot there. Yeah,

166
00:12:33.720 --> 00:12:35.799
it's a lot. So how about
if I got something simple. You

167
00:12:35.840 --> 00:12:41.559
mentioned astro right, and so astro
is is well, and it's a tool

168
00:12:41.600 --> 00:12:45.320
that I've used and I really enjoy
I've used when I've worked on a static

169
00:12:45.399 --> 00:12:48.799
side So it's one of those things
that started out as a static sided generator

170
00:12:48.919 --> 00:12:54.600
seems to be growing a little more. The whole idea with astro is that

171
00:12:54.639 --> 00:13:00.799
you're getting rendered HTML. But if
you want to add islands of what's the

172
00:13:00.879 --> 00:13:05.360
term. I'm looking for things you
want to do productivity, islands of code,

173
00:13:05.360 --> 00:13:11.159
guidelands of anyway islands. You can
use a view component or React component

174
00:13:11.279 --> 00:13:15.720
or spelt component or you know React
component or something like that and drop it

175
00:13:15.840 --> 00:13:18.720
just in a certain region of your
page and now it has I know,

176
00:13:18.720 --> 00:13:24.000
it handles service head rendering, and
it's handling more and more. It's been

177
00:13:24.000 --> 00:13:26.879
a while since I've talked to Fred
Shot about what's going on with pastro.

178
00:13:28.159 --> 00:13:33.519
So that's a simple case right,
maybe where you're using markdown files uh for

179
00:13:33.639 --> 00:13:39.200
your content, or you could do
something a little more complex. And here's

180
00:13:39.200 --> 00:13:41.559
a question for you. One of
the ways I have used Astro in the

181
00:13:41.600 --> 00:13:46.000
past is with a third party CMS, had the CMS such as Prismic.

182
00:13:48.039 --> 00:13:52.399
Is that something you can use and
not encourage you know, you'd rather you

183
00:13:52.519 --> 00:13:56.320
host on an Amazon type of CMS, if that's even available, or are

184
00:13:56.360 --> 00:14:03.519
those possibilities as well? Yeah,
you bet so. Like I mentioned earlier,

185
00:14:03.519 --> 00:14:05.799
one of our our more popular or
service And you don't have to buy

186
00:14:05.840 --> 00:14:09.559
in the whole ecosystem if I'm talking
right now and you're like, well,

187
00:14:09.600 --> 00:14:11.919
I don't need an API gateway,
I don't want to connect to a database.

188
00:14:13.159 --> 00:14:16.600
You can kind of pick and choose
what you want and you don't have

189
00:14:16.639 --> 00:14:22.879
to know how to create all this
infrastructure for you. So with our amplify

190
00:14:22.960 --> 00:14:26.720
hosting service, our managed hosting,
you can connect it directly up to your

191
00:14:26.799 --> 00:14:33.639
version control system or GET or get
lab whatever you're using, and then you

192
00:14:33.679 --> 00:14:37.799
can push it up directly to there. And for Astro in particular, we

193
00:14:37.879 --> 00:14:41.440
can do it to two different ways. We can do it as a static

194
00:14:41.480 --> 00:14:43.840
site, so you can post it
as a static site in during the bill

195
00:14:43.919 --> 00:14:48.480
process. If you have it connected
to Prisma, it could probably pull all

196
00:14:48.480 --> 00:14:52.000
that stuff in kind of like a
headless CMS like you're talking about, and

197
00:14:52.039 --> 00:14:56.919
then you can just host it on
the hosting Amplified Hosting. Or we do

198
00:14:58.000 --> 00:15:03.279
have a something that I've actually just
testing out last week. A community led

199
00:15:03.600 --> 00:15:11.320
driven plug in to allow you to
do server side rendering on Amplify Hosting was

200
00:15:11.360 --> 00:15:16.159
made available recently, so I'm still
testing it out. It seems to work

201
00:15:16.200 --> 00:15:22.120
well. But what we did for
Amplify Hosting, we have most of our

202
00:15:22.120 --> 00:15:24.240
customer a lot of our customers use
Next fourteen Next thirteen. We have that

203
00:15:24.519 --> 00:15:28.879
kind of automatically detects it. So
if you have Next fourteen and you want

204
00:15:28.919 --> 00:15:33.159
to do staticcite or service side rendering, it will automatically detect it. Everything

205
00:15:33.200 --> 00:15:37.679
will work great. If you want
to use a different service like let's say

206
00:15:37.720 --> 00:15:43.519
Astro or Next, then we have
community led plugins that you include inside your

207
00:15:43.840 --> 00:15:50.159
your source code and then it'll be
picked up by our hosting Amplify Hosting,

208
00:15:50.200 --> 00:15:52.799
and then it'll configure it so you
can use service side rendering and have those

209
00:15:52.840 --> 00:15:56.440
APR routes work. So there's one
for Astro, and then there's also yeah,

210
00:15:56.480 --> 00:16:00.919
in integrations, I think it's up
there. Haven't looked like that website

211
00:16:00.919 --> 00:16:03.519
you just put up there. But
there's also we partnered with the Next community

212
00:16:04.080 --> 00:16:10.279
and we're just talking before the show
started with Daniel Row. He's an amazing

213
00:16:10.360 --> 00:16:15.879
contributor to the Next ecosystem and we
partnered with him and the guys that at

214
00:16:15.360 --> 00:16:19.200
Next and they created an adapter for
us for Amplify hosting as well. So

215
00:16:19.240 --> 00:16:23.480
now you can use Amplify hosting with
service side rendering without any problems. So

216
00:16:23.559 --> 00:16:26.799
yeah, so that's definitely a use
case, and you can certainly connect it

217
00:16:26.840 --> 00:16:32.279
to other services outside of AWS.
We don't have any. It makes more

218
00:16:32.360 --> 00:16:33.679
sense when you kind of connect it, like if you're going to have a

219
00:16:33.720 --> 00:16:37.159
bunch of infrastructure, kind of having
one place to have it all and one

220
00:16:37.159 --> 00:16:42.440
place is nice, but you can't
have in multiple places. There's a few

221
00:16:42.480 --> 00:16:47.679
adapters for AWS listed here. There's
looks like some of them are I don't

222
00:16:47.720 --> 00:16:52.080
know, duplicates or do the same. There's deployed at astro to AWS amplify,

223
00:16:52.639 --> 00:17:00.960
and there's the Astro adapter of a
do AWS server lists let's see here,

224
00:17:04.000 --> 00:17:08.119
Yeah, the one that says a
Astro dash aws dash Amplify is the

225
00:17:08.119 --> 00:17:14.279
one I just tested last week and
that one worked great, right, Okay,

226
00:17:15.039 --> 00:17:19.359
Okay, that leaks to the GitHub
repo. Cool. Yeah, Yeah,

227
00:17:19.400 --> 00:17:22.440
that's nice one. You can just
say, yeah, here, I'm

228
00:17:22.480 --> 00:17:26.599
gonna use this host drop this in
rock and roll. Yeah. That's one

229
00:17:26.599 --> 00:17:32.519
thing that I've noticed too, and
is I see these people, not these

230
00:17:32.519 --> 00:17:37.680
people. I see many different software
developers out there posting on Twitter x about

231
00:17:37.720 --> 00:17:41.920
their stacks, and I'm always say, like, I'm using expert authentication,

232
00:17:41.160 --> 00:17:48.160
and I'm using this service for my
back end. Let's say, are monitoring,

233
00:17:48.200 --> 00:17:51.759
and I'm using this service for our
database, and I'm using they have

234
00:17:51.880 --> 00:17:55.000
like I'm just imagined, when you're
doing this, you have like ten different

235
00:17:55.000 --> 00:17:59.519
services, you have ten different bills
coming in every month, and maybe you're

236
00:17:59.559 --> 00:18:02.359
in the free here in this one, but you've gone over on this one.

237
00:18:03.359 --> 00:18:06.759
And I just think it like just
adds a bunch of complexity and and

238
00:18:06.799 --> 00:18:11.359
I'm all for like finding the best
the best service for your needs, but

239
00:18:11.519 --> 00:18:18.160
I also say there is a niceness
to having like one over arching company or

240
00:18:18.240 --> 00:18:22.079
service that handles multiple these things and
they all kind of integrate well together.

241
00:18:22.960 --> 00:18:27.519
So that that could be a reason
why you may want to look at service

242
00:18:27.640 --> 00:18:32.519
like amplify, where you can have
it does multiple things and not just like

243
00:18:32.640 --> 00:18:37.440
one part of this bigger puzzle that
you need to quote Lord of the Rings,

244
00:18:37.480 --> 00:18:40.519
so one service to rule them all
and in the darkness behind them.

245
00:18:41.000 --> 00:18:42.079
Right, Yes, but you don't. You don't have to. You can

246
00:18:42.119 --> 00:18:47.440
always pick and choose what you want. So one of the things that you

247
00:18:47.559 --> 00:18:52.839
mentioned in this has a separate page
under the GIN too. Yeah, I'm

248
00:18:52.880 --> 00:18:56.440
not sure if it's available here.
It has to do with authentication. M

249
00:18:56.799 --> 00:19:03.839
So, just to clarify, there's
a difference between authentication authorization, right,

250
00:19:03.920 --> 00:19:07.440
So this is just handling the authentication
saying okay, I'm going to let you

251
00:19:07.440 --> 00:19:11.680
log in and you're who you say
you are right when it comes. It's

252
00:19:11.759 --> 00:19:15.720
not going to go so far as
to allow you to define roles and permissions.

253
00:19:15.880 --> 00:19:19.119
In other words, Uh, no, you can do that. Yeah,

254
00:19:19.279 --> 00:19:23.279
you can do authentication and authorization.
So you could set up special groups,

255
00:19:23.559 --> 00:19:27.279
you can add people to groups.
It's pretty powerful. So GEN two,

256
00:19:29.200 --> 00:19:32.559
just to recap what I said ten
minutes ago, is our new developer

257
00:19:32.559 --> 00:19:37.119
preview product that combines like infrastructure as
code so you can write your own your

258
00:19:37.319 --> 00:19:44.119
back ending code in a very straightforward
way. It's it's we. We wrote

259
00:19:44.119 --> 00:19:45.519
it in such a way that just
a few lines of code, you can

260
00:19:47.079 --> 00:19:52.279
pop up your whole identity provider,
create your whole back end graph cels absinct

261
00:19:52.359 --> 00:19:55.839
service together, and then you can
drop down to CDK for other things.

262
00:19:55.880 --> 00:19:59.599
And we're also before our it goes
for what we call GA, our general

263
00:19:59.640 --> 00:20:02.680
available ability, we're looking to add
even more functionality to it, so you

264
00:20:02.720 --> 00:20:07.240
can easily add in functions and and
and several other things. But a part

265
00:20:07.279 --> 00:20:15.200
of that is this thing called OFF
and then inside OFF we that's backed up

266
00:20:15.240 --> 00:20:18.839
by our identity provider and the Amazon
system that's cognito. And then from there

267
00:20:19.000 --> 00:20:22.960
you can you can do a whole
bunch of things. You can add like

268
00:20:23.000 --> 00:20:29.319
multi factor authentication, you can add
identity providers, you can add multiple identity

269
00:20:29.319 --> 00:20:34.599
providers. But when you're looking when
you think about authorization authentication, you can

270
00:20:34.680 --> 00:20:41.599
go into our schemas and then you
can tell it like have this have this

271
00:20:41.200 --> 00:20:45.680
table only have users from this group
have access to it. You can do

272
00:20:45.759 --> 00:20:52.160
that kind of low level, field
level customization of each thing that you send

273
00:20:52.200 --> 00:20:56.720
out. You can also yep,
you can. You can even do the

274
00:20:56.759 --> 00:21:00.279
field level too, which is really
neat. So if you wanted to only

275
00:21:00.319 --> 00:21:03.599
have this field, have this group
be able to update it, you can.

276
00:21:03.200 --> 00:21:08.200
Or we can do owner based authorization. So let's say you have a

277
00:21:08.240 --> 00:21:14.240
table that gets created every time a
user creates a new account, so you

278
00:21:14.319 --> 00:21:18.759
want that that only that user can
update their email address. But you'd want

279
00:21:18.799 --> 00:21:22.599
to also want to make sure that
no other person in your system can update

280
00:21:22.640 --> 00:21:25.920
that, and you can make rules
like that, or you can have an

281
00:21:25.960 --> 00:21:30.160
admin account that can update everything.
So yeah, we do have that those

282
00:21:30.200 --> 00:21:34.200
fine grained authorization rules that you can
add in, which is which is awesome.

283
00:21:37.279 --> 00:21:41.119
It gets quite complicated too, like
I've seen some of them where it's

284
00:21:41.119 --> 00:21:45.759
like you can even drop down to
create your own custom authorization rules, so

285
00:21:45.799 --> 00:21:48.920
that way if you're out, we
have these things called directives. They have

286
00:21:48.960 --> 00:21:53.599
these ad symbols and you can add
it to anything. Well, in our

287
00:21:53.680 --> 00:21:57.799
new Gen two it's more this dot
notation. We can do dot authorization.

288
00:21:57.920 --> 00:22:00.160
You can add a bunch of things, but if you need it to,

289
00:22:00.160 --> 00:22:06.119
you can create your own custom resolver
that only certain and then you can dive

290
00:22:06.160 --> 00:22:08.880
into the code and do it.
That way as well. So is the

291
00:22:10.000 --> 00:22:12.519
idea and I'm going somewhere with this, So is the idea that all of

292
00:22:12.559 --> 00:22:21.200
this code that we're talking about using
and writing for authentication, authorization and schemes

293
00:22:21.240 --> 00:22:23.440
and all this stuff, this is
all written in JavaScript on your front end

294
00:22:25.039 --> 00:22:29.799
as compared and ADWS is basically you're
back in and you're just deploying. There

295
00:22:30.240 --> 00:22:34.319
is that writer or what am I
missing? Yeah? So yeah, you

296
00:22:34.400 --> 00:22:37.640
got the right idea. So what
we do with this Gen two product,

297
00:22:37.720 --> 00:22:41.759
it's all in type script is kind
of our default. We do support other

298
00:22:41.839 --> 00:22:45.279
languages, but for now we're focusing
on type script. And you would write

299
00:22:45.279 --> 00:22:51.559
the infrastructure as code and then what
we have things are called after you write

300
00:22:51.599 --> 00:22:55.200
it. That is, then you
can run a couple of commands on the

301
00:22:55.200 --> 00:22:59.400
command line and it gets deployed into
what we call an ephemeral environment. So

302
00:22:59.440 --> 00:23:03.119
when in the back ground, it'll
take that typescript code and it converts it

303
00:23:03.160 --> 00:23:08.680
to something called cloud formation, which
is read into by AWS, and then

304
00:23:10.000 --> 00:23:12.720
there's even a cloudfirmation console that you
can see how what it's doing, and

305
00:23:12.759 --> 00:23:17.640
then it provisions and creates this whole
back end for you, and then you

306
00:23:17.680 --> 00:23:21.960
can test locally for this ephemeral environment. And what's nice about it is every

307
00:23:22.000 --> 00:23:26.240
single you can set up and spin
up an ephemeral environment for every single user

308
00:23:26.640 --> 00:23:30.240
that's using this, for every single
developer that's using this app. So let's

309
00:23:30.240 --> 00:23:34.519
say you have five developers. Everybody
can download the get repo. Everybody can

310
00:23:34.559 --> 00:23:40.960
spin up their own ephemeral environment and
test locally against that environment. You can

311
00:23:41.000 --> 00:23:44.480
also share resources, share other things
if you need to. There's a lot

312
00:23:44.480 --> 00:23:48.319
of different scenarios, and then you
can kill those environments or stop those environments,

313
00:23:48.119 --> 00:23:52.079
and then once you're ready for production, you connect it to our our

314
00:23:52.119 --> 00:23:56.559
hosting or con we call it a
console or hosting console, and then you

315
00:23:56.559 --> 00:24:02.240
can push it all up to that
console and then we'll create the will create

316
00:24:02.319 --> 00:24:07.640
the production environments, and those will
be tied back into your GET branches.

317
00:24:07.720 --> 00:24:11.519
So usually you have one for like
develop or main. Then those can be

318
00:24:11.799 --> 00:24:19.039
different production branches that you have.
Okay, that makes sense, so well,

319
00:24:19.119 --> 00:24:22.119
yeah, so that's where it goes
to where I was going. I'm

320
00:24:22.119 --> 00:24:29.359
still a little hazy on the ephemeral
stuff. Basically is is it basically an

321
00:24:29.440 --> 00:24:34.519
environment that has your assigned roles and
permissions and accesses all that you can run

322
00:24:34.599 --> 00:24:41.319
locally against the services on AWS.
Yeah, so when you let's let's imagine

323
00:24:41.319 --> 00:24:45.359
this scenario. Maybe this would be
easier. So let's say you are in

324
00:24:45.440 --> 00:24:52.680
a two person team or two developers
creating the next Instagram and you decided you

325
00:24:52.720 --> 00:24:56.960
decided to use a w S amplify, and you run a couple of commands

326
00:24:56.000 --> 00:25:02.480
in the command line and it puts
in it. It create generates these files

327
00:25:02.759 --> 00:25:04.680
in your system, and they're in
the same folders your next apps. Your

328
00:25:04.720 --> 00:25:10.279
next is going to be your front
end app. And from there you add

329
00:25:10.279 --> 00:25:14.480
in You go into those files and
you add in all basically in typescript.

330
00:25:14.480 --> 00:25:18.759
You add in the different tables,
the different authorization rules, whatever kind of

331
00:25:18.759 --> 00:25:22.400
schema in the back end you want
to look like. You can maybe add

332
00:25:22.400 --> 00:25:26.319
in your identity provider and all those
rules there. Maybe you want multi factor

333
00:25:26.359 --> 00:25:33.400
authentication. And then you and then
you push up to your let's say your

334
00:25:34.079 --> 00:25:40.880
GitHub version control system. And now
you you the other developer, you both

335
00:25:40.920 --> 00:25:44.119
pull down the same repo has the
same information. You can both run a

336
00:25:44.119 --> 00:25:48.720
command and your command line that says
NPX amplify sandbox, and then all of

337
00:25:48.720 --> 00:25:52.640
a sudden, it'll create a brand
new environment with all defaults, no data

338
00:25:52.680 --> 00:25:57.000
in it, but with those rules
and everything you added, and each user

339
00:25:57.799 --> 00:26:02.839
developer one and developer two, you
can just spin up this ephemeral environment and

340
00:26:03.160 --> 00:26:07.839
they can then put some seed data
in it. You can then start testing

341
00:26:07.880 --> 00:26:12.480
locally against it and trying it out. Now, at some point, let's

342
00:26:12.480 --> 00:26:18.559
say both developers have been developing,
they've made some changes to the back end,

343
00:26:18.599 --> 00:26:21.599
they're both in sync, They've played
around the phermeral environments. They they

344
00:26:21.720 --> 00:26:26.319
tested locally, it looks fine.
They can then stop their in phariremeral environments

345
00:26:26.519 --> 00:26:30.079
or keep them running, doesn't matter. And then they can push to a

346
00:26:30.119 --> 00:26:36.400
specific branch that's connected to our Amplify
console and then that will then push to

347
00:26:36.480 --> 00:26:41.759
production and then you'll have a production
environment that'll have that'll take that same spec

348
00:26:41.839 --> 00:26:45.119
that you had in the UH in
those ephemeral environments, and they'll create that

349
00:26:45.240 --> 00:26:52.119
for like a production environment tied to
that branch, and then from there they

350
00:26:52.160 --> 00:27:00.319
could you could users can start using
it in production. Okay, So brings

351
00:27:00.400 --> 00:27:03.480
up a couple questions. One,
So when you're developing, let's say we're

352
00:27:03.599 --> 00:27:07.720
using you know, my SQL as
my database of choice for the given project

353
00:27:10.480 --> 00:27:14.319
and you're talking about how I can
see data and so on. Is that

354
00:27:14.400 --> 00:27:18.480
database residing physically on my local Can
I point it there so I have access

355
00:27:18.519 --> 00:27:22.799
to there? Or is it always
residing on AWS and it's tructure and that's

356
00:27:22.839 --> 00:27:26.400
where I have to access it.
Yes, So that's a good good question.

357
00:27:26.039 --> 00:27:30.880
So when I say in pharmal environments, these are actual environments running on

358
00:27:30.920 --> 00:27:33.039
AWS in the cloud. They're not
on your local computer. They're in the

359
00:27:33.079 --> 00:27:37.400
cloud. They're really did their running
there, and so yeah, you would

360
00:27:37.599 --> 00:27:42.400
then have to see that data in
the cloud. We're looking at that too.

361
00:27:42.440 --> 00:27:47.200
That's a big use case we've heard
back from our customers is that when

362
00:27:47.200 --> 00:27:48.720
they want to use this, especially
if they have like six developers, they

363
00:27:48.720 --> 00:27:53.480
don't want to have to like seed
the data every time they stop and restart

364
00:27:53.599 --> 00:27:57.000
their pharmeral environment. So we're looking
at ways so you can share data better

365
00:27:57.039 --> 00:28:00.960
that way. But no, yes, you would, those would be in

366
00:28:00.000 --> 00:28:04.960
the cloud. It's nothing local.
So one thing we heard back in our

367
00:28:06.039 --> 00:28:11.759
previous versions of Amplify is that people
we had tools to like do mock servers

368
00:28:11.799 --> 00:28:14.880
and mock Dynamo dB service and you
can download that too if you just Google

369
00:28:14.920 --> 00:28:18.440
around Dynamo dB local. You can
download like a local version of Dynamo dB

370
00:28:18.559 --> 00:28:22.279
and you can connect it up to
do testing. But we heard it is

371
00:28:22.319 --> 00:28:25.440
like it was kind of difficult for
people like to test their land to functions

372
00:28:25.480 --> 00:28:29.480
to test their Dynamo dB and graphic
QL, And so one way to ensure

373
00:28:29.480 --> 00:28:33.039
that there's that's not an issue is
to actually just create those environments, these

374
00:28:33.119 --> 00:28:37.599
environmental environments, so you actually are
using the back end. So it sounds

375
00:28:37.640 --> 00:28:45.480
like a sort of a virtual machine
type of environment, No, it's it's

376
00:28:45.599 --> 00:28:51.599
real like cloud environment exactly. The
only thing is is that we designated like

377
00:28:52.079 --> 00:28:56.279
as an environment that can just be
stopped at any time or destroyed at any

378
00:28:56.279 --> 00:29:00.880
time. But this is really like
cloud data. It's not in some sort

379
00:29:00.920 --> 00:29:06.559
of VM or anything like that.
So if the developer wants to testings out,

380
00:29:06.559 --> 00:29:08.839
they know that it's pretty close to
what's going to be in production because

381
00:29:08.880 --> 00:29:12.359
it's just we spun up all those
provisions so you can get a brand new

382
00:29:12.400 --> 00:29:18.599
server list, a brand new app, Sync app, and brand new Cognito

383
00:29:18.680 --> 00:29:25.920
and whatever other services that you have
in there. So does this mean you

384
00:29:25.960 --> 00:29:30.000
basically you can have you talked about
the deployment to praude. But you can

385
00:29:30.200 --> 00:29:33.359
if you have your different branches,
like you know, if you're using a

386
00:29:33.400 --> 00:29:37.599
Gifflow type of workflow where you have
main and then develop and then you've got

387
00:29:37.599 --> 00:29:41.160
your future branches and when they're done
they go pr and to develop and then

388
00:29:41.200 --> 00:29:42.880
domain and so on. But when
you're in your feature branch, are you

389
00:29:42.920 --> 00:29:48.680
saying you can spin up environment and
NWS to just test your code and have

390
00:29:48.759 --> 00:29:52.240
it like here, go, look
this is what my code's doing. You

391
00:29:52.279 --> 00:29:53.839
know, go to this URL and
you can see it. Is that how

392
00:29:53.880 --> 00:30:00.000
that can work? So there's there's
a couple of things there. So let's

393
00:30:00.000 --> 00:30:06.039
say let's let's let's continue on with
this analogy. So you're like these two

394
00:30:06.039 --> 00:30:11.880
developers doing this Instagram and then there's
a special new feature and Instagram like I

395
00:30:11.920 --> 00:30:15.279
don't know, it's a Sepia tone
Instagram feature that you want to do.

396
00:30:17.200 --> 00:30:23.359
So the developers they create a new
branch called Sepia and then they can still

397
00:30:23.440 --> 00:30:29.039
test locally. They can still create
them ephemeral environments and test everything locally.

398
00:30:30.359 --> 00:30:33.559
They wouldn't be able when I when
you create the efemeral environments, it's not

399
00:30:33.640 --> 00:30:37.960
creating like a hosting. It's not
creating like a website or anything. It's

400
00:30:37.039 --> 00:30:41.039
just like provisioning some things locally that
you can test. So when you run

401
00:30:41.119 --> 00:30:45.759
local host, then it connects to
those back end services. It's not creating

402
00:30:45.640 --> 00:30:49.359
like a hosting provider. But now
let's say they tested locally, they're running

403
00:30:49.400 --> 00:30:53.359
local host, they're running gainst this
inphermeral environment. Everything's working great. They

404
00:30:53.440 --> 00:30:57.759
destroy their epedmeral environment. Now they're
ready to go to push this feature to

405
00:30:57.799 --> 00:31:00.720
a feature branch, and they want
to like a small group of beta users

406
00:31:00.759 --> 00:31:06.640
tested. Then then they run this
command of the command line that pushes it

407
00:31:06.759 --> 00:31:11.279
to that branch. Well that well, first they basically they connect up that

408
00:31:11.359 --> 00:31:18.279
branch up to the AWOS amplify console
and well you can tell that. You

409
00:31:18.279 --> 00:31:22.599
can tell the console like anytime you
get a new merger request into this branch,

410
00:31:22.720 --> 00:31:26.799
rebuild the website. So then when
they push to that new feature branch,

411
00:31:26.920 --> 00:31:33.480
it's going to create a new it's
going to build the whole website and

412
00:31:33.519 --> 00:31:40.279
then deploy it into this special environment
that you can then have. You can

413
00:31:40.359 --> 00:31:44.319
attach URL to it. You could
be like beta Dotminu, Instagram dot com,

414
00:31:45.079 --> 00:31:47.920
or you can just have it we
give. You don't even have to

415
00:31:47.920 --> 00:31:49.759
put a domain name if you want, and then you can have a small

416
00:31:49.759 --> 00:31:52.680
amount of people test it on that
future branch, and then at some point,

417
00:31:52.720 --> 00:31:57.200
maybe you don't need that feature branch
anymore, you can delete it and

418
00:31:57.240 --> 00:32:00.759
then that future branch will be go
on, that website will be gone and

419
00:32:00.759 --> 00:32:06.319
you can continue on your workflow.
Or maybe you merge that feature branch into

420
00:32:06.359 --> 00:32:09.880
your main branch, which then goes
to your main domain, which is www

421
00:32:10.000 --> 00:32:16.160
dot mynew Instagram dot com. Okay, so yeah, that's something I've used

422
00:32:16.240 --> 00:32:20.759
quite a bit when I was working
at you know, much larger places where

423
00:32:20.920 --> 00:32:23.400
you know, where there was Pantheon
as the example I'm thinking before, where

424
00:32:23.400 --> 00:32:27.359
you got your branch a spin up
environment. Yeah, it looks good,

425
00:32:27.359 --> 00:32:31.480
Okay, now we can merge it
in and do everything. Yeah, the

426
00:32:31.519 --> 00:32:37.480
good workflow is so popular. That's
exactly what I did at that insurance technology

427
00:32:37.119 --> 00:32:40.759
company. Else before, we had
like four environments. We had one for

428
00:32:43.200 --> 00:32:49.519
QA, we had one for our
like dev environment, we had a production

429
00:32:49.720 --> 00:32:53.200
environment. I think we even had
like a second QA no, a pre

430
00:32:53.279 --> 00:32:58.200
prod environment. So we had four. So when we did our in this

431
00:32:58.319 --> 00:33:01.440
sure tech company, the way we
did is we push to once we this

432
00:33:01.519 --> 00:33:07.559
is all aw's infrastructure back then too, we would create a feature, then

433
00:33:07.599 --> 00:33:10.640
it would like go into the QA
branch and that would have its own whole

434
00:33:12.480 --> 00:33:15.920
and servers and everything that was running
against. And then if that worked well,

435
00:33:15.960 --> 00:33:21.480
we would promote it up to our
well first of going the DEV and

436
00:33:21.519 --> 00:33:23.160
if that worked well, we were
ready, we'd send it to the QA

437
00:33:23.319 --> 00:33:27.319
and then QA would go to pre
prod and that's where like a bunch of

438
00:33:27.359 --> 00:33:31.240
stakeholders woul get involved, like maybe
our pms or vps, and then that

439
00:33:31.279 --> 00:33:36.000
would go into prod afterwards. So
you could have that same type of workflow

440
00:33:36.119 --> 00:33:40.279
using amplified Gen two, you can
create all four of those environments to all

441
00:33:40.279 --> 00:33:45.599
for those branches and instead of having
to like do have a DevOps guide to

442
00:33:45.640 --> 00:33:52.039
have to create all that infrastructure and
create all this work like, it's all

443
00:33:52.039 --> 00:33:55.920
built. That whole workflow is built
in to Gen two. So from a

444
00:33:55.960 --> 00:34:00.880
code standpoint, when you're developing,
I say, I'm doing a view front

445
00:34:01.000 --> 00:34:05.759
end for you know, whether it's
inertia, whether it's you know whatever,

446
00:34:07.359 --> 00:34:12.280
how much am I working on my
local and pushing and how much is not?

447
00:34:12.400 --> 00:34:15.440
So I'm assuming my whole view structure
in my pages and view files,

448
00:34:15.480 --> 00:34:19.000
and all that stuff is local,
and that's what I'm committing to get,

449
00:34:19.039 --> 00:34:22.360
which is getting pushed and then deployed
AWS. But all my back end stuff,

450
00:34:22.400 --> 00:34:29.199
my database obviously, any Lambda functions
without saying and other stuff is all

451
00:34:29.239 --> 00:34:32.880
on AWS. And somewhere I've got
some sort of connection strings or environment variables

452
00:34:34.000 --> 00:34:37.519
or something that are pointing to the
different RLS for the different services, right

453
00:34:37.320 --> 00:34:42.519
yep, yeah, yeah. So
when you spin up the ephemeral environment,

454
00:34:42.679 --> 00:34:45.920
it creates like this file, Jason
file with all your configuration strings in it,

455
00:34:46.159 --> 00:34:51.519
and your front end reads that,
and it's an Damplify front end library

456
00:34:51.519 --> 00:34:53.119
reads it and like, oh,
this is where my service function is,

457
00:34:53.159 --> 00:34:57.519
this is where the gateway is,
this is where everything else is. Yep,

458
00:34:57.639 --> 00:35:02.159
you're right, exactly. Okay,
So obviously the benefit of something like

459
00:35:02.199 --> 00:35:07.599
this is that it's somewhat portable.
Right, So if I got a new

460
00:35:07.599 --> 00:35:10.880
computer, you know, my laptop
goes up in smoke ause I thought mine

461
00:35:12.079 --> 00:35:15.800
is going to do a couple of
weeks ago. Then it's just a matter

462
00:35:15.800 --> 00:35:19.960
of cloning my local repo that has
the front end code in it, firing

463
00:35:19.960 --> 00:35:22.559
it up and as long as I
have internet connection, I can connect all

464
00:35:22.639 --> 00:35:25.760
my back end without having to you
know, reinstall my SQL and reinstall node.

465
00:35:25.960 --> 00:35:30.639
Well might note and stuff like that, right, yeah, yeah,

466
00:35:30.719 --> 00:35:34.119
yeah, you wouldn't have to.
Like I know, a really popular thing,

467
00:35:34.239 --> 00:35:38.920
especially a lot of DevOps guys,
like to bring up a like doctor

468
00:35:39.000 --> 00:35:43.960
container or Kubernetes locally. You don't
have to do any of that. It's

469
00:35:44.079 --> 00:35:45.800
just push. You just pull everything
down, run a couple of commands,

470
00:35:45.840 --> 00:35:50.519
and then you can push everything back
to the cloud to have your little local

471
00:35:50.599 --> 00:35:55.000
environment to test in that. That's
pretty straightforward. One thing you could do

472
00:35:57.280 --> 00:36:01.840
to your example is, uh,
if you are using AWS, you do

473
00:36:01.960 --> 00:36:07.320
have to if you have a brand
new computer, there's some connection strings to

474
00:36:07.400 --> 00:36:10.920
AWS. There's some secret keys.
You'd have to pull those back into your

475
00:36:12.000 --> 00:36:15.320
environment, and there's a few ways
of doing that. There's a CLI way,

476
00:36:15.400 --> 00:36:20.039
but it creates like these dot dot
AWS folder and it adds these keys

477
00:36:20.079 --> 00:36:23.480
in so that way, when you
run command line command line utilities CLI utilities

478
00:36:24.039 --> 00:36:29.000
that command line interfaces that they'll just
connect correctly to your back end to the

479
00:36:29.039 --> 00:36:37.800
AWS accounts. So you might have
thish SSH type connection and they are no,

480
00:36:37.920 --> 00:36:43.360
they're like different. So there's with
UH with a with AWS amplify,

481
00:36:44.079 --> 00:36:49.320
we have it's an MPM command that
you can run NPX and UH. Well,

482
00:36:49.440 --> 00:36:52.840
in the first time you craining and
you run NPM amplify at latest,

483
00:36:53.320 --> 00:36:59.840
MPM create amplify at latest, and
then it will create the infrastruction for you.

484
00:36:59.880 --> 00:37:02.880
And then when you first run MPX
amplify sandbox, which will create the

485
00:37:02.920 --> 00:37:08.000
sandbox and federal environment for you.
That will look at those keys that are

486
00:37:08.039 --> 00:37:12.440
in like your root folder, and
it'll look for them on your file system

487
00:37:12.519 --> 00:37:19.119
or look for these very variables in
your in your account. And then it

488
00:37:19.239 --> 00:37:23.920
uses the API to do some kind
of credential swapping in the background. And

489
00:37:24.000 --> 00:37:27.599
it's not I don't think it's a
S s H. But I think it

490
00:37:27.639 --> 00:37:30.519
has the general idea of like doing
public and private keys, but I haven't

491
00:37:30.559 --> 00:37:36.159
looked into exactly that how it does
it. Okay, Now, one thing

492
00:37:36.199 --> 00:37:39.480
you mentioned earlier when we were talking
about the code that you're using for the

493
00:37:39.480 --> 00:37:45.639
infrastructures that it's typescript. So if
you're somebody like me who has not completely

494
00:37:45.719 --> 00:37:49.559
drunk the typeescript kool aid, is
that something that's something I would need to

495
00:37:49.559 --> 00:37:53.119
get up to speed on in order
to use the code as infrastructure. Yes,

496
00:37:53.519 --> 00:38:01.280
so let me caveat that by saying
we are focusing on Typescript first for

497
00:38:01.360 --> 00:38:07.639
this developer preview. However, in
the future we are looking at other languages

498
00:38:07.719 --> 00:38:13.239
for people who aren't typescript people.
If you do go if you are looking

499
00:38:13.239 --> 00:38:15.880
for something that's other than typescript.
Now, this isn't Aw's amplify, but

500
00:38:15.960 --> 00:38:21.000
I mentioned earlier something called cloud development
It it's called AWSCDK. It's kind of

501
00:38:21.000 --> 00:38:27.119
the acronym for it. Now that
will work with more than typescript. So

502
00:38:27.199 --> 00:38:31.079
it has most people use Typescript,
but you can use Java, you can

503
00:38:31.199 --> 00:38:38.679
use Python, you can use a
whole bunch of other framework libraries, frameworks,

504
00:38:39.760 --> 00:38:43.880
programming languages to use it with.
So you don't have to know Typeescript

505
00:38:43.920 --> 00:38:45.079
for that case. So if you
want to do CDK, now, the

506
00:38:45.079 --> 00:38:50.960
difference between CDK and what I'm talking
about with the amplified Gen two CDK is

507
00:38:51.039 --> 00:38:58.519
much more. It's very powerful,
but it is a lot it's a lot

508
00:38:58.599 --> 00:39:02.599
more a terse. I don't know, it's very specific. It has a

509
00:39:02.679 --> 00:39:06.719
very specific language, it has a
little bit higher of a learning curve.

510
00:39:07.960 --> 00:39:10.719
It's very powerful. But what we
want to did we when we did with

511
00:39:10.800 --> 00:39:15.119
Gen two is we kind of added
another what we call a construct on top

512
00:39:15.159 --> 00:39:17.840
of it, kind of like another
layer or abstraction. That made it much

513
00:39:17.880 --> 00:39:22.079
more straightforward to use rather than having
to learn all these little commands. And

514
00:39:22.079 --> 00:39:27.559
there's even a lower level than CDK, which is colutformation, which is I

515
00:39:27.599 --> 00:39:31.199
would say, very powerful, but
you would really have to learn all the

516
00:39:31.199 --> 00:39:37.760
different nuances of cloud formation to use
it. And those are all infrastructures tool

517
00:39:37.800 --> 00:39:49.079
codes to infrastructure as code tools.
Okay, right, okay, before we

518
00:39:49.119 --> 00:39:54.199
move on anything else from a back
end infrastructure standpoint that I want to talk

519
00:39:54.199 --> 00:39:58.719
about, No, I think I
think you covered most of it. Hopefully

520
00:39:58.760 --> 00:40:00.559
that was useful for people thing at
home to kind of get an idea of

521
00:40:01.079 --> 00:40:06.440
how it's working. I think that's
one that's a big part of the amplified

522
00:40:06.639 --> 00:40:12.079
Gen two product. The other half
is our and Type Safety, which kind

523
00:40:12.079 --> 00:40:15.800
of takes the types from the back
end and has them available in the front

524
00:40:15.920 --> 00:40:19.119
end. You may have heard of
their products like TRPC for those in the

525
00:40:19.159 --> 00:40:22.440
next ecosystem, you may have heard
of it. So we have similar things

526
00:40:22.960 --> 00:40:28.000
like that where you can create a
back end and have the types available in

527
00:40:28.000 --> 00:40:30.840
the front end, so that way
you never receive something you don't expect or

528
00:40:30.880 --> 00:40:36.400
send something you don't expect, so
it's all typed correctly. That's a pretty

529
00:40:36.440 --> 00:40:40.199
powerful use case as well. All
right, Now, one other tool that

530
00:40:40.239 --> 00:40:44.719
we talked about, and we've talked
about you and I have talked about on

531
00:40:44.760 --> 00:40:47.039
some of the views on View podcast
with some of the component library stuff,

532
00:40:47.480 --> 00:40:52.599
yeah, that you had worked on
in particular. I remember we talked about

533
00:40:52.599 --> 00:40:58.480
the view ones obviously, can you
talk a little bit about those and what

534
00:40:58.519 --> 00:41:01.039
they do? I know we talked
about autmtion and stuff. Aren't there also

535
00:41:01.440 --> 00:41:07.039
you know, stuff for simple like
forms options and things like that when creating

536
00:41:07.119 --> 00:41:14.079
view that tie into AWS or what's
the extent of those. Yeah, So

537
00:41:14.679 --> 00:41:19.480
the if you go to and I
will bring it up as I talk to

538
00:41:19.480 --> 00:41:22.840
you, UI dot dot dot amplified. At AWUS, we have this full

539
00:41:22.920 --> 00:41:28.599
component library and there's really two parts
to it. Well. First, the

540
00:41:28.599 --> 00:41:34.480
component library that we have we have
we support a lot of different types of

541
00:41:35.000 --> 00:41:37.400
frameworks. We have Android, Angular, Flutter, React, React, Natives,

542
00:41:37.400 --> 00:41:42.960
Swift in view for a full component
library, we have it for React

543
00:41:42.960 --> 00:41:45.599
and so what I mean by that
is, we have all sorts of things

544
00:41:45.639 --> 00:41:50.679
like dividers, headings, icons,
alerts, loaders, messages, placeholders,

545
00:41:50.719 --> 00:41:53.119
links, buttons. You can't have
a UI framework without a button, UI

546
00:41:53.159 --> 00:41:58.199
component framework without a button. It's
just say that's pretty much standing. We

547
00:41:58.280 --> 00:42:01.480
also have a complete theming system so
you can theme it. But what I

548
00:42:01.480 --> 00:42:05.639
think when people ask us is what
why should I use this over shad CDN

549
00:42:06.119 --> 00:42:13.480
or shad CN or uh in the
view ecosystem like view TOFI or tailwind prime

550
00:42:13.559 --> 00:42:19.159
View, which I it's pretty cool. UI framework is that we have what

551
00:42:19.199 --> 00:42:23.440
are called connected components. So these
connected components, there's really four or five

552
00:42:23.480 --> 00:42:27.760
of them that we have now.
One is the authenticator, and this authenticator

553
00:42:27.760 --> 00:42:30.960
is available not just for React,
but you can get it for view Angular.

554
00:42:30.960 --> 00:42:34.880
That that's kind of like our biggest
use case for these this UI component

555
00:42:34.920 --> 00:42:37.480
framework. And what that allows you
to do is is just with a few

556
00:42:37.480 --> 00:42:43.320
lines of code you can add in
the few lines of boiler plate code,

557
00:42:43.360 --> 00:42:46.400
you can add in this kind of
almost like a widget. This this piece

558
00:42:46.400 --> 00:42:51.719
of code. This this authenticator,
which is a way you can use you

559
00:42:51.719 --> 00:42:54.719
can use to log in, log
out, sign up, sign in.

560
00:42:55.559 --> 00:43:00.400
It has it built into our aws
serve versus our cognitive service, so you

561
00:43:00.440 --> 00:43:06.039
can do social sign ins, Facebook
logins, Amazon logins, and it's just

562
00:43:06.239 --> 00:43:07.679
a few lines of code to add
all that in there. And that's what

563
00:43:07.719 --> 00:43:15.000
a lot of people use because to
create a full authentication system for your website,

564
00:43:15.079 --> 00:43:17.639
it's a lot of work to add
in that login page. Have you

565
00:43:17.639 --> 00:43:23.039
done that before, Steve No,
I've no. I've heard horror stories about

566
00:43:23.039 --> 00:43:29.239
it. I'd like to use stuff
like Laravell that handles all that for me

567
00:43:30.480 --> 00:43:31.719
on my back end, So I
don't Yeah, I don't want to create

568
00:43:31.760 --> 00:43:37.880
an authentication system from scratch exactly.
And there's two pieces of it. It's

569
00:43:37.960 --> 00:43:40.960
like writing the back end part of
it and using something like Laravel and then

570
00:43:42.000 --> 00:43:45.599
a lot of people use passport JS
or next off or something like that,

571
00:43:45.880 --> 00:43:49.679
and you kind of have to write
all that code yourself. And so that's

572
00:43:49.719 --> 00:43:51.480
one big part of it. And
then the other part of it is like,

573
00:43:51.519 --> 00:43:53.079
oh, let's add a login page, I forget your password page,

574
00:43:53.360 --> 00:43:58.880
a sign up page, how do
we redirect once we're signed in? How

575
00:43:58.880 --> 00:44:01.280
do we do a lot of things? So that that's kind of our biggest

576
00:44:01.400 --> 00:44:05.840
one of our bigger use cases is
this authenticator and we have a lot of

577
00:44:05.880 --> 00:44:07.480
ways to customize it too, So
if you don't like the way it looks,

578
00:44:07.599 --> 00:44:12.679
you can completely change the look and
feel of it. You can use

579
00:44:12.719 --> 00:44:16.440
our theming system to change it.
And then the other connected component that we

580
00:44:16.519 --> 00:44:21.480
have and this is for React only, but in the future we are looking

581
00:44:21.480 --> 00:44:24.880
to add it for like View and
Angular and other frameworks is our account settings.

582
00:44:25.840 --> 00:44:30.320
And what this does. You can
add like the change password and delete

583
00:44:30.719 --> 00:44:34.239
user. So you add this little
snippet of code and then you get this

584
00:44:35.000 --> 00:44:39.480
box on the screen that anybody you
can use to change their password after they're

585
00:44:39.480 --> 00:44:45.039
logged in a delete users the same
thing. Maybe have an admin user that

586
00:44:45.079 --> 00:44:47.599
needs to delay to everybody. You
Instead of having to write all this code,

587
00:44:47.880 --> 00:44:52.440
you can just add this component onto
your page. And I should say

588
00:44:52.440 --> 00:44:55.719
component better than widget. People.
When I say widget, people think of

589
00:44:55.840 --> 00:45:01.199
like old school app lists or something. Now now I'm talking about like essentially

590
00:45:01.239 --> 00:45:08.400
a component that's Britten memories. Yep. It basically a component that's written in

591
00:45:08.440 --> 00:45:14.880
the framework so that it has all
the idioms of that framework. For example,

592
00:45:14.920 --> 00:45:19.280
in View you have templates and you
have slots, but in React we

593
00:45:19.400 --> 00:45:23.119
have different types of props and we
have children, so we try to use

594
00:45:23.159 --> 00:45:27.760
the kind of what you know and
love from that framework. When with these

595
00:45:27.760 --> 00:45:30.599
components that you can pull in,
I can go through a few others.

596
00:45:30.599 --> 00:45:36.679
We have face Liveness, which is
our U I face amplify UI face Liveness

597
00:45:36.719 --> 00:45:42.719
detector which uses in the back end
or Amazon Recognition face Liveness service to help

598
00:45:42.760 --> 00:45:45.880
determine if a user is reel or
not. So there's some specific applications where

599
00:45:45.880 --> 00:45:50.639
people might use this. We also
have geo which is a way to add

600
00:45:50.719 --> 00:45:55.320
like maps onto your app, kind
of like Google Maps where you can do

601
00:45:55.440 --> 00:46:00.559
all sorts of mapp being fun.
And then Storage which is probably our second

602
00:46:00.599 --> 00:46:08.039
most popular component. Connected component which
allows you to do like S three uploads.

603
00:46:08.119 --> 00:46:13.159
It's like a file uploader, so
you can upload drop type UI type

604
00:46:13.159 --> 00:46:16.280
thing yep, you can. You
can drag and drop files directly to public,

605
00:46:16.320 --> 00:46:21.840
private, or protected S three buckets
and we have a nice interface for

606
00:46:21.920 --> 00:46:27.239
that. And then we have a
storage We have a storage image which connects

607
00:46:27.239 --> 00:46:30.000
to S three to show images on
your page. And then we have one

608
00:46:30.039 --> 00:46:35.800
last one is called in app messaging, which allows you to do messages in

609
00:46:35.840 --> 00:46:39.320
app messages in your in your app, so that's a lot there, but

610
00:46:39.400 --> 00:46:45.519
there's so we've been continuously adding more
and more features to our UI Component Framework

611
00:46:45.559 --> 00:46:50.559
library. So are these things that
I could use piecemeal as well? You

612
00:46:50.599 --> 00:46:52.800
know, if I have a large, you know, a view app that

613
00:46:52.840 --> 00:46:54.639
I'm already using, and I hook
it up to AWS and I want to

614
00:46:54.679 --> 00:47:01.000
be able to stash uh images in
an S three bucket, is that something

615
00:47:01.039 --> 00:47:05.719
I can use by itself or does
it have to be used in the context

616
00:47:05.039 --> 00:47:10.039
of a larger framework. Yeah,
you can. Certainly, you would have

617
00:47:10.119 --> 00:47:15.119
to obviously have an aw's account,
you would have to set up amplify.

618
00:47:15.519 --> 00:47:19.159
But yeah, after you did those
two things, you can then just use

619
00:47:19.199 --> 00:47:21.440
that one piece of it. You
can just do the file upload. You

620
00:47:21.480 --> 00:47:25.239
can use the file you can use
our storage manager or file uploader and start

621
00:47:25.320 --> 00:47:31.440
up lading files directly to S three. Yeah, and that's and I don't

622
00:47:31.440 --> 00:47:35.760
know if I finished this point,
but what I was trying to say is

623
00:47:35.760 --> 00:47:38.480
that that's one of the reasons you
may want to consider using something like ABS

624
00:47:38.480 --> 00:47:44.119
amplify. Is it the UI Component
Framework part is that we have these connected

625
00:47:44.119 --> 00:47:47.960
components that kind of take away all
that time it takes to write all the

626
00:47:49.000 --> 00:47:52.639
connecting connecting code to all these AW
services and we do that all for you,

627
00:47:52.679 --> 00:47:57.760
and then we have a nice,
very customizable themable component that you can

628
00:47:57.800 --> 00:48:02.280
add to your project. So the
theme ability stuff that you know, if

629
00:48:02.320 --> 00:48:06.119
I have a component, obviously I'm
probably not going to want to use it

630
00:48:06.159 --> 00:48:07.639
off the shelf, or maybe like
me and you're lazy and you do,

631
00:48:08.440 --> 00:48:13.920
so you're going to want to tweak
it to you know, to fit your

632
00:48:14.079 --> 00:48:20.079
brand or your look, your theme
for your particular application. What's the framework

633
00:48:20.119 --> 00:48:22.480
that you're using for that? Is
that like a custom AWS type of framework

634
00:48:22.599 --> 00:48:27.480
or is it something like a Tailwind
or bootstrap or how does that work?

635
00:48:29.400 --> 00:48:35.119
We have so we with our theming, So any of these connected components we're

636
00:48:35.159 --> 00:48:37.639
just talking about, its authentic Internet
messages or even if you're just using buttons

637
00:48:37.719 --> 00:48:42.960
or whatever from this component library,
it's all connected to our theming and you

638
00:48:43.000 --> 00:48:45.760
can create what's something called a theme
provider. And this is all built by

639
00:48:45.840 --> 00:48:49.159
us. We're not we're not using
Tailwind or anything like that, but it's

640
00:48:49.239 --> 00:48:54.440
kind of you. It's based on
several design principles that are pretty common in

641
00:48:54.480 --> 00:49:00.760
frameworks like design tokens, and we
use breakpoints and over rides, so everything

642
00:49:00.880 --> 00:49:05.480
in your app is essentially all the
themes in your app are design tokens that

643
00:49:05.559 --> 00:49:10.440
you can override at any time,
and you can make multiple different themes,

644
00:49:10.920 --> 00:49:15.440
and then you can change the colors, the typography, sizes, you can

645
00:49:15.519 --> 00:49:21.280
have different responsive layouts, so you
can have it built into the components that

646
00:49:21.320 --> 00:49:24.159
when it hits a certain screen size
automatically changes. Of course, we have

647
00:49:24.239 --> 00:49:28.480
dark mode because you can't have a
UI component framework without a button and dark

648
00:49:28.519 --> 00:49:31.039
mode, and we have that as
well, and then you can everything kind

649
00:49:31.079 --> 00:49:37.760
of boils down to CSS variables,
so you can change. If you didn't

650
00:49:37.760 --> 00:49:43.760
want to use the theming itself,
you can override the variable the CSS variables

651
00:49:43.840 --> 00:49:46.079
and change them to whatever you want, and that includes all the cover the

652
00:49:46.079 --> 00:49:51.079
colors, disabled colors, the primary
colors, and everything like that. Or

653
00:49:51.119 --> 00:49:53.639
you can use design tacons. So
those are using like atomic classes, you

654
00:49:53.679 --> 00:49:57.760
know that whole Tailwind, I think
one of the ones that started it,

655
00:49:57.800 --> 00:50:00.800
where you have one class does one
thing as compared to one class that does

656
00:50:00.800 --> 00:50:08.199
twenty different things. I would say
not in the traditional sense that you're thinking

657
00:50:08.280 --> 00:50:15.920
of, like in Tailwind with the
atomic classes. It's more along the lines

658
00:50:15.000 --> 00:50:21.960
of a traditional kind of app where
you have multiple different variables that make up

659
00:50:22.840 --> 00:50:27.559
one thing. No, it's it's
not like that. No, Okay,

660
00:50:27.800 --> 00:50:31.920
all right, awesome. That's a
lot of stuff to talk about. Anything

661
00:50:32.239 --> 00:50:37.000
regarding Amplify and Joba script that we
missed see one cover. No, I

662
00:50:37.039 --> 00:50:42.440
think that covers most of it.
I would highly recommend if you're listening,

663
00:50:42.480 --> 00:50:45.800
Yeah, check it out. This
hasn't sponsored anything. It sounds like it's

664
00:50:45.880 --> 00:50:51.440
kind of sponsored, but it's not. No, I just Steve is having

665
00:50:51.440 --> 00:50:53.360
me on and is talking about fun
technology. So but yeah, no,

666
00:50:53.639 --> 00:50:59.920
it's it. I'm I really think
that it'll be simplified as a great product

667
00:51:00.039 --> 00:51:06.440
and and it's hopefully more people can
check it out. The correct uh industry

668
00:51:06.519 --> 00:51:12.760
term I think is called one dig
bong shameless plug. But because obviously this

669
00:51:12.920 --> 00:51:17.039
is a well battle tested infrastructure,
you know at AWS, they've been around

670
00:51:17.039 --> 00:51:21.440
for a long time, so uh
yeah, and then make it make it

671
00:51:21.480 --> 00:51:23.800
easier to build your app on top
of their provided services. That's a win

672
00:51:23.920 --> 00:51:29.719
for developer for sure. Yep.
And so before we wrap up, let's

673
00:51:29.760 --> 00:51:34.719
talk about uh your work as a
devreu Uh. We mentioned you initially were

674
00:51:34.719 --> 00:51:38.679
started as a as a developer and
then moved into the developer relations role.

675
00:51:39.639 --> 00:51:45.159
So besides uh, coming on the
best podcast out there like this one,

676
00:51:45.280 --> 00:51:49.519
what what are the other things that
are that you do in your day to

677
00:51:49.599 --> 00:51:58.599
day It's more like what I don't
do. Developer advocacy is a it's it's

678
00:51:58.639 --> 00:52:05.320
an emerging feel. The essentially what
we're trying to do is connect with developers.

679
00:52:05.320 --> 00:52:07.679
We're not I mentioned I joked about
being a sales person. I'm not

680
00:52:07.719 --> 00:52:12.559
trying to be a salesperson. What
I'm more interested in is just trying to

681
00:52:12.559 --> 00:52:15.719
get more people to try the product
out, to check it out, to

682
00:52:15.719 --> 00:52:20.639
give me feedback, to listen to
it. We're not marketing people. And

683
00:52:20.719 --> 00:52:25.480
so a lot of my job is
to create content Like I create blog posts

684
00:52:25.519 --> 00:52:31.880
and videos, come on podcasts like
this. I do a fair bit of

685
00:52:31.920 --> 00:52:36.440
community stuff. I can be a
part of a community. I'll go,

686
00:52:36.519 --> 00:52:37.880
I'll come and talk to them.
Actually, in two weeks I'm going to

687
00:52:37.920 --> 00:52:42.800
be at AWS Sacramento, which I'm
really looking forward to, to do a

688
00:52:42.800 --> 00:52:47.679
workshop on something we just talked about
today, this Amplify Gen two. So

689
00:52:47.960 --> 00:52:51.840
it's a lot of creating content,
it's a lot about connecting with people.

690
00:52:52.559 --> 00:52:57.320
Part of my time too now is
going to conferences. So i've Last year

691
00:52:57.400 --> 00:53:00.880
I went to eleven I think it
was like ten or eleven different conferences all

692
00:53:00.920 --> 00:53:06.599
around the US, all around US
and Canada. I didn't go Europe,

693
00:53:07.360 --> 00:53:09.360
but maybe this year I'll go to
Europe. And so I got to talk

694
00:53:09.400 --> 00:53:14.440
to a ton of people and just
and find out, like what the developer

695
00:53:14.440 --> 00:53:16.360
community is doing, what's working,
what's not, what are they excited about

696
00:53:17.199 --> 00:53:22.760
some of my jobs? Posting on
Twitter and just reading other people's tweets,

697
00:53:22.519 --> 00:53:28.119
posting on any any service that people
talk about software development. I've been trying

698
00:53:28.159 --> 00:53:31.480
out TikTok lately. I feel like
I'm too old for TikTok, but i

699
00:53:31.519 --> 00:53:36.440
am. I'm on there, and
it's funny. There is some there.

700
00:53:36.639 --> 00:53:42.639
It's funny. There is some dev
developer influencers on TikTok that like dance and

701
00:53:42.679 --> 00:53:46.760
they talk about AWS services and it's
really it's a really fun place. So

702
00:53:46.920 --> 00:53:50.519
I'm trying to it. It's a
lot of different things you can do,

703
00:53:50.679 --> 00:53:53.280
but it's a lot about getting awareness
out there. It's a lot about talking

704
00:53:53.320 --> 00:53:57.960
about products and talking to developers,
and so I love it. I did

705
00:53:58.039 --> 00:54:01.400
before I was a software before I
was doing more developer advocacy. We're all

706
00:54:02.039 --> 00:54:08.400
double for developer advocacy work. I
was a front end engineer and I did

707
00:54:08.440 --> 00:54:14.280
back in engineering, but I always
like created YouTube videos and created content,

708
00:54:14.719 --> 00:54:19.440
and I found that I just really
liked doing that. It was just kind

709
00:54:19.480 --> 00:54:22.440
of a weird thing. It's kind
of like the fun of like teaching someone.

710
00:54:22.760 --> 00:54:24.679
Did she teaching someone? You don't
even have me next, We're just

711
00:54:24.719 --> 00:54:28.239
teaching it just a little bit more
than the next person of what you found

712
00:54:28.280 --> 00:54:31.360
out, and then having people respond
back to you, talk to you.

713
00:54:31.559 --> 00:54:35.559
It's just such a fun feeling to
do that, and it's something I really

714
00:54:35.599 --> 00:54:38.199
love and I really liked doing so
I think this job kind of fit really

715
00:54:38.199 --> 00:54:44.119
well into that because I had been
doing some sort of developer reach either going

716
00:54:44.119 --> 00:54:47.000
to conferences, creating YouTube videos,
writing books for years now, and so

717
00:54:47.079 --> 00:54:52.679
this kind of all fit into place. Awesome, Yeah, that would be

718
00:54:52.719 --> 00:54:57.559
fun to I've heard the upsides of
downsides to that. I think you know

719
00:54:57.639 --> 00:55:01.039
you and I have talked before on
views on view regard conferences and how awesome

720
00:55:01.039 --> 00:55:05.360
conferences can be. Just in terms
of and yes, I'm in and get

721
00:55:05.400 --> 00:55:09.320
to view comp I will at some
point, I promise but just how you

722
00:55:09.360 --> 00:55:13.760
can meet people and put names to
faces, and you know, the hallway

723
00:55:13.800 --> 00:55:16.400
track and all that kind of stuff. Downsides that I've heard from some people

724
00:55:16.480 --> 00:55:20.360
is just a crazy amount of travel. I mean, at some point travels

725
00:55:20.400 --> 00:55:24.199
I got to get a little weirying. I would imagine, Yeah, you're

726
00:55:24.280 --> 00:55:28.599
right, it is quite a bit
of travel. I try to put some

727
00:55:29.000 --> 00:55:31.400
guardrails for my travel. I try
not to travel on the weekends. Although

728
00:55:31.400 --> 00:55:35.360
I am traveling the weekends in a
month from now, but most of the

729
00:55:35.360 --> 00:55:37.199
time I don't travel on the weekends. I try to be home by home

730
00:55:37.239 --> 00:55:39.960
by Friday by five PMS. I
can be with my family, and I

731
00:55:40.000 --> 00:55:44.440
have two kids, so I tried
not to do that. And I also

732
00:55:44.480 --> 00:55:49.199
try not to travel more than like
once or twice every couple of months a

733
00:55:49.280 --> 00:55:52.480
few months. It can get to
the point, though I heard some develop

734
00:55:52.559 --> 00:55:59.000
advocates where they're traveling every single every
single weekend, every single week, or

735
00:55:59.039 --> 00:56:01.480
maybe three times a month. That's
that's too much, Like that's crazy,

736
00:56:01.599 --> 00:56:06.159
yeah, and that that does wear
on you. And also just getting out

737
00:56:06.159 --> 00:56:07.840
there. I'm more of an introvert
in a lot of ways. Took me

738
00:56:07.880 --> 00:56:14.480
a long time to get out of
my shell to doctor people. Especially being

739
00:56:14.719 --> 00:56:16.800
a developer, you kind of you
just in front of a computer all day.

740
00:56:16.800 --> 00:56:20.239
You don't really act interact too much. That's not true. You do

741
00:56:20.320 --> 00:56:22.280
have meetings and and you do talk
to a lot of people, but for

742
00:56:22.320 --> 00:56:24.800
the most part, when you're in
your zone, you're by yourself from your

743
00:56:24.840 --> 00:56:30.480
computer. And so getting past that
too. At the first wasn't too much

744
00:56:30.480 --> 00:56:32.239
of a struggle because I've been doing
videos and stuff for a while. But

745
00:56:32.280 --> 00:56:36.000
even some days I'm like, do
I want to go out and meet people?

746
00:56:37.480 --> 00:56:39.960
It's it's that those are some of
the negative things too. Yeah,

747
00:56:39.960 --> 00:56:45.920
and travel certainly can be one of
them. Yeah. I used to back

748
00:56:45.280 --> 00:56:47.800
a long time ago, I used
to travel just twice a month, and

749
00:56:47.840 --> 00:56:51.880
that was quite a bit. It
was nice when you had all the Frequent

750
00:56:51.880 --> 00:56:54.159
Flyer miles and you got the upgrades
and the you know, the Delta Medallion,

751
00:56:54.519 --> 00:56:59.519
Golden Medallion stuff, travel lounges and
all that. But still travels.

752
00:57:00.679 --> 00:57:07.079
Travel is travel. Yeah, it's
I have talked to other people too that

753
00:57:07.199 --> 00:57:10.639
travel way more for me. And
I'm always getting like tips to like what's

754
00:57:10.679 --> 00:57:15.199
the best credit cards to get where
it's the best places to go when you're

755
00:57:15.239 --> 00:57:16.760
at ex city, When to get
to the city, when to leave.

756
00:57:19.400 --> 00:57:21.920
There's there's a lot of travel hacks
I'm learning more and more about, but

757
00:57:21.960 --> 00:57:24.920
like I said, I try to
limit it, not to have it be

758
00:57:25.000 --> 00:57:30.719
all encompassing because that's no fun.
Cool alrighty, Well, with that,

759
00:57:30.800 --> 00:57:35.760
we'll wrap it up and move to
picks. Thanks Eric for coming on yet

760
00:57:35.800 --> 00:57:39.639
again. Talked about aws. Oh
one quick question before I forget you said

761
00:57:39.639 --> 00:57:44.159
you blog where you Where do you
blog at? I used to blog at

762
00:57:44.199 --> 00:57:47.800
program with Eric dot com, So
if you go there you'll find some very

763
00:57:47.840 --> 00:57:52.400
old articles. But I am thinking
about starting it up again. Well I

764
00:57:52.440 --> 00:57:55.639
recommend everybody though. We'll probably get
to the skin at the end. But

765
00:57:55.800 --> 00:58:01.239
Eric dot video is just goes directly
to my YouTube or Twitter at Eric c

766
00:58:01.480 --> 00:58:06.679
h is like the best way to
get a hold of me. Yeah,

767
00:58:06.760 --> 00:58:08.280
all right, yeah, program with
Eric on YouTube. There's a lot of

768
00:58:08.320 --> 00:58:10.920
videos out there, and he has
really great thumbnails on his videos too.

769
00:58:10.960 --> 00:58:15.960
I'm jealous if I could do those, I would do more videos. So

770
00:58:15.519 --> 00:58:22.280
gotta have the got to have the
thumbnail. All right, So with that,

771
00:58:22.360 --> 00:58:25.599
we'll move the picks. I'm assuming
you remember that Eric and I have

772
00:58:25.920 --> 00:58:29.840
I have one. I just thought
of, Okay, well I'll go first

773
00:58:29.880 --> 00:58:34.800
and give you time to get that
prepped. Uh. You know, for

774
00:58:35.039 --> 00:58:37.679
those of you that are regular listeners, you know that my dad jokes for

775
00:58:37.760 --> 00:58:40.880
the highlight of any podcast episode.
But first, I have a legit pick

776
00:58:43.239 --> 00:58:45.239
that I said, Well, I
take that back. I have a pick

777
00:58:45.280 --> 00:58:50.760
that isn't a dad joke, but
it's not. That's not demean my dad

778
00:58:50.840 --> 00:58:55.320
jokes. It's a great article I
saw on Hacker News. It's called why

779
00:58:55.320 --> 00:59:00.760
You've Never Been in a Plane Crash
by someone named Kyra Dempsey who normally blogs

780
00:59:00.840 --> 00:59:08.800
about aviation incidents under the name of
Admiral Cloudberg. And the article is all

781
00:59:08.840 --> 00:59:20.000
about how blame is handled after an
aviation incident, and it's really fascinating and

782
00:59:20.039 --> 00:59:24.239
I've seen this before and it makes
a lot of sense. And the article,

783
00:59:24.519 --> 00:59:32.199
the given incident that talks about happened
at LAX Los Angeles International Airport in

784
00:59:32.320 --> 00:59:42.280
nineteen ninety one, basically where a
seven thirty seven was landing and when it

785
00:59:42.360 --> 00:59:49.519
landed, it completely crushed a commuter
plane that was sitting on the runway and

786
00:59:49.559 --> 00:59:52.639
I think nineteen people died, and
it was just it was really bad and

787
00:59:54.679 --> 01:00:00.599
right away. The cause and this
light controller admitted to it is that she

788
01:00:00.840 --> 01:00:06.000
had left the commuter plane there.
She forgot that she had told the plane,

789
01:00:06.039 --> 01:00:07.519
yeah, stop right here, and
then she had another plane say yeah,

790
01:00:07.519 --> 01:00:12.039
it's okay to land right where that
commuter plane is sitting. And so

791
01:00:12.119 --> 01:00:15.559
the point of the article talks about
how the AA industry when something like that

792
01:00:15.679 --> 01:00:21.960
comes you don't you know, NTSB
doesn't purposely does not have power to file

793
01:00:22.079 --> 01:00:24.599
charges or make you know, manslaughter
or murder charges or something like that.

794
01:00:25.000 --> 01:00:30.800
The whole goal when it comes to
aviation is figuring out why did this happen?

795
01:00:32.119 --> 01:00:36.719
And people are going to be more
willing to talk and open up and

796
01:00:36.719 --> 01:00:38.760
talk about everything that had happened if
they don't think they're going to be charged

797
01:00:38.800 --> 01:00:42.800
with something. And in this particular, it's quite a long article, but

798
01:00:43.039 --> 01:00:47.800
later on down the down the article, it talks about what they figured out.

799
01:00:47.880 --> 01:00:52.599
There was like six different things in
terms of equipment that wasn't working,

800
01:00:53.719 --> 01:00:57.840
a custom built system that was you
know, where they had to find custom

801
01:00:57.880 --> 01:01:02.039
parts, information that was supposed to
be made available to her that wasn't available,

802
01:01:02.039 --> 01:01:07.320
that she had to go searching for
a whole bunch of different things,

803
01:01:07.400 --> 01:01:12.480
and so as a result of that, they were able to figure out what

804
01:01:12.519 --> 01:01:17.920
the problems were to address them,
and this lady, the traffic the air

805
01:01:17.920 --> 01:01:22.119
traffic control person was offered a chance
to come back and chose not to,

806
01:01:22.199 --> 01:01:25.599
probably because she was so traumatized by
this. But just a really interesting article

807
01:01:25.639 --> 01:01:30.800
about how when things go wrong,
how much more you can get when your

808
01:01:30.880 --> 01:01:36.400
first inclination isn't to point a finger
and say you screwed up, you were

809
01:01:36.400 --> 01:01:40.840
wrong, You're going to pay so
again. It's called Why You've Never Been

810
01:01:40.880 --> 01:01:47.360
in a Plane Crash? By Kira
Dempsey. I love it. I was

811
01:01:47.400 --> 01:01:52.039
going to say I am a huge
fan of I guess not a huge fan,

812
01:01:52.639 --> 01:01:55.400
but I liked all those air disaster
TV shows, like Air Disasters and

813
01:01:55.480 --> 01:02:00.360
Smithsonian's I think it's called may Day
in Canada. You know, it breaks

814
01:02:00.400 --> 01:02:05.599
down like every single flight. Every
episode is like a different crash, and

815
01:02:05.639 --> 01:02:09.079
then you hear about the NTSB and
the black boxes and how they investigate it.

816
01:02:09.159 --> 01:02:14.000
So I'm always interested that stuff,
very very very fascinating. Why it's

817
01:02:14.000 --> 01:02:16.400
so much safer to travel today than
it is back you know, one hundred

818
01:02:16.480 --> 01:02:20.559
years ago or twenty years ago.
Yeah, and that's part of what this

819
01:02:20.679 --> 01:02:24.599
article talks about is because they're not
assigning blame and they're just figuring out what

820
01:02:24.800 --> 01:02:29.920
went wrong, let's fix it.
Then that tends to make things, you

821
01:02:29.960 --> 01:02:32.480
know, much safer as compared to
just screwed up and now you're gonna someone's

822
01:02:32.519 --> 01:02:35.880
gonna clam up and not tell the
truth because they don't want to get thrown

823
01:02:35.880 --> 01:02:38.079
in jail. You know. As
someone that now travels a lot more and

824
01:02:38.320 --> 01:02:42.840
is constantly on flights, I'm like, thank goodness that people are like that

825
01:02:42.880 --> 01:02:46.000
in that article exists. Yeah,
yeah, for sure. Yeah this uh

826
01:02:46.679 --> 01:02:51.639
KYI dempscy. If you look up
Admiral Cloudberg, it does a lot of

827
01:02:51.639 --> 01:02:55.480
writing that real detailed stuff on aviation
incidents. And if you read the comments

828
01:02:55.519 --> 01:02:59.360
on Hacker News, they talk about
certain YouTube videos like you said, where

829
01:02:59.360 --> 01:03:01.760
they go in and just break down
all the details. So there's one that

830
01:03:02.400 --> 01:03:07.199
I've read before. So in nineteen
seventy eight, when I was pretty young,

831
01:03:08.760 --> 01:03:14.119
is December twenty eighth of nineteen seventy
eight, there was a I forget

832
01:03:14.199 --> 01:03:17.519
the model of plane that was coming
into Portland and crashed probably just a couple

833
01:03:17.559 --> 01:03:23.679
of miles from my house in a
very heavily suburban area and the pilot was

834
01:03:24.800 --> 01:03:29.119
very good, either good or fortunate
or a combination of both, and Mandids

835
01:03:29.159 --> 01:03:34.760
landed in this wooded area between two
developments right off a major street here in

836
01:03:34.800 --> 01:03:40.559
northeast Portland and actually out farther out
towards where I live. And if you

837
01:03:40.599 --> 01:03:45.880
read the NTSB report on it,
it talks about how, basically I can't

838
01:03:45.920 --> 01:03:49.960
remember if he ignored it or was
unaware that he was low on fuel because

839
01:03:49.960 --> 01:03:52.360
he had tried to come into Portland
and had the circle for a while and

840
01:03:52.480 --> 01:03:55.960
during circling he ran out of fuel
and realized, oh, I'm out of

841
01:03:57.000 --> 01:04:00.960
fuel, got a crash, and
so he was man to bring it in

842
01:04:00.000 --> 01:04:03.239
for that. But I can still
remember that night and remember the crash and

843
01:04:03.280 --> 01:04:08.880
reading about it. It is quite
fascinating stuff if you're into probably like most

844
01:04:08.920 --> 01:04:13.920
developers are debugging, and you know, figuring out what went wrong and how

845
01:04:13.920 --> 01:04:18.519
to avoid it. So excellent.
All right, So onto the dad jokes

846
01:04:18.920 --> 01:04:25.280
of the week. When I was
younger and in school, I went up

847
01:04:25.320 --> 01:04:29.679
to my teacher one day and I
said, would you punish me for something

848
01:04:29.719 --> 01:04:32.280
I didn't do? And my teacher
said no, of course not. I

849
01:04:32.280 --> 01:04:41.280
said, okay, I did not
do my homework nice. So I had

850
01:04:41.280 --> 01:04:45.880
a friend named Jimmy, and Jimmy
brought a bought an electric car and he

851
01:04:45.920 --> 01:04:49.159
was really excited about it. And
then he bought an electric blanket, and

852
01:04:49.159 --> 01:04:53.840
then he bought an electric guitar.
Then he bought an electric chair. I

853
01:04:53.840 --> 01:05:00.840
haven't heard from him in a while. I got to give credit to Stephen

854
01:05:00.920 --> 01:05:06.480
right for that one. He was
on Colbert's show Late Night Show and told

855
01:05:06.519 --> 01:05:11.639
that one. And he's been my
all time favorite comedian for since the eighties.

856
01:05:13.599 --> 01:05:16.519
And then finally, I went to
the store the other day and was

857
01:05:16.760 --> 01:05:20.679
just getting some milk, which I
had to do when we had got hit

858
01:05:20.719 --> 01:05:26.360
with ice and there wasn't much less
in the stores because everybody's buying them out

859
01:05:26.400 --> 01:05:30.320
or their refrigerators had all gone bad. And as I was checking out,

860
01:05:30.280 --> 01:05:33.280
the checker asked me, do you
want me to put this milk in a

861
01:05:33.320 --> 01:05:35.119
bag? I said, no,
that's okay, leave it in the jug.

862
01:05:41.119 --> 01:05:43.400
Love it. So those are my
picks. What do you got,

863
01:05:43.519 --> 01:05:49.480
Eric? I saw that the Apple
Vision Pro was just released. Have you

864
01:05:49.519 --> 01:05:53.360
seen this thing, Steve? I
have heard about it, I have not

865
01:05:53.480 --> 01:05:58.599
seen it, So think of it
like VR. The Ultimate VR Goggle made

866
01:05:58.599 --> 01:06:02.119
my Apple you can and adds like
when you have it on, it looks

867
01:06:02.159 --> 01:06:06.119
like there's like a thousand foot screen
in front of you. I mean as

868
01:06:06.199 --> 01:06:11.159
all these features, like you can
navigate simply by using your hand, eyes

869
01:06:11.199 --> 01:06:15.639
and hands. You may have seen
this little gesture and the commercials. I

870
01:06:15.679 --> 01:06:17.280
want to try it out, like
this is this? This looks really neat.

871
01:06:17.440 --> 01:06:21.639
It is I think it's around.
It's in pre order. It's pretty

872
01:06:21.639 --> 01:06:25.599
spendy. It's like two grand,
isn't it. Yeah, I think it's

873
01:06:25.800 --> 01:06:30.519
uh. Yeah, the two hundred
and fifty six gigabyte model is three four

874
01:06:30.599 --> 01:06:35.400
hundred and ninety nine dollars, but
you can get the Terabyt for almost four

875
01:06:35.440 --> 01:06:43.280
thousand, so yeah, it's it's
not for it's not cheap, but it

876
01:06:43.360 --> 01:06:45.280
looks kind of like the ultimate geek. If I want to go and ide,

877
01:06:45.639 --> 01:06:48.360
like we just said, I travel
a lot, I want to see

878
01:06:48.559 --> 01:06:51.480
I haven't traveled in a little bit
the last couple of months, but I

879
01:06:51.519 --> 01:06:57.760
wonder if I'll start seeing them in
at when I'm traveling on airplanes where people

880
01:06:57.920 --> 01:07:00.719
just like pop them in and be
watching movies. That'll be really cool.

881
01:07:00.719 --> 01:07:04.679
Maybe if I see someone I'll ask
them to can I borrow your threety five

882
01:07:04.719 --> 01:07:08.039
hundred dollars device to try it out
for a few minutes. I don't know

883
01:07:08.039 --> 01:07:11.360
if that'll work, but I'm well, you work for Amazon, I got

884
01:07:11.360 --> 01:07:15.280
money. They can take that point
right as a debre. You deserve it.

885
01:07:15.960 --> 01:07:18.880
I think somewhere, yeah, go
ahead, somebody like you know,

886
01:07:19.320 --> 01:07:24.280
reaching out and doing something like that, like they're playing a game or something

887
01:07:24.280 --> 01:07:26.320
like that, smack the person next
to them on the plane. I can

888
01:07:26.360 --> 01:07:30.559
see that happening. I think there
is some sort of connection. You can

889
01:07:30.559 --> 01:07:35.760
do aws with Division Pro and might
may even with Amplify. I haven't looked

890
01:07:35.800 --> 01:07:40.400
into it. I thought I heard
that anyway, So would that work?

891
01:07:41.079 --> 01:07:45.800
I have no idea, no idea. Yeah, I think there there might

892
01:07:45.840 --> 01:07:48.480
be something with x code. I'm
looking. I just googled it real quickly,

893
01:07:49.880 --> 01:07:56.880
and you can maybe create software for
the device. Oh really Yeah,

894
01:07:58.079 --> 01:08:01.719
So that's that's my first pick.
I'm I'm all for the world where in

895
01:08:01.960 --> 01:08:05.559
you know, fifty years from now, we all have our VR headsets and

896
01:08:05.599 --> 01:08:10.679
we're just walking around or staying at
home, and we don't have to go

897
01:08:10.760 --> 01:08:14.719
anywhere. We're just on a vir
set sets all the time, spoken like

898
01:08:14.719 --> 01:08:17.000
a true introvert. What can possibly
go wrong? Just kidding, I'm just

899
01:08:17.039 --> 01:08:20.720
kidding. No, that sounds just
stopian. You ever seen Wally by the

900
01:08:20.760 --> 01:08:25.600
way, Yeah, that that's where
we're going. I guess that's we're heading.

901
01:08:26.560 --> 01:08:30.039
That's my only pick other than go
Niners. You know, it's that

902
01:08:30.239 --> 01:08:35.000
as of this recording, they have
made it to the super Bowl and it's

903
01:08:35.039 --> 01:08:41.560
gonna be tough. Mahones looks really
really good, Kelsey, It's on fire.

904
01:08:42.840 --> 01:08:46.840
It could go either way. But
I'm gonna if the maps, you

905
01:08:46.880 --> 01:08:49.479
see all the maps and the memes
ahead of the game, and it shows

906
01:08:51.920 --> 01:08:55.079
map of the US, for instance, it would say, Okay, who's

907
01:08:55.119 --> 01:08:58.760
voting who's cheering for San Francisco versus
who's cheering for Detroit? And it would

908
01:08:58.760 --> 01:09:01.199
be like this little area around So
Francisco and then rushed the country's cheering for

909
01:09:01.279 --> 01:09:06.159
Detroit. And the same with the
Ravens and the Chiefs. I prefer I

910
01:09:06.199 --> 01:09:11.760
personally would have preferred the Lions versus
the Ravens. My team, the Cowboys

911
01:09:11.920 --> 01:09:17.439
screwed up again as always, Thanks
Jerry, But but I'm just gonna say

912
01:09:17.439 --> 01:09:21.359
this, Detroit gave you a gift
be happy. Yeah, Yeah, we

913
01:09:21.560 --> 01:09:27.359
definitely got some good luck there in
the second half. Yeah. I would

914
01:09:27.399 --> 01:09:31.960
say the whole week leading up to
the NFC Championship Game, it felt like,

915
01:09:32.600 --> 01:09:39.199
yeah, even though the forty nine
ers were overdogs, that they were

916
01:09:40.079 --> 01:09:50.279
kind of the leading favorites before they
were, they were leading, and in

917
01:09:50.279 --> 01:09:54.239
in Vegas, if you looked at
the points spread, I think there were

918
01:09:54.279 --> 01:09:58.239
seven point favorites. Yeah, and
of course they just barely pull it out.

919
01:09:58.840 --> 01:10:00.119
But if yeah, if you look
at the national scene, I think

920
01:10:00.119 --> 01:10:03.399
everybody was rooting for the Lions because
they've never been there. It's a Cinderella

921
01:10:03.439 --> 01:10:13.359
story. It was amazing get it
done. So now we got the two

922
01:10:14.359 --> 01:10:16.439
not as favorite teams, not as
popular teams, but hey, I'll take

923
01:10:16.479 --> 01:10:21.439
it. That was Bill Murray from
Cadyshack for those who might not recognized my

924
01:10:23.439 --> 01:10:26.880
impression anyway. All Right, so
with that, we're gonna wrap it up.

925
01:10:26.960 --> 01:10:29.359
Thanks for coming. Eric, Always
a pleasure to have you here.

926
01:10:30.359 --> 01:10:36.560
Any questions bug him at Eric Eric
with the k THH on Twitter program with

927
01:10:36.720 --> 01:10:44.600
Eric and Eric Eric got video yep, all right, and he will answer

928
01:10:44.640 --> 01:10:46.600
your questions. Thanks for coming,
everybody, talk to you next time.

