1
00:00:01,080 --> 00:00:03,000
Speaker 1: How'd you like to listen to dot net rocks with

2
00:00:03,040 --> 00:00:07,879
no ads? Easy? Become a patron for just five dollars

3
00:00:07,919 --> 00:00:10,800
a month. You get access to a private RSS feed

4
00:00:10,839 --> 00:00:14,240
where all the shows have no ads. Twenty dollars a month,

5
00:00:14,279 --> 00:00:16,879
we'll get you that and a special dot net Rocks

6
00:00:16,960 --> 00:00:21,000
patron mug. Sign up now at Patreon dot dot NetRocks

7
00:00:21,120 --> 00:00:37,320
dot com. Hey, welcome to dot net Rocks Live from Build. Well,

8
00:00:37,320 --> 00:00:38,880
it's not live to you, but it's live for us.

9
00:00:39,759 --> 00:00:41,560
Speaker 2: It turns out every time we record it's live.

10
00:00:42,119 --> 00:00:44,039
Speaker 1: We used to say that at the beginning.

11
00:00:45,359 --> 00:00:49,560
Speaker 3: From dot net rocks, what's the what's the alternative dead Dead?

12
00:00:50,119 --> 00:00:57,399
From dot com? It's Do Not Resuscitate otherwise known as DNR. Okay, well,

13
00:00:57,560 --> 00:01:00,200
it's dot ne rocks where build. We just got out

14
00:01:00,200 --> 00:01:04,000
of the keynote and Scott Hunter shows up and we're

15
00:01:04,040 --> 00:01:05,159
going to have a conversation.

16
00:01:05,319 --> 00:01:06,200
Speaker 2: Yeah, I bet we will.

17
00:01:06,359 --> 00:01:09,400
Speaker 1: And before we talk to Scott, we have to do

18
00:01:09,519 --> 00:01:13,680
a little thing about what happened in nineteen fifty three. Yeah,

19
00:01:13,760 --> 00:01:18,120
because this is show nineteen fifty three. Scott, you're welcome

20
00:01:18,159 --> 00:01:21,200
to join us, dive in on this, Yeah, if you want, sure, So,

21
00:01:21,480 --> 00:01:26,319
Mount Everest Sir Edmund Hillary have Tensing Norgay, who is

22
00:01:26,959 --> 00:01:29,760
his sherpa. Right, Ye became the first people to reach

23
00:01:29,799 --> 00:01:33,319
the summit of Mount Everest on May twenty ninth. You

24
00:01:33,799 --> 00:01:35,040
kind of went up Mount Everest.

25
00:01:35,120 --> 00:01:37,719
Speaker 2: I went to base camp, went to the bottom of Everest, Yeah,

26
00:01:37,760 --> 00:01:42,359
which is the same altitude as the top of Kills.

27
00:01:41,439 --> 00:01:47,480
Speaker 1: Also and Fuji, I have done Mount Gratton, which is inton.

28
00:01:47,840 --> 00:01:51,680
It's basically a recycling pile that I walked to the

29
00:01:51,680 --> 00:01:53,799
top of and is twenty feet all right.

30
00:01:53,760 --> 00:01:56,920
Speaker 2: Okay, but that's the thing that kills you after doing Kelly.

31
00:01:56,920 --> 00:01:58,959
Then you go to beverstpace camps, like I am at

32
00:01:58,959 --> 00:02:01,159
the bottom of this mountain and I feel like I

33
00:02:01,239 --> 00:02:03,400
felt getting to the top of a chilly yeah Fortal.

34
00:02:03,640 --> 00:02:05,640
Speaker 4: It's crazy that you, you know, you people go to

35
00:02:05,680 --> 00:02:07,319
a base camp at Everest and stay there for a

36
00:02:07,319 --> 00:02:08,919
couple of weeks to acclimate before they go all the

37
00:02:08,919 --> 00:02:10,439
way up. So it's like, you know, for Killy, we

38
00:02:10,439 --> 00:02:12,960
didn't really do much a lot of acclamation a little bit,

39
00:02:13,000 --> 00:02:14,719
a little bit, yeah, but you told me.

40
00:02:14,759 --> 00:02:18,199
Speaker 1: I think that the grade for Fuji and for Killy

41
00:02:18,479 --> 00:02:22,439
is a little more easy to traverse, whereas Everest is

42
00:02:22,520 --> 00:02:23,599
kind of a steeper grade.

43
00:02:23,840 --> 00:02:26,800
Speaker 2: Yeah, I don't know. It was very gradual getting to

44
00:02:26,840 --> 00:02:30,479
the base camp. I didn't go past that. But there's

45
00:02:30,479 --> 00:02:32,560
a bunch of different routes on Killimanjero and I think

46
00:02:32,560 --> 00:02:34,520
you did. You did the sixth day route too, didn't you.

47
00:02:34,599 --> 00:02:37,120
I did, and that has more acclamation time, which is

48
00:02:37,159 --> 00:02:39,400
actually important. They say, if you do the sixth day route,

49
00:02:39,439 --> 00:02:41,919
it's like a ninety percent summit, but if you do

50
00:02:42,000 --> 00:02:44,719
the four day route, it's like a fifty percent Summit's

51
00:02:44,759 --> 00:02:45,879
you just pushing your body too hard?

52
00:02:45,960 --> 00:02:49,039
Speaker 1: All right? Well? The Korean War officially ended in nineteen

53
00:02:49,080 --> 00:02:51,960
fifty three an Armis disagreement signed on July twenty seventh.

54
00:02:52,639 --> 00:02:56,479
DNA was discovered by James Watson and Francis Crick, building

55
00:02:56,479 --> 00:02:59,599
on Rosalind Franklin's work. I don't think there's a relation.

56
00:03:01,360 --> 00:03:05,960
According to King's College, London, Joseph Stalin died on March fifth.

57
00:03:06,000 --> 00:03:08,159
Dwight D. Eisenhower was sworn in as President of the

58
00:03:08,240 --> 00:03:10,919
United States on January twentyeth Queen Elizabeth iiO Is crowned

59
00:03:10,919 --> 00:03:15,199
on June second. Jesus A good year, yeah, and some

60
00:03:15,280 --> 00:03:17,560
tech advancements, Richard, I'm sure we'll have more. But the

61
00:03:17,639 --> 00:03:21,919
US detonated the first thermo nuclear device code named Mike. Yeah,

62
00:03:22,039 --> 00:03:25,360
in the Central Pacific Ocean. I know Mike, who was

63
00:03:25,479 --> 00:03:26,879
like a thermonuclear device.

64
00:03:27,520 --> 00:03:30,039
Speaker 2: Yeah. The big one is IBM's six fifty, which was

65
00:03:30,080 --> 00:03:32,879
the sort of first mass produced computer. So we're finally

66
00:03:33,280 --> 00:03:36,039
you know, up until then, every computer was bespoke. Yeah, right,

67
00:03:36,080 --> 00:03:38,199
they were calm built. You know. I told that story

68
00:03:38,240 --> 00:03:42,280
about when they built that the first that first machine,

69
00:03:42,439 --> 00:03:44,919
and the Census bought it, but then they wouldn't give

70
00:03:44,919 --> 00:03:46,479
it to them because they didn't were afraid to take

71
00:03:46,479 --> 00:03:50,400
it apart. Right, So yeah, the six fifty was the

72
00:03:50,400 --> 00:03:53,319
first sort of reliable, rebuildable computer that they've asked.

73
00:03:53,439 --> 00:03:55,439
Speaker 1: All right, well that's just a few things that happened.

74
00:03:55,639 --> 00:03:57,000
But geez, what a year.

75
00:03:57,120 --> 00:03:59,599
Speaker 2: Yeah, ninety fifty three important year knowing about.

76
00:03:59,360 --> 00:04:01,479
Speaker 1: It all right? Well, as I said, Scott Hunter is

77
00:04:01,520 --> 00:04:04,039
here and we have to do a thing first called

78
00:04:04,159 --> 00:04:14,800
better no Framework roll the crazy music. Awesome what he

79
00:04:14,840 --> 00:04:17,879
got Our friend Simon Krawn, of course, he is a

80
00:04:18,000 --> 00:04:22,560
font of good stuff. He finds things. He's part of

81
00:04:22,600 --> 00:04:24,879
the app and X team. Also he's helped me out

82
00:04:24,879 --> 00:04:28,879
with some of my GitHub projects and just a great guy.

83
00:04:29,439 --> 00:04:34,079
So he's created z link z l huge his project.

84
00:04:34,160 --> 00:04:37,920
Oh no, it's not his project. He found it and yeah,

85
00:04:37,959 --> 00:04:40,720
so he found it and shared it with me. It's

86
00:04:40,720 --> 00:04:44,560
a zero allocation link library for dot net. What does

87
00:04:44,600 --> 00:04:48,839
that mean, Well, allocation, zero allocations means you don't create

88
00:04:48,879 --> 00:04:52,319
anything on the heap, right, you don't create anything that

89
00:04:52,360 --> 00:04:54,839
needs to be garbage collected. So that's a good thing.

90
00:04:55,480 --> 00:04:58,079
And I was talking to my buddy Scott before you

91
00:04:58,079 --> 00:05:01,839
got here, Richard, about zero allocation. And it turns out

92
00:05:02,120 --> 00:05:05,000
a lot of the optimizations in dot net have been

93
00:05:05,120 --> 00:05:06,920
because of zero allocation.

94
00:05:07,120 --> 00:05:09,560
Speaker 2: That's been very much a move, right. I mentioned a

95
00:05:09,600 --> 00:05:12,319
lot of the work they did in that exotic version

96
00:05:12,639 --> 00:05:16,240
of Polly, which about minimizing allocation.

97
00:05:15,959 --> 00:05:18,519
Speaker 1: Right, and so then we got talking about ring buffers,

98
00:05:18,519 --> 00:05:18,959
which is.

99
00:05:19,079 --> 00:05:21,199
Speaker 4: I was going to say, yeah, Kestrel and dot Net.

100
00:05:22,000 --> 00:05:24,079
We were actually sitting in a room and building forty

101
00:05:24,079 --> 00:05:25,959
four one day and we're trying to figure out, obviously,

102
00:05:26,000 --> 00:05:29,120
how do we make the web server, you know, allocate less, Yeah,

103
00:05:29,160 --> 00:05:32,199
because that's the you know, the negative of garbage collection

104
00:05:32,279 --> 00:05:33,639
is if you allocate a lot of memory, well, the

105
00:05:33,680 --> 00:05:35,279
garbage collector has to go work in the background to

106
00:05:35,319 --> 00:05:37,000
go get rid of that memory, and that's going to

107
00:05:37,040 --> 00:05:38,959
burn CPU and that's going to slow things down. And

108
00:05:39,000 --> 00:05:41,480
so we were trying to find you know, a lot

109
00:05:41,480 --> 00:05:44,160
of the early optimizations in dot net the dotin corbets

110
00:05:44,160 --> 00:05:46,959
were how do we reduce the allocations that we're making

111
00:05:47,000 --> 00:05:49,600
in the first place. And so one idea was, hey,

112
00:05:49,800 --> 00:05:53,199
the webserver is always turning through requests. Let's just put

113
00:05:53,199 --> 00:05:55,680
a ring buffer inside of there, and then we're not

114
00:05:55,720 --> 00:05:57,240
allocating at all, we're just reusing memory.

115
00:05:57,720 --> 00:05:58,680
Speaker 1: What's a ring buffer?

116
00:05:58,680 --> 00:06:01,480
Speaker 4: Actually, I just think it's think think of it like this,

117
00:06:01,600 --> 00:06:04,800
a big circle of memory. And what you do is

118
00:06:04,839 --> 00:06:07,160
instead of allocating memory, you just keep reusing some part

119
00:06:07,160 --> 00:06:10,160
of that that buffer again and again and again, going around.

120
00:06:10,199 --> 00:06:11,920
You know, as as things are done, they fall off

121
00:06:11,920 --> 00:06:15,879
the end. And but a big chunk of kestrel is

122
00:06:15,920 --> 00:06:19,759
basically first buffering a big ring q if you think

123
00:06:19,800 --> 00:06:22,879
about it like that way. And when we first did it,

124
00:06:22,879 --> 00:06:25,959
we were using you know, uh unsafe sea sharp to

125
00:06:26,000 --> 00:06:28,240
do that because it's just memory and pointers and stuff

126
00:06:28,279 --> 00:06:30,199
like that. And we actually added features to c sharp

127
00:06:30,279 --> 00:06:31,680
later they got.

128
00:06:31,560 --> 00:06:34,560
Speaker 2: Remember remember memory created a whole framework to make it

129
00:06:34,600 --> 00:06:36,439
safe so we didn't have to do that sort of thing. Yes,

130
00:06:36,480 --> 00:06:38,279
and then he did it inside of it anyway. Anyways,

131
00:06:38,360 --> 00:06:38,879
that's clever.

132
00:06:39,279 --> 00:06:40,959
Speaker 4: But but then we put the sea sharp features in

133
00:06:41,040 --> 00:06:42,480
so we could go get rid of all that stupid

134
00:06:42,519 --> 00:06:45,079
stuff that we were doing. Anyways, So as.

135
00:06:44,959 --> 00:06:47,439
Speaker 1: It turns out, you know, uh remember I don't know

136
00:06:47,439 --> 00:06:49,040
if you remember this or if you were with dot

137
00:06:49,120 --> 00:06:52,879
net Rocks back then, but Chris Sells Richard uh talked

138
00:06:52,920 --> 00:06:55,439
about how he wanted to bring reference counting back into

139
00:06:55,600 --> 00:07:00,720
dot net. It was the early days, and uh, you know, yeah,

140
00:07:00,839 --> 00:07:03,920
he was used to reference counting in Calm, and you know,

141
00:07:03,959 --> 00:07:07,240
he had control over what happened and what got deallocated

142
00:07:07,319 --> 00:07:09,240
and when I think it was when he did that

143
00:07:09,319 --> 00:07:13,079
whole thing gets ten Yeah, disposed and I disposable and

144
00:07:13,120 --> 00:07:17,360
all that. Yeah, but his sense man in that crusade,

145
00:07:17,439 --> 00:07:19,040
of course, we went into lake.

146
00:07:19,120 --> 00:07:20,959
Speaker 4: I was say, reference counting. Oh my gosh, I mean

147
00:07:21,079 --> 00:07:23,240
technically the garbage collector is doing that. You just don't

