WEBVTT

1
00:00:01.080 --> 00:00:05.679
How'd you like to listen to dot
NetRocks with no ads? Easy? Become

2
00:00:05.679 --> 00:00:09.839
a patron For just five dollars a
month, you get access to a private

3
00:00:10.000 --> 00:00:14.439
RSS feed where all the shows have
no ads. Twenty dollars a month will

4
00:00:14.439 --> 00:00:19.039
get you that and a special dot
NetRocks patron mug. Sign up now at

5
00:00:19.039 --> 00:00:23.800
Patreon dot dot NetRocks dot com.
Hey, Carl and Richard here with your

6
00:00:23.879 --> 00:00:29.199
twenty twenty four NDC schedule. We'll
be at as many NDC conferences as possible

7
00:00:29.239 --> 00:00:33.520
this year, and you should consider
attending no matter what. Ndcoslo is happening

8
00:00:33.640 --> 00:00:37.840
June tenth through the fourteenth. Get
your tickets at ndcoslo dot com. The

9
00:00:37.880 --> 00:00:44.000
Copenhagen Developers Festival happens August twenty sixth
through the thirtieth. Early bird discount ends

10
00:00:44.079 --> 00:00:51.679
April twenty sixth. Tickets at Cphdevfest
dot com. Ndcporto is happening October fourteenth

11
00:00:51.719 --> 00:00:56.840
through the eighteenth. The early bird
discount ends June fourteenth. Tickets at Ndcporto

12
00:00:57.039 --> 00:01:12.159
dot com. We'll see you there, we hope. Hey, get down

13
00:01:12.239 --> 00:01:15.280
rock and roll. It's doott need
Rocks. I'm Carl Franklin and I'm Richard

14
00:01:15.280 --> 00:01:19.040
Campbell and Scott hunters with us.
We'll bring him in in a minute.

15
00:01:19.040 --> 00:01:23.079
But how's everything going up in the
great Western North? Uh? You know

16
00:01:23.200 --> 00:01:27.719
it's springtime and springtime is good.
We're putting in vegetable gardens. You know.

17
00:01:27.760 --> 00:01:30.680
It's now that we're living up here
full time, you see things differently.

18
00:01:30.760 --> 00:01:33.920
Do you have as many bears there
that are going to come and eat

19
00:01:33.920 --> 00:01:37.319
your vegetables? No, a lot
fewer. The issue here will be deer.

20
00:01:37.439 --> 00:01:38.959
Yeah, so we actually had to
put deer fencing around the garden.

21
00:01:40.040 --> 00:01:42.840
Oh dear, But we'll find out
if you don't find out it works until

22
00:01:42.879 --> 00:01:47.680
you're actually growing things and they're eating
it anyway, so we'll find out soon

23
00:01:47.760 --> 00:01:49.840
enough. But season one, feed
the deer. Season two, yeah,

24
00:01:51.000 --> 00:01:53.480
keep the deer away. Feed the
deer less. Feed. But you know

25
00:01:53.519 --> 00:01:57.719
we were talking about it, she
said, I said, this will be

26
00:01:57.719 --> 00:02:00.480
at arms race. We'll see what
they we've brought. We put out our

27
00:02:00.519 --> 00:02:02.799
first salvo. Let's see what they
come with. We'll figure it out from

28
00:02:02.799 --> 00:02:06.760
there. So here, the weather
has a made up its mind. In

29
00:02:06.840 --> 00:02:12.319
Connecticut, the couple days ago it
was like in the thirties overnight and today

30
00:02:12.360 --> 00:02:15.360
it's gonna be eighty. Oh man, it's gonna be eighty. It's like

31
00:02:15.400 --> 00:02:20.879
summertime, just like that. Yeah, next week it'll be raining and cold

32
00:02:20.879 --> 00:02:24.840
again. All right, Well,
let's dive right into this thing with a

33
00:02:24.840 --> 00:02:36.199
little thing that I call him that
I don't know framework all Right, dude,

34
00:02:36.199 --> 00:02:38.560
what do you got? Okay?
Well, I mentioned this maybe a

35
00:02:38.599 --> 00:02:45.360
week ago or two, but there's
a new Blazer master class happening in September

36
00:02:45.479 --> 00:02:49.400
in Tuscany, very dice. And
the reason I wanted to mention it with

37
00:02:49.479 --> 00:02:53.759
a real URL here, which is
Codnecastle dot com or since it's eighteen ninety

38
00:02:53.800 --> 00:02:59.080
seven one eight nine seven dot popped
at me, is that there's an early

39
00:02:59.120 --> 00:03:04.520
bird discount. You can save five
hundred bucks if you sign up by next

40
00:03:04.560 --> 00:03:07.520
week. May fifteenth is the deadline
for the early bird. Okay. But

41
00:03:07.599 --> 00:03:10.680
what's cool about it is if you
go there and you watch the video.

42
00:03:10.719 --> 00:03:16.560
I actually made a video from last
year, and I think that brings the

43
00:03:17.000 --> 00:03:23.960
experience home because I talked to the
people and I took their pictures that they

44
00:03:23.000 --> 00:03:29.280
took as tourists out in Tuscany,
and you know, did a little ken

45
00:03:29.360 --> 00:03:35.719
Burn's treatment to some Tuscan music,
you know, to some Neapolitan songs in

46
00:03:35.800 --> 00:03:42.759
Pavaratti and some Puccini anyway, So
it's really great. Basically, it's code

47
00:03:42.800 --> 00:03:46.120
in a castle and you spend a
week in a castle with your significant other,

48
00:03:46.560 --> 00:03:51.599
like in a castle bedroom, having
meals and on the grounds and seeing

49
00:03:51.599 --> 00:03:55.560
Tuscany. And the first four hours
of the day were in class nine to

50
00:03:55.599 --> 00:04:00.360
one and then everybody meets up and
the rest of the day is all sight

51
00:04:00.400 --> 00:04:03.919
seeing and tourism, and the plus
ones or the significant others, they get

52
00:04:03.919 --> 00:04:09.000
to spend the morning doing things that
you know, we don't do nice.

53
00:04:09.360 --> 00:04:12.520
You know, they go out and
the cheese shops, the olive oil shops,

54
00:04:12.560 --> 00:04:15.639
the beaches, all that stuff,
and they do morning activities that are

55
00:04:15.120 --> 00:04:20.160
strictly for them. It's just a
great thing if you've modernized the immersive event.

56
00:04:20.240 --> 00:04:23.560
Carl, I think it's pretty cool. Yeah, And I got to

57
00:04:23.560 --> 00:04:27.480
say I didn't do this. It
wasn't my idea. It was Larry Lustig's

58
00:04:27.519 --> 00:04:31.639
idea, who's been a longtime listener
of dot net rocks and also a keto

59
00:04:31.720 --> 00:04:35.600
guy right right, and he and
his friend Marco, who lives in New

60
00:04:35.680 --> 00:04:41.720
York now but grew up in Tuscany
and is from Rome. They put this

61
00:04:41.800 --> 00:04:46.720
whole thing together, and kudos to
them because you know, the traincation has

62
00:04:46.879 --> 00:04:49.680
begun. Yeah, the train cation
revolution. It's a good and it's a

63
00:04:49.680 --> 00:04:54.360
good idea to just mix the two
together. And Scott Hunter almost came last

64
00:04:54.439 --> 00:04:59.519
year. I did almost come last
year, and maybe this year will be

65
00:04:59.519 --> 00:05:00.680
a better year me to have a
chance to come. It just comes up

66
00:05:00.759 --> 00:05:03.920
if I have too much travel booked
up, like, yeah, I've currently

67
00:05:03.959 --> 00:05:09.759
overbooked myself right now, and I
need to unoverbook myself right Maybe a week

68
00:05:09.800 --> 00:05:13.600
in Tuscany, just the ticket to
relax a little bit. Maybe if you're

69
00:05:13.639 --> 00:05:15.959
there, carl as my wife can
want me to stay for a month.

70
00:05:15.040 --> 00:05:23.360
That's the Yeah, that's tell me. The dellside, Well, this castle

71
00:05:23.480 --> 00:05:26.519
is something that you just can't book
like a hotel. You have to have

72
00:05:26.600 --> 00:05:30.399
a group. And that's why it's
so special is that we get a group

73
00:05:30.439 --> 00:05:33.600
together and then because of that we
own the castle, like where there's nobody

74
00:05:33.639 --> 00:05:36.920
else there but our group. Nice
and so it's not it's not anything that

75
00:05:36.959 --> 00:05:40.920
you could experience any other way anyway, cool man, that's what I got.

76
00:05:41.000 --> 00:05:43.720
Who's talking to us today? Richard
grabbed the comment of the show eighteen

77
00:05:43.759 --> 00:05:46.439
eighty nine, the one we did
with one Magnus Martinsen. You know them.

78
00:05:46.680 --> 00:05:48.199
Yeah, when we were talking about
Azure. Lots of people like this

79
00:05:48.319 --> 00:05:51.600
conversation. It was a very popular
show. Yeah, you know by any

80
00:05:51.600 --> 00:05:56.319
standards and code Pooter that's Richard Rakimo
has been on the show as well in

81
00:05:56.360 --> 00:05:59.839
a regular comment or had this great
and he was at Coden the Castle last

82
00:05:59.879 --> 00:06:02.399
year and he was a go to
the gasle he was. I love his

83
00:06:02.439 --> 00:06:05.879
comment, it's four am. What
a good show. You know, I

84
00:06:05.879 --> 00:06:12.079
think your perception was distorted at that
time. Ridge were pretty late. For

85
00:06:12.160 --> 00:06:16.600
most organization, cloud migration looks like
utopia when it's really a minefield. Why

86
00:06:16.959 --> 00:06:23.120
perspective. As Magnus points out,
organizations have skilled operations which traditionally manage shared

87
00:06:23.160 --> 00:06:29.800
physical resources one server or one black
plane and many applications. So cloud migration

88
00:06:29.920 --> 00:06:33.279
is a migration of that's meaning the
backplane in the infrastructure, rather than migration

89
00:06:33.319 --> 00:06:38.279
of the applications to a dynamic scalele
resource. Wa we did. Dynamic scale

90
00:06:38.360 --> 00:06:42.120
is where it operations can fall short
in cloud From a business perspective, the

91
00:06:42.160 --> 00:06:46.879
resources they require as services not servers. Good line, love it, good

