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