148
00:07:23,279 --> 00:07:24,879
have to see it. So it's like it is reference

149
00:07:24,879 --> 00:07:27,360
counting behind the scenes. You just don't else how would

150
00:07:27,360 --> 00:07:29,079
it work. Yeah, some are it has to go. Nobody's

151
00:07:29,120 --> 00:07:30,920
using this anymore. Yeah, I can now get rid of it.

152
00:07:30,959 --> 00:07:32,639
Speaker 2: And there was a there was a bake off in

153
00:07:32,639 --> 00:07:35,199
the early version of dot net between a reference counted

154
00:07:35,199 --> 00:07:41,360
implementation and the garbage collecting implementation. Patrick Dessaud did the

155
00:07:39,360 --> 00:07:46,240
the the garbage collected version and kicked But yeah, it

156
00:07:46,279 --> 00:07:49,399
was Admittedly the guy had an advantage because he'd done

157
00:07:49,439 --> 00:07:52,199
the Microsoft imilmentation of the JAVM, like he knew that

158
00:07:52,519 --> 00:07:54,920
cold and got to do it all from scratch. Like,

159
00:07:55,279 --> 00:07:58,160
I don't think we can underestimate the number of benefits

160
00:07:58,160 --> 00:08:01,879
that dot net had from having folks from deeply familiar

161
00:08:01,920 --> 00:08:04,959
with JABA to say, hey, we're going to do generics right,

162
00:08:05,000 --> 00:08:07,120
we're going to do the type system right, and we're

163
00:08:07,120 --> 00:08:08,240
going to do garbage collection right.

164
00:08:08,319 --> 00:08:10,199
Speaker 4: Yeah, people forget that. You know, visual j plus plus

165
00:08:10,279 --> 00:08:12,439
was a thing, was it that Patrick worked on, Andrews

166
00:08:12,480 --> 00:08:16,759
Halsberg worked on, and so literally, you know what we

167
00:08:16,800 --> 00:08:19,160
call net today is kind of a fork of that

168
00:08:19,240 --> 00:08:22,000
thing with the different language, but it's got the same

169
00:08:22,040 --> 00:08:23,920
garbage collector and all that stuff. And that's where that

170
00:08:24,120 --> 00:08:26,199
I'm sure that's where Patrick brought the garbage collector from.

171
00:08:26,040 --> 00:08:28,000
Speaker 2: It, even if he started from scratch it. You know,

172
00:08:28,000 --> 00:08:30,040
it doesn't matter. He had it in his head, he

173
00:08:30,240 --> 00:08:33,159
thought about it, and implemented more than arguably anybody else

174
00:08:33,159 --> 00:08:34,720
in the world at that time.

175
00:08:34,840 --> 00:08:37,440
Speaker 1: I remember when Microsoft killed Visual j plus plus, and

176
00:08:37,480 --> 00:08:39,600
I can't remember who it was, and I probably wouldn't

177
00:08:39,600 --> 00:08:42,000
want to say their name anyway, but I said, hey,

178
00:08:42,039 --> 00:08:43,960
why don't you guys killed j plus plus? He said,

179
00:08:44,159 --> 00:08:45,240
we kept getting sued.

180
00:08:47,360 --> 00:08:50,200
Speaker 4: We sort of deserve to get sued in this particular case.

181
00:08:50,360 --> 00:08:53,720
So you know, we we The reason we got sued

182
00:08:53,840 --> 00:08:57,399
was because we had built a JVM, and we added

183
00:08:57,440 --> 00:09:00,840
features to our JVM that were not standard Java features.

184
00:09:01,320 --> 00:09:03,759
The problem is because because we have an operating system

185
00:09:03,799 --> 00:09:08,360
that's installed on a billion machines, our JVM with its

186
00:09:09,080 --> 00:09:12,399
non compliant features, is suddenly on everybody's Every Windows device

187
00:09:12,480 --> 00:09:17,720
in fact, is there. And so in those features, those features,

188
00:09:17,759 --> 00:09:20,000
commonly enough are are super important.

189
00:09:19,679 --> 00:09:20,360
Speaker 2: C sharp features.

190
00:09:20,399 --> 00:09:24,399
Speaker 4: There's delegates were one of those features. And UH the

191
00:09:25,000 --> 00:09:28,120
father of of p and voke which probably I think

192
00:09:28,120 --> 00:09:30,480
it was called jada rec back then. UH, And and

193
00:09:30,559 --> 00:09:33,039
so those features. Anders put those features in as he

194
00:09:33,120 --> 00:09:39,799
was building. UH, basically the father of of UH wind forms.

195
00:09:40,080 --> 00:09:42,519
Speaker 2: The way I've heard it described is with it. So

196
00:09:42,679 --> 00:09:44,879
I think Silverburg is quoted as saying this, it's like

197
00:09:45,279 --> 00:09:49,679
the day that Sun and Microsoft signed that agreement, both

198
00:09:49,679 --> 00:09:52,639
companies were in violation of it, and it just continued

199
00:09:52,639 --> 00:09:56,120
from there. He that he, you know, through pure force

200
00:09:56,159 --> 00:10:00,399
of will, and whatever I've seen of Silverberg lots force

201
00:10:00,399 --> 00:10:02,960
of will. He got both parties to the table to

202
00:10:03,000 --> 00:10:05,000
sign that thing. But he doesn't mean he was going

203
00:10:05,080 --> 00:10:08,159
to change their personalities. There's only so much you could do,

204
00:10:08,759 --> 00:10:10,360
and so at some point they just had to call

205
00:10:10,399 --> 00:10:12,080
the ball on this. It's like, look, this is not

206
00:10:12,480 --> 00:10:14,759
what the intent was. You got to stop.

207
00:10:14,840 --> 00:10:16,799
Speaker 1: Well, it sounds like we're starting the show, but we're

208
00:10:16,799 --> 00:10:20,519
really still in the preheader, so I think it's your turn.

209
00:10:20,600 --> 00:10:21,679
You need to tell us.

210
00:10:21,960 --> 00:10:23,759
Speaker 2: Read a comment. Yeah, I got to comment off the

211
00:10:23,759 --> 00:10:27,360
show nineteen thirty eight when we did with Frank Suadengue

212
00:10:27,679 --> 00:10:31,639
and Sasha talking about the new version of Uno. Yeah,

213
00:10:31,720 --> 00:10:34,320
because it's a great comment, which which is from Fabian

214
00:10:34,360 --> 00:10:38,159
Hugil who said, I really liked that Carl relativized good word.

215
00:10:38,320 --> 00:10:40,919
I like that hot design and hot reload at some

216
00:10:41,080 --> 00:10:44,000
point I have had that. I have had very similar

217
00:10:44,039 --> 00:10:48,200
experiences a visual designer just cannot match what a scene

218
00:10:48,279 --> 00:10:51,600
graph based UI can do, you know, like HTML, like

219
00:10:51,879 --> 00:10:54,279
you know said it. So for every non trivial UI

220
00:10:54,360 --> 00:10:57,080
you will eventually write some zammal code and as to

221
00:10:57,159 --> 00:11:00,240
hot reload, yeah, it's fancy, but even for non UI

222
00:11:00,320 --> 00:11:03,440
dot net assemblies, it often fails for even not too

223
00:11:03,559 --> 00:11:05,399
large changes. I mean this is a challenge long reload.

224
00:11:05,440 --> 00:11:07,399
You can only do a little fudge before it's like, dude,

225
00:11:07,399 --> 00:11:09,159
you need to compile, Like sorry.

226
00:11:08,879 --> 00:11:12,120
Speaker 1: Yeah, you need to stop and run again. But fabe

227
00:11:12,440 --> 00:11:13,840
my experience. Yeah sure, yeah.

228
00:11:13,879 --> 00:11:15,919
Speaker 2: Fabian goes to say, you know, I never really use

229
00:11:15,960 --> 00:11:18,679
it and I don't miss it, which is interesting. I mean,

230
00:11:18,720 --> 00:11:20,639
we put a lot of hype around hot reload, but

231
00:11:20,720 --> 00:11:23,240
it's like, if you've got a workflow that works for you,

232
00:11:23,240 --> 00:11:24,879
you don't have to go further than you know where hot.

233
00:11:24,679 --> 00:11:27,960
Speaker 1: Reload works best if you're changing CSS.

234
00:11:27,600 --> 00:11:30,679
Speaker 2: Yeah, tweaking, tweaking all that little fence posty stuff.

235
00:11:30,799 --> 00:11:31,840
Speaker 1: Change one line of code.

236
00:11:31,879 --> 00:11:34,600
Speaker 2: Oh no, it's time to read about yeah.

237
00:11:35,080 --> 00:11:37,519
Speaker 4: Usually, Yeah, we just haven't done enough work to make

238
00:11:37,639 --> 00:11:39,360
we can make hot reload better. It's just not good

239
00:11:39,480 --> 00:11:42,159
enough yet. So it's we had a huge effort, uh

240
00:11:42,399 --> 00:11:43,759
that we went. We first put it in the in

241
00:11:43,799 --> 00:11:46,480
the product, and then we kind of got busy with

242
00:11:46,519 --> 00:11:48,960
other stuff and it hasn't had enough love recently.

243
00:11:48,960 --> 00:11:50,480
Speaker 2: It's got to go back into the looping. It needs

244
00:11:50,480 --> 00:11:53,080
to go back in the loop. Bitt ten maybe so Fabian,

245
00:11:53,080 --> 00:11:54,759
thank you so much. You're commented. A copy of music

246
00:11:54,759 --> 00:11:55,879
co By is on its way to you. And if

247
00:11:55,879 --> 00:11:57,360
you'd like a copy of music, go buy. I write

248
00:11:57,360 --> 00:11:59,159
a comment on the website at dot net rocks dot

249
00:11:59,200 --> 00:12:01,240
com or on the books. We publish every show there

250
00:12:01,240 --> 00:12:02,759
and if you comment there and I read all the show,

251
00:12:02,879 --> 00:12:04,200
we'll sign your copy of Music to Koba.

252
00:12:04,360 --> 00:12:07,279
Speaker 1: And as Richard mentioned, music to Koba is still going strong.

253
00:12:07,879 --> 00:12:09,799
Music to code by dot Net We're up to twenty

254
00:12:09,879 --> 00:12:12,279
two tracks and you can get the entire collection in

255
00:12:12,480 --> 00:12:16,440
MP three, flak or wave format. And oh my god,

256
00:12:16,480 --> 00:12:17,200
it's Scott Hunter.

257
00:12:17,799 --> 00:12:18,240
Speaker 2: Surely me.

258
00:12:18,440 --> 00:12:21,080
Speaker 1: I'm going to introduce him for real. He is still

259
00:12:21,120 --> 00:12:23,759
the vice president of product for Azure Development Experience and

260
00:12:23,799 --> 00:12:28,240
builds all the tools dot net tools for Azure. Yeah,

261
00:12:28,480 --> 00:12:31,080
that's absolutely I love that. I would love to be

262
00:12:31,159 --> 00:12:34,559
able to get to that kind of bio someday, you know.

263
00:12:34,919 --> 00:12:36,720
Speaker 2: Just does all the things I do the things with

264
00:12:36,759 --> 00:12:37,519
the stuff, all the.

265
00:12:37,480 --> 00:12:38,200
Speaker 1: Things with the stuff.

266
00:12:38,240 --> 00:12:39,720
Speaker 4: You just if you work at the same company for

267
00:12:39,759 --> 00:12:41,159
like eighteen years, this is what happens.

268
00:12:41,200 --> 00:12:44,080
Speaker 2: Yeah, the the title gets shorter.

269
00:12:44,399 --> 00:12:48,240
Speaker 4: Yeah, and you touch all the different parts of you know,

270
00:12:48,360 --> 00:12:50,159
the Microsoft ecosystem over that time.

271
00:12:50,200 --> 00:12:52,440
Speaker 1: But getting back to what we were talking about zero allocations,

272
00:12:52,480 --> 00:12:56,919
it's not just Kestrel, but every genera, every version of

273
00:12:57,000 --> 00:13:01,120
dot necor dot nine and now ten before that seems

274
00:13:01,200 --> 00:13:06,440
just to be getting faster, less memory consumption and more scalable.

275
00:13:06,720 --> 00:13:06,879
Speaker 2: Yeah.

276
00:13:06,919 --> 00:13:09,919
Speaker 4: I was one of the cool features that you know,

277
00:13:10,519 --> 00:13:13,399
we talked about the garbage collector Collector earlier and uh,

278
00:13:13,799 --> 00:13:16,200
one of the coolest garbage culcture features that we've done recently,

279
00:13:16,240 --> 00:13:17,720
and I think it just went under the radar. Nobody

280
00:13:17,720 --> 00:13:21,200
even thinks about this is we had some I remember

281
00:13:21,240 --> 00:13:23,120
we had a couple of customers and they were comparing

282
00:13:23,200 --> 00:13:27,240
dot net to go and Rust and I think we

283
00:13:27,240 --> 00:13:29,399
were winning on the performance side of it. We were

284
00:13:29,519 --> 00:13:31,480
you know, uh and those things, but they were complaining

285
00:13:31,480 --> 00:13:35,639
about the memory we used, right, and uh, we if

286
00:13:35,679 --> 00:13:37,279
one of these benchmarks we had and we looked and

287
00:13:37,320 --> 00:13:40,360
we saw that we were using roughly twice the memory

288
00:13:40,600 --> 00:13:42,480
that Go and Rust were using, and at the time

289
00:13:42,480 --> 00:13:44,840
we we didn't have We didn't really go think a

290
00:13:44,879 --> 00:13:47,600
lot about it. We were busy with other stuff. But uh, it.

291
00:13:47,480 --> 00:13:49,759
Speaker 1: Was was that a real test? I mean, was it

292
00:13:49,799 --> 00:13:51,639
a test of just loading it up and seeing what

293
00:13:51,679 --> 00:13:55,759
the memory usage is or over time after after three

294
00:13:55,799 --> 00:13:57,480
hours of use? You know?

295
00:13:57,639 --> 00:13:59,440
Speaker 4: So I don't remember the exact details.

296
00:13:59,440 --> 00:13:59,639
Speaker 2: It was.

297
00:13:59,759 --> 00:14:01,519
Speaker 4: It was the customer that brought their own benchmarks in