92
00:06:46.000 --> 00:06:53.240
line man. This is the change
in perspective resources the businesses require and putting

93
00:06:53.279 --> 00:06:57.480
applications on those resources that will scale
in and out based on business demand using

94
00:06:57.639 --> 00:07:02.000
time frames of minutes rather than I
got done that. He nailed it.

95
00:07:02.000 --> 00:07:04.759
It's great. It's a great point. It's like, listen, this is

96
00:07:04.800 --> 00:07:08.920
not we're If you're just thinking about
dev when you're moving to cloud, you're

97
00:07:08.920 --> 00:07:12.079
missing out. You need your operations
folks on board. It's a change in

98
00:07:12.120 --> 00:07:15.319
the way they think too. It
will affect the way we build software.

99
00:07:15.319 --> 00:07:17.920
It's why we move up the services
because then you get that scalability. But

100
00:07:18.839 --> 00:07:23.759
you know, I've been thinking a
lot of lately about the software angle of

101
00:07:24.279 --> 00:07:28.720
not just get it there, get
to the new platform, but then really

102
00:07:28.759 --> 00:07:31.720
taking advantage of the platform. But
I think there're two logical steps. First,

103
00:07:31.800 --> 00:07:34.800
you got to get there. Then
there is an optimization that has to

104
00:07:34.800 --> 00:07:38.759
take place to to really take advantage
of what you've got. And part of

105
00:07:38.759 --> 00:07:43.920
that what we save money, reduce
impact, optimize for better scale, for

106
00:07:44.000 --> 00:07:46.600
new business opportunities, like all of
those things come, but you do have

107
00:07:46.639 --> 00:07:47.920
to get there. Ye, Rich, I know you got a copy of

108
00:07:48.000 --> 00:07:50.079
music code by, but I got
to call it out as always. If

109
00:07:50.120 --> 00:07:53.120
you'd like a copy of music Code
buy, I write a comment on the

110
00:07:53.160 --> 00:07:56.680
website at dot at rocks dot com
or on the facebooks we publish every show

111
00:07:56.720 --> 00:07:59.920
there and every reading on the show. We'll send you copy of music Cobey

112
00:08:00.040 --> 00:08:03.480
and you could follow us on the
facebooks and on Twitter of course, or

113
00:08:03.680 --> 00:08:05.360
x or whatever the hell we're calling
it these days. But cool kids are

114
00:08:05.360 --> 00:08:11.759
hanging out. I'm masddon, I'm
at Carl Franklin at tech Hub dot social,

115
00:08:11.959 --> 00:08:13.759
and I'm Rich Campbell at mass do
dot social. Send us a twot

116
00:08:15.160 --> 00:08:18.439
and that's a really great way to
get a hold of us because there's less

117
00:08:18.480 --> 00:08:22.720
noise for the time being, and
that brings us to you. Scott Scott

118
00:08:22.800 --> 00:08:26.279
Hunter is the VP of Product for
Azure Developer Experience. He builds all the

119
00:08:26.279 --> 00:08:31.560
dot net tools for Azure and used
to be in charge of all the dot

120
00:08:31.600 --> 00:08:35.639
net and that's what more can you
say? All the dot net? He

121
00:08:35.720 --> 00:08:39.840
was all the dot net. Now
he's a little more focused on Azure and

122
00:08:39.039 --> 00:08:43.000
dot net tools for Azure. Welcome
back, Scott, thanks for having me

123
00:08:43.000 --> 00:08:45.039
back, guys. I'm excited to
be here. Yeah, been too long

124
00:08:45.080 --> 00:08:48.919
friend, and certainly you know this
all this ties together with I'm glad you're

125
00:08:50.039 --> 00:08:54.639
there helping us be better at Cloud
because it's hard. I think about the

126
00:08:54.679 --> 00:08:58.639
move we made onto the Internet,
you know, from wind forms to web

127
00:08:58.679 --> 00:09:03.279
form, and then pretty quickly as
you get familiar with that, you're like,

128
00:09:03.320 --> 00:09:05.960
hey, you know, there's a
better way to do web stuff.

129
00:09:05.960 --> 00:09:09.000
And we went to MBC and others. Like I kind of feel like we're

130
00:09:09.000 --> 00:09:11.480
in the same place right now with
Cloud. We got there, Now we've

131
00:09:11.480 --> 00:09:13.919
got to get better at it.
We we It feels like we're at Cloud

132
00:09:13.960 --> 00:09:16.759
one on one to me, if
I think, if I think of it

133
00:09:16.759 --> 00:09:20.000
from a tools perspective, it really
feels like we're at Cloud one on one.

134
00:09:20.039 --> 00:09:26.360
And I'll kind of explain way back
in the day when I was in

135
00:09:26.399 --> 00:09:31.720
the asps net team and we you
know, Scott got three the VP of

136
00:09:31.720 --> 00:09:35.559
Cloud and AI Microsoft. He left
devdiv and became the e VP of that

137
00:09:35.679 --> 00:09:41.879
tech. We moved over there and
our job was to go build tools to

138
00:09:41.960 --> 00:09:46.120
help you as a dot net developer
be able to get your application up into

139
00:09:46.159 --> 00:09:50.799
Azure. And I think of the
tools he built and there they're good tools.

140
00:09:50.840 --> 00:09:52.080
I mean, you can you know
some people laugh, it's the rightly

141
00:09:52.120 --> 00:09:58.360
published tools I got. I got
some data just a week ago that that

142
00:09:58.360 --> 00:10:01.240
that tools used eight hundred thousand times
a month. Wow. Correct. Now,

143
00:10:01.240 --> 00:10:05.840
of course that's not for production.
That's going to be for just doing

144
00:10:05.960 --> 00:10:09.200
developer interloops. It doesn't matter.
Yeah, exactly. So you know when

145
00:10:09.200 --> 00:10:13.039
people say, you know, don't, don't, don't let your friends right

146
00:10:13.080 --> 00:10:18.080
click publish, that's bs the reality
is as a developer, that's exactly what

147
00:10:18.120 --> 00:10:20.480
you're going to do, because if
you go through your operations team, your

148
00:10:20.519 --> 00:10:24.879
IT operations team, it's going to
be ten or fifteen or twenty minutes every

149
00:10:24.919 --> 00:10:26.240
time you make a change for them
to go run their pipeline to get your

150
00:10:26.279 --> 00:10:30.559
code up there. But I said, we're kind of Azure one oh one

151
00:10:30.639 --> 00:10:35.879
or Cloud one oh one because right
click publish it publishes what a single application?

152
00:10:37.240 --> 00:10:41.960
Yeah, how many cloud apps today
do we think on? You know,

153
00:10:41.039 --> 00:10:43.440
I ask the callers how many power
of listeners? How many people do

154
00:10:43.480 --> 00:10:46.399
we think are actually building an app? It's just got I just have a

155
00:10:46.399 --> 00:10:50.320
web front end. I don't have
a web back end. I don't have

156
00:10:50.360 --> 00:10:52.960
any of the other pieces of the
that of that of that pie right.

157
00:10:54.639 --> 00:10:56.559
And so that's why I say we're
kind of a cloud one oh one is

158
00:10:56.639 --> 00:11:01.039
we're great for if you want to
work on a single app location, you

159
00:11:01.080 --> 00:11:05.600
know, and I can parlay this
in any ways. Uh, you know,

160
00:11:05.679 --> 00:11:07.720
if you're in VS code and you
have a front end and a back

161
00:11:07.840 --> 00:11:09.840
end, what are you likely to
do? I'm going to run two VS

162
00:11:09.840 --> 00:11:11.799
codes. I'm gonna run one for
the front end, one for the back

163
00:11:11.879 --> 00:11:16.440
end. I'm going to start them
both. You know, that's it's kind

164
00:11:16.440 --> 00:11:20.279
of klutzy if you're This is why
I like studio. We have the concept

165
00:11:20.440 --> 00:11:26.919
of a solution and having multiple projects. But even studios klutzy. I mean

166
00:11:26.960 --> 00:11:28.240
in studio, I mean, how
many people know you can likely k on

167
00:11:28.320 --> 00:11:33.200
a solution and say managed startup projects
and then you can select multi and then

168
00:11:35.440 --> 00:11:41.159
you know, set the order of
the project start and all those important super

169
00:11:41.159 --> 00:11:43.840
important. But I don't think those
tools are that's not the best developer experience.

170
00:11:43.840 --> 00:11:46.000
That if you run that experience,
you have to choose which ones you

171
00:11:46.039 --> 00:11:50.320
want to debug. You know you
can you can decide to start them all

172
00:11:50.320 --> 00:11:52.320
with the debugger or start some with
the debugger out, and then and to

173
00:11:52.399 --> 00:11:56.480
change that you've got to go into
the goofy dialogue box and change stuff.

174
00:11:56.600 --> 00:11:58.559
It's just I don't think that experience
is a great experience, and so it's

175
00:11:58.600 --> 00:12:03.399
it's been. And I've said for
a while. Visual studio is great for

176
00:12:03.519 --> 00:12:07.679
single apps, right, vis code
is great for single apps, but we

177
00:12:07.720 --> 00:12:11.919
need to build great multi app,
multi app tools because that's how customers are

178
00:12:11.919 --> 00:12:16.399
actually building you know, cloud apps
today and should be building them, right

179
00:12:16.480 --> 00:12:20.399
like this idea of separate services.
Of course, we've evolved as developers knowing

180
00:12:20.399 --> 00:12:24.759
what we have in these tools and
knowing how to be more efficient. Like

181
00:12:24.799 --> 00:12:31.159
I can remember the day the light
bulb went off, and anytime because what

182
00:12:31.200 --> 00:12:33.759
I was doing was anytime I had
to change to any like big file or

183
00:12:33.799 --> 00:12:39.559
any JSON file where data was kept
or anything like that, I would publish

184
00:12:39.559 --> 00:12:43.480
a new version everything, you know, kick everybody off the site. And

185
00:12:43.519 --> 00:12:46.639
then I discovered you know, file
zilla FTP, and I could just go

186
00:12:46.679 --> 00:12:50.840
in there and copy over some new
image files or some new static files or

187
00:12:50.840 --> 00:12:56.840
whatever, and everything would just work, you know, Like I see this

188
00:12:56.039 --> 00:13:01.159
as not only an evolution of tools, but in evolution of how we use

189
00:13:01.200 --> 00:13:03.960
those tools and how we get better
as programmers. So let's kind of talk

190
00:13:05.000 --> 00:13:09.879
about what I think the future is
for this kind of space. And I'm

191
00:13:09.879 --> 00:13:13.360
going to start with the tool that
my team built and we shifted. It

192
00:13:13.399 --> 00:13:18.480
built last year, so that's May
of twenty twenty three. We built a

193
00:13:18.519 --> 00:13:24.480
tool called the Azure Developer CLI.
And the genesis of this tool was,

194
00:13:26.799 --> 00:13:31.240
I'll be very frank, you know, we have lots of Dotinant customers using

195
00:13:31.279 --> 00:13:33.960
Azure and they are the majority,
and we wanted, you know, in

196
00:13:35.360 --> 00:13:37.799
my current team, we want to
make sure that we can get more Java

197
00:13:37.840 --> 00:13:43.039
developers, more Python developers, more
No developers. I mean, the reality

198
00:13:43.080 --> 00:13:46.240
is, I don't think it's a
either or rule anymore. I believe most

199
00:13:46.240 --> 00:13:50.000
companies are using a variety of technologies
and so nobody builds something entirely in one

200
00:13:50.000 --> 00:13:54.720
stack. That's the old, classic
twenty year old Microsoft customer. I do

201
00:13:54.799 --> 00:13:58.039
believe we all have, you know, if you're doing some AI, you

202
00:13:58.120 --> 00:14:01.080
might have some Python. If you're
doing some front end web you might have

203
00:14:01.159 --> 00:14:05.519
you know, some some JavaScript or
some Blazer. But we built this tool

204
00:14:05.600 --> 00:14:11.120
because we had various samples that we
had created for Azure and on one on

205
00:14:11.320 --> 00:14:13.080
one of these days, we were
doing a user study where we actually get

206
00:14:13.080 --> 00:14:16.039
on a phone call. And we
got on a phone call with a bunch

207
00:14:16.039 --> 00:14:20.320
of Python developers and said, hey, here's this Python tutorial for getting your

208
00:14:20.320 --> 00:14:24.399
flask gap up into Azure and uh, and your goal is to get this

209
00:14:24.519 --> 00:14:26.480
up, you know, before we
get off the call. So it's it's

210
00:14:26.559 --> 00:14:31.200
it's a quick call. It's thirty
minutes. At the thirty minute mark,

211
00:14:31.039 --> 00:14:35.279
not a single customer has actually published
their Python app to Azure. Wow.

212
00:14:37.120 --> 00:14:43.399
In most cases, where they're at
is they're installing stuff. Still, that

213
00:14:43.519 --> 00:14:48.240
sounds like my Python experience too.
They weren't installing Python, Richard. They

214
00:14:48.240 --> 00:14:54.559
were Actually, we have this thing
called a zy it's the Azure CLI and

215
00:14:54.600 --> 00:14:58.120
it's the way that you would,
you know, manually provision Azure from the

216
00:14:58.120 --> 00:15:03.759
command line. At the time we
have fixed this install. At the time,

217
00:15:03.759 --> 00:15:07.799
the installed for that was not very
fast. Many of these Python customers

218
00:15:07.799 --> 00:15:11.679
were using py charm, you know, they were not using vs code.

219
00:15:11.080 --> 00:15:15.200
And what do our docs say.
Our docs say install vs code. So

220
00:15:15.240 --> 00:15:18.240
here they are going, I have
to use install a different developer tool.

221
00:15:18.320 --> 00:15:22.279
I've got to install this asy thing. I didn't have to authenticate all these

222
00:15:22.320 --> 00:15:26.720
things together. I've got install the
Python extension for vs code, and we're

223
00:15:26.759 --> 00:15:31.360
like, wow, this is not
good. We're thirty minutes in and nothing's

224
00:15:31.399 --> 00:15:35.600
going on. And so we built
a tool to address that exact problem,

225
00:15:35.600 --> 00:15:41.840
which is like what you do is
you with AZD. That's the Asure Developer

226
00:15:41.840 --> 00:15:46.720
c ALI. It's a single lexy
which means it does not required MSI installer

227
00:15:46.840 --> 00:15:50.159
or anything like that. You can
actually X copy or just copy the file

228
00:15:50.200 --> 00:15:54.559
to your computer and you only need
the one file to do all this kind

229
00:15:54.559 --> 00:15:58.919
of stuff. And templates can be
marked with some special folders. There's a

230
00:16:00.039 --> 00:16:03.960
older called INFRA and that would contain
the BICEP, which is the that's the

231
00:16:03.960 --> 00:16:07.720
definition language for for azure. Azure
is actually built on top of something called

232
00:16:07.799 --> 00:16:11.000
ARM, and then by step is
an abstraction on top of ARM to make

233
00:16:11.120 --> 00:16:14.879
ARM easier to use. But you've
got this by step in there. And

234
00:16:14.879 --> 00:16:17.679
then literally now I can take the
rate the repo, I can clone it,

235
00:16:18.159 --> 00:16:21.639
and I can say a z D
in it, give it a name,

236
00:16:22.360 --> 00:16:25.639
I can do a z D up. Tell it what you know data

237
00:16:25.679 --> 00:16:30.679
center? I want to use region, I should say and subscription And then

238
00:16:30.879 --> 00:16:33.759
the whole processes takes off and no
longer am I running you know, command

239
00:16:33.840 --> 00:16:38.559
line scripts. I'm not installing command
line stuff. You get that great experience.

240
00:16:38.559 --> 00:16:41.639
And so we we built this experience, and uh, we haven't got

241
00:16:41.679 --> 00:16:47.200
as far as I want in it, but uh, a real change happened

242
00:16:47.279 --> 00:16:51.840
about six months ago. The dot
net team is working on dot net Aspire.

243
00:16:52.840 --> 00:16:56.600
That's their cloud native framework on top
of dot Net, and uh,

244
00:16:56.639 --> 00:17:00.559
you know, Aspire is super exciting
to me as as a dot net What

245
00:17:00.600 --> 00:17:07.359
I'd like to tell people is we
built all this great capability into dot net

246
00:17:07.519 --> 00:17:11.880
ASP dot net Core years ago.
We have the ability to do an HDP

247
00:17:11.960 --> 00:17:15.400
client factory and you can actually use
something like poly to set resilience rules.

248
00:17:15.400 --> 00:17:22.880
On top of that, we built
tech for ef core lets you do retrit

249
00:17:22.920 --> 00:17:25.680
policies. When you're in the cloud
you might need to be more resilient.

250
00:17:26.839 --> 00:17:30.759
We added open telemetry APIs to dot
net a couple of years ago. But

251
00:17:32.519 --> 00:17:36.400
all this stuff I just described,
we didn't turn any of it on by

252
00:17:36.440 --> 00:17:41.000
default. And so you know,
if you happen to watch a video of

253
00:17:41.039 --> 00:17:45.119
a Glen Condron and me in dot
core three days, you would have seen

254
00:17:45.160 --> 00:17:49.079
a show the HP resiliency stuff.
But if you missed any of those things,

255
00:17:49.079 --> 00:17:52.039
you don't know how to do this, and so we kind of learned

256
00:17:52.039 --> 00:17:56.000
that as you're if you're a dot
net developer, lots of challenges come when

257
00:17:56.000 --> 00:17:59.200
you start trying to run your wrap
in the cloud and we don't really help

258
00:17:59.279 --> 00:18:03.839
you. And so the the Aspire
framework uh is literally, hey, let's

259
00:18:03.839 --> 00:18:08.319
give you a paved path with all
the right things. And so where this

260
00:18:08.359 --> 00:18:14.599
gets interesting is is the Aspire folks
obviously want to make their tech. You

261
00:18:14.640 --> 00:18:18.319
know, great, if you could
publish an a spire application it's going to

262
00:18:18.319 --> 00:18:21.680
be a multi part application. Uh, you can, you can publish that

263
00:18:21.680 --> 00:18:26.160
application to a cloud. And uh, we all got together and had a

264
00:18:26.200 --> 00:18:29.000
conversation. It's like, hey,
do this the visual studio team build this?

265
00:18:29.880 --> 00:18:33.240
Uh? Do we use the A
z D tech that my team is

266
00:18:33.279 --> 00:18:37.359
built? Uh? Do they build
something new? And we kind of all

267
00:18:37.400 --> 00:18:41.640
came to an agreement we should all
just centralize on one one piece of tech

268
00:18:41.680 --> 00:18:45.880
that actually does this, and it
already supported you know, multi project applications

269
00:18:45.920 --> 00:18:52.599
already a c D and so we've
built a z D to understand a dotted

270
00:18:52.759 --> 00:18:56.680
Spire application. Yeah, so let's
if you don't if people don't know what

271
00:18:56.720 --> 00:19:02.240
Aspire is you know, I was
mentioning before I thought our tools, our

272
00:19:02.279 --> 00:19:07.240
visual studio tools are kind of clumsy. When you create an a spire application

273
00:19:07.359 --> 00:19:12.200
or you add Aspire to an existing
ASP dot net core project, what happens

274
00:19:12.240 --> 00:19:19.920
is we create an app host project
and we create a service default project in

275
00:19:19.960 --> 00:19:25.079
your in your solution. So if
you've got your you know classic you know,

276
00:19:25.200 --> 00:19:34.400
Razor page or Blaser application or web
api, we add this new app

277
00:19:34.400 --> 00:19:37.880
host and it's kind of the magic. It's the orchestrator. And so the

278
00:19:37.960 --> 00:19:42.160
idea is the app host you codify. Inside that, there's a builder like

279
00:19:42.200 --> 00:19:47.400
we've we've had in the as net
cortech forever. And with the builder,

280
00:19:47.400 --> 00:19:51.119
you can build or you can add
a project. You can add multiple projects.

281
00:19:51.559 --> 00:19:56.720
When you control that five we run
that project and it's that's project jobs

282
00:19:56.759 --> 00:20:00.839
to start all the subprojects that depend
on it. That's why it's the orchestrator,

283
00:20:00.359 --> 00:20:03.880
right. And so imagine you've got
a front end, you got a

284
00:20:03.920 --> 00:20:08.200
back end. You can actually you
can do a with reference your front end.

285
00:20:08.200 --> 00:20:11.839
You say, with reference to the
front end, that tells the tech

286
00:20:11.519 --> 00:20:17.160
order is important start this before you
start that. And uh, that's kind

287
00:20:17.160 --> 00:20:19.759
of the genesis of a of a
of a dot net at Aspire project.