298
00:14:01,559 --> 00:14:04,039
and they'd run their own benchmarks, and then we said, hey,

299
00:14:04,039 --> 00:14:05,200
can we see your benchmarks?

300
00:14:05,200 --> 00:14:07,799
Speaker 2: And you bring up a great point though, carcas One

301
00:14:07,799 --> 00:14:09,080
of the things when I did a lot of load

302
00:14:09,080 --> 00:14:12,080
testing back in the day with dot net websites especially,

303
00:14:12,519 --> 00:14:16,799
you needed several hours for the garbage collector to mature, right,

304
00:14:16,879 --> 00:14:19,039
You have to have pushed enough pages through and so forth,

305
00:14:19,080 --> 00:14:21,519
and filled memory up and had done a couple of

306
00:14:21,919 --> 00:14:26,240
second gen garbage collects before you even really knew what

307
00:14:26,279 --> 00:14:28,960
a site's going to look like. You could fool yourself

308
00:14:29,000 --> 00:14:31,679
on a fresh start with empty memory and run a

309
00:14:31,720 --> 00:14:33,759
quick benchmark and go, all this stuff looks great.

310
00:14:33,919 --> 00:14:36,679
Speaker 1: Yeah, like dot Net could have been pre allocating memory

311
00:14:36,679 --> 00:14:39,399
that it might have needed later and Go or Rust

312
00:14:39,519 --> 00:14:41,399
might have not and so you have to look at

313
00:14:41,399 --> 00:14:41,879
it after you.

314
00:14:42,159 --> 00:14:44,080
Speaker 4: That's that's that's actual we found was we have a

315
00:14:44,120 --> 00:14:48,360
week what I you know, Mami might kill me. Whatever

316
00:14:48,480 --> 00:14:50,559
termatics made up, but it's I call it a greedy,

317
00:14:50,600 --> 00:14:51,519
greedy garbage collector.

318
00:14:51,600 --> 00:14:51,759
Speaker 2: Right.

319
00:14:51,919 --> 00:14:53,399
Speaker 4: Hey, you know when when you when you boot the

320
00:14:53,399 --> 00:14:55,200
app up, the garbage colector goes how much memory does

321
00:14:55,200 --> 00:14:56,519
the machine have? I'm gonna go grab.

322
00:14:56,279 --> 00:14:56,720
Speaker 2: All that stuff?

323
00:14:56,759 --> 00:15:00,519
Speaker 4: Yeah, yeah, And that was the exact thing that the

324
00:15:00,519 --> 00:15:03,639
benchmarks these companies brought to us were showing was basically,

325
00:15:04,240 --> 00:15:05,440
we weren't using all that memory.

326
00:15:05,519 --> 00:15:06,919
Speaker 2: No, we were just getting ready just in case you

327
00:15:06,960 --> 00:15:07,440
needed We were.

328
00:15:07,360 --> 00:15:09,200
Speaker 4: Getting ready in case you needed it. And then in

329
00:15:09,240 --> 00:15:12,279
dotten at eight, that's where we put this behind the

330
00:15:12,320 --> 00:15:14,799
feature flag, a new mode where the garbage clutter is

331
00:15:14,799 --> 00:15:16,960
not greedy, right, And so basically we're going to start

332
00:15:17,000 --> 00:15:19,559
with a little bit of memory and we'll allocate more

333
00:15:19,600 --> 00:15:21,360
memory as as necessary.

334
00:15:22,120 --> 00:15:25,320
Speaker 2: And and you're referring to Maoni Stevens, I think the

335
00:15:25,360 --> 00:15:27,480
new Patrick, who was the new Patrick decide I've had

336
00:15:27,480 --> 00:15:30,519
conversations with that woman. That's one of the most remarkable

337
00:15:30,559 --> 00:15:34,480
minds I've and a company full of remarkable minds. Holy

338
00:15:34,600 --> 00:15:36,919
man just thinks on a different level.

339
00:15:37,519 --> 00:15:39,399
Speaker 4: She knows more about garbage collectors than you and I

340
00:15:39,440 --> 00:15:40,720
would ever know in our entire life.

341
00:15:41,360 --> 00:15:45,240
Speaker 2: Richards and prest I am staggered.

342
00:15:45,799 --> 00:15:48,440
Speaker 1: Staggered, that's so much to be scared.

343
00:15:48,720 --> 00:15:51,600
Speaker 2: It's just ex shredded. But again, what a specialist.

344
00:15:52,320 --> 00:15:54,399
Speaker 4: And you know Patrick still came in after he retired

345
00:15:54,639 --> 00:15:56,759
and still still comes in and talks to Myoni and

346
00:15:56,799 --> 00:15:58,799
stuff like that. And and uh, because I'm sure he

347
00:15:58,840 --> 00:16:00,919
still has ideas too, and I'm sure they bouncedid these.

348
00:16:01,679 --> 00:16:03,720
I would love to see one of those conversations because

349
00:16:03,720 --> 00:16:05,120
I wouldn't understand.

350
00:16:04,799 --> 00:16:07,120
Speaker 2: Any of it. You just sort of stare in awe, but.

351
00:16:07,279 --> 00:16:11,480
Speaker 4: Uh, you know, it's amazing. But she she built a

352
00:16:11,519 --> 00:16:13,000
new feature which is the one where we don't have

353
00:16:13,000 --> 00:16:15,840
the greedy allocation, and we put it in eight, but

354
00:16:15,879 --> 00:16:18,480
it was off behind a feature flag because before we

355
00:16:18,480 --> 00:16:20,639
actually put it put it on on for default, we

356
00:16:20,679 --> 00:16:23,519
wanted to actually run a bunch of the services we

357
00:16:23,639 --> 00:16:26,679
run inside of Microsoft a while. So let's let's go

358
00:16:26,799 --> 00:16:29,360
run a whole bunch of the M three sixty five

359
00:16:29,399 --> 00:16:32,759
back end on this on this technology, uh, in this

360
00:16:32,840 --> 00:16:35,279
new mode and we'll get all the bugs figured out

361
00:16:35,279 --> 00:16:35,960
inside of Microsoft.

362
00:16:35,960 --> 00:16:38,720
Speaker 2: I wouldn't have messed with metrics just because it's calucating

363
00:16:38,759 --> 00:16:41,200
memory different and then showing how it's memory with nine

364
00:16:41,320 --> 00:16:43,279
it's on by default. Okay, so turned out to be

365
00:16:43,360 --> 00:16:44,120
non event.

366
00:16:44,279 --> 00:16:46,200
Speaker 4: I'm sure we fix bugs. Yeah.

367
00:16:46,279 --> 00:16:49,799
Speaker 1: But you know what, though, I would almost want the

368
00:16:49,879 --> 00:16:52,759
pre allocation because it's going to be faster to allocate

369
00:16:52,799 --> 00:16:55,039
memory when it needs it to just use it.

370
00:16:55,120 --> 00:16:58,399
Speaker 4: The uh I think the scenario that you want the

371
00:16:58,559 --> 00:17:02,360
non greedy ones. Are you running on like an IoT device? Yeah, okay,

372
00:17:02,399 --> 00:17:04,720
if you're running on something constrained. So in this case,

373
00:17:04,799 --> 00:17:07,000
the customers was running vms. It makes no sense to

374
00:17:07,039 --> 00:17:09,079
me anyways. So I think the vms are like sixty

375
00:17:09,119 --> 00:17:12,279
four megah this day and age sixty four megs snooze.

376
00:17:12,319 --> 00:17:13,799
My kids don't even know what megs are. They start

377
00:17:13,799 --> 00:17:14,559
with gigs yeaheah.

378
00:17:14,960 --> 00:17:18,160
Speaker 1: So it's like, uh, well, and that brings up another thing.

379
00:17:18,200 --> 00:17:20,559
Could there be a configuration that says, you know, what

380
00:17:20,640 --> 00:17:23,240
percent of available memory should the garbage collector start with?

381
00:17:23,359 --> 00:17:26,000
Speaker 4: There might be a setting for that somewhere in the system.

382
00:17:26,000 --> 00:17:28,759
I have no idea. There's there's probably a whole bunch

383
00:17:28,799 --> 00:17:30,720
of feature flags on the on the on the GC

384
00:17:30,880 --> 00:17:32,200
that are way beyond as.

385
00:17:32,160 --> 00:17:34,240
Speaker 1: Long as this sign the registry, and we should.

386
00:17:34,599 --> 00:17:37,079
Speaker 4: Well, nipcore can't use the registry because it runs on

387
00:17:37,119 --> 00:17:41,279
non Windows offerating system. So we, uh, we left that

388
00:17:41,319 --> 00:17:46,119
building behind, thank you. We should talk about coding agents, Carl, I.

389
00:17:46,039 --> 00:17:48,880
Speaker 2: Know we should, totally should, but we just streshed out

390
00:17:48,880 --> 00:17:50,960
of the keynote. Yeah, and I gotta say, you know,

391
00:17:51,160 --> 00:17:52,519
somebody's asked you, so what do you think it is?

392
00:17:52,519 --> 00:17:55,079
I think Microsoft's doing what Microsoft's best, which is building

393
00:17:55,240 --> 00:17:58,240
tools so the rest of us can take advantage of

394
00:17:58,279 --> 00:18:02,400
the new capabilities. And what was this hour and a half,

395
00:18:02,680 --> 00:18:04,519
but check out the new tools.

396
00:18:04,599 --> 00:18:06,759
Speaker 1: And one thing that we were talking about before we

397
00:18:06,799 --> 00:18:11,200
started recording was it was almost a little what was

398
00:18:11,240 --> 00:18:14,680
the word that I used, like it was not confusing,

399
00:18:14,720 --> 00:18:17,680
but it made it look simpler than it was because

400
00:18:17,720 --> 00:18:21,079
basically it just looked like the demos where people clicking

401
00:18:21,119 --> 00:18:23,960
things and typing a sentence and pressing buttons and boom,

402
00:18:24,000 --> 00:18:27,440
everything's there. But you know, at least I know that

403
00:18:27,920 --> 00:18:31,640
it can be that simple if I know what I'm doing, right,

404
00:18:32,599 --> 00:18:35,319
So I didn't understand it misleading, I think was the word.

405
00:18:35,359 --> 00:18:37,319
I didn't understand it. I couldn't if you asked me

406
00:18:37,359 --> 00:18:39,319
to reproduce any of those demos right now, there's no

407
00:18:39,359 --> 00:18:41,960
I wouldn't even know where to start. I don't even

408
00:18:42,039 --> 00:18:47,000
know what in my company, which copilot tool I should

409
00:18:47,119 --> 00:18:49,920
use to start. So I'm a little confused.

410
00:18:50,240 --> 00:18:52,160
Speaker 4: I can try to help, but I will tell you.

411
00:18:52,200 --> 00:18:55,200
Even you know, Sam Altman, who saw you brought in

412
00:18:55,240 --> 00:18:56,799
for a little bit, yeah, kind of was kind of

413
00:18:56,799 --> 00:18:59,240
talking about you know, the problem with AI to day

414
00:18:59,279 --> 00:19:02,640
is if you're using chat GPT, Oh, there's a screen

415
00:19:02,640 --> 00:19:05,759
full of models, and then there's there's an even an

416
00:19:05,799 --> 00:19:08,279
item called more models, and you click that and you

417
00:19:08,359 --> 00:19:09,119
see even more.

418
00:19:09,000 --> 00:19:12,200
Speaker 1: Models nineteen and how is Joe user?

419
00:19:12,960 --> 00:19:13,079
Speaker 2: You know?

420
00:19:13,559 --> 00:19:15,839
Speaker 4: No, you know as somebody that's been using agent mode

421
00:19:15,880 --> 00:19:17,680
in VS code for a while. By the way, agent

422
00:19:17,720 --> 00:19:20,559
modes is now in Visual Studio too, so you so

423
00:19:20,599 --> 00:19:21,240
you get both of.

424
00:19:21,440 --> 00:19:24,599
Speaker 1: A pin in that and come back to that.

425
00:19:24,599 --> 00:19:28,759
Speaker 4: That's where this before you see the coding agent, you

426
00:19:28,799 --> 00:19:31,559
have to think about agent mode. And once again I

427
00:19:32,119 --> 00:19:34,640
laugh because it brings us back full circle. It's like

428
00:19:35,279 --> 00:19:37,799
agent mode is something that I think we shipped it

429
00:19:38,160 --> 00:19:40,680
maybe a month ago in the public builds of VS Code,

430
00:19:40,759 --> 00:19:42,960
and now it's in the builds of VS that were

431
00:19:43,039 --> 00:19:45,839
Visual Studio that were released this week. It's the forefront

432
00:19:46,039 --> 00:19:49,079
of what the coding agent is and so agent mode.

433
00:19:49,079 --> 00:19:51,079
And by the way, I laugh because it's got a

434
00:19:51,079 --> 00:19:53,440
whole bunch of model selectors as well. It starts with

435
00:19:53,480 --> 00:19:54,160
GPT four.

436
00:19:54,279 --> 00:19:56,200
Speaker 1: But I think your point was, now you don't have

437
00:19:56,240 --> 00:19:57,799
to know where all these models are. It's going to

438
00:19:57,839 --> 00:19:59,400
select you'll.

439
00:19:59,039 --> 00:19:59,759
Speaker 2: Do sort of.

440
00:20:00,160 --> 00:20:02,599
Speaker 4: What we've seen is the coding models have gotten better

441
00:20:02,680 --> 00:20:06,000
at a tremendous rate. I tell my team the stuff

442
00:20:06,000 --> 00:20:08,839
we showed at build this morning. If you told me

443
00:20:08,880 --> 00:20:11,119
it would that even be possible a year ago, I

444
00:20:11,119 --> 00:20:11,720
would have said no.

445
00:20:12,200 --> 00:20:12,599
Speaker 2: Interesting.

446
00:20:13,039 --> 00:20:16,559
Speaker 4: And so the basically the the coding models got so

447
00:20:16,680 --> 00:20:21,680
much better, super fast, and it really anthropics Claude three

448
00:20:21,759 --> 00:20:22,400
sevens on it.

449
00:20:22,400 --> 00:20:23,480
Speaker 2: That seems to be the hot one, right.

450
00:20:23,519 --> 00:20:25,279
Speaker 4: That was the one a couple of months ago that

451
00:20:25,440 --> 00:20:28,079
really kind of tipped us over the edge. And it