288
00:20:19.880 --> 00:20:22.599
And by the way, everything's configured
for you to fall into the pit of

289
00:20:22.640 --> 00:20:26.359
success. Yes you don't. You
don't have to worry about how do I

290
00:20:26.440 --> 00:20:32.519
do that h T t P client
factory thing? Again, I can't remember

291
00:20:32.559 --> 00:20:37.880
that? Yes, so yes,
so there's that. There's that default project

292
00:20:37.119 --> 00:20:41.559
that is added to your solution as
well, and we inject a call to

293
00:20:41.599 --> 00:20:44.279
that in each of your projects.
You would add a spire orchestration to and

294
00:20:44.319 --> 00:20:45.960
so what that if you if you
if you just trace the code of that,

295
00:20:45.960 --> 00:20:48.480
that's going to turn open telemetry on, which means you're going to have

296
00:20:48.519 --> 00:20:52.960
proper telemetry. It's going to try
to turn the retry stuff on. Uh,

297
00:20:53.039 --> 00:20:56.720
so your APIs and stuff like that. Your HP clients are going to

298
00:20:56.720 --> 00:21:00.960
actually be resilient. Uh it's going
to turn on service discovery, which is

299
00:21:02.000 --> 00:21:03.920
my favorite feature. And when I
say we're kind of cloud one oh one

300
00:21:03.960 --> 00:21:08.319
when it comes to our rightly published
tech, service discovery is a big piece

301
00:21:08.319 --> 00:21:12.480
of this. And let me just
quickly get kind of go through each of

302
00:21:12.480 --> 00:21:18.039
those things. Open telemetry, you
know, we'd love your if you're running

303
00:21:18.039 --> 00:21:19.279
an app in the cloud, you'd
like to have telemetry, right, you'd

304
00:21:19.279 --> 00:21:23.279
like to see how it's running,
where the crashes are, how long things

305
00:21:23.319 --> 00:21:27.759
take, what's the order of execution. We've had those APIs and gotten it

306
00:21:27.759 --> 00:21:32.000
for a while, but they're not
on by default. The resiliency we've already

307
00:21:32.000 --> 00:21:33.880
talked about. I want to have
a retry policy, so if my API

308
00:21:36.920 --> 00:21:40.440
has a problem, it tries again. Because I'll be honest with you,

309
00:21:40.480 --> 00:21:45.640
in a big cloud network is kind
of virtualized, and it does, you

310
00:21:45.680 --> 00:21:51.079
know, have its moments. They
things don't always work the first time,

311
00:21:51.119 --> 00:21:52.839
but if you just try a little
while later, you'll probably be all right,

312
00:21:52.839 --> 00:21:57.519
probably okay, And then finally you
know, we've all done this.

313
00:21:57.599 --> 00:22:02.480
If you've if you've if you've been
using ESPN net core, and you build

314
00:22:02.480 --> 00:22:04.759
a multipart project, what do you
do. You You go into a folder,

315
00:22:04.960 --> 00:22:07.599
you open up the loss settings,
you find out what you know,

316
00:22:07.680 --> 00:22:11.440
local host port you're on, You
hard code the port into your other application,

317
00:22:12.599 --> 00:22:15.640
and then when you when you push
this thing to the cloud, you

318
00:22:15.640 --> 00:22:18.599
have to go find some way to
go fix all those to map to the

319
00:22:18.640 --> 00:22:22.319
real things in the cloud. So
that service discovery, yeah, service discovery

320
00:22:22.359 --> 00:22:26.839
is, and so service discovery in
an Aspire application. In that app host,

321
00:22:27.759 --> 00:22:32.319
as you add a project and project
or service or whatever, you give

322
00:22:32.319 --> 00:22:36.559
them all names, and then when
you reference those from your applications, you

323
00:22:36.680 --> 00:22:41.720
use the names, not the actual
low level you know, local host and

324
00:22:41.799 --> 00:22:44.920
port numbers and all that kind of
stuff, all the individual components. And

325
00:22:44.960 --> 00:22:48.519
that's important. Yeah, that's important
because locally we can do all the magic

326
00:22:48.559 --> 00:22:52.880
for you, and then on the
cloud push we can also change those from

327
00:22:53.000 --> 00:23:00.759
being local host colon X y z
to as your container app dot whatever or

328
00:23:00.759 --> 00:23:04.359
whatever terminology the cloud thing that you're
going to go published to is. And

329
00:23:04.400 --> 00:23:08.880
so suddenly I've got a great control
that F five experience. Locally, I

330
00:23:08.880 --> 00:23:12.400
can actually publish the app and it
still runs in the cloud. And then

331
00:23:12.400 --> 00:23:18.359
that's where my tool chain comes into
play. So what your next step is

332
00:23:18.359 --> 00:23:22.200
is to basically take that application and
I'm gonna I'm gonna go the low level

333
00:23:22.279 --> 00:23:26.960
way. First, I would go
to command line and in the folder of

334
00:23:26.960 --> 00:23:30.880
the rootfolder of the application, or
I should say applications if it's a solution

335
00:23:30.960 --> 00:23:36.400
with multiple projects, and I would
type a z D in it. And

336
00:23:36.440 --> 00:23:38.960
when I type that, it's going
to ask me for a name for my

337
00:23:40.039 --> 00:23:42.519
thing. My resource name. Well, first off, it's going to scan,

338
00:23:42.640 --> 00:23:45.759
So it's going to say do you
want me to scan? If you

339
00:23:45.799 --> 00:23:48.680
press return, it's going to scan
the folder. It's going to go find,

340
00:23:48.200 --> 00:23:51.039
hey, I see an Aspire thing
here. It's going to say,

341
00:23:51.079 --> 00:23:55.680
I found an Aspire application. What
name would you like to use for this?

342
00:23:55.799 --> 00:24:00.599
As I publish it, you give
it a name and you're done.

343
00:24:00.519 --> 00:24:03.720
And what it's going to do is
it's going to create an Azure dot yamal

344
00:24:03.759 --> 00:24:11.079
which kind of describes what's going on
and it It doesn't do much more than

345
00:24:11.119 --> 00:24:14.839
that at this point, but what
you can do at that point you can

346
00:24:14.880 --> 00:24:18.440
say acd up and then it's going
to go ask you what is your asker

347
00:24:18.480 --> 00:24:22.000
subscription. It's going to say what
region do you want this application to run

348
00:24:22.000 --> 00:24:26.359
in? And once you answer those
questions, it's going to start building this

349
00:24:26.440 --> 00:24:30.640
application and publishing it to the cloud
for you. Wow, now there's a

350
00:24:30.680 --> 00:24:36.880
couple of cool things here in this
Spire case. Typically you're going to publish

351
00:24:36.880 --> 00:24:40.400
this to containers in the cloud.
Well, if I'm a container dev,

352
00:24:40.440 --> 00:24:42.119
does that mean oh crap, I
need to know what doctor files are,

353
00:24:42.240 --> 00:24:45.920
I need to know what helm charts
are. Yeah, Cubernetes and all that

354
00:24:45.960 --> 00:24:51.519
stuff doing to have doctor Desktop installed. And the answer is no, no,

355
00:24:51.759 --> 00:24:56.960
and no, we can actually build
the entire application because in dot net

356
00:24:56.000 --> 00:25:00.400
seven we added the ability to actually
build contains without having any of those types

357
00:25:00.440 --> 00:25:03.480
of tools on your on your on
your machine. So it's not just that

358
00:25:03.519 --> 00:25:07.200
you're you're using those tools under the
hood and hiding them from us. You're

359
00:25:07.240 --> 00:25:11.880
actually not even using them. We're
not even using them, and and that's

360
00:25:11.880 --> 00:25:14.480
that's a cool thing. Is like
one of the things a very So this

361
00:25:14.519 --> 00:25:18.160
doesn't going to AKS, so you
can go to AKS as well. Okay,

362
00:25:18.240 --> 00:25:21.279
and once again we're just building,
but it's not by default, we're

363
00:25:21.279 --> 00:25:23.759
just building containers. And so you
know what, once you build a container

364
00:25:23.799 --> 00:25:26.079
in the cloud world, what you
typically do is you're going to publish your

365
00:25:26.079 --> 00:25:30.319
container to a container registry, right, and then the service of your choice,

366
00:25:30.359 --> 00:25:34.160
whether it's something like as You Container
Apps or it's akas, it's going

367
00:25:34.240 --> 00:25:38.640
to have an action where it's going
to pull that image and boot that image

368
00:25:38.720 --> 00:25:42.359
up. And so the build aspect
of it is actually kind of irrelevant for

369
00:25:42.400 --> 00:25:47.920
the most part. For one point, oh of Aspire, which is going

370
00:25:47.960 --> 00:25:52.039
to be out in the build time
frame. It's going to ilga it built

371
00:25:52.079 --> 00:25:59.039
twenty twenty four. We default uh
these applications to Azure container apps, but

372
00:26:00.400 --> 00:26:03.880
I should I should step back and
say with preview six, our friends at

373
00:26:03.880 --> 00:26:08.640
AWS have built their tool chain for
this as well, and so this tech

374
00:26:08.720 --> 00:26:11.359
is not you know, we're not
trying to make us fire be a Azure

375
00:26:11.400 --> 00:26:15.759
only thing. It's meant to be
a pluggable ecosystem where you can plug the

376
00:26:15.799 --> 00:26:19.960
tools in for whoever you are,
So if you're Google or AWS, this

377
00:26:21.079 --> 00:26:23.839
all works there as well. The
a WS folks have already written some of

378
00:26:23.880 --> 00:26:27.559
the techs so they can you can
publish these to a WS and we have

379
00:26:29.720 --> 00:26:33.680
some tools where you can actually publish
our thing to as your kubernety service as

380
00:26:33.720 --> 00:26:36.839
well, if that's if that's your
choice. But by default today it's going

381
00:26:36.920 --> 00:26:41.400
to do container wrapps. And part
of that is I would always say,

382
00:26:41.440 --> 00:26:44.400
let's get one of these things really
good right first, before we go and

383
00:26:44.400 --> 00:26:48.720
try to do like multiple options.
But you know, at azd up it's

384
00:26:48.720 --> 00:26:52.119
going to go provision all the resources, get your wrapp running in the cloud.

385
00:26:52.559 --> 00:26:56.119
The service discovery is going to mean
you don't have to worry about changing