452
00:20:28,480 --> 00:20:31,200
was the first time this stuff got good. I'll get there, Carl,

453
00:20:31,599 --> 00:20:34,720
it got good. But then then we hear, like you know,

454
00:20:35,200 --> 00:20:37,599
a few weeks after that, then Jim and I two

455
00:20:37,680 --> 00:20:39,720
five is supposed to be the best coding coding mode.

456
00:20:39,759 --> 00:20:42,200
Speaker 2: How do you measure that? Like? What makes it better?

457
00:20:42,279 --> 00:20:44,119
Speaker 4: I think you have to just triumph Richard and see

458
00:20:44,160 --> 00:20:45,279
what what what your result is.

459
00:20:45,319 --> 00:20:47,519
Speaker 1: And then but the idea is that these are tuned

460
00:20:47,599 --> 00:20:48,279
for coders.

461
00:20:48,319 --> 00:20:50,480
Speaker 4: They're tuned for coding. They're not you know, you don't

462
00:20:50,519 --> 00:20:53,200
ask them, you know how high is Mount kil manangero?

463
00:20:53,440 --> 00:20:55,880
You actually ask them the right code. But agent mode

464
00:20:55,920 --> 00:20:58,400
is where and this is the demo I do and

465
00:20:58,440 --> 00:21:00,799
I love doing this demo is I'll bring up vs

466
00:21:00,799 --> 00:21:03,960
code with a Blazer application and I'll just go into

467
00:21:04,000 --> 00:21:06,440
agent mode and say change the buttons in the web

468
00:21:06,480 --> 00:21:10,519
application to be around in orange. And then what happens

469
00:21:10,599 --> 00:21:13,480
is the ll M behind the scenes will go look

470
00:21:13,480 --> 00:21:16,200
at the at my projects. So remember when we first

471
00:21:16,240 --> 00:21:18,839
started down this whole cold pilot journey, what did it do?

472
00:21:18,920 --> 00:21:21,400
It did code completions so you could press tab and

473
00:21:21,440 --> 00:21:24,720
it would fill in still in more stuff, or you

474
00:21:24,720 --> 00:21:26,440
could in the chat window you could say how does

475
00:21:26,440 --> 00:21:28,960
the link list work? Or show me how to write

476
00:21:28,960 --> 00:21:32,319
a bubbleshort in dot net, those types of things. But

477
00:21:32,680 --> 00:21:35,000
with these new models, now you can actually ask the

478
00:21:35,039 --> 00:21:37,799
thing to go change your app. And so when I went,

479
00:21:39,599 --> 00:21:44,319
we just had thunderstorms. When when you go and ask,

480
00:21:44,960 --> 00:21:46,599
you know, I'll tell you this, Carl, when we're when

481
00:21:46,599 --> 00:21:49,319
we're done, you should go, you know, boot up VS

482
00:21:49,400 --> 00:21:51,480
or VS code and go and do this and say,

483
00:21:51,559 --> 00:21:54,160
go change my Blazer app. And you'll it's funny you

484
00:21:54,160 --> 00:21:55,839
watch it. It's like, hey, I found the web app.

485
00:21:56,759 --> 00:21:58,559
I noticed that your web app is a Blazer app,

486
00:21:58,960 --> 00:22:02,200
and I noticed it using boot Strap. Yeah, I'm going

487
00:22:02,279 --> 00:22:06,279
to go and add this style into the Bootstrap CSS file. Yeah,

488
00:22:06,319 --> 00:22:07,920
and then I'm going to go add this new element

489
00:22:08,079 --> 00:22:12,440
to your items in your app. And so yes, and that's.

490
00:22:12,279 --> 00:22:15,440
Speaker 1: The best example I've heard for me the coder of

491
00:22:15,519 --> 00:22:16,720
what this new stuff can do.

492
00:22:17,400 --> 00:22:20,279
Speaker 4: So what I hate is when you see some of

493
00:22:20,319 --> 00:22:23,200
the demos where it feels like it you know, you

494
00:22:23,200 --> 00:22:26,000
don't have to write code anymore. Right, No, that's you know, Yeah,

495
00:22:26,039 --> 00:22:27,720
we'll get back to that. But that's what agent mode was.

496
00:22:27,759 --> 00:22:30,559
So agent mode does this. It's now not just the

497
00:22:30,559 --> 00:22:32,920
file you're in, it's all the files in your project.

498
00:22:33,079 --> 00:22:33,400
Speaker 1: Yeah.

499
00:22:33,480 --> 00:22:36,119
Speaker 4: And it's smart enough to go identify things like Bootstrap

500
00:22:36,200 --> 00:22:37,599
and so on that many of us using our web

501
00:22:37,640 --> 00:22:38,480
applications today.

502
00:22:38,559 --> 00:22:40,640
Speaker 1: So, like they said, it's it's sort of like having

503
00:22:40,640 --> 00:22:45,079
a partner that or a sous chef that's a coding partner,

504
00:22:45,160 --> 00:22:49,119
a coding chefs, a soup coder that you could just say, hey,

505
00:22:49,119 --> 00:22:50,559
go take care of this little detail.

506
00:22:50,640 --> 00:22:53,640
Speaker 2: But it's that look across the solution rather than to

507
00:22:53,759 --> 00:22:55,200
look at my file exactly.

508
00:22:55,319 --> 00:22:57,240
Speaker 4: It's it's not you know, the first co pilot we

509
00:22:57,279 --> 00:22:58,799
didn't even look at the whole file. We looked at this,

510
00:22:59,319 --> 00:23:02,240
you know, X number of lines because the context windows

511
00:23:02,559 --> 00:23:05,920
were not big enough to do more than that. But

512
00:23:06,000 --> 00:23:09,000
I always want to start there when I describe this.

513
00:23:09,319 --> 00:23:12,680
So the negative of what I just said is and

514
00:23:12,720 --> 00:23:16,519
this is where if I go talk to my enterprise customers, well,

515
00:23:16,559 --> 00:23:19,359
I don't know the did you write the code, Richard

516
00:23:19,720 --> 00:23:21,759
Carl write the code, or did the cloud write the code?

517
00:23:21,799 --> 00:23:24,240
Who wrote the code? And so if you're in an

518
00:23:24,279 --> 00:23:27,960
industry where financial or whatever they want to have more

519
00:23:27,960 --> 00:23:29,599
controls over that, that's where the I think the coding

520
00:23:29,599 --> 00:23:31,559
agent takes us to the next level. So what the

521
00:23:31,599 --> 00:23:34,279
coding agent is is agent mode in the cloud.

522
00:23:35,079 --> 00:23:38,599
Speaker 1: And so okay, so we're out of visual studio.

523
00:23:38,680 --> 00:23:40,480
Speaker 4: Now let's let's talk about this so what I what

524
00:23:40,480 --> 00:23:42,000
I would do and if I want to use the

525
00:23:42,039 --> 00:23:45,000
coding agent, I would file an issue in my repo,

526
00:23:45,599 --> 00:23:48,839
and the issue would say we're going to change the

527
00:23:48,839 --> 00:23:50,680
look and field the website. We want to change all

528
00:23:50,680 --> 00:23:53,720
the buttons to be round and orange. So now I've

529
00:23:53,759 --> 00:23:56,480
created the issue, and what I can do then is

530
00:23:56,519 --> 00:23:59,200
I assigned the issue to copilot, to your agent, and

531
00:23:59,240 --> 00:24:03,000
then in the cloudloud, in the get hub cloud, the

532
00:24:04,599 --> 00:24:07,920
engines that that same agent that we were using in chat,

533
00:24:08,079 --> 00:24:11,119
in VS code or VS is now running in the cloud.

534
00:24:11,559 --> 00:24:13,119
What's cool about that, though, is it's going to go

535
00:24:13,240 --> 00:24:15,400
create a PR. It's going to go put a plan

536
00:24:15,440 --> 00:24:17,880
in the PR. I can live watch the PR as

537
00:24:17,920 --> 00:24:19,599
it's going. If I want to sit there and watch it,

538
00:24:19,680 --> 00:24:22,599
I can. I can watch all the actions. But the

539
00:24:22,640 --> 00:24:24,839
cool thing here is now, because I've made a PR,

540
00:24:25,480 --> 00:24:29,359
well there's a history of yes, it was done, something

541
00:24:29,440 --> 00:24:32,119
was done, and then I have to approve that PR.

542
00:24:32,279 --> 00:24:34,839
So the chat's not going to go by the agent's

543
00:24:34,839 --> 00:24:36,640
not going to go by itself and just go oh,

544
00:24:36,680 --> 00:24:38,480
you're done. No, at the end of the day, I

545
00:24:38,519 --> 00:24:41,480
have to go back and Scott Hunter approved that.

546
00:24:41,359 --> 00:24:43,359
Speaker 2: PR, which you can also pushed back, like you say,

547
00:24:43,400 --> 00:24:45,240
I don't like how this is done, or I would change.

548
00:24:45,240 --> 00:24:49,519
Speaker 1: It's just like you do with the developer, right, exactly. Yeah,

549
00:24:49,559 --> 00:24:51,599
and that's what I loved about that part of Sacha's

550
00:24:51,640 --> 00:24:54,160
demo that he said he wanted to add a feature.

551
00:24:54,200 --> 00:24:56,160
He had a picture of it and he said he

552
00:24:56,200 --> 00:24:58,359
wanted to drop down that has some blah blah blah

553
00:24:58,359 --> 00:25:01,440
and just with one or two cent. Then you got

554
00:25:01,440 --> 00:25:04,160
the googly eyes looking at it because he assigned it

555
00:25:04,200 --> 00:25:06,400
to the to the agent, and the agent's like looking

556
00:25:06,440 --> 00:25:08,640
at it. And then he came back and the polar

557
00:25:08,720 --> 00:25:11,559
Quest was done, and like you said, documented this is

558
00:25:11,599 --> 00:25:14,240
what I did. Yes, I did this and that and

559
00:25:14,279 --> 00:25:16,599
this just the way real developers don't.

560
00:25:16,720 --> 00:25:20,519
Speaker 4: And then exactly, rich and then Carl approved that pr

561
00:25:20,680 --> 00:25:21,799
and so now it's.

562
00:25:21,680 --> 00:25:27,720
Speaker 1: Your fault and it's now thing and trains Richard's bank account.

563
00:25:29,160 --> 00:25:31,480
Speaker 4: But to Richard's point, you can actually go highlight parts

564
00:25:31,480 --> 00:25:32,960
of the code it wrote and say I don't like this,

565
00:25:33,440 --> 00:25:36,240
or put more diagnostics in here or whatever, and so

566
00:25:36,319 --> 00:25:38,599
you can have a back and forth. You know, I

567
00:25:38,599 --> 00:25:41,359
think when when people see this, and I'll be curious.

568
00:25:41,440 --> 00:25:43,319
You know, it just was shown on stage. We've been

569
00:25:43,400 --> 00:25:45,400
using this stuff inside of Microsoft for months.

570
00:25:45,519 --> 00:25:45,720
Speaker 1: Yeah.

571
00:25:45,799 --> 00:25:47,759
Speaker 4: I just saw it a half hour and you just

572
00:25:47,759 --> 00:25:51,160
saw it a second ago. I think people's first reaction is,

573
00:25:51,200 --> 00:25:53,359
you know, when I go talk to real customers, they'll

574
00:25:53,400 --> 00:25:55,079
be like, oh, this is going to replace my coders.

575
00:25:55,119 --> 00:25:57,279
I'm like, no, if you somebody has to be able

576
00:25:57,319 --> 00:25:59,759
to read what this thing did. They had to approve

577
00:25:59,799 --> 00:26:03,119
it and say it's right and so but what.

578
00:26:03,039 --> 00:26:05,640
Speaker 1: I would run it and to run it and it

579
00:26:05,680 --> 00:26:06,480
works well.

580
00:26:06,480 --> 00:26:08,119
Speaker 4: The agent can actually do the stuff like that too,

581
00:26:08,119 --> 00:26:12,480
by the way, So, but but so what I think

582
00:26:12,519 --> 00:26:14,839
where it changes things. When I was talking to David Fowler,

583
00:26:14,920 --> 00:26:18,319
like architect of dot net, yeah, you know, He's like, Scott,

584
00:26:18,319 --> 00:26:21,160
I have to now have to think, should I be

585
00:26:21,160 --> 00:26:21,960
writing this code?

586
00:26:22,359 --> 00:26:22,599
Speaker 2: Yeah?

587
00:26:22,680 --> 00:26:24,279
Speaker 4: Is this the stuff I should assign to the agent

588
00:26:24,279 --> 00:26:27,880
because it's just it's right, you know, small refactoring stuff.

589
00:26:27,920 --> 00:26:29,799
I shouldn't be doing that. I should be writing the

590
00:26:30,000 --> 00:26:32,640
architecting the core of dot net and figuring out how

591
00:26:32,640 --> 00:26:35,160
to make Aspire work and have a great published experience.

592
00:26:35,519 --> 00:26:38,240
You can't tell the you imagine writing an issue, Hey,

593
00:26:38,279 --> 00:26:41,039
make a great publishing experience for Aspire. That's that's not

594
00:26:41,079 --> 00:26:43,799
going to work. That's where you need developers to go

595
00:26:43,839 --> 00:26:44,079
do this.

596
00:26:44,200 --> 00:26:46,200
Speaker 2: But an awful but a lot of an awful lot

597
00:26:46,200 --> 00:26:49,960
of code is uh, stuff has been done before. Stuff

598
00:26:50,000 --> 00:26:51,920
that that a model is going to have a copy

599
00:26:51,960 --> 00:26:54,160
of that it's you know, drawn from gethub and other

600
00:26:54,279 --> 00:26:56,359
and other sources. So why would you write that code

601
00:26:56,400 --> 00:26:57,480
when it's already be written.

602
00:26:57,519 --> 00:26:59,359
Speaker 1: I give you a real world scenario that I hope

603
00:26:59,359 --> 00:27:02,640
the answer is he yes. So I'm working on a

604
00:27:02,680 --> 00:27:08,039
customer's project. This particular project has like fifty screens. Now

605
00:27:08,079 --> 00:27:10,440
they all do different things, but they all have the

606
00:27:10,440 --> 00:27:13,720
same look and feel. They all use a bootstrap grid, right,

607
00:27:14,319 --> 00:27:17,920
And can I give that page or whatever that I

608
00:27:17,960 --> 00:27:21,079
want to use as a template to the agent and say,