386
00:26:56.160 --> 00:27:00.799
the ports and the IP addresses of
the individual applications. All thats going to

387
00:27:00.839 --> 00:27:04.480
work. And uh, you know, I said a lot of coli here.

388
00:27:06.400 --> 00:27:08.039
You can also go to visual Studio. You can write, click on

389
00:27:08.039 --> 00:27:12.400
that app, post project, and
you can select publish. And what's going

390
00:27:12.440 --> 00:27:15.319
to happen is behind the scenes,
it's going to do the same stepside is

391
00:27:15.359 --> 00:27:18.119
described. It's going to ask you
a couple of questions. It's going to

392
00:27:18.160 --> 00:27:22.839
then actually run a z D for
you, and a CD actually creates some

393
00:27:22.880 --> 00:27:26.839
assets. It's going to create those
assets and make sure you never see them,

394
00:27:26.880 --> 00:27:30.000
so it kind of hides the whole
thing. I mean, arguably that

395
00:27:30.039 --> 00:27:33.039
means you get to deploy an Inspire
app to your local container store too on

396
00:27:33.160 --> 00:27:38.119
prem Yes you could. Yeah,
Like it's just they just it's just containers.

397
00:27:38.200 --> 00:27:42.799
Run them where you want, run
them where you want. But I'm

398
00:27:42.799 --> 00:27:47.680
excited that we built this tool.
And you know, you you folks have

399
00:27:47.720 --> 00:27:49.680
been along for the whole dot ne
core journey, and we said with dot

400
00:27:49.880 --> 00:27:53.279
core, we're going to start with
command line because everybody has command line,

401
00:27:55.000 --> 00:27:57.000
uh, and so I'm excited that
it with with Aspire and a z D,

402
00:27:57.599 --> 00:28:00.519
we start with command line which means
if I'm a VS code developer,

403
00:28:00.920 --> 00:28:03.880
I've got a multi part project,
I can just azd up that thing.

404
00:28:04.519 --> 00:28:08.599
If I'm in visual studio, I
can obviously the reight click publish and we're

405
00:28:08.599 --> 00:28:11.480
going to you know, up that
thing. And you know, unlike what

406
00:28:11.480 --> 00:28:15.720
we said before, this is not
the single rec click published where I can

407
00:28:15.720 --> 00:28:18.240
only up, you know, do
my front end manually or my back end.

408
00:28:18.000 --> 00:28:21.519
This takes the entire app. We
have that that e shop, which

409
00:28:21.519 --> 00:28:22.839
is one of the examples we've had
in dot net for a long time.

410
00:28:23.480 --> 00:28:29.000
That's got like eight containers and databases
and rabbit mqs and a bunch of stuff

411
00:28:29.039 --> 00:28:33.119
like that, and you can azd
up that thing and it'll put that whole

412
00:28:33.160 --> 00:28:37.359
app in the cloud. And so
it feels like we've graduated from single app

413
00:28:37.400 --> 00:28:41.000
or our single piece of an app
to now we can do your whole app

414
00:28:41.039 --> 00:28:44.519
to proper multi app. I mean, this is what we used to spend

415
00:28:44.559 --> 00:28:48.279
a lot of time with when we're
building these distributed apps, building CICD pipelines

416
00:28:48.279 --> 00:28:52.920
for them. Yes, was making
sure all those different pieces got their updates

417
00:28:52.920 --> 00:28:55.640
and rolled out in the right order
and so forth. Like dude, that

418
00:28:55.759 --> 00:28:59.559
was a lot of yam, a
lot of yam. They had to craft

419
00:28:59.599 --> 00:29:06.200
your my favorite language, and guys, I got to interrupt for one moment

420
00:29:06.240 --> 00:29:11.799
for this is a very important message, and we're back. It's not that

421
00:29:11.920 --> 00:29:15.839
Rocks. I'm Richard campbelllet's Carl Franklin. Hey, talking to our friend Scott

422
00:29:15.920 --> 00:29:19.799
Hunter about I mean, really,
I love this thinking that all cloud apps

423
00:29:19.880 --> 00:29:26.079
are multiple apps, and most of
our tools are oriented on single apps.

424
00:29:26.079 --> 00:29:30.799
So how do we get to better
tooling that thinks multi app And also when

425
00:29:30.799 --> 00:29:33.039
it comes to cloud like what you're
talking with aspires, there is a natural

426
00:29:33.119 --> 00:29:37.359
hierarchy. If it's an Aspire app, there is an orchestrator that's where you

427
00:29:37.440 --> 00:29:42.119
begin on a lot of stuff.
And so the CLI tools and all the

428
00:29:42.160 --> 00:29:45.079
tooling when they see an Aspire app
go oh, let's talk to the orchestrator

429
00:29:45.119 --> 00:29:48.119
first, be the first needs to
be deployed, and then pulling each of

430
00:29:48.119 --> 00:29:52.960
the services like it's not an amorphous
blob. There is a distinct set of

431
00:29:53.039 --> 00:29:56.960
layers here. I laugh because I
cannot remember the project. Maybe you do,

432
00:29:57.079 --> 00:30:00.759
Richard, there was a project like
this in the early Azure days.

433
00:30:03.720 --> 00:30:07.559
Somebody that's that's listening to this podcast
will actually reply to us and tell us

434
00:30:07.599 --> 00:30:11.240
what it was. But there was
I remember back back in early early Azure

435
00:30:11.319 --> 00:30:17.759
days, we had some visual tool
where you actually had a whole XML file

436
00:30:17.799 --> 00:30:22.960
that described your application, right,
And I'm going to laugh because that was

437
00:30:22.000 --> 00:30:25.720
too complicated. I think this is
a much better version of that. I

438
00:30:25.759 --> 00:30:27.400
forget what it's called. But we
and we talked. We've talked about this

439
00:30:27.440 --> 00:30:30.440
for years, right exactly, that
there's going to be this tool where you're

440
00:30:30.440 --> 00:30:33.640
going to draw out all these bits
and set up and it's going to generate

441
00:30:33.680 --> 00:30:38.279
the orchestration for you. As much
as I've complained about YAML, XML is

442
00:30:38.319 --> 00:30:45.519
worse. Yep, true, I
much rather have YAML than XM to deal

443
00:30:45.519 --> 00:30:48.519
with. True enough, I will
tell you that as well. It's it's

444
00:30:48.599 --> 00:30:53.839
uh, XML just hurts. It
just hurts. And it feels like,

445
00:30:53.960 --> 00:30:57.000
I mean, all these these these
file formats are a little rough because I

446
00:30:57.000 --> 00:31:00.680
feel like if I make an error
in any of them there they're not forgiving

447
00:31:00.680 --> 00:31:03.880
of errors. Right. But but
XML, as we added schema and all

448
00:31:03.880 --> 00:31:07.599
these other things to it, it
just felt like it has became this huge

449
00:31:07.680 --> 00:31:12.839
pile of complicated tech. But this
whole deployment pipeline stuff and writing all that

450
00:31:12.880 --> 00:31:18.000
Yamel, it's still super bespoke,
like every app you end up crafting your

451
00:31:18.039 --> 00:31:21.279
own. At best, it's cut
and paste. Like I feel like we're

452
00:31:21.319 --> 00:31:26.839
feeling around with stuff like BICEP and
Poloomy, feeling around for reusable chunks of

453
00:31:27.440 --> 00:31:32.240
deployment management. I just haven't seen
a good solution yet. I don't think

454
00:31:32.279 --> 00:31:33.519
we have a good solution. I'll
be honest with you. Even inside of

455
00:31:33.559 --> 00:31:38.920
Microsoft. You know, when first
first started doing Modern Nature, we had

456
00:31:40.000 --> 00:31:45.200
ARM, you know, which is
this description Jason Fiola describes, you know,

457
00:31:45.319 --> 00:31:47.880
all the app and the problem is, you know, like any of

458
00:31:47.920 --> 00:31:51.559
us on this call, if I
want an app service, I'm like,

459
00:31:51.680 --> 00:31:55.799
well, I want an app service
with four CPUs and thirty two gigs a

460
00:31:55.880 --> 00:32:00.240
RAM and X amount of storage.
But if I, if I, if

461
00:32:00.240 --> 00:32:05.799
I define that definition and ARM,
I'm going to start talking about the networking

462
00:32:05.880 --> 00:32:08.599
layers and all this stuff that is
just you know, that's beyond me.

463
00:32:08.799 --> 00:32:13.160
I just if I go to the
Azure portal, I just say I want

464
00:32:13.160 --> 00:32:16.720
an app service with this much stuff
in it in this area, and what

465
00:32:16.759 --> 00:32:20.240
it does is it kind of creates
all the other stuff for me behind the

466
00:32:20.279 --> 00:32:24.599
scenes and so BICEP is a little
better. But one of the things that

467
00:32:24.640 --> 00:32:30.960
we're exploring is can we build what
we call BISEP modules that actually have a

468
00:32:30.960 --> 00:32:36.440
bunch of smart defaults in them so
I don't have to describe that for us.

469
00:32:36.839 --> 00:32:39.799
Yes, and so I will tell
you my team thinks about this all

470
00:32:39.799 --> 00:32:44.000
the time. We have a workstream
looking at this today. It's like,

471
00:32:44.599 --> 00:32:46.400
we don't want to build, you
know, another abstraction on top of BICEP.

472
00:32:46.440 --> 00:32:49.880
We've already got two abstractions, ARM
and BICEP. Let's not build another

473
00:32:49.920 --> 00:32:53.000
one. But is there a way
to go at smart default And if you're

474
00:32:53.039 --> 00:32:57.240
a customer, if you have the
Azure portal and create a resource, you

475
00:32:57.279 --> 00:33:00.359
did get a bunch of smart defaults. You didn't answer eighty five question to

476
00:33:00.359 --> 00:33:04.200
build an app service, you answered
four or five. If you run asy

477
00:33:04.400 --> 00:33:07.640
the Azure command line tool. Once
again, it's the same kind of thing.

478
00:33:07.640 --> 00:33:12.319
You don't specify every single thing.
Uh, there's a bunch of smart

479
00:33:12.319 --> 00:33:14.599
defaults there, and we'd like to
find a way to bring that to the

480
00:33:14.599 --> 00:33:19.480
BICEP thing, which means humans could
actually write and understand by SEP. That's

481
00:33:19.519 --> 00:33:22.319
a that's a goal that we all
have. Yeah, well, and I'm