609
00:27:21,119 --> 00:27:23,799
all right, I need a new page that has this

610
00:27:23,880 --> 00:27:25,759
field in that field, in this field in that field,

611
00:27:25,799 --> 00:27:28,200
and a calendar, and I'm putting another thing over here

612
00:27:28,240 --> 00:27:29,799
with you know, a table.

613
00:27:29,960 --> 00:27:31,839
Speaker 4: And I would tell you to try it. Your answer

614
00:27:31,880 --> 00:27:34,400
is yeah, probably probably would work. Especially you know, you

615
00:27:34,400 --> 00:27:36,440
can write a file inside of your project. It's kind

616
00:27:36,440 --> 00:27:38,440
of like an instruction files. We call this yeah, and

617
00:27:38,440 --> 00:27:41,920
that instruction file is where you can say these files

618
00:27:42,279 --> 00:27:45,319
are examples of how we build UI right, all screens

619
00:27:45,359 --> 00:27:48,240
will look just like these, except they'll have different fields. Yeah,

620
00:27:48,960 --> 00:27:50,759
make my screen look like these screens.

621
00:27:50,960 --> 00:27:53,400
Speaker 1: Can you go a step further and say, here's my

622
00:27:53,519 --> 00:27:57,119
data structure from my database, here's my data manager that

623
00:27:57,240 --> 00:27:59,920
has my you know, ado dot net code in it,

624
00:28:00,119 --> 00:28:04,160
or like whatever, you know. Make my thing work with

625
00:28:04,599 --> 00:28:05,640
the data manager.

626
00:28:05,920 --> 00:28:10,160
Speaker 4: The more context you give it, the closer it's going

627
00:28:10,200 --> 00:28:11,839
to be what you what you expect in any cases,

628
00:28:12,400 --> 00:28:16,680
but you can also iterate well exactly. We've done a

629
00:28:16,720 --> 00:28:18,240
lot of work. So one of the other things that

630
00:28:18,240 --> 00:28:20,319
we're showing I don't think it was shown in the keynote,

631
00:28:20,359 --> 00:28:21,960
but it'll be shown in Amanda's talk. It was after

632
00:28:21,960 --> 00:28:25,680
the keynote is migration tools for moving from one version

633
00:28:25,680 --> 00:28:27,119
of dot net to the next version of dot net,

634
00:28:27,279 --> 00:28:29,720
moving from a version of Java the next version of Java.

635
00:28:30,960 --> 00:28:32,440
Once again, we learned a lot of these things are

636
00:28:32,440 --> 00:28:35,519
written with crazy AI prompts, and we just keep writing

637
00:28:35,519 --> 00:28:37,240
the prompts and making you know, you try it didn't work,

638
00:28:37,240 --> 00:28:39,759
make a better prompt to me. My analogy of this

639
00:28:39,839 --> 00:28:43,680
is Google Google Search. I didn't find what I like,

640
00:28:43,759 --> 00:28:45,839
so I write it a different way. I keep writing

641
00:28:45,880 --> 00:28:47,559
it a different way until I get the answer I want.

642
00:28:47,759 --> 00:28:49,480
And in many cases I think the AI is going

643
00:28:49,519 --> 00:28:50,559
to let you do the same kind of thing.

644
00:28:50,599 --> 00:28:53,119
Speaker 2: We think about the years we spent learning to write

645
00:28:53,160 --> 00:28:56,240
good search strings. It's going to take us time to

646
00:28:56,319 --> 00:28:57,799
learn to write great prompts. It will.

647
00:28:58,640 --> 00:29:02,039
Speaker 4: And so we've got some really cool tools that we're

648
00:29:02,720 --> 00:29:06,200
we're shipping in public preview today at build and one

649
00:29:06,240 --> 00:29:10,599
of them is, let's say, here's how this works. I

650
00:29:10,720 --> 00:29:12,680
got to I got to convert this project today. It

651
00:29:12,799 --> 00:29:15,359
uses rapid MQ locally, but I want to move it

652
00:29:15,359 --> 00:29:16,839
to use service bus because I go to put it

653
00:29:16,839 --> 00:29:17,359
into Azure.

654
00:29:17,480 --> 00:29:17,720
Speaker 2: Sure.

655
00:29:18,160 --> 00:29:21,079
Speaker 4: So today, what you would do is I would say, Carl,

656
00:29:21,200 --> 00:29:24,440
go change the whole app to move from Rabbit MQ

657
00:29:24,640 --> 00:29:28,119
to service bus. And it probably a lot of work

658
00:29:28,119 --> 00:29:29,880
for you, you know you you would do the first

659
00:29:29,880 --> 00:29:31,920
file and you're like, I got to figure it out now,

660
00:29:32,240 --> 00:29:35,079
and you would replicate that a lot of times. Well,

661
00:29:35,119 --> 00:29:36,599
one of the tools we released today is what you

662
00:29:36,640 --> 00:29:38,039
would do is I would say, Carl, I'll go fix

663
00:29:38,160 --> 00:29:41,799
two files and then from that commit that you're going

664
00:29:41,880 --> 00:29:44,079
to have, we have a thing that will convert that

665
00:29:44,119 --> 00:29:47,160
to a prompt. Interesting and we call these formulas, and

666
00:29:47,200 --> 00:29:50,000
so so you go and make that change in a

667
00:29:50,000 --> 00:29:53,279
couple of files. We make the prompt and you can

668
00:29:53,279 --> 00:29:56,240
then run the prompt against the entire project and move.

669
00:29:56,079 --> 00:29:58,680
Speaker 2: The rest of the project. Rather try to write the

670
00:29:58,680 --> 00:30:00,799
prompt from scratch to do it right now. The first time,

671
00:30:01,240 --> 00:30:03,839
you provide an example of doing it right the code,

672
00:30:03,960 --> 00:30:06,799
and then it reverses that into a prompt. Yes, that

673
00:30:06,839 --> 00:30:08,759
allows the other examples to happen. And so one of

674
00:30:08,799 --> 00:30:11,160
our one of our teaching a novice developer to do

675
00:30:11,200 --> 00:30:12,920
something you just did yep, right.

676
00:30:12,880 --> 00:30:15,559
Speaker 4: Yep, that's all you're doing. And uh, and.

677
00:30:15,359 --> 00:30:17,720
Speaker 2: This this, this is a very fancy copy paste.

678
00:30:17,839 --> 00:30:21,440
Speaker 4: Yes, super fancy. This is like the ultimate copy paste.

679
00:30:22,680 --> 00:30:24,440
It won't it won't be one hundred percent perfect, but

680
00:30:24,519 --> 00:30:26,480
I still think it'll take You know, it would have

681
00:30:26,480 --> 00:30:28,799
taken it would It would have taken Carl a couple

682
00:30:28,799 --> 00:30:30,720
of days. And now it might take Carl a couple

683
00:30:30,759 --> 00:30:32,680
of hours to get to the same place.

684
00:30:32,720 --> 00:30:35,599
Speaker 2: And after the third time, it's scott work right except

685
00:30:35,599 --> 00:30:38,039
for a couple of fixes. So you now getting rid

686
00:30:38,079 --> 00:30:39,920
of all the scott work and just doing the fixes.

687
00:30:40,279 --> 00:30:41,960
Speaker 4: So we have a tool that we shipped a couple

688
00:30:41,960 --> 00:30:45,119
of years ago called appcat. And what appcat is. It's

689
00:30:45,160 --> 00:30:46,960
an app, it's a it's a it's a tool you

690
00:30:47,039 --> 00:30:50,200
run on your A s P, dot Net or Java

691
00:30:50,200 --> 00:30:52,440
app to move to the cloud. And what it does

692
00:30:52,599 --> 00:30:55,240
it just goes and identifies. It's got a library of

693
00:30:55,279 --> 00:30:57,480
like twenty things that we think you shouldn't be doing. Like, right,

694
00:30:57,640 --> 00:30:59,480
you're gonna have to change your connection strings for example.

695
00:30:59,599 --> 00:31:02,920
You know you probably shouldn't have connection screens using something

696
00:31:02,920 --> 00:31:05,880
better than that. But this tool identifies a whole bunch

697
00:31:05,880 --> 00:31:07,640
of things that you need to do before you move

698
00:31:07,640 --> 00:31:09,240
your app to cloud. That the problem with that tool

699
00:31:09,359 --> 00:31:11,319
was in the past. It just gave you a list

700
00:31:11,359 --> 00:31:13,079
of Hey, Carl, here's all the work to go do.

701
00:31:13,359 --> 00:31:13,480
Speaker 1: Right.

702
00:31:13,839 --> 00:31:15,599
Speaker 4: Well, what we've done is we also took the top

703
00:31:15,880 --> 00:31:18,599
ten of these things and we built these formulas with

704
00:31:18,680 --> 00:31:21,039
this other tool. And so now you can go take

705
00:31:21,039 --> 00:31:23,359
the top ten things that appcats can to find and

706
00:31:23,400 --> 00:31:25,279
then go use these formulas to go have it go

707
00:31:25,319 --> 00:31:26,079
fix the app for you.

708
00:31:26,240 --> 00:31:26,559
Speaker 2: Sure.

709
00:31:26,599 --> 00:31:29,680
Speaker 4: And so our goal is, you know, we have customers

710
00:31:29,720 --> 00:31:31,920
tell us moving an app, an older on prem app

711
00:31:31,960 --> 00:31:34,160
to the cloud, can take eight months, right, I want

712
00:31:34,160 --> 00:31:36,480
to get that down to four months or two months,

713
00:31:36,759 --> 00:31:38,759
you know anything that's you know, when I was talking

714
00:31:38,799 --> 00:31:41,440
to some customers, they said, even thirty percent faster.

715
00:31:41,279 --> 00:31:44,000
Speaker 2: Sure is a huge Well I know pretty well, having

716
00:31:44,079 --> 00:31:46,200
you know, spent my time in the architect shovel. It's

717
00:31:46,240 --> 00:31:49,839
like there's a thousand apps. Yes, like there's a thousand

718
00:31:49,880 --> 00:31:53,240
apps times eight months. Yeah, So I'm sorry, we're not

719
00:31:53,279 --> 00:31:53,920
going to get it done.

720
00:31:54,640 --> 00:31:57,200
Speaker 4: And in most cases, I hate to say this, the

721
00:31:57,240 --> 00:32:00,160
developer who wrote those apps is not there anymore. So

722
00:32:00,279 --> 00:32:02,599
some new developers, like I have never seen this code

723
00:32:02,599 --> 00:32:05,720
in my entire life. You know, how do we help

724
00:32:05,799 --> 00:32:09,359
that developer move faster? And so I'm ex I think

725
00:32:09,359 --> 00:32:11,440
people will be afraid of some of this AI stuff,

726
00:32:12,000 --> 00:32:13,000
but it's just a tool.

727
00:32:13,160 --> 00:32:15,240
Speaker 1: And we'll talk about fear when we come back from

728
00:32:15,279 --> 00:32:17,960
a break, because I have a couple of questions about that,

729
00:32:18,440 --> 00:32:20,920
and we'll be right back. These very important messages don't

730
00:32:20,960 --> 00:32:25,319
go away. Did you know you can lift and shift

731
00:32:25,400 --> 00:32:29,039
your dot Net framework apps to virtual machines in the cloud.

732
00:32:29,799 --> 00:32:34,039
Use the Elastic beanstalk service to easily migrate to Amazon

733
00:32:34,119 --> 00:32:38,240
EC two with little or no changes. Find out more

734
00:32:38,240 --> 00:32:45,319
at aws dot Amazon dot com, slash, Elastic beanstalk and

735
00:32:45,359 --> 00:32:47,880
we're back. It's dot net Rocks. I'm Carl Franklin, I'm

736
00:32:47,920 --> 00:32:51,039
Richard Campbell. That's my buddy Richard and everybody. Scott Hunter

737
00:32:51,240 --> 00:32:53,440
is here. And if, by the way, if you don't

738
00:32:53,440 --> 00:32:56,359
want to hear these ads, you can become a patron

739
00:32:56,400 --> 00:32:58,559
for five bucks a month get a feed that has

740
00:32:58,599 --> 00:33:02,000
no ads in it. Wouldn't that be awesome Patreon dot

741
00:33:02,039 --> 00:33:04,079
dot NetRocks dot com. All right, so I wanted to

742
00:33:04,079 --> 00:33:06,920
talk to me. You said the S word and it

743
00:33:06,960 --> 00:33:11,480
wasn't Scott, it was security. Secure. I hear this all

744
00:33:11,519 --> 00:33:15,079
the time. Secure secure. One of the main features of

745
00:33:15,200 --> 00:33:17,440
agents and the things that makes them work is you

746
00:33:17,480 --> 00:33:21,839
give them permissions to your resources, whether it's you know, Azure,

747
00:33:21,839 --> 00:33:27,039
a d a database, you know, cloud services, all of

748
00:33:27,079 --> 00:33:30,200
the things that you need to go do or access.

749
00:33:30,920 --> 00:33:33,160
Maybe it's not just an Azure, you might have other

750
00:33:33,200 --> 00:33:36,079
stuff in other clouds, right, but you've got to give

751
00:33:36,119 --> 00:33:40,400
these agents permission to do thy bidding. And so for me,

752
00:33:41,559 --> 00:33:43,799
as you know, put on my security hat because now

753
00:33:43,880 --> 00:33:45,319
I don't know if you know this, but I do

754
00:33:45,400 --> 00:33:47,559
a security podcast. Weird, it's weird.

755
00:33:47,759 --> 00:33:50,799
Speaker 2: All I do is tell jokes and ask questions, but

756
00:33:51,319 --> 00:33:56,279
think security people. God, yes, but you know that I

757
00:33:56,400 --> 00:33:57,119
know enough.

758
00:33:56,880 --> 00:34:02,519
Speaker 1: To know that that increases the attack vector serves for you,

759
00:34:03,680 --> 00:34:08,719
and probably your software bill of materials probably goes up

760
00:34:08,800 --> 00:34:13,159
exponentially without you knowing it necessarily. So I just want

761
00:34:13,239 --> 00:34:15,519
to have you talk a little bit about the security

762
00:34:15,519 --> 00:34:16,239
of all those first.

763
00:34:16,280 --> 00:34:18,639
Speaker 4: So that's why I think our earlier conversation about prs

764
00:34:18,760 --> 00:34:21,159
was important. Yes, that means a developer gets to see

765
00:34:21,159 --> 00:34:23,239
the PR and approve the PR and so there's nothing

766
00:34:23,280 --> 00:34:27,280
being done automatically, but there's no magic, so at least

767
00:34:27,280 --> 00:34:31,599
there's a human that approved whatever happened. The area that

768
00:34:31,920 --> 00:34:34,840
I think about the most of what you just described, Carl,

769
00:34:34,920 --> 00:34:35,760
is probably MCP.

770
00:34:36,119 --> 00:34:40,719
Speaker 1: Yes, an acronym I just learned this morning. Well, I

771
00:34:40,760 --> 00:34:43,320
didn't know anything about it. So protocol that lets agents

772
00:34:43,320 --> 00:34:44,840
talk to each other's.

773
00:34:44,840 --> 00:34:50,039
Speaker 4: Let's LM talk to stuff. And there's not currently a

774
00:34:50,119 --> 00:34:52,280
bunch of security around this thing, and so today it

775
00:34:52,320 --> 00:34:54,920
has to be In most cases you run it locally

776
00:34:54,920 --> 00:34:56,760
on your own machine. But I'll give you I'll explain

777
00:34:56,760 --> 00:35:00,199
the MCP scenario. You install a GIT of him CP

778
00:35:01,039 --> 00:35:04,760
on your machine and that means that that will let

779
00:35:04,760 --> 00:35:06,800
the l M be able to you can give that

780
00:35:06,840 --> 00:35:08,800
whatever access to your GitHub repo you want to give

781
00:35:08,800 --> 00:35:11,719
it to. Yes, you know you might want to you know,

782
00:35:12,039 --> 00:35:14,280
for databases, you might want to put a postcress MCPN

783
00:35:15,159 --> 00:35:20,320
and I'll explain why that's interesting these things. Let let

784
00:35:20,559 --> 00:35:23,159
let you share knowledge with the l l.

785
00:35:23,239 --> 00:35:25,480
Speaker 1: M and it's a model context protocol.

786
00:35:25,599 --> 00:35:29,079
Speaker 4: That's that's the that's the protocol. And by the way,

787
00:35:29,079 --> 00:35:30,880
it's it's a very basic protocol at this point in time.

788
00:35:30,920 --> 00:35:34,719
There's anthropic. Yeah, it's it's anthropic, but we all jumped

789
00:35:34,719 --> 00:35:38,440
on it. Like the dot net team. They there was

790
00:35:38,519 --> 00:35:42,159
an open source m c p uh dot net implementation.

791
00:35:42,719 --> 00:35:45,800
They took that over. They worked with that developer and

792
00:35:45,840 --> 00:35:47,719
took it over and that's now the official because when

793
00:35:47,760 --> 00:35:49,880
when MCP first came out, I think there was only

794
00:35:50,440 --> 00:35:52,960
Python JavaScript and there might have been a Java one

795
00:35:53,000 --> 00:35:55,519
there too, but we made sure there's a there's a

796
00:35:55,559 --> 00:35:59,159
great dot Net one VS and VS code will support

797
00:35:59,239 --> 00:36:01,639
m c P as well, which is very important. This

798
00:36:01,719 --> 00:36:05,760
agent back to this agent mode stuff again. Yeah, I

799
00:36:05,840 --> 00:36:07,559
can do cool things like that. In the chat. I

800
00:36:07,599 --> 00:36:11,239
could say file an issue one Carl about changing the

801
00:36:11,280 --> 00:36:13,639
buttons in my blazer. Application to be orange and round.

802
00:36:13,960 --> 00:36:16,840
And if I've given that the GitHub MCP the write

803
00:36:17,280 --> 00:36:20,719
to create an issue, then from that chat interaction, it

804
00:36:20,760 --> 00:36:22,639
would go create that issue issue from I didn't have

805
00:36:22,639 --> 00:36:23,679
to go to the web page. I didn't to go

806
00:36:23,920 --> 00:36:25,360
use some other tool. I didn't have to go pull

807
00:36:25,400 --> 00:36:27,960
a thing up. But once again, as I said, you

808
00:36:28,119 --> 00:36:31,119
have to decide. You know, once again you're running the agent,

809
00:36:31,320 --> 00:36:32,599
so you're running the chat.

810
00:36:32,679 --> 00:36:35,199
Speaker 1: So you also said it's not very secure right now.

811
00:36:35,440 --> 00:36:38,320
Speaker 4: What I mean by that is you're going to have

812
00:36:38,320 --> 00:36:40,960
to go put your access token and in some form

813
00:36:41,039 --> 00:36:43,599
or fashion on your machine because the ll M is

814
00:36:43,639 --> 00:36:46,280
going to call into this protocol. It's going to run

815
00:36:46,320 --> 00:36:49,000
that code. That code needs access, It needs your security

816
00:36:49,039 --> 00:36:50,960
token to be able to actually talk to GitHub. If

817
00:36:51,000 --> 00:36:53,039
you want to talk to a Postcrest database, for example,

818
00:36:53,360 --> 00:36:54,920
well it's going to have to have a connection string

819
00:36:54,960 --> 00:36:57,239
and the credentials to talk to that Postcrest database. Once again,

820
00:36:57,239 --> 00:36:59,599
you could give it a restricted one. And why that's

821
00:36:59,639 --> 00:37:03,159
interesting is if the LLM can see the database, you

822
00:37:03,199 --> 00:37:06,480
could then almost say you went and created a table,

823
00:37:06,880 --> 00:37:10,360
go building a business logic object for this new table,

824
00:37:10,960 --> 00:37:13,920
and then it would use MCP to go look at

825
00:37:13,920 --> 00:37:17,440
the postgrass database, find the columns and their types, and

826
00:37:17,519 --> 00:37:20,440
then build you the relevant c Sharp implementation and.

827
00:37:20,519 --> 00:37:22,440
Speaker 1: Do that stuff with prompts. Now, of course you do,

828
00:37:23,400 --> 00:37:23,960
but this would just.

829
00:37:24,000 --> 00:37:26,360
Speaker 4: Mean instead of having to go paste the table in somewhere,

830
00:37:26,800 --> 00:37:29,960
you could actually give it access to that. We also shipped,

831
00:37:30,400 --> 00:37:33,199
like my team built Azure function support for MCP, which

832
00:37:33,280 --> 00:37:35,840
means you can have a remote MCP. In my case,

833
00:37:35,920 --> 00:37:38,079
that means that MCP is protected by all the Azure

834
00:37:38,119 --> 00:37:38,800
security features.

835
00:37:38,840 --> 00:37:40,719
Speaker 1: So that's what I was looking for. And so something

836
00:37:40,880 --> 00:37:45,000
like key vault, you know, like that it's impenetrable, so

837
00:37:45,079 --> 00:37:47,360
it knows the keys but nobody else can know.

838
00:37:47,599 --> 00:37:50,599
Speaker 4: But this space is so new, it's just booting up.

839
00:37:50,599 --> 00:37:54,400
I mean at Something else that my team shipped today

840
00:37:54,679 --> 00:37:57,840
build as well, is we have a product called API Center,

841
00:37:58,400 --> 00:37:59,639
and it's going to have a place where you can

842
00:37:59,679 --> 00:38:01,599
find all all the m cps in your in your

843
00:38:01,719 --> 00:38:02,639
organization mp.

844
00:38:02,679 --> 00:38:05,239
Speaker 1: I center, API center, a p I center.

845
00:38:05,079 --> 00:38:06,639
Speaker 4: API, so we have API management.

846
00:38:07,519 --> 00:38:09,400
Speaker 1: Sorry, I understand what you said.

847
00:38:09,519 --> 00:38:12,039
Speaker 4: A p I center a API like API S Yeah,

848
00:38:12,039 --> 00:38:14,440
I got it. And mcps are in some ways APIs,

849
00:38:14,480 --> 00:38:16,360
and so we're going to have a place where you

850
00:38:16,440 --> 00:38:19,679
can uh have a list of m cps uh that

851
00:38:19,800 --> 00:38:22,480
you're you know, your company uses and people can find

852
00:38:22,519 --> 00:38:24,119
them and and so on and so on. But I

853
00:38:24,199 --> 00:38:25,519
said it's early times.

854
00:38:25,920 --> 00:38:27,920
Speaker 1: But I will tell you that there's a lot of

855
00:38:27,960 --> 00:38:28,400
promise there.

856
00:38:28,400 --> 00:38:29,199
Speaker 4: There's a lot of promise.

857
00:38:29,280 --> 00:38:32,159
Speaker 1: That's it's got to be where everything goes because.

858
00:38:31,880 --> 00:38:35,400
Speaker 4: You once again the more I mean, you and I

859
00:38:35,480 --> 00:38:37,760
probably written the same code a billion times, Carl, where

860
00:38:37,800 --> 00:38:39,480
we just write the ady O code to you know,

861
00:38:39,559 --> 00:38:43,320
do the database table stuff or the any of your

862
00:38:43,360 --> 00:38:46,000
framework core stuff to go do the same thing. And

863
00:38:46,599 --> 00:38:49,199
I'd love to just say, here's a new table here,

864
00:38:49,239 --> 00:38:51,679
you do that, Go go do it for me. Yeah,

865
00:38:51,800 --> 00:38:54,159
and uh put the same logging and all the other

866
00:38:54,199 --> 00:38:57,880
stuff in. So it's it's funny. I I I remember

867
00:38:57,920 --> 00:38:59,239
when we first did we shipped on in a core.

868
00:38:59,320 --> 00:39:00,639
We were like, it's it's a great time to be

869
00:39:00,679 --> 00:39:03,199
a developer. And I will tell you that all this

870
00:39:03,360 --> 00:39:05,880
new tooling stuff that we can do with the AI stuff.

871
00:39:08,320 --> 00:39:12,000
Speaker 1: It's you also mentioned that does this mean my job

872
00:39:12,119 --> 00:39:14,920
is on the line, right, There's a lot of people

873
00:39:15,000 --> 00:39:17,840
think in that oh, well, you know, if a junior

874
00:39:17,880 --> 00:39:21,960
developer can get some AI and go out code me.

875
00:39:23,480 --> 00:39:25,480
What's that mean for me? And I always tell people

876
00:39:25,519 --> 00:39:28,239
and Richard does too, It's not the AI is going

877
00:39:28,280 --> 00:39:32,000
to replace your job. It's that another developer that uses

878
00:39:32,119 --> 00:39:34,239
AI will take your job.

879
00:39:34,719 --> 00:39:37,880
Speaker 4: I would tell you today, don't if we when we interview,

880
00:39:38,239 --> 00:39:42,519
if we interview new product managers or developers, we're one

881
00:39:42,559 --> 00:39:43,599
of the skills that we're going to want you to

882
00:39:43,639 --> 00:39:45,800
show us, is you know how to use AI to

883
00:39:45,880 --> 00:39:47,960
do your job. I think that's just a part of

884
00:39:48,599 --> 00:39:50,039
And I don't think it's just going to be programming.

885
00:39:50,039 --> 00:39:52,679
I think it's many, many jobs. It's gonna it's it's

886
00:39:52,719 --> 00:39:53,280
gonna come down to this.

887
00:39:53,320 --> 00:39:54,920
Speaker 2: Compan upon a time, we asked if you knew how

888
00:39:54,960 --> 00:39:57,199
to use email exactly, I.

889
00:39:57,239 --> 00:40:01,800
Speaker 4: Mean spell checkers. I mean know word's gotten so good

890
00:40:01,840 --> 00:40:03,760
these days. It'll tell you when you're using bad English.

891
00:40:03,840 --> 00:40:06,920
It'll actually fix it for you. You know, I would

892
00:40:06,920 --> 00:40:09,559
have been offended when I was first going through you know,

893
00:40:09,920 --> 00:40:13,039
college or high school. But I'm like, why would I

894
00:40:13,119 --> 00:40:13,719
not use these things?

895
00:40:13,880 --> 00:40:15,920
Speaker 1: But I will say this though. Let's say you're on

896
00:40:15,960 --> 00:40:19,320
a team of developers that's maybe five people, small business, right,

897
00:40:20,360 --> 00:40:23,679
and one of those developers decides to dive into AI

898
00:40:23,880 --> 00:40:27,280
and can demonstrate that he or she can do everything

899
00:40:27,440 --> 00:40:30,920
that the whole team can do with one person faster.

900
00:40:31,360 --> 00:40:32,559
Is that a real scenario.

901
00:40:32,719 --> 00:40:34,400
Speaker 4: I don't think it's a real scenario, you know, but

902
00:40:34,599 --> 00:40:37,599
I do think that building a you know, we've all

903
00:40:37,679 --> 00:40:42,679
seen the vibe coding stuff, which I'm like, you know, questionable, Oh,

904
00:40:42,920 --> 00:40:45,679
vibe coding, Yeah, well questionable. I do think it's a

905
00:40:45,719 --> 00:40:49,119
good way to build a prototype, yeah, and to prove

906
00:40:49,159 --> 00:40:51,880
a concept and then go and say, let's go make

907
00:40:51,920 --> 00:40:52,280
this real.

908
00:40:52,559 --> 00:40:52,760
Speaker 1: Yeah.

909
00:40:53,199 --> 00:40:55,480
Speaker 4: I mean, I'm sure there's plenty of there'll be a

910
00:40:55,519 --> 00:40:58,000
startup here there that'll do something stupid. They'll go, you know,

911
00:40:58,280 --> 00:41:01,599
vibe code something, and sure, already happened. I'm sure it's

912
00:41:01,599 --> 00:41:03,679
already happened. But at the end of the day, you

913
00:41:03,880 --> 00:41:06,119
you know, could you imagine shipping an app when you've

914
00:41:06,119 --> 00:41:07,079
never seen any need of the code?

915
00:41:07,199 --> 00:41:09,199
Speaker 2: Yeah, No, I've seen people do dumb stuff like that,

916
00:41:09,320 --> 00:41:12,000
you know. Yeah, that's how they've deployed prototypes that we've

917
00:41:12,000 --> 00:41:13,880
seen over the years that aren't secured and so forth.

918
00:41:14,360 --> 00:41:16,559
This is another level dumb. You know, we've been walking

919
00:41:16,639 --> 00:41:18,960
past the truth on this whole conversation about coding agents

920
00:41:19,000 --> 00:41:21,760
it's not just working out the prompt, it's then looking