482
00:33:22.960 --> 00:33:28.079
when I'm wearing my enterprise architect hat, it's like reuse BICEP code. We've

483
00:33:28.119 --> 00:33:30.759
written, Hey, we've you know, put a bunch of policies into the

484
00:33:30.839 --> 00:33:34.279
right way to do this, and
it upsets me that we're cut and pasting

485
00:33:34.359 --> 00:33:37.920
it between projects. You know.
I'm over in Belgium right now, and

486
00:33:37.960 --> 00:33:40.200
on the plane over here, my
colleague Paul wrote six hundred lines of BICEP

487
00:33:40.240 --> 00:33:46.039
on the plane and I'm like,
I couldn't do that. I could write

488
00:33:46.039 --> 00:33:49.480
sixer lines of C sharp, but
I can't write six under lines of bytep.

489
00:33:49.480 --> 00:33:51.960
It would mine would It would not
work? Yeah? Do I want

490
00:33:51.960 --> 00:33:53.279
to be good at that? Right? Like the area lies the problem?

491
00:33:53.480 --> 00:33:57.279
Like if you're at a place where
you've gotten good at that, Like,

492
00:33:57.319 --> 00:34:00.920
what do you do with your time? You charge lots of money Richard,

493
00:34:01.160 --> 00:34:05.480
Yeah, I guess so, you
know, because most people don't want to

494
00:34:05.480 --> 00:34:07.599
do it, and the one person
who knows how to do it is very

495
00:34:07.640 --> 00:34:10.920
busy. Right. But you know, back to the tooling that we talked

496
00:34:10.920 --> 00:34:14.679
about for Aspire, I think there's
two other aspects that are pretty cool.

497
00:34:14.760 --> 00:34:21.920
Is with AZD if you want in
the case of these dot net projects.

498
00:34:21.920 --> 00:34:23.599
These are spire projects. You don't
have any BICEP. There's no biceps sitting

499
00:34:23.599 --> 00:34:27.960
out there for you to see.
You do that AZD up, we actually

500
00:34:28.039 --> 00:34:30.840
generate BICEP behind the scenes. We
run it and we kind of get rid

501
00:34:30.880 --> 00:34:32.760
of it and then goes away,
which you know, this is the same

502
00:34:32.760 --> 00:34:37.800
stuff we started doing with databases,
where we would generate you, here's the

503
00:34:37.800 --> 00:34:39.320
state of your database, here's the
state you want to get to. The

504
00:34:39.360 --> 00:34:43.480
script to do the transformation is generated
for you, and then it's gone.

505
00:34:43.559 --> 00:34:45.320
But we do know some folks are
going to care about that stuff, and

506
00:34:45.360 --> 00:34:47.480
so we did we did put tooling
in for that as well. You can

507
00:34:47.559 --> 00:34:52.360
run AZD infrasynth right, and what
that tells it is to synthesize the infrastructure.

508
00:34:53.519 --> 00:34:57.119
At which point what will happen in
your Aspire project is you'll get a

509
00:34:57.239 --> 00:35:01.599
infra folder I n f R A
and inside of that you'll get the BYSEP

510
00:35:01.599 --> 00:35:06.719
that we're going to run to publish
your app to Azure. This is the

511
00:35:06.719 --> 00:35:08.679
same thing we did with dba's when
they were anxious about this automation. It's

512
00:35:08.719 --> 00:35:12.840
like, I will let you validate
each one of these scripts and he could,

513
00:35:12.880 --> 00:35:15.079
and after a while they just get
tired of reading it because it's better

514
00:35:15.079 --> 00:35:17.000
code than they could write. It's
good, it's good code. I was

515
00:35:17.000 --> 00:35:23.400
actually I'm using an alpha feature of
Aspire right now that I think it'll probably

516
00:35:23.400 --> 00:35:29.639
be available with the general release of
Aspire later this month. And in my

517
00:35:29.760 --> 00:35:34.280
case, because I have to run
this in an early access data center,

518
00:35:35.639 --> 00:35:38.480
I actually have to generate the bi
SEP and then I need to go change

519
00:35:38.519 --> 00:35:43.079
the region of one of the components
because all the components that I need I

520
00:35:43.079 --> 00:35:47.199
need from my Inspire app can't run
in that special data center, and so

521
00:35:47.239 --> 00:35:50.679
I need to go flich one of
them to west US, and so I

522
00:35:51.039 --> 00:35:53.360
just have to go search for log
analytics and then where it says location,

523
00:35:53.639 --> 00:35:58.119
I just put hard code that to
west US right and bang. So there

524
00:35:58.159 --> 00:36:00.239
are cases and valid reasons you might
want to go edit this stuff. Yeah,

525
00:36:00.760 --> 00:36:02.519
I mean, is that the right
way to go about it? Or

526
00:36:02.559 --> 00:36:06.360
is it? When you do the
generation, say, and when you have

527
00:36:06.440 --> 00:36:09.920
to decide this make it this like
this seems like a parameter in that call

528
00:36:10.519 --> 00:36:14.639
it technically is a parameter. Today, when you when you filled in the

529
00:36:14.679 --> 00:36:16.960
location you wanted your app to be
in, you actually use the parameter.

530
00:36:17.400 --> 00:36:22.920
But in my case, I had
just had to choose an early access preview

531
00:36:22.159 --> 00:36:25.199
area which doesn't have all the services, and so in my case, I

532
00:36:25.199 --> 00:36:29.639
had to make a bad choice and
then I had to go fix my my

533
00:36:29.639 --> 00:36:34.440
my bad choice right just because it
was a very specific case. Yeah,

534
00:36:34.480 --> 00:36:39.000
I'm running alphabets of even the services, and that's why in my case it's

535
00:36:39.159 --> 00:36:42.599
But the point is you didn't have
to hand craft all this stuff. You

536
00:36:42.599 --> 00:36:45.559
still cold use generated code, edit
it, then run it exactly. That's

537
00:36:45.559 --> 00:36:49.440
my point is if you if you
want, you know, BICEP that you

538
00:36:49.480 --> 00:36:52.320
want to hand off to somebody that
so they can see the actual bits of

539
00:36:52.360 --> 00:36:55.400
how this work, then it's all
there for you as well. The cool

540
00:36:55.440 --> 00:36:59.440
thing about Aspire is, you know, let's say I started off with two

541
00:36:59.440 --> 00:37:01.760
projects. I've gotten my web front
end, my web back end, and

542
00:37:01.840 --> 00:37:06.199
I decide I want to add a
red as cash. The cool thing is

543
00:37:06.239 --> 00:37:09.679
I can also go run that ACD
infracynth again and we'll look at the project

544
00:37:09.679 --> 00:37:14.840
folder again and we'll see, oh, you added something new, and that

545
00:37:14.880 --> 00:37:16.639
new resource will just show up in
there. And so you can rerun the

546
00:37:16.679 --> 00:37:24.159
tools as you add things or add
projects to your solution and they update the

547
00:37:24.599 --> 00:37:28.679
final piece that I think is really
exciting for me. On the Inspire cases,

548
00:37:30.079 --> 00:37:34.239
let's talk about we just talked about
a cash or a Postgres database or

549
00:37:34.239 --> 00:37:37.440
a SQL database. What do all
these things have in common? Connection strings.

550
00:37:38.760 --> 00:37:43.639
Connection strings suck as well because well, if you're doing local development,

551
00:37:43.639 --> 00:37:45.800
you probably have a connection string to
something on your local machine, and then

552
00:37:45.840 --> 00:37:49.280
when you push this thing to the
cloud, you need a connection string to

553
00:37:49.320 --> 00:37:54.639
something in the cloud. And Aspire
supports this mechanism as well. So just

554
00:37:54.679 --> 00:37:59.559
like we talked about service discovery,
when I write an Aspire application, I

555
00:37:59.599 --> 00:38:04.679
don't ever see a connection string anywhere
ever if I don't want to. So

556
00:38:04.719 --> 00:38:07.519
in the case of I can go
back to that you know, that app

557
00:38:07.559 --> 00:38:10.320
host project, and I could say, hey, I don't have a project.

558
00:38:10.360 --> 00:38:15.599
I have a reddest cash, and
then I can keep that red ast

559
00:38:15.599 --> 00:38:20.400
cash as available, and I can
say my web front end has a has

560
00:38:20.400 --> 00:38:24.159
a with reference to that reddest cash, which then tells the Spire make sure

561
00:38:24.159 --> 00:38:29.840
you boot the API up and the
reddest cash up first. But even better

562
00:38:30.960 --> 00:38:34.000
to add that reddest cash. I
went to my app host, I write

563
00:38:34.000 --> 00:38:37.079
clicked, and I said add an
Aspire component and it gives you all of

564
00:38:37.119 --> 00:38:40.119
the cloudy you know, back end
kind of component you can add there.

565
00:38:40.519 --> 00:38:46.360
I add that that same with reference
also takes the connection string information and injects

566
00:38:46.360 --> 00:38:51.639
it into the web front end project. And so when I'm in the web

567
00:38:51.679 --> 00:38:54.000
front end project, I write click
and I add an Aspire component there,

568
00:38:55.079 --> 00:39:00.679
and I would select like I could
do output cash with Rettis, I could

569
00:39:00.679 --> 00:39:06.719
just do stack overflow rettus. I
could either of those things. But when

570
00:39:06.760 --> 00:39:09.039
I add them, I don't have
to add the connection string. All I

571
00:39:09.079 --> 00:39:14.119
do is when I when I when
I create the API there, I just

572
00:39:14.119 --> 00:39:16.239
give it the name. And if
I called my cash cash in the app

573
00:39:16.239 --> 00:39:20.239
host, I call it cash in
my front end. And once again,

574
00:39:20.320 --> 00:39:23.639
Aspire is doing all the magic to
share the connection strings across those boundaries,

575
00:39:24.000 --> 00:39:29.840
and so I never see a connection
string. And even better, I can

576
00:39:29.920 --> 00:39:35.039
embed it in my code by access
exactly nowhere in your code. You have

577
00:39:35.119 --> 00:39:38.559
this dangerous connection string embedding that you're
going to check into source control, get

578
00:39:38.559 --> 00:39:44.679
yourself in trouble. If you're in
public repos, it's just all gone and

579
00:39:45.119 --> 00:39:47.639
well, because in the end it
is plumbing. So just make it for

580
00:39:47.679 --> 00:39:52.519
me. Make it for you exactly. And so I've had more fun the