921
00:41:21,840 --> 00:41:25,119
at the results and assessing it. So, yeah, there's the

922
00:41:25,280 --> 00:41:29,280
new skill of how you communicate intent to the agent,

923
00:41:29,519 --> 00:41:32,079
but then there's the old skill of a coding.

924
00:41:31,880 --> 00:41:34,039
Speaker 4: Review, yes, which is super important.

925
00:41:34,159 --> 00:41:34,360
Speaker 1: Yeah.

926
00:41:34,400 --> 00:41:36,400
Speaker 4: And by the way, that's the scariest part about this

927
00:41:37,400 --> 00:41:39,960
is you know, in some ways the coding agent could

928
00:41:40,079 --> 00:41:42,079
make it if you're a junior developer.

929
00:41:41,800 --> 00:41:43,639
Speaker 1: Yeah, you could tell it to do something you shouldn't do.

930
00:41:44,199 --> 00:41:44,360
Speaker 2: Well.

931
00:41:44,400 --> 00:41:46,920
Speaker 4: It's also I think it we need to somehow make

932
00:41:46,920 --> 00:41:49,960
sure we don't lose the skill of teaching junior developers

933
00:41:50,000 --> 00:41:53,000
how to become senior developers that know what's good code

934
00:41:53,000 --> 00:41:56,119
and what's better code. Okay, so it's in some cases

935
00:41:56,280 --> 00:41:59,280
the fear is my fear is, oh my gosh, we're

936
00:41:59,280 --> 00:42:02,159
going to lose thebility to train junior developers.

937
00:42:02,320 --> 00:42:02,519
Speaker 1: Yeah.

938
00:42:02,639 --> 00:42:05,280
Speaker 4: So that's something we inside of Microsoft talk about a

939
00:42:05,320 --> 00:42:06,440
whole bunch, is like we had to make sure we

940
00:42:06,480 --> 00:42:08,360
don't lose this skill.

941
00:42:08,199 --> 00:42:10,239
Speaker 2: That a new developer glowing up in this space is

942
00:42:10,400 --> 00:42:13,599
always going to be someone solution focused rather than code

943
00:42:13,639 --> 00:42:17,320
focused and being able to assess. They're never working from

944
00:42:17,360 --> 00:42:20,559
a blining screen, They're always assessing stuff and quite possibly

945
00:42:20,679 --> 00:42:21,840
leveraging other tools to do it.

946
00:42:22,000 --> 00:42:24,880
Speaker 1: Yes, I keep coming back because we're talking about fear.

947
00:42:25,000 --> 00:42:28,880
That's the the word for this half hour. I keep

948
00:42:28,960 --> 00:42:32,400
coming back to that Star Trek Next Generation episode. Do

949
00:42:32,480 --> 00:42:35,719
you remember when Data was playing Sherlock Holmes and he

950
00:42:35,760 --> 00:42:38,519
would go into the Holidack with Jordy and Data would

951
00:42:38,519 --> 00:42:42,000
always solve the crime. It was easy for him. So

952
00:42:42,280 --> 00:42:45,880
he was like bored, and Jordi said, computer, create a

953
00:42:45,960 --> 00:42:49,440
Sherlock Holmes mystery with a foe that has the ability

954
00:42:49,559 --> 00:42:53,599
to outsmart Data or to outwit Data. And then it

955
00:42:53,719 --> 00:42:59,280
created this really intelligent Moriarity character that actually knew it

956
00:42:59,440 --> 00:43:01,159
was on the holid deck and could take control of

957
00:43:01,199 --> 00:43:06,840
the ship. And that like, you give a junior programmer

958
00:43:07,199 --> 00:43:10,320
a powerful tool like an ancient and the past, you know,

959
00:43:10,400 --> 00:43:13,079
the keys to go and affect all of the critical

960
00:43:13,159 --> 00:43:17,039
resources in your industry, right in your enterprise, and then

961
00:43:17,639 --> 00:43:20,239
that guy writes a prompt or that girl writes a

962
00:43:20,320 --> 00:43:26,519
prompt like that that completely hoses everything. That is a

963
00:43:26,599 --> 00:43:27,320
real scenario.

964
00:43:27,599 --> 00:43:29,519
Speaker 4: But what I would tell you if I gave the

965
00:43:29,519 --> 00:43:32,480
same junior developer all those keys and access, they could

966
00:43:32,519 --> 00:43:33,679
go nuke everything anyway.

967
00:43:33,800 --> 00:43:36,519
Speaker 2: Sure, so the reality is okay.

968
00:43:36,519 --> 00:43:39,519
Speaker 1: But is it the difference of giving them a glock

969
00:43:39,719 --> 00:43:41,360
versus giving them an M sixteen.

970
00:43:41,440 --> 00:43:42,960
Speaker 4: I think it's I think it's the same thing. Maybe

971
00:43:43,280 --> 00:43:46,840
maybe they could do it faster. But but once again,

972
00:43:46,920 --> 00:43:50,679
that's that's why. You know, most most you know, enterprise

973
00:43:50,760 --> 00:43:54,000
companies don't let developers have the actual keys to the

974
00:43:54,079 --> 00:43:56,480
real databases and all that kind of stuff. That's the

975
00:43:56,559 --> 00:43:59,320
thing that we don't we never talked about probably on

976
00:43:59,400 --> 00:44:01,039
this on the show, you probably never talked about this

977
00:44:01,239 --> 00:44:04,000
is you know, most companies, I could never see the

978
00:44:04,039 --> 00:44:08,760
production database. Only a class of my DevOps engineers are

979
00:44:08,800 --> 00:44:11,840
allowed to actually ever see the production database. Even at Microsoft,

980
00:44:12,360 --> 00:44:14,360
you know, we want to make sure that even if

981
00:44:14,400 --> 00:44:17,800
I'm debugging Azure, we're very careful about making sure that

982
00:44:17,920 --> 00:44:20,159
any personal information doesn't end up in logs and so

983
00:44:20,320 --> 00:44:21,880
on for the for the same reasons we're just going

984
00:44:21,960 --> 00:44:22,639
to get striving here.

985
00:44:23,000 --> 00:44:25,320
Speaker 1: It means that you have to be aware of just

986
00:44:25,440 --> 00:44:28,960
more things, but no and less things at the same time.

987
00:44:29,079 --> 00:44:31,159
Speaker 4: Right, But you could vibe code something that was dangerous

988
00:44:31,199 --> 00:44:35,039
faster with and and uh, you know, you could potentially

989
00:44:35,079 --> 00:44:37,159
generate a prompt as you said that would delete a datbase, right,

990
00:44:37,239 --> 00:44:40,079
because I tell the hey make the database faster by

991
00:44:40,119 --> 00:44:42,840
deleting the first million rows.

992
00:44:43,039 --> 00:44:45,280
Speaker 1: So do you have a prompt cop on staff that

993
00:44:45,679 --> 00:44:47,840
has to approve all the prompts that you give your

994
00:44:47,880 --> 00:44:48,880
AI while you're developing.

995
00:44:49,159 --> 00:44:50,599
Speaker 4: I think the bigger thing is make sure you don't

996
00:44:50,599 --> 00:44:52,119
you don't you don't give your AI the ability to

997
00:44:52,159 --> 00:44:55,239
go delete the database. That's that's the smart thing there

998
00:44:55,239 --> 00:44:55,639
to start with.

999
00:44:55,760 --> 00:44:57,800
Speaker 2: You gave the keys to the castles of the junior

1000
00:44:58,880 --> 00:44:59,679
because remember one I.

1001
00:44:59,719 --> 00:45:03,280
Speaker 4: Remember if you roll back I started, and that that

1002
00:45:03,400 --> 00:45:06,679
postgrass agent or MCP. I said, give it read access.

1003
00:45:06,840 --> 00:45:10,000
Yeah yeah, I didn't say write access for you know, because.

1004
00:45:09,760 --> 00:45:12,199
Speaker 2: That's why they that's why they submit pull requests. Yes,

1005
00:45:12,360 --> 00:45:14,559
they don't write. They only could present.

1006
00:45:15,320 --> 00:45:17,599
Speaker 4: And so I would tell you everybody here be very careful,

1007
00:45:17,679 --> 00:45:21,119
Like I'm I'm fine letting it file an incidence, you know,

1008
00:45:21,800 --> 00:45:22,400
in GitHub.

1009
00:45:22,679 --> 00:45:24,760
Speaker 1: But we have to be careful now. I mean we've

1010
00:45:24,800 --> 00:45:28,239
had to be careful all our all our coding careers.

1011
00:45:28,360 --> 00:45:30,719
Speaker 2: That was my old advice to web deevs. It's like, listen,

1012
00:45:30,800 --> 00:45:33,480
you don't want access to the production service, then it

1013
00:45:33,559 --> 00:45:34,639
could be your fault.

1014
00:45:34,719 --> 00:45:35,079
Speaker 1: That's right.

1015
00:45:35,960 --> 00:45:39,400
Speaker 2: Just don't don't even have those rights. Make your life simple.

1016
00:45:40,039 --> 00:45:43,480
Speaker 4: I know stories inside of Microsoft where somebody thought they

1017
00:45:43,559 --> 00:45:45,159
were in the development branch and they were in the

1018
00:45:45,360 --> 00:45:47,840
production brands and they and they wiped out a bunch

1019
00:45:47,840 --> 00:45:50,360
of stuff and thankfully we were able to restore it.

1020
00:45:50,599 --> 00:45:54,360
Speaker 1: But but uh, you know, thanks to that sequel backup feature.

1021
00:45:55,599 --> 00:45:58,280
Speaker 4: But I would I would be you know, oh my gosh,

1022
00:45:58,360 --> 00:46:01,159
I mean even myself, I always where he I mean,

1023
00:46:01,199 --> 00:46:03,119
even sending an email, make sure you don't put the

1024
00:46:03,159 --> 00:46:04,079
wrong person on the two line.

1025
00:46:04,119 --> 00:46:05,800
Speaker 2: Yeah, it's always the person you're talking about.

1026
00:46:05,920 --> 00:46:07,800
Speaker 4: And sometimes sometimes what you do is you put the

1027
00:46:07,800 --> 00:46:09,239
wrong person on the two line because you need to

1028
00:46:09,239 --> 00:46:10,840
get their email address or something else that you can

1029
00:46:10,880 --> 00:46:13,239
pay somewhere, and then you forget to take them off.

1030
00:46:14,960 --> 00:46:16,679
I have done this in Microsoft. I have done this.

1031
00:46:16,760 --> 00:46:18,519
Speaker 2: I'm speaking from experience.

1032
00:46:18,639 --> 00:46:20,840
Speaker 1: One of the stories in the previous Security this week

1033
00:46:21,000 --> 00:46:23,639
was a feature that Apple a feature a bug that

1034
00:46:23,760 --> 00:46:26,719
Apple fix on the iPhone where the mute button on

1035
00:46:26,840 --> 00:46:31,400
FaceTime didn't work. Oh so, can you imagine you're talking

1036
00:46:31,480 --> 00:46:34,400
to your wife, you hit the mute button, It's say, hey,

1037
00:46:34,480 --> 00:46:37,000
your husband's coming up the driveway. Put your clothes on

1038
00:46:38,199 --> 00:46:39,320
and it didn't work.

1039
00:46:40,559 --> 00:46:42,639
Speaker 2: Brilliant, all right.

1040
00:46:43,039 --> 00:46:46,280
Speaker 4: That's why Mark Zuckerberg requires all cameras and METAA to

1041
00:46:46,320 --> 00:46:47,280
be covered with black tape.

1042
00:46:47,400 --> 00:46:47,519
Speaker 1: Right.

1043
00:46:47,920 --> 00:46:50,519
Speaker 4: He doesn't trust that whether there's the lights on or not.

1044
00:46:51,400 --> 00:46:53,559
He's like, I'm afraid somebody might have hacked the cameras,

1045
00:46:53,599 --> 00:46:54,719
so it'll come on without the light.

1046
00:46:54,880 --> 00:46:57,920
Speaker 2: Yeah, So be careful children, it's dangerous world out there.

1047
00:46:58,079 --> 00:46:59,920
Don't hand out the keys to the software.

1048
00:47:00,400 --> 00:47:01,440
Speaker 1: What else is on your mind?

1049
00:47:01,840 --> 00:47:02,000
Speaker 2: Here?

1050
00:47:02,039 --> 00:47:04,039
Speaker 1: At build twenty twenty five.

1051
00:47:04,280 --> 00:47:07,639
Speaker 4: We talked about, you know, migrations, We talked about coding agents.

1052
00:47:07,960 --> 00:47:09,800
Probably the last one which is something that thought you

1053
00:47:09,880 --> 00:47:11,840
did show in the keynote as well, which is which

1054
00:47:12,199 --> 00:47:17,000
we call that the Site Reliability Engineer agent. That's the SRE. Yeah,

1055
00:47:18,079 --> 00:47:21,800
And the idea here is just imagine this real world

1056
00:47:21,840 --> 00:47:28,880
scenario inside of Microsoft. Something starts wabbling and so you know,

1057
00:47:29,000 --> 00:47:31,760
some of the software detects that, Hey there's sites not responding,

1058
00:47:32,440 --> 00:47:34,880
and so what do we do today? We page Carl

1059
00:47:35,199 --> 00:47:36,440
and Carl wakes up.

1060
00:47:36,639 --> 00:47:39,360
Speaker 1: Hey, this is a real scenario. Actually, because our site,

1061
00:47:39,440 --> 00:47:42,239
at any hour, our site before I change it was

1062
00:47:42,280 --> 00:47:42,760
prone to this.

1063
00:47:43,679 --> 00:47:45,559
Speaker 4: So we paid Carl and then Carl has to go

1064
00:47:45,679 --> 00:47:48,360
bring up dashboards and go look, and by the time

1065
00:47:48,440 --> 00:47:50,159
Carl gets out of bed, it might just happen that

1066
00:47:50,280 --> 00:47:53,079
it could have been a transient issue, meaning that hey,

1067
00:47:53,159 --> 00:47:55,079
a database just bobbled for a second and got a

1068
00:47:55,119 --> 00:47:56,800
time out or something like that, and by the time

1069
00:47:56,840 --> 00:47:58,719
you wake up and look at the thing, there's not

1070
00:47:58,800 --> 00:47:59,960
really a real thing going on there.