581
00:39:52.599 --> 00:39:57.320
last couple of months as we built
the tooling for Aspire and using Aspire and

582
00:39:57.400 --> 00:39:59.400
just seeing my apps and I'm like, you know, I don't see it.

583
00:39:59.480 --> 00:40:01.400
I don't see courts, I don't
see IP addresses, I don't see

584
00:40:01.519 --> 00:40:06.800
connection strings. And you think this
is trivial, But all of us building

585
00:40:06.800 --> 00:40:10.320
aspnt net core projects have opened up
the launch settings dot Jason file and copy

586
00:40:10.400 --> 00:40:16.039
and pasted these things around your application. Or worse, you probably put a

587
00:40:16.039 --> 00:40:21.000
connection string in source code somewhere and
you said, I'm not going to check

588
00:40:21.039 --> 00:40:22.119
it in, but you did.
I mean, we have you know,

589
00:40:22.119 --> 00:40:27.239
we have user secrets, which is
a mechanism in ASPNT core to hide these

590
00:40:27.239 --> 00:40:31.880
things. But I'm in Microsoft.
We have tools that scan our repos and

591
00:40:31.880 --> 00:40:36.119
tell us when we make mistakes like
this, and they go off more than

592
00:40:36.159 --> 00:40:37.880
you would expect. Now I've had
I've had get hub barf back at me

593
00:40:37.960 --> 00:40:40.880
and say, this looks like an
extra string. I'm not checking this in

594
00:40:43.119 --> 00:40:46.079
the way that gets even cooler is
if you're in the Azure space. In

595
00:40:46.119 --> 00:40:51.639
many cases, one of our one
of our goals in Azure right now it's

596
00:40:51.679 --> 00:40:57.760
been there forever. We're doubling down
it right now. Is you shouldn't even

597
00:40:57.800 --> 00:41:02.159
have a connection string. We have
a ability and Azure called managed identity and

598
00:41:02.800 --> 00:41:07.159
the let me let me explain the
idea behind managed identity. Uh. In

599
00:41:07.199 --> 00:41:10.800
the idea of managed identity, I
created managed identity resource, and I tell

600
00:41:10.840 --> 00:41:19.440
my web front end that via not
via code, via either the portal or

601
00:41:19.519 --> 00:41:23.360
via command line tools, I say
that the web front end can talk to

602
00:41:23.400 --> 00:41:32.519
the reddest cash and so there's nothing
to steal because we've just codified or or

603
00:41:32.519 --> 00:41:37.119
we've used infrastructure to say these two
things can talk to each other. You'd

604
00:41:37.199 --> 00:41:39.360
have to break my log in.
Yeah you can't even Yeah you can't.

605
00:41:39.400 --> 00:41:42.719
If you, if you, if
you even got to the portal, there

606
00:41:42.760 --> 00:41:45.760
is no connection strength, there is
no there's nothing. All you do is

607
00:41:45.760 --> 00:41:51.440
is reference to the redest database and
we just make that happen. And so,

608
00:41:52.119 --> 00:41:53.119
uh, that's the point we really
want to get to in the Azure

609
00:41:53.119 --> 00:41:55.519
space. We're going to get to
a place where there is no thing to

610
00:41:55.559 --> 00:41:59.920
steal. There is nothing that could
be checked in because they just don't ex

611
00:42:00.000 --> 00:42:05.039
exist. One step above key vault. Yes, you know, key vault

612
00:42:05.159 --> 00:42:08.079
is our solution if you have to
have a connection string right, and that

613
00:42:08.119 --> 00:42:13.920
this is one of the coolest aspects
of the Azure components for Aspire is if

614
00:42:13.920 --> 00:42:19.480
the service that you're using supports managed
identity, when you publish that app to

615
00:42:19.519 --> 00:42:24.480
Azure, the Aspire published tech will
actually create the managed identity, set the

616
00:42:24.559 --> 00:42:30.000
roles correctly, the permissions correctly for
you on that managed identity and there is

617
00:42:30.079 --> 00:42:36.800
no there is no connection string at
all. If the service you're using does

618
00:42:36.840 --> 00:42:39.920
not support managed identity yet and I
don't think there'll be meaning services by end

619
00:42:39.920 --> 00:42:44.679
of this year that don't support managed
identity, we will then go and take

620
00:42:44.679 --> 00:42:47.480
that connection string, shove it into
a key vault, and create the key

621
00:42:47.559 --> 00:42:51.800
vault for you. And you know, once again, as a developer,

622
00:42:52.360 --> 00:42:54.039
I don't have to think about that
no, and you can't get it wrong

623
00:42:54.079 --> 00:42:59.239
either. Aspire is abstracted all that
away from me, and so you know,

624
00:42:59.559 --> 00:43:05.280
I I'll kind of end on.
We don't think this Aspire tech is

625
00:43:05.360 --> 00:43:09.559
necessarily just a dot net thing,
you know, it's it's a Chris Harris

626
00:43:09.639 --> 00:43:15.079
on my team works on Python and
he has used the same Aspire host project

627
00:43:15.840 --> 00:43:20.519
for some of his Python applications.
So he can get some of these same

628
00:43:20.519 --> 00:43:23.679
capabilities of being able to have the
tech, you know, build the infrastructure,

629
00:43:24.199 --> 00:43:27.559
set up all security the right way, and do all those types of

630
00:43:27.559 --> 00:43:30.079
things. And so I do think
you'll see us. You know, this

631
00:43:30.119 --> 00:43:32.639
is this is we're past one on
one, maybe we're at two oh one

632
00:43:32.679 --> 00:43:36.440
now at least for dot net.
But we want to make sure that this

633
00:43:36.519 --> 00:43:42.639
multi project run, this ability to
create the resources unpublished and have resources locally,

634
00:43:44.360 --> 00:43:45.480
all of that. I would love
to find ways to make that work

635
00:43:45.519 --> 00:43:50.960
for all developers in all languages,
because, as we said, very likely

636
00:43:51.000 --> 00:43:54.719
I've got a view front end talking
to a dot net back end. People

637
00:43:54.719 --> 00:43:59.639
mix all these technologies today already,
and so you know, Aspire needs to

638
00:43:59.639 --> 00:44:02.880
be more than just dot net island. It needs to be a technology that

639
00:44:04.039 --> 00:44:07.360
runs everywhere. And you might have
heard we talked about it probably on a

640
00:44:07.639 --> 00:44:08.880
podcast. In the past. There
was something called Project Tie that was the

641
00:44:09.000 --> 00:44:15.400
predecessor to this. Project Tie was
to dot netty. The stuff we're talking

642
00:44:15.400 --> 00:44:17.639
about now, like the multi project
Runner. That's a that's a thing called

643
00:44:17.719 --> 00:44:22.920
DCP. That tech was actually built
independent of a spire on purpose. So

644
00:44:22.960 --> 00:44:25.639
we could actually take all this tech
and make it work for all languages.

645
00:44:27.880 --> 00:44:30.400
A c D obviously was built.
You know, it's not it was not.

646
00:44:30.480 --> 00:44:35.000
It's not a dot net thing.
It's built for all languages, and

647
00:44:35.039 --> 00:44:37.280
so the building blocks that were building. Uh, hopefully we'll let us take

648
00:44:37.280 --> 00:44:42.360
this experience and make it, make
it cross language, you know, a

649
00:44:42.360 --> 00:44:47.559
cross platform. If there's somebody out
there listening thinking that they're not quite convinced

650
00:44:47.599 --> 00:44:52.320
that, you know, using dot
net a spy or won't pigeonhole them and

651
00:44:52.679 --> 00:44:59.119
give them sort of these high level
abstractions over things they can't manage or understand.

652
00:44:59.559 --> 00:45:04.840
Can you that person? Yeah?
I I The reality is you know,

653
00:45:05.000 --> 00:45:07.440
if you if you look at a
Aspire project, when I say a

654
00:45:07.440 --> 00:45:13.480
couple of things we talked about the
defaults. Those defaults are codified and so

655
00:45:13.840 --> 00:45:15.199
there's nothing. What I would say, the biggest thing is when when people

656
00:45:15.239 --> 00:45:17.599
first see Aspire, the first thing
is they, oh, this is magic.

657
00:45:19.880 --> 00:45:22.320
No, actually it's not. You
know, there's a file that contains

658
00:45:22.360 --> 00:45:25.199
all the defaults. And what's cool
is we make that a project that you

659
00:45:25.280 --> 00:45:29.920
own. You can change those defaults, you can add your own new defaults,

660
00:45:30.039 --> 00:45:31.920
you can remove our defaults if you
don't like those things. If you

661
00:45:31.960 --> 00:45:37.760
don't want to use our service discovery, take it out. If you go

662
00:45:37.760 --> 00:45:42.039
look at how service discovery actually works
behind the scenes, there's nothing magic there.

663
00:45:42.079 --> 00:45:44.719
The cool thing is when I demo
this, I would normally run the

664
00:45:44.760 --> 00:45:46.480
app and I would go in and
show the environment variables to the front end,

665
00:45:46.519 --> 00:45:49.639
and inside the environment variables to the
front end, what you're going to

666
00:45:49.679 --> 00:45:54.679
find is we injected the same local
host port number stuff as an environment variable,

667
00:45:54.760 --> 00:45:59.280
and all we're doing is actually reading
that environment variable and using that in

668
00:45:59.320 --> 00:46:01.679
place of a hard coded string.
And what the host is is the thing

669
00:46:01.760 --> 00:46:06.000
in checking this, and so what
you as you dive deeper into this,

670
00:46:06.039 --> 00:46:09.760
what you're going to find is there's
nothing locking you into anything here at all.

671
00:46:09.840 --> 00:46:13.960
In fact, crazily enough, if
you want to take an Aspire app

672
00:46:14.000 --> 00:46:15.840
and you just have your own container, that's another feature of the host.

673
00:46:16.000 --> 00:46:21.480
I can go point it at any
random container image and I can give it

674
00:46:21.519 --> 00:46:23.679
the port numbers and all the stuff
required to talk to that, and we

675
00:46:23.719 --> 00:46:25.920
can run that. In fact,
that's how we do some of the JavaScript

676
00:46:25.960 --> 00:46:30.760
stuff. We actually can run and
we can run no JS projects. So

677
00:46:30.800 --> 00:46:37.880
would one think of this as more
like the ultimate visual studio template for creating

678
00:46:37.039 --> 00:46:40.599
an application. I think so in
the cloud, right, I mean,

679
00:46:40.679 --> 00:46:45.119
yeah, yeah, I mean a
template that goes beyond your desktop and and

680
00:46:45.159 --> 00:46:49.199
solves all the multi app problems that
we have today. And they said,

681
00:46:49.239 --> 00:46:52.320
the multi app problems are way more
than just a dot Net problem. There

682
00:46:52.320 --> 00:46:57.159
everything. But as you what I
would tell somebody is go read the Aspire

683
00:46:57.199 --> 00:47:00.920
documentation and you're going to find out. You know, we learned this when

684
00:47:00.960 --> 00:47:05.280
we built asknet core back in the
day. One of the one of the

685
00:47:05.360 --> 00:47:07.920
negatives' web forms was we had a
whole bunch of automatic stuff that was on

686
00:47:08.000 --> 00:47:12.800
by default. And that's also probably
why a spire took so long to build.

687
00:47:13.320 --> 00:47:16.800
Is we still still have a hangover
from you know that. But notice

688
00:47:16.840 --> 00:47:21.400
that I said, those defaults are
actually in a project that you're referencing,

689
00:47:21.639 --> 00:47:24.840
you own it. The idea is, you know, you can change you

690
00:47:24.880 --> 00:47:29.519
know, unlike web forms where or
I guess webforms is the right term for

691
00:47:29.519 --> 00:47:32.920
that. There was not a good
way to change any of these defaults and

692
00:47:32.960 --> 00:47:36.880
web forms. You could change some
of them in webconfigure, you could change

693
00:47:36.880 --> 00:47:39.559
modules and stuff like that, but
you really had to know what you were

694
00:47:39.599 --> 00:47:44.880
doing. And I think this is
just it takes the askinet core mechanism of

695
00:47:45.760 --> 00:47:51.599
codifying the whole pipeline and just continues
that. It gives you control over the

696
00:47:52.039 --> 00:47:55.000
what's and the details as data.
Yeah, yeah, I love it.

697
00:47:55.199 --> 00:47:58.679
And by the way, it won't
be perfect and Willship a v two.

698
00:47:58.760 --> 00:48:00.280
Yeah, it's going to continue to
iterate. The infrastructure is going to change

699
00:48:00.320 --> 00:48:06.039
and all this is going to get
better. But one of the things I'm

700
00:48:06.039 --> 00:48:08.639
excited about in this is this means
scaling by default, like you're in a

701
00:48:08.679 --> 00:48:15.719
structural naturally scale. This means the
the the idea of securing each individual component,

702
00:48:15.760 --> 00:48:19.840
limiting the number of parts that are
open, like limiting the attack surface.

703
00:48:19.840 --> 00:48:22.519
Because we're writing this as a manifest
rather than doing it ourselves, and

704
00:48:22.559 --> 00:48:25.800
you're generating against it. You can
close all that stuff off. You can

705
00:48:25.840 --> 00:48:29.519
lock it down as hard as it
can be locked. And I don't have

706
00:48:29.599 --> 00:48:32.719
to write it like that's the main
thing is most importantly right, I don't

707
00:48:32.719 --> 00:48:37.920
get this stuff right, or you
don't have to go read through six thousand

708
00:48:37.960 --> 00:48:39.920
pages of documentation to figure out this
stuff's even there. I mean, that's

709
00:48:39.960 --> 00:48:45.079
the biggin way is I'm not gonna
do not do it. We know if

710
00:48:45.119 --> 00:48:47.920
our customers don't do it too.
And that's that's that's why I think these

711
00:48:47.960 --> 00:48:51.559
types of things are super important.
We have a person whose name is Uli,

712
00:48:52.519 --> 00:48:54.880
and I don't think I'm over sharing. He's the person that if you

713
00:48:54.960 --> 00:48:58.119
have, you know, if you're
a big customer and you're having an agurve

714
00:48:58.119 --> 00:49:02.760
problem, you might call him and
maybe he parachutes into your organization helps you

715
00:49:02.800 --> 00:49:07.159
solve your problem. He gave us
a bunch of crap and ASPI net Core.

716
00:49:07.559 --> 00:49:10.719
He was like, He's like,
you have all the features, but

717
00:49:10.760 --> 00:49:14.159
they're not onned by default, and
I have to just go to these customers

718
00:49:14.159 --> 00:49:16.559
and turn the features on by default. You know, we also we skipped

719
00:49:16.599 --> 00:49:22.239
over heavily. I think we're almost
I don't know. We won't have time

720
00:49:22.280 --> 00:49:24.800
to go very deep into this,
but you know, a really cool part

721
00:49:24.840 --> 00:49:30.679
of the Aspire tech as well is
those defaults turn on all the open telemetry

722
00:49:30.719 --> 00:49:34.280
work, right, which means now
when you run this application, you get

723
00:49:34.280 --> 00:49:37.480
a dashboard, and the dashboard is
going to show you all the components.

724
00:49:37.480 --> 00:49:39.159
It's going to show you your crashes, that's going to show you the traces

725
00:49:39.320 --> 00:49:44.480
in a structured way. You can
search for them. You know today you

726
00:49:44.519 --> 00:49:47.360
would basically go to the cloud and
look at logs, and this this gives

727
00:49:47.360 --> 00:49:52.519
you a much better visualization. You
can see your call path from the front

728
00:49:52.559 --> 00:49:54.119
end to the back end of the
database. You can see how long each

729
00:49:54.119 --> 00:49:58.719
of those steps took, and so
I think the telemetary aspect of this is

730
00:49:58.760 --> 00:50:01.199
super cool. One of the demos
I've been showing that this is not public

731
00:50:01.280 --> 00:50:07.000
yetuntil we ga Aspire later this month, is being able to run that dashboard

732
00:50:07.000 --> 00:50:09.880
in the cloud as well. So
you'll be able to take the same Aspire

733
00:50:09.960 --> 00:50:15.719
dashboard you can run locally doing interlop
development, and when you publish that to

734
00:50:15.960 --> 00:50:17.599
the cloud, you're going to see
that same dashboard running in the cloud.

735
00:50:19.599 --> 00:50:23.719
Now, it won't be perfect because
the dashboard doesn't have storage, which means

736
00:50:23.760 --> 00:50:28.400
it's going to show you more real
time stuff. If you want full storage,

737
00:50:28.400 --> 00:50:30.920
you're going to use something like Azro
Monitor, but that's going to hook

738
00:50:30.000 --> 00:50:35.280
up to the same open telemetry hooks
that we're using for the dashboard, and

739
00:50:35.320 --> 00:50:39.239
so you know, I laugh.
When we were looking at ASPN at core,

740
00:50:40.039 --> 00:50:44.239
we recognized in aspn net web forms
we never had any telemetry at all.

741
00:50:45.920 --> 00:50:49.400
We fixed that with ASPN at core
and then with Aspire we fix that

742
00:50:49.519 --> 00:50:52.159
even more by wiring it up by
default. All right, real quick,

743
00:50:52.400 --> 00:50:58.000
last question on PREM. I know
it's not a question, but yeah,

744
00:50:58.199 --> 00:51:00.719
it is a spire cloud only?
Is it as are only? Can I

745
00:51:00.760 --> 00:51:04.519
do this kind of stuff on prem? You can do it on Prem.

746
00:51:04.599 --> 00:51:07.440
I have to think harder about that. I mean, one of the things

747
00:51:07.480 --> 00:51:09.960
that as a developer when I'm running
on Prem is and you might have already

748
00:51:10.000 --> 00:51:13.920
seen this, Carl, in many
cases, if I want to run a

749
00:51:13.960 --> 00:51:20.639
postgress or a Rabbit MQ or a
mysequel or even a SQL server, when

750
00:51:20.679 --> 00:51:23.239
you run your app locally on your
machine, it can run those technologies and

751
00:51:23.280 --> 00:51:29.800
containers. Ye. You can also
decide in your app post that when you

752
00:51:29.840 --> 00:51:32.280
reference these things, you can give
it connection strings. Those connection streams could

753
00:51:32.280 --> 00:51:36.440
be to local resources. Yeah,
I mean all this stuff is open source.

754
00:51:36.519 --> 00:51:38.599
I'd have to just build a provisioning
mechanism that, when it's running,

755
00:51:38.719 --> 00:51:43.480
say, generate this stuff on my
servers rather than the ones that are going

756
00:51:43.519 --> 00:51:45.599
to generate it on the cloud.
Right, you wouldn't use AZD to publish

757
00:51:45.599 --> 00:51:51.360
this because an't isn't it is octopus
deploy or something like that. Yes,

758
00:51:51.679 --> 00:51:54.079
yeah, well cool. But I
can imagine somebody's going to build up this

759
00:51:54.079 --> 00:51:57.719
code base because they do want to
deploy it on prem or some part of

760
00:51:57.719 --> 00:52:00.800
it on prem. Yeah, you
know, there's no reason. It's just

761
00:52:00.840 --> 00:52:04.159
containers. There's no voodoo here,
Containers run anywhere. Good stuff, Scott,

762
00:52:04.519 --> 00:52:07.920
but I'm afraid we're gonna have to
leave it there. Thank you.

763
00:52:07.079 --> 00:52:10.480
It's always great talking to you.
I'm glad we got to catch up with

764
00:52:10.519 --> 00:52:14.280
you, and I guess it's dinner
time where you are now, so yes,

765
00:52:14.840 --> 00:52:17.079
enjoy Thanks folks, all right,
we'll talk to you next time on

766
00:52:17.199 --> 00:52:42.679
dot net rocks. Dot net Rocks
is brought to you by Franklin's Net and

767
00:52:42.760 --> 00:52:47.079
produced by Pop Studios, a full
service audio, video and post production facility

768
00:52:47.400 --> 00:52:52.320
located physically in New London, Connecticut, and of course in the cloud online

769
00:52:52.320 --> 00:52:58.079
at pwop dot com. Visit our
website at d O T N E T

770
00:52:58.320 --> 00:53:02.199
R O c k S dot com
for RSS feeds, downloads, mobile apps,

771
00:53:02.360 --> 00:53:07.280
comments, and access to the full
archives going back to show number one,

772
00:53:07.840 --> 00:53:10.559
recorded in September two thousand and two. And make sure you check out

773
00:53:10.559 --> 00:53:15.440
our sponsors. They keep us in
business. Now, go write some code

774
00:53:15.760 --> 00:53:25.039
see you next time you got R
Medlevans. The