1071
00:48:00,280 --> 00:48:00,480
Speaker 1: Yeah.

1072
00:48:01,079 --> 00:48:02,480
Speaker 4: Well, the SR agent can.

1073
00:48:02,400 --> 00:48:02,960
Speaker 2: Do that for you.

1074
00:48:03,440 --> 00:48:06,039
Speaker 4: So it can say, oh, I see that the site's

1075
00:48:06,039 --> 00:48:10,480
not responding, and my instructions say that I'm to wait

1076
00:48:10,559 --> 00:48:13,079
fifteen or twenty seconds before i do anything because it

1077
00:48:13,079 --> 00:48:15,039
could be a transiit issue. Oh it's back in fifteen

1078
00:48:15,079 --> 00:48:17,119
or twenty seconds. I'm going to log in, log it,

1079
00:48:17,360 --> 00:48:19,480
but I'm not going to page page Carl and get

1080
00:48:19,480 --> 00:48:21,480
Carl out. Or it could be could be the next

1081
00:48:21,559 --> 00:48:24,360
rule could be, Hey, if we see that the site's

1082
00:48:24,400 --> 00:48:27,880
been down for ninety seconds, the first step is, you know,

1083
00:48:27,960 --> 00:48:29,159
we live in the world of computers.

1084
00:48:29,159 --> 00:48:29,440
Speaker 2: What do you do?

1085
00:48:29,519 --> 00:48:31,400
Speaker 4: You reboot? Yeah, And it could be that the first

1086
00:48:31,440 --> 00:48:33,840
thing that the real SR agent would have done anyways

1087
00:48:33,960 --> 00:48:37,159
is just gone and rebooted the application. So the agent

1088
00:48:37,239 --> 00:48:39,599
can go look and go, yeah, it's still down, I'm

1089
00:48:39,639 --> 00:48:41,800
going to reboot it, and then I'm going to look

1090
00:48:42,079 --> 00:48:44,280
up it's back up and doing good again. Once again,

1091
00:48:44,360 --> 00:48:46,599
Carl was not page for either of those scenarios. And

1092
00:48:46,679 --> 00:48:49,480
so how do we take some of that grunt work?

1093
00:48:50,440 --> 00:48:52,679
Speaker 1: And I can already imagine how to tick that to

1094
00:48:52,760 --> 00:48:56,000
the next level. You give it through MCP access to

1095
00:48:56,039 --> 00:48:59,480
your GitHub repo, and then if it still thinks there's

1096
00:48:59,480 --> 00:49:02,079
a problem that might be code related, it can go

1097
00:49:02,280 --> 00:49:03,239
analyze the code.

1098
00:49:03,480 --> 00:49:05,199
Speaker 4: So we have that that we're going to show that

1099
00:49:05,280 --> 00:49:07,639
today some one of the sessions. Today my session, we're

1100
00:49:07,639 --> 00:49:09,360
going to show that exact scenario where.

1101
00:49:09,280 --> 00:49:11,199
Speaker 1: That was run against dot net rocks, the dot net

1102
00:49:11,320 --> 00:49:13,760
six version of it. It would have found a memory leak.

1103
00:49:13,920 --> 00:49:16,199
Speaker 4: Well, first off, what one of the things yes or

1104
00:49:16,239 --> 00:49:17,639
we would do is go why are you on dot

1105
00:49:17,719 --> 00:49:21,079
net six? It would actually okay, so it because.

1106
00:49:20,880 --> 00:49:23,400
Speaker 1: It worked, and it worked for a long time, but

1107
00:49:23,559 --> 00:49:24,599
then I found a memory leak.

1108
00:49:24,679 --> 00:49:27,119
Speaker 4: But our hope would be that, hey, the the agent

1109
00:49:27,239 --> 00:49:30,360
finds that you're on dot net six, it says, I'm

1110
00:49:30,360 --> 00:49:32,880
going to go file an issue and get hub to

1111
00:49:33,000 --> 00:49:37,360
move the side to eight. And then Carl goes, I

1112
00:49:37,480 --> 00:49:39,519
hate changes, go to nine, I'm just gonna go. No,

1113
00:49:39,599 --> 00:49:40,719
you go, you go, and you say, I'm going to

1114
00:49:40,760 --> 00:49:43,519
sign this issue to copilot, and then Copilot uses the

1115
00:49:43,559 --> 00:49:46,280
tech I was mentioning before for doing upgrade dot net.

1116
00:49:46,360 --> 00:49:48,960
Dot Net upgrades, but that's the whole. It writes the

1117
00:49:49,039 --> 00:49:50,719
PR for you and then you just approve the PR

1118
00:49:50,760 --> 00:49:51,320
and you're on dot net.

1119
00:49:51,360 --> 00:49:51,480
Speaker 2: Eight.

1120
00:49:51,559 --> 00:49:53,599
Speaker 1: This is the whole idea about agency is that you

1121
00:49:53,760 --> 00:49:56,719
now have to think like a manager, and instead of

1122
00:49:56,840 --> 00:49:59,840
hiring somebody on the staff, you create an agent to

1123
00:50:00,079 --> 00:50:03,480
do that. Right, I would create an agent, or I'd

1124
00:50:03,519 --> 00:50:06,559
find an agent that's an expert in CSS, because if

1125
00:50:06,599 --> 00:50:08,719
there's a CSS problem, I just want that age. Hey

1126
00:50:08,760 --> 00:50:10,800
go take a look at this right and assign them

1127
00:50:10,880 --> 00:50:11,360
the issue.

1128
00:50:11,639 --> 00:50:14,639
Speaker 4: And yeah, I will tell you I love CSS, and

1129
00:50:14,679 --> 00:50:15,400
I hate CSS.

1130
00:50:15,480 --> 00:50:18,360
Speaker 1: I hate it and I love it, and so I

1131
00:50:18,519 --> 00:50:19,880
love that the.

1132
00:50:21,800 --> 00:50:26,000
Speaker 4: AI is good at CSS, it's good at HTML. So

1133
00:50:26,079 --> 00:50:28,280
I will tell you, as you're playing with these Blazer apps,

1134
00:50:28,760 --> 00:50:30,679
you still write the Blazer code, but you might want

1135
00:50:30,719 --> 00:50:32,559
to have this tech help you write the CSS.

1136
00:50:32,719 --> 00:50:35,519
Speaker 1: And as I said, well, I'm already doing that. It's

1137
00:50:35,639 --> 00:50:37,840
just taking longer than I had an if I had

1138
00:50:37,840 --> 00:50:41,039
an agent that could help or or a network of

1139
00:50:41,079 --> 00:50:43,440
agents like this is what you have to imagine now, right,

1140
00:50:43,880 --> 00:50:46,639
you're less of a single programmer, and now you have

1141
00:50:46,760 --> 00:50:50,199
to think of, Okay, build your virtual staff around you

1142
00:50:50,800 --> 00:50:54,119
that you know, with all of the access to all

1143
00:50:54,199 --> 00:50:56,119
of the resources that you want to give each one

1144
00:50:56,159 --> 00:50:58,079
of them that needs that ye, and then they can

1145
00:50:58,159 --> 00:50:58,800
talk to each other.

1146
00:51:00,159 --> 00:51:02,679
Speaker 4: Built next build, we're going to have these staff agents.

1147
00:51:02,840 --> 00:51:06,199
Speaker 2: Sure, but I also feel like I looked at Security

1148
00:51:06,239 --> 00:51:08,760
co Pilot and thought that's too big of a grab.

1149
00:51:09,360 --> 00:51:11,599
This SR co pilot feels the same sort of thing,

1150
00:51:11,679 --> 00:51:13,400
in the sense that this is going to be an

1151
00:51:13,440 --> 00:51:14,679
evolving capability.

1152
00:51:16,119 --> 00:51:18,320
Speaker 4: It would be an involving capability. We'll add more stuff

1153
00:51:18,360 --> 00:51:18,559
to it.

1154
00:51:19,679 --> 00:51:21,239
Speaker 2: Some day. You're going to get an email it said

1155
00:51:21,480 --> 00:51:23,559
your site went down last night. I looked at your code.

1156
00:51:23,679 --> 00:51:25,519
It sucked. Your site is written now and up.

1157
00:51:26,920 --> 00:51:27,239
Speaker 1: I don't know.

1158
00:51:27,639 --> 00:51:31,360
Speaker 4: That's a little we're going a little too far there.

1159
00:51:31,440 --> 00:51:33,039
So like one of the things that SR.

1160
00:51:33,000 --> 00:51:35,760
Speaker 2: Still wanted to wake me up, s SR, wake up.

1161
00:51:35,880 --> 00:51:36,639
You've been replaced.

1162
00:51:37,760 --> 00:51:39,920
Speaker 4: SR today requires a human to tell it to ever

1163
00:51:40,000 --> 00:51:42,400
do anything to do, and it cannot be there's no

1164
00:51:42,480 --> 00:51:43,159
autonomous mode.

1165
00:51:43,199 --> 00:51:45,559
Speaker 2: I do appreciate bringing everything to the table. It's like,

1166
00:51:45,719 --> 00:51:48,559
go go collect the logs up, do all the obvious stuff,

1167
00:51:48,599 --> 00:51:51,480
all the stuff I do before I call Level one

1168
00:51:51,599 --> 00:51:53,639
tech support. Anyway, Yeah, I've already rebooted it.

1169
00:51:53,800 --> 00:51:55,920
Speaker 4: So one of our demos today was literally the SR

1170
00:51:56,079 --> 00:51:58,840
agent notices the site choosing too much memory, and then

1171
00:51:59,480 --> 00:52:02,639
we tell it, can you go get me the memory dumps? Yea, yeah,

1172
00:52:03,800 --> 00:52:05,360
that's all the grunt work I would have done before.

1173
00:52:05,440 --> 00:52:07,960
Now that's doing it. I'm still fixing it as a developer.

1174
00:52:08,039 --> 00:52:09,440
I'm still looking at the actual dumps.

1175
00:52:09,519 --> 00:52:11,719
Speaker 1: On your developer, what do you know about memory dumps?

1176
00:52:12,199 --> 00:52:15,320
Most of them don't. Yeah. The only one that I

1177
00:52:15,480 --> 00:52:18,119
know that can analyze the memory dump is test for

1178
00:52:18,199 --> 00:52:20,559
run Days. She's like the only person, the only developer

1179
00:52:20,559 --> 00:52:23,039
I know. We have some look at memory dump and say, oh,

1180
00:52:23,119 --> 00:52:23,719
that's what that is.

1181
00:52:23,920 --> 00:52:26,840
Speaker 4: We have crazy people at Microsoft that work on dot

1182
00:52:26,920 --> 00:52:29,559
net bugs that take months to figure out. You know,

1183
00:52:30,039 --> 00:52:33,360
imagine there's some weird issue that dot Net after six

1184
00:52:33,440 --> 00:52:36,639
months does something weird. We have const as one of

1185
00:52:36,639 --> 00:52:39,679
our engineers, and you know it's like I remember one point,

1186
00:52:41,000 --> 00:52:43,920
you know, we had crazy metrics and they're like all

1187
00:52:44,000 --> 00:52:46,480
of CONT's prs are open for like six months, and

1188
00:52:46,519 --> 00:52:48,280
I'm like, yeah, this guy works on stuff that takes

1189
00:52:48,280 --> 00:52:49,239
a long time to figure out.

1190
00:52:49,400 --> 00:52:49,599
Speaker 2: Yeah.

1191
00:52:49,920 --> 00:52:53,760
Speaker 4: Yeah, and you know those are people I could never

1192
00:52:53,840 --> 00:52:57,159
do what he does. I mean these skills to just

1193
00:52:57,239 --> 00:53:01,119
look at this stuff and see these weird you know,

1194
00:53:01,880 --> 00:53:03,840
memory issues that take months to actually.

1195
00:53:03,679 --> 00:53:06,320
Speaker 2: Yeah, one in one hundred million instances like those kinds

1196
00:53:06,320 --> 00:53:08,360
of things. Yeah, it's a long time to chase that down.

1197
00:53:08,960 --> 00:53:13,840
H dude. It's a crazy build, amazing set of announcements. Yes, uh,

1198
00:53:14,039 --> 00:53:15,840
the works only getting more interesting. Yeah.

1199
00:53:15,880 --> 00:53:19,119
Speaker 1: But also Scott, thank you for just like simplifying it

1200
00:53:19,199 --> 00:53:21,960
and bring it in it to us the developer audience,

1201
00:53:22,239 --> 00:53:24,559
and you know how it's going to impact our lives.

1202
00:53:24,639 --> 00:53:26,280
Speaker 4: I would tell people please try this stuff and give

1203
00:53:26,320 --> 00:53:29,679
us feedback. I think it's amazing. I use it every

1204
00:53:29,719 --> 00:53:32,280
day now, and uh, you know it's great.

1205
00:53:32,480 --> 00:53:34,960
Speaker 1: Thanks Scott, good to see it, Good to talk, and

1206
00:53:35,079 --> 00:53:38,280
we'll see you next time on dot net rocks. I

1207
00:53:38,360 --> 00:53:39,079
think bet it'll be.

1208
00:53:39,119 --> 00:53:40,000
Speaker 2: From the bed.

1209
00:54:00,559 --> 00:54:03,079
Speaker 1: Dot net Rocks is brought to you by Franklin's Net

1210
00:54:03,400 --> 00:54:07,320
and produced by Pop Studios, a full service audio, video

1211
00:54:07,400 --> 00:54:11,400
and post production facility located physically in New London, Connecticut,

1212
00:54:11,719 --> 00:54:15,920
and of course in the cloud online at pwop dot com.

1213
00:54:16,719 --> 00:54:18,800
Visit our website at d O T N E t

1214
00:54:19,119 --> 00:54:23,079
R O c k S dot com for RSS feeds, downloads,

1215
00:54:23,280 --> 00:54:26,920
mobile apps, comments, and access to the full archives going

1216
00:54:27,000 --> 00:54:30,400
back to show number one, recorded in September two thousand

1217
00:54:30,400 --> 00:54:33,039
and two. And make sure you check out our sponsors.

1218
00:54:33,199 --> 00:54:36,000
They keep us in business. Now go write some code,

1219
00:54:36,559 --> 00:54:37,320
See you next time.

1220
00:54:38,239 --> 00:54:40,079
Speaker 2: You got javans

1221
00:54:42,159 --> 00:54:42,199
Speaker 1: And

