1
00:00:01,080 --> 00:00:04,799
Speaker 1: How'd you like to listen to dot NetRocks with no ads? Easy?

2
00:00:05,320 --> 00:00:08,519
Become a patron for just five dollars a month you

3
00:00:08,599 --> 00:00:11,320
get access to a private RSS feed where all the

4
00:00:11,359 --> 00:00:14,599
shows have no ads. Twenty dollars a month will get

5
00:00:14,599 --> 00:00:17,679
you that and a special dot net Rocks patron mug.

6
00:00:18,160 --> 00:00:22,879
Sign up now at Patreon dot dot NetRocks dot com. Hi,

7
00:00:23,000 --> 00:00:24,600
this is Carl Franklin.

8
00:00:24,239 --> 00:00:25,480
Speaker 2: And this is Richard Campbell.

9
00:00:25,800 --> 00:00:30,000
Speaker 1: We've got two special shows coming up soon, episode nineteen

10
00:00:30,120 --> 00:00:32,079
ninety nine and two thousand.

11
00:00:32,359 --> 00:00:35,039
Speaker 2: For episode nineteen ninety nine, we're collecting people's y two

12
00:00:35,159 --> 00:00:37,520
k stories what did you do to help the Y

13
00:00:37,600 --> 00:00:39,719
two k event not actually happen?

14
00:00:40,200 --> 00:00:42,960
Speaker 1: And for episode two thousand, we're going to be sharing

15
00:00:43,000 --> 00:00:45,479
stories about how dot net shaped your career.

16
00:00:46,000 --> 00:00:48,679
Speaker 2: We have a special page at dot netroocks dot com

17
00:00:48,719 --> 00:00:52,159
slash voxpop where you can record messages for us that

18
00:00:52,200 --> 00:00:55,000
we can play on these special episodes. So tell us

19
00:00:55,039 --> 00:00:57,479
what you did for Y two k and what dot

20
00:00:57,479 --> 00:00:59,560
net means to you, and of course how long you've

21
00:00:59,560 --> 00:01:02,359
been listening to dot net rocks. So go do dot

22
00:01:02,359 --> 00:01:05,319
NetRocks dot com slash vox pop now and leave us

23
00:01:05,319 --> 00:01:07,799
a message before the thought of operates like whiskey left

24
00:01:07,799 --> 00:01:09,120
in a glass overnight.

25
00:01:09,159 --> 00:01:25,040
Speaker 1: Do it? Hey, welcome back to dot net Rocks. I'm

26
00:01:25,120 --> 00:01:26,480
Carl Franklin.

27
00:01:26,079 --> 00:01:27,040
Speaker 2: An Amateurd Campbell.

28
00:01:27,599 --> 00:01:32,519
Speaker 1: Daniel Roth is here. Holy crap, hooray who the asbnet guy,

29
00:01:33,200 --> 00:01:38,920
the Blazer guy. I We're gonna introduce Dan later but formally.

30
00:01:39,000 --> 00:01:41,799
But Daniel, we do this introduction and feel free to

31
00:01:41,879 --> 00:01:45,439
just jump in. It's okay. Our listeners have told us

32
00:01:45,480 --> 00:01:46,200
that they like that.

33
00:01:46,519 --> 00:01:48,120
Speaker 3: Give me a signal you want me to actually say

34
00:01:48,120 --> 00:01:48,560
something or.

35
00:01:48,799 --> 00:01:50,879
Speaker 1: No, no, no, no, you just jump in when you

36
00:01:50,920 --> 00:01:57,239
need to. This is episode nineteen ninety six, and as promised, here,

37
00:01:57,519 --> 00:02:00,359
let's talk about the things that happened in that year,

38
00:02:00,560 --> 00:02:01,560
nineteen ninety six.

39
00:02:01,719 --> 00:02:03,640
Speaker 2: All right, so any favorites.

40
00:02:03,760 --> 00:02:07,519
Speaker 1: Yeah, Well Bill Clinton defeated Bob Dole, the guy who

41
00:02:07,560 --> 00:02:09,360
liked to talk about himself in the third person.

42
00:02:09,560 --> 00:02:12,280
Speaker 2: Nice his re election, Yeah of course.

43
00:02:12,360 --> 00:02:17,840
Speaker 1: Yeah. So some really bad stuff happened in nineteen ninety six,

44
00:02:19,039 --> 00:02:22,680
the major tragedies and aviations and shooting and terrorism, but

45
00:02:22,719 --> 00:02:27,400
there were some scientific breakthroughs like Dollia's Sheep and Taliban

46
00:02:27,520 --> 00:02:35,280
rose up to power. Let's see in Afghanistan. Yeah, Afghanistan,

47
00:02:35,319 --> 00:02:41,360
the helicopter collision in Israel, Port Arthur massacre Tasmania thirty

48
00:02:41,360 --> 00:02:45,639
five people, and that triggered sweeping gun law reforms in

49
00:02:45,639 --> 00:02:48,599
Australia which have pretty much held held fast.

50
00:02:48,800 --> 00:02:51,240
Speaker 2: Yeah, they didn't until just recently. Then there was an

51
00:02:51,280 --> 00:02:52,919
incident at the Bondi Beach.

52
00:02:52,919 --> 00:02:54,759
Speaker 1: Right, But they went for a long long time without

53
00:02:54,759 --> 00:02:58,919
having ay having any incidents. John ben a Ramsay little girl,

54
00:02:59,199 --> 00:03:04,680
six year old pageant queen found murdered in Colorado. Dolly

55
00:03:04,719 --> 00:03:08,759
the sheep first mammal clone from an adult cell by

56
00:03:08,800 --> 00:03:15,439
scientists in Scotland, twa flight eight hundred crash Boeing seven

57
00:03:15,520 --> 00:03:18,000
forty seven exploded off Long Island. I remember that it

58
00:03:18,159 --> 00:03:18,960
was taken off.

59
00:03:19,039 --> 00:03:21,479
Speaker 2: Yeah, a lot of conspiracy around that one, but we

60
00:03:21,560 --> 00:03:24,400
eventually proved that it was a problem with the wiring

61
00:03:24,400 --> 00:03:26,360
in the center fuel tank what was empty and it

62
00:03:27,879 --> 00:03:29,840
exploded and blew the nose off the plane.

63
00:03:29,919 --> 00:03:30,319
Speaker 3: Yeah.

64
00:03:30,439 --> 00:03:34,960
Speaker 1: And the Centennial Olympic Park bombing pipe bomb exploded.

65
00:03:35,000 --> 00:03:37,400
Speaker 2: Because it was also the Summer Olympics in Atlanta.

66
00:03:37,479 --> 00:03:41,000
Speaker 1: Summer Olympics in Atlanta. And that guy they thought they

67
00:03:41,120 --> 00:03:42,680
had the right guy, I can't remember if he ever

68
00:03:42,680 --> 00:03:47,159
got arrested or whatever. But yeah, and speaking of Scotland,

69
00:03:47,159 --> 00:03:51,919
the Dunblane school massacre. Gunman killed sixteen children in a teacher.

70
00:03:51,919 --> 00:03:56,159
It just wasn't a pretty nasty year for that grim year.

71
00:03:56,280 --> 00:03:59,120
Speaker 2: I mean, I can point in a few more positive

72
00:03:59,120 --> 00:04:02,400
things going on. The Motorola Startack phone came out, the

73
00:04:02,439 --> 00:04:04,680
first really popular cell phone.

74
00:04:04,719 --> 00:04:08,479
Speaker 1: Wow, the cool phone, the star Attack Yeah, okay, that's cool.

75
00:04:08,560 --> 00:04:11,639
Speaker 2: Yeah. Also the pom pilot. This was the first, the

76
00:04:11,719 --> 00:04:14,719
first you know, productivity device, the pomp pilot. Right on

77
00:04:14,759 --> 00:04:18,519
the space side of things. Seven Shuttle flights this year,

78
00:04:19,439 --> 00:04:22,000
three two of which go to to mir because they're

79
00:04:22,000 --> 00:04:25,439
now bringing astronauts up to mer and they're doing your

80
00:04:25,439 --> 00:04:27,560
six month shifts and rotating out. The rest are mostly

81
00:04:27,600 --> 00:04:33,000
have experiments. Most notable in November Columbia not going to

82
00:04:33,040 --> 00:04:36,079
miror because Columbia couldn't get to Mirror being slightly heavier.

83
00:04:36,959 --> 00:04:40,079
It broke the record for the longest mission ever seventeen days,

84
00:04:40,120 --> 00:04:43,759
fifteen hours. It also had the astronaut's story Musgrave on it.

85
00:04:43,839 --> 00:04:45,920
He was one of the principal guys behind fixing the

86
00:04:45,959 --> 00:04:50,160
hubble and with the flight on Columbia, he was the

87
00:04:50,199 --> 00:04:53,160
only astronaut to fly all five shuttles. Wow. I had

88
00:04:53,160 --> 00:04:55,680
a chance to meet him once. He was just an amazing,

89
00:04:56,040 --> 00:04:59,399
amazing guy, really brilliant. He was doing a presentation for

90
00:04:59,439 --> 00:05:01,600
a conference that I was involved with. You know, he's

91
00:05:01,600 --> 00:05:03,319
the guy who fixed thehubble, right, So he goes into

92
00:05:03,360 --> 00:05:06,079
the presentation and before he start, everybody's waiting for me's

93
00:05:06,079 --> 00:05:08,199
about to start. He gets off the stage, walks up

94
00:05:08,240 --> 00:05:11,360
to the projector and starts twiddling. We was just sorry,

95
00:05:11,040 --> 00:05:13,399
I really care a lot about focus.

96
00:05:14,120 --> 00:05:14,680
Speaker 1: That's great.

97
00:05:14,839 --> 00:05:17,839
Speaker 2: Well, I laughed. I thought that was hilarious. I don't

98
00:05:17,879 --> 00:05:20,399
know that anybody else knewed it was about Yeah, that's

99
00:05:20,399 --> 00:05:21,160
staring mys gram.

100
00:05:21,240 --> 00:05:21,680
Speaker 1: That's great.

101
00:05:21,920 --> 00:05:26,800
Speaker 2: One other space thing. The last module mirror the Purorda module,

102
00:05:26,800 --> 00:05:29,920
which was an earth sensing module partially funded by the

103
00:05:30,000 --> 00:05:31,920
US that had been sitting you know, at this point

104
00:05:32,040 --> 00:05:35,959
the Soviet Union's collapse, the Russian Federation is very financially restricted.

105
00:05:35,959 --> 00:05:38,879
So they had built this module and wasn't quite done yet,

106
00:05:38,920 --> 00:05:41,279
and so this was very much an international thing. The

107
00:05:41,360 --> 00:05:43,360
US kicked in some money. There were experiments for a

108
00:05:43,360 --> 00:05:46,519
bunch of different nations, and so it was his research module. Yeah,

109
00:05:47,319 --> 00:05:54,000
and then commet hayakud Hayakatake, detected by a Japanese astronomical

110
00:05:54,079 --> 00:05:58,839
student in January, made a very close pass on Earth

111
00:05:58,839 --> 00:06:00,959
in March, and just a it was just a reminder

112
00:06:01,000 --> 00:06:03,680
back then that we don't have good eyes on what's

113
00:06:03,720 --> 00:06:06,000
out there far out, you know. And the big difference,

114
00:06:06,480 --> 00:06:09,079
big difference from between us and the dinosaurs is the

115
00:06:09,120 --> 00:06:12,879
dinosaurs didn't have a space program and so you know,

116
00:06:14,319 --> 00:06:17,240
if the comet had was headed for Earth, we only

117
00:06:17,240 --> 00:06:19,000
had two months notice, like, there was probably nothing we

118
00:06:19,000 --> 00:06:20,360
could have done about it. But as it was, it

119
00:06:20,439 --> 00:06:23,600
made a close flyby, was spectacular. It's a very near

120
00:06:23,639 --> 00:06:28,360
thing on the web. The population of the web, but

121
00:06:28,399 --> 00:06:31,199
that points about thirty six million users. This is nineteen

122
00:06:31,240 --> 00:06:33,079
ninety six, we're just in the beginning of it. It's

123
00:06:33,079 --> 00:06:35,519
also the year that was figured out that there was

124
00:06:35,600 --> 00:06:38,600
more email sent than physical mail, which doesn't seem like

125
00:06:38,680 --> 00:06:41,639
much of accomplishment today, but it's kind of a big

126
00:06:41,639 --> 00:06:43,879
deal at the time. This is the year that ICQ

127
00:06:44,199 --> 00:06:47,439
was released, right, sort of beginning of a whole messaging

128
00:06:47,480 --> 00:06:49,079
wave of things.

129
00:06:49,480 --> 00:06:55,000
Speaker 4: Yeah, USB, univers verssal Syria Bus, the first prototypes are

130
00:06:55,079 --> 00:07:00,399
out then, along with Microsoft makes direct X for the

131
00:07:00,480 --> 00:07:01,399
Win nine X stact.

132
00:07:01,680 --> 00:07:05,560
Speaker 2: They also released NT four and I E three.

133
00:07:05,920 --> 00:07:08,480
Speaker 1: Somebody told me once and I couldn't believe it that

134
00:07:08,600 --> 00:07:11,079
Windows XP didn't support USB.

135
00:07:11,279 --> 00:07:12,000
Speaker 2: It well, it was me.

136
00:07:12,160 --> 00:07:13,839
Speaker 1: It wasn't until Windows two thousand.

137
00:07:14,040 --> 00:07:15,879
Speaker 2: No, No, it was not until Service Back two.

138
00:07:16,120 --> 00:07:16,959
Speaker 1: Oh that's what it was.

139
00:07:17,160 --> 00:07:19,160
Speaker 2: Yeah, So the original release of XP did not have

140
00:07:19,199 --> 00:07:21,839
support for USP, but they had service Back two they

141
00:07:21,879 --> 00:07:23,199
added it.

142
00:07:23,279 --> 00:07:25,639
Speaker 1: Just hard to believe, I thought, Op, it was like

143
00:07:25,680 --> 00:07:28,519
the whole new generation.

144
00:07:28,319 --> 00:07:32,439
Speaker 2: Are memories of XP are posts SPA two. Yeah, we

145
00:07:32,480 --> 00:07:34,360
made fun of XP when it first shipped. It was

146
00:07:34,800 --> 00:07:37,040
nt two thousand with the Fisher Price interface. Right, it

147
00:07:37,079 --> 00:07:39,519
was all per three and colorful and cute, you know,

148
00:07:39,560 --> 00:07:41,079
it wasn't that shiny.

149
00:07:40,759 --> 00:07:42,800
Speaker 1: And it had profiles. I think that was the big

150
00:07:42,839 --> 00:07:46,160
deal too, Like you had a different profile to swap them.

151
00:07:46,240 --> 00:07:49,800
Speaker 2: Yeah. Amazon releases Alexa, the first one of the first

152
00:07:49,920 --> 00:07:51,160
voice modules.

153
00:07:50,839 --> 00:07:53,879
Speaker 1: In nineteen ninety six United States. Are you kidding?

154
00:07:54,120 --> 00:07:56,839
Speaker 2: Yeah, it isn't good, but they come up with it, huh.

155
00:07:57,480 --> 00:08:00,319
Over at Sun they released the Javit Devil look at

156
00:08:00,399 --> 00:08:05,759
one point. Oh and then in gaming, three fairly famous

157
00:08:05,800 --> 00:08:09,879
popular games Duke Nukem three D it's time to kick

158
00:08:09,920 --> 00:08:11,879
ass and chew bubble gum. But I'm all a lot

159
00:08:11,879 --> 00:08:19,839
of gum and from Blizzard Diablo, which was a overhead

160
00:08:19,920 --> 00:08:24,600
view proportional sort of dingon Dragon's Game, and Loercroft tomb Raider.

161
00:08:25,360 --> 00:08:28,279
Speaker 1: Big deal that one, Yep, that one, And that's all

162
00:08:28,279 --> 00:08:29,720
I got for you, friend. All Right, I'm going to

163
00:08:29,800 --> 00:08:31,279
go back to culture.

164
00:08:31,399 --> 00:08:31,600
Speaker 2: Here.

165
00:08:31,800 --> 00:08:34,559
Speaker 1: The top ten albums, Top ten selling albums. Number ten

166
00:08:34,639 --> 00:08:38,440
Older by George Michael, the singles I don't recognize any

167
00:08:38,519 --> 00:08:41,200
of these, but Jesus to a Child, Fast Love, Spinning

168
00:08:41,240 --> 00:08:43,799
the Wheel and Older. I guess I wasn't listening to

169
00:08:43,840 --> 00:08:46,080
George Michael back then. I don't know a Number nine

170
00:08:46,120 --> 00:08:50,919
Backstreet Boys International debut, Quit Playing Games, Get Down and

171
00:08:51,000 --> 00:08:55,879
Anywhere for You Load by Metallica, a number eight, twelve

172
00:08:55,960 --> 00:08:59,000
million copies. Singles Until It Sleeps, Hero of the Day,

173
00:08:59,159 --> 00:09:05,399
Mama said in king Nothing Tragic, Kingdom by no doubt, awesome,

174
00:09:05,639 --> 00:09:09,120
awesome stuff. Don't Speak, just a Girl, Spiderwebs Sunday Morning,

175
00:09:10,279 --> 00:09:13,480
Lance Morrisett Jagged Little Pill. This was released in ninety five,

176
00:09:13,600 --> 00:09:17,080
but it had massive nineteen ninety six sales. Yeah, thirty

177
00:09:17,279 --> 00:09:22,600
million plus lifetime You ought to Know, Ironic, Hand in

178
00:09:22,600 --> 00:09:24,759
My Pocket, You Learn huge album.

179
00:09:24,840 --> 00:09:26,919
Speaker 2: Yeah, it's just one of those ones where every song

180
00:09:27,039 --> 00:09:28,440
is good. It's a crazy album.

181
00:09:28,519 --> 00:09:28,759
Speaker 3: Yeah.

182
00:09:28,840 --> 00:09:33,039
Speaker 1: Yeah. The Fuji's album is the score. That's where killing

183
00:09:33,039 --> 00:09:37,600
Me Softly Lauren Hill right ready or not? Fuji la

184
00:09:37,720 --> 00:09:43,279
I liked that stuff. Tony Braxton's secrets You're Making Me

185
00:09:43,399 --> 00:09:47,720
High and break my Heart. I Don't want to Matchbox

186
00:09:47,720 --> 00:09:50,639
twenty came out with Yourself or Someone Like You and

187
00:09:50,799 --> 00:09:55,159
their singles were Push, three Am, Real World and back

188
00:09:55,240 --> 00:09:59,039
to Good. Spice Girls came out with their album Spice

189
00:09:59,159 --> 00:10:01,879
singles want to Be, say You'll be there, to become

190
00:10:01,919 --> 00:10:04,960
one and who do you Think You Are? And then

191
00:10:05,000 --> 00:10:08,200
the number one album Of course this was released earlier,

192
00:10:08,240 --> 00:10:11,399
but Celine Dion falling Into You with over thirty two

193
00:10:11,559 --> 00:10:14,600
million copies. As singles are because You Loved Me, It's

194
00:10:14,639 --> 00:10:17,240
all coming back to me now all by myself and

195
00:10:17,360 --> 00:10:20,840
call the me in all right and really quick. The

196
00:10:20,919 --> 00:10:24,600
top ten movies of nineteen ninety six number ten, Jerry Maguire,

197
00:10:26,200 --> 00:10:30,519
number nine, Breaking the Waves, number eight, The People Versus

198
00:10:30,600 --> 00:10:36,200
Larry Flint number seven, Shine, number six, Big Night. I

199
00:10:36,279 --> 00:10:39,200
don't remember that one, but it looks like a period piece.

200
00:10:39,240 --> 00:10:43,399
That looks pretty good. Number five Train Spotting, Great Movie,

201
00:10:44,240 --> 00:10:48,840
Number four, Secrets and Lies number three, The English Patient

202
00:10:49,120 --> 00:10:56,480
number two, lone Star, number one Fargo, Fargo Awesome. Oh yeah,

203
00:10:56,720 --> 00:10:59,480
don't you know. I think that's where people were really

204
00:10:59,480 --> 00:11:03,519
introduced to that, you know, Minnesota, that accent, Yeah, south

205
00:11:03,600 --> 00:11:06,279
North Dakota. Almost Canadian, isn't it?

206
00:11:06,399 --> 00:11:10,679
Speaker 2: Well? Yeah, in that part of Canada. Yes, yeah, it's

207
00:11:10,720 --> 00:11:11,360
all all right.

208
00:11:11,399 --> 00:11:14,159
Speaker 1: Well that's what I got, So I guess we should

209
00:11:14,200 --> 00:11:15,679
get onto better no framework.

210
00:11:15,360 --> 00:11:24,559
Speaker 2: Right, awesome? Apart man, what do you got?

211
00:11:24,879 --> 00:11:28,080
Speaker 1: Our old friend Simon Crop, Simon, what have you been

212
00:11:28,159 --> 00:11:31,399
up to? He's got this tool called Delta, which is

213
00:11:31,440 --> 00:11:35,200
an approach to implementing a three oh four not modified

214
00:11:35,840 --> 00:11:39,879
return leveraging dB change tracking. So the approach uses a

215
00:11:39,919 --> 00:11:42,879
last updated timestamp from the database to generate an E

216
00:11:43,039 --> 00:11:46,879
tag header right, and all dynamic requests then have that

217
00:11:47,000 --> 00:11:50,559
E tag checked and or applied. The approach works well

218
00:11:50,600 --> 00:11:54,679
when the frequency of updates is relatively low. In this scenario,

219
00:11:54,840 --> 00:11:57,399
the majority of requests will leverage, the result in a

220
00:11:57,480 --> 00:11:59,919
three oh four not modified being returned in the Brew

221
00:12:00,000 --> 00:12:04,399
as are loading the content in it's cash nice and effectively,

222
00:12:04,440 --> 00:12:07,360
consumers will always receive the most current data while the

223
00:12:07,440 --> 00:12:09,600
load on the servers reduced.

224
00:12:09,080 --> 00:12:10,879
Speaker 2: He just it's clever.

225
00:12:11,039 --> 00:12:13,159
Speaker 1: You know, this stuff just pours out of his brain.

226
00:12:13,519 --> 00:12:16,360
Speaker 2: Simon, Well, it's okay, clearly he's dealing with the problem.

227
00:12:16,360 --> 00:12:18,559
It's like, how do I get brown performance there? Yeah,

228
00:12:18,600 --> 00:12:21,480
it's like we'll stop hitting the database that unnecessarily when

229
00:12:21,480 --> 00:12:22,200
nothing's changed.

230
00:12:22,360 --> 00:12:25,559
Speaker 1: Yeah, So that's what I got for him and for

231
00:12:26,159 --> 00:12:28,320
better no framework. Who's talking to us today?

232
00:12:28,360 --> 00:12:30,480
Speaker 2: Richard grabbed a comment off of Show nineteen oh three,

233
00:12:30,559 --> 00:12:32,360
which back in June twenty twenty four with our friend

234
00:12:32,440 --> 00:12:38,000
Beth Massey talking about Maui and Blazer fun conversation. You know, certainly,

235
00:12:38,200 --> 00:12:41,039
you know the many UX choices. In fact, do we

236
00:12:41,039 --> 00:12:43,360
often get comments along those lines of just how many

237
00:12:44,960 --> 00:12:48,679
user interface frameworks Microsoft makes much less the rest of

238
00:12:48,679 --> 00:12:49,360
the ecosystem.

239
00:12:49,480 --> 00:12:52,120
Speaker 1: And Moyd had had hot We did that at Build

240
00:12:52,320 --> 00:12:55,360
that show, right, I don't remember. Yeah, I think we

241
00:12:55,399 --> 00:12:57,120
were alive. I mean we were in a little huggy

242
00:12:57,120 --> 00:12:57,720
a couby it.

243
00:12:57,759 --> 00:13:00,600
Speaker 2: Builder in the booth. Yeah, yeah, it's possible about the

244
00:13:00,639 --> 00:13:04,320
right time. So this comment comes from mooid Hatat, who

245
00:13:04,399 --> 00:13:08,000
said I've been using neo vim with dot net via

246
00:13:08,120 --> 00:13:10,200
PowerShell on Windows for over a year now. Although it

247
00:13:10,200 --> 00:13:12,320
as a step learning curve, once you've developed the messle memory,

248
00:13:12,320 --> 00:13:16,960
you can seriously enhance your productivity, so another approach to it.

249
00:13:17,120 --> 00:13:21,080
Neo Vim's been around a long time. Additionally, I've started

250
00:13:21,159 --> 00:13:24,279
using terminal more frequently. This is what jumped out to me.

251
00:13:24,440 --> 00:13:27,799
You know, before we were really you know, dealing with

252
00:13:27,840 --> 00:13:31,840
agents and stuff, already folks were starting to go down

253
00:13:31,840 --> 00:13:35,399
this path, which has introduced me to many terminal based

254
00:13:35,399 --> 00:13:39,360
tools I wasn't familiar with before, such as zoxide, PS

255
00:13:39,480 --> 00:13:44,639
read line, I know that one well for working PowerShell, JQ, lazy, get, Yazzy,

256
00:13:44,840 --> 00:13:47,720
and bat. These tools have greatly improved my workflow, not

257
00:13:47,759 --> 00:13:49,840
even more productive. But most of these tools are open

258
00:13:49,840 --> 00:13:52,120
source and cross platform, providing me with opportunities to contribute

259
00:13:52,120 --> 00:13:54,480
to open source projects. Since their cross platform, I'm not

260
00:13:54,519 --> 00:13:56,000
tied to any operating systems anyway.

261
00:13:56,000 --> 00:13:58,120
Speaker 1: I think we can blame the Linux people for getting

262
00:13:58,200 --> 00:14:00,320
us all into command line interface.

263
00:14:00,480 --> 00:14:03,080
Speaker 2: Right well, and I say blame there's certain you know,

264
00:14:03,200 --> 00:14:05,679
you know, with love, Yeah, well we say that with

265
00:14:05,720 --> 00:14:09,399
love exactly. But also we came to appreciate the fact

266
00:14:09,399 --> 00:14:13,039
that infrastructure's code automating deployment, like all these things are

267
00:14:13,039 --> 00:14:15,919
better done in command lines. And now you know the

268
00:14:15,919 --> 00:14:18,559
conversation we just had with Kathleen about going CLI first.

269
00:14:18,919 --> 00:14:21,440
Now that you're working with these variosations and things again

270
00:14:21,919 --> 00:14:24,399
command lines and so I'm seeing a lot of software

271
00:14:24,440 --> 00:14:27,200
built now where you just working from the command line

272
00:14:27,200 --> 00:14:29,159
with it calling it out and it's rendering on that

273
00:14:29,360 --> 00:14:31,799
you know, eighty twenty five kind of formats and so forth.

274
00:14:31,840 --> 00:14:34,639
So when I saw my AIDS comment, I'm just like,

275
00:14:34,720 --> 00:14:37,279
you know, you may have been prescient, my friends, like

276
00:14:37,440 --> 00:14:39,559
you were doing stuff before the rest of we're going, Yeah,

277
00:14:39,559 --> 00:14:40,480
that's kind of cool.

278
00:14:40,399 --> 00:14:42,960
Speaker 1: When you get it down, like it's way faster than

279
00:14:42,960 --> 00:14:44,279
going through guy's and things.

280
00:14:44,440 --> 00:14:48,559
Speaker 2: I mean, I totally agree, yeah yeah, And now you know,

281
00:14:48,600 --> 00:14:51,480
the old days of arcane slash commands and so forth,

282
00:14:51,480 --> 00:14:53,600
it's just not that big a deal, right, Like we've

283
00:14:53,639 --> 00:14:55,000
sort of gotten better with all of that. We have

284
00:14:55,039 --> 00:14:56,600
better interfaces, better way to manage it.

285
00:14:56,639 --> 00:14:58,840
Speaker 1: So now you get your lms to write your command

286
00:14:58,840 --> 00:15:00,080
line tools, right.

287
00:15:01,080 --> 00:15:02,559
Speaker 2: And that's the other part of it, as long as

288
00:15:02,600 --> 00:15:07,240
it's discovering plus PowerShell yeah, So Waite, thank you for

289
00:15:07,240 --> 00:15:08,600
your comment and a copy of music. Co buy is

290
00:15:08,639 --> 00:15:09,679
on its way to you. And if you'd like a

291
00:15:09,679 --> 00:15:11,080
copy of music, go buy right. A comment on the

292
00:15:11,120 --> 00:15:13,000
website of dot net rock so commoner on the facebooks

293
00:15:13,000 --> 00:15:14,360
and a coupleish every show there and if you comment

294
00:15:14,399 --> 00:15:16,000
there and ay real on the show, we'll send you

295
00:15:16,039 --> 00:15:16,519
copy of music.

296
00:15:16,600 --> 00:15:19,759
Speaker 1: Go by Music to Code by twenty two tracks of

297
00:15:20,919 --> 00:15:24,960
focusy Goodness, twenty five minute long musical tracks. See you

298
00:15:25,080 --> 00:15:28,360
stay work focus Yeah it is now that will help

299
00:15:28,399 --> 00:15:30,639
you stay stay in a state of flow.

300
00:15:32,799 --> 00:15:34,080
Speaker 2: Go to music to Code today.

301
00:15:34,399 --> 00:15:39,559
Speaker 1: Yeah, I'm not very focusy obviously. Go to music toocoby

302
00:15:39,600 --> 00:15:43,200
dot net and you can get the collection in MP

303
00:15:43,279 --> 00:15:47,559
three wave or flack formats. Oh my god, we're finally

304
00:15:47,600 --> 00:15:51,480
around it. Dan Dan dan Roth. He is a principal

305
00:15:51,519 --> 00:15:54,840
product manager on the ASPNAT team at Microsoft, specifically working

306
00:15:54,879 --> 00:15:58,200
on dot net web development with Blazer. It's a pleasure

307
00:15:58,200 --> 00:15:59,799
to have you back as always.

308
00:16:00,159 --> 00:16:03,120
Speaker 3: Hello, it's great to be back at Carl herryt welcome friend.

309
00:16:03,399 --> 00:16:07,159
Speaker 1: Yeah, no, good stuff. We want to know, I mean

310
00:16:07,200 --> 00:16:10,519
we if you were paying attention around dot net comf

311
00:16:10,519 --> 00:16:13,360
you understand what happened in dot net ten. But maybe

312
00:16:13,360 --> 00:16:15,000
we should just before because I want to get to

313
00:16:15,080 --> 00:16:17,799
the good stuff coming in dot net eleven. But maybe

314
00:16:17,799 --> 00:16:20,759
you should sort of recap what dot net ten gave

315
00:16:20,840 --> 00:16:23,879
us for web development in general and Blazer in particular,

316
00:16:24,240 --> 00:16:25,240
just maybe, you know, I.

317
00:16:25,240 --> 00:16:27,639
Speaker 3: Mean, we were just shift dot net ten. It's only

318
00:16:27,759 --> 00:16:30,279
like well like four months old, like it's still new.

319
00:16:30,320 --> 00:16:32,960
It's still still pretty hot. I think it's really hot.

320
00:16:33,000 --> 00:16:34,879
It's like that warm loaf of bread, and you know,

321
00:16:34,960 --> 00:16:38,279
it's still filling the room with all those delicious aromas.

322
00:16:38,879 --> 00:16:42,879
Speaker 2: And but no, I point out that, uh dot net eleven,

323
00:16:43,320 --> 00:16:46,840
Uh uh release two is out too, Like it's not

324
00:16:46,879 --> 00:16:47,759
like you guys are stopping.

325
00:16:48,279 --> 00:16:51,720
Speaker 3: Nope, never stopping. Every year, every year there's a new release. Yeah,

326
00:16:51,720 --> 00:16:54,120
we just shipped in eleven preview two earlier this month,

327
00:16:54,159 --> 00:16:56,960
and there will be another preview coming up here pretty quick,

328
00:16:57,000 --> 00:16:59,080
and uh the next month for preview three.

329
00:16:59,159 --> 00:17:01,519
Speaker 1: So in part that already, Daniel and I did a

330
00:17:01,559 --> 00:17:05,920
Blazer Train episode recently about why you should upgrade your

331
00:17:05,960 --> 00:17:09,960
Blazer projects to dot net ten. So if you're interested

332
00:17:10,000 --> 00:17:11,839
in that, I think we should put a link in

333
00:17:11,920 --> 00:17:12,960
the show notes to that.

334
00:17:13,039 --> 00:17:13,720
Speaker 2: We will do that.

335
00:17:13,880 --> 00:17:16,559
Speaker 3: Lots of good stuff and done it. I mean obviously

336
00:17:16,559 --> 00:17:18,480
the latest long term support release.

337
00:17:18,519 --> 00:17:19,119
Speaker 2: So you've got.

338
00:17:19,000 --> 00:17:23,160
Speaker 3: The new another three years of support with dot net ten,

339
00:17:23,200 --> 00:17:25,960
and it's just loaded with good features. I mean in

340
00:17:26,039 --> 00:17:30,359
the new sea Sharp features like the new extension members

341
00:17:30,400 --> 00:17:34,640
and extension properties. File based apps, those are super fun.

342
00:17:34,279 --> 00:17:37,480
You've tried those with like your AI agent, like getting

343
00:17:37,519 --> 00:17:39,319
them to generate just little c sharp kind of like

344
00:17:39,359 --> 00:17:41,519
the little c sharp scripts. Almost right, it's a single

345
00:17:41,559 --> 00:17:43,680
file that you can just dot it run and I

346
00:17:43,759 --> 00:17:46,240
think the way you go, no, no project file needed.

347
00:17:47,440 --> 00:17:52,559
Lots of great run time improvements perf perf oh Man.

348
00:17:52,000 --> 00:17:58,279
I love watching Tobes dot net com recording where he's

349
00:17:58,319 --> 00:18:00,920
just like showing all these amazing marks of how much

350
00:18:01,200 --> 00:18:05,519
we've reduced allocations and increased performance, right, and that goes

351
00:18:05,519 --> 00:18:06,920
all all way up and down the stack, like he's

352
00:18:06,920 --> 00:18:10,000
showing like low level run time things. And for library improvements.

353
00:18:10,039 --> 00:18:12,160
And then at the ACE core layer, we did a

354
00:18:12,200 --> 00:18:15,240
lot of work on the memory pooling so that the

355
00:18:15,279 --> 00:18:18,160
memory pool can be can can shrink in size, can

356
00:18:18,200 --> 00:18:21,079
be released for like real high scale UH, the deployment

357
00:18:21,200 --> 00:18:25,119
scenarios better adjacent de serialization for your for your APIs.

358
00:18:26,319 --> 00:18:28,119
You have lots of perof across the stack. That's kind

359
00:18:28,119 --> 00:18:30,640
of just part of our culture. Like every release has

360
00:18:30,680 --> 00:18:33,640
to be faster upgrade you get speed.

361
00:18:33,440 --> 00:18:37,079
Speaker 1: And you watch Stephen tub his his presentation if you

362
00:18:37,119 --> 00:18:39,119
want to know the nity gritty, but you could sum

363
00:18:39,160 --> 00:18:41,440
it up just by saying it's faster and he uses

364
00:18:41,480 --> 00:18:43,359
less memory, much less memory.

365
00:18:43,559 --> 00:18:46,519
Speaker 3: Just that's same code and it's faster. That's that's what

366
00:18:46,640 --> 00:18:47,079
you get.

367
00:18:47,519 --> 00:18:50,200
Speaker 2: So that just by migrating you get a performance proof.

368
00:18:50,160 --> 00:18:55,599
Speaker 3: Yeah, absolutely definitely, and man reduced memory UH footprint as

369
00:18:55,599 --> 00:18:57,640
well as was a big win I think in the

370
00:18:57,759 --> 00:19:00,440
UH in the dot net with the on a ten

371
00:19:00,480 --> 00:19:07,039
release with the improved garbage collection system and then an

372
00:19:07,079 --> 00:19:11,440
acemic core like we did like a whole bunch of things,

373
00:19:11,480 --> 00:19:15,000
Like we did lots of observability improvements, so lots of

374
00:19:15,039 --> 00:19:18,160
new metrics and tracing Like Blazer, we added a whole

375
00:19:18,160 --> 00:19:22,359
bunch of Blazer specific metrics and Blazer server traces. Like

376
00:19:22,400 --> 00:19:24,839
Blazer servers has a sort of unique request pattern, right,

377
00:19:24,880 --> 00:19:27,640
We've got these long run, long running web socket request

378
00:19:28,119 --> 00:19:29,640
which means that when you're trying to like look at

379
00:19:29,640 --> 00:19:32,440
your page navigations and things like that that would normally

380
00:19:32,480 --> 00:19:35,880
appear a separate requests in a traditional web app, you know,

381
00:19:36,000 --> 00:19:38,920
it's hard, they're harder to see. In Blazer Server and

382
00:19:38,960 --> 00:19:41,319
dot on a ten, we added specific activities so to

383
00:19:41,400 --> 00:19:44,200
model all that, so you get a really nice activity

384
00:19:44,559 --> 00:19:46,960
trace through through what's happening in your Blazer server apps.

385
00:19:47,680 --> 00:19:49,880
We also added like a bunch of Blazer web assembly

386
00:19:49,920 --> 00:19:54,119
diagnostic tools so that you can like get CPU profile

387
00:19:54,160 --> 00:19:57,480
performance profiles from your Blazer websmity apps take memory dumps

388
00:19:57,799 --> 00:20:01,519
to track down those hard to diagno those issues, so

389
00:20:01,599 --> 00:20:02,240
that all got in.

390
00:20:03,279 --> 00:20:05,519
Speaker 2: Yeah, yeah, excuses.

391
00:20:05,799 --> 00:20:10,039
Speaker 3: Just upgrade and if you haven't tried already, the get

392
00:20:10,119 --> 00:20:13,920
up Copilot app monetization tooling for doing those those upgrades,

393
00:20:13,920 --> 00:20:16,720
like going from version to version, like AI will just

394
00:20:17,079 --> 00:20:19,279
handle it for you. I mean, it's it's generally not

395
00:20:19,319 --> 00:20:22,480
a very cumbersome process. In general, you should mostly just

396
00:20:22,519 --> 00:20:24,720
update the DFM and update your packages and you're done.

397
00:20:24,880 --> 00:20:26,440
But if you have a really big solution you just

398
00:20:26,440 --> 00:20:29,160
want AI to to deal with it, then get up

399
00:20:29,160 --> 00:20:33,799
Copilot app Monetization is built specifically for dealing with that.

400
00:20:34,079 --> 00:20:38,400
Speaker 2: Yeah, very good, very good there, and there's no upgrade issues, right,

401
00:20:38,480 --> 00:20:40,960
Like if you're living on eight and you switch to

402
00:20:41,079 --> 00:20:43,920
nine or come up to ten. I don't expect any

403
00:20:44,000 --> 00:20:44,880
code to break well the.

404
00:20:44,920 --> 00:20:48,279
Speaker 1: Usual the problems are third party tools that don't support

405
00:20:48,359 --> 00:20:53,000
dot Net ten yet, or you know, have different syntax

406
00:20:53,079 --> 00:20:56,759
going from one to another, or you know dependencies. That's

407
00:20:56,839 --> 00:20:59,559
usually the problem, and the c sharp in the code

408
00:20:59,640 --> 00:21:01,079
is never the issue for me.

409
00:21:01,240 --> 00:21:04,599
Speaker 3: We keep a very high compat bar, like we take

410
00:21:04,640 --> 00:21:07,640
compat very seriously. I often think of combat as like

411
00:21:08,079 --> 00:21:10,200
it's our most important feature because you're taking a bed

412
00:21:10,240 --> 00:21:12,119
on a platform, and why do you do that? You

413
00:21:12,200 --> 00:21:14,759
do that so that you can just accrue value with

414
00:21:14,880 --> 00:21:17,039
every new dot net release, Like I just upgrade and

415
00:21:17,079 --> 00:21:18,480
I don't even have to change code, and I get

416
00:21:18,480 --> 00:21:20,640
that performance, I get the improved security, I get the

417
00:21:20,720 --> 00:21:23,519
new features, I get new c sharp without changing a

418
00:21:23,599 --> 00:21:25,680
line of code. And I can't just upgrade.

419
00:21:25,680 --> 00:21:28,319
Speaker 2: I don't get that, yeah, without anything breaking.

420
00:21:28,200 --> 00:21:30,319
Speaker 3: So breaking changementally well, because the.

421
00:21:30,359 --> 00:21:32,799
Speaker 2: Chances I have cycles to go back and fix existing

422
00:21:32,839 --> 00:21:35,680
code or low right, Like that's that's hard, I'll just

423
00:21:35,720 --> 00:21:38,240
stay on the older version absolutely.

424
00:21:38,400 --> 00:21:40,880
Speaker 3: I mean, I'm sure there are some breaking changes that

425
00:21:40,880 --> 00:21:43,839
happen with every release. We try very hard to non

426
00:21:43,839 --> 00:21:45,839
introduce some of occasionally there are some cases where we

427
00:21:45,880 --> 00:21:47,519
feel like for the good of the platform, we really

428
00:21:47,519 --> 00:21:49,440
do need to make a change here, And you can

429
00:21:49,480 --> 00:21:52,160
of course find all those documented in the dot net

430
00:21:52,160 --> 00:21:55,440
breaking change stocks. The app monetization tooling is aware of

431
00:21:55,480 --> 00:22:00,240
those breaking change documentation, so we can actually help you

432
00:22:00,480 --> 00:22:03,480
adjust code, and if you are actually touching those those

433
00:22:03,519 --> 00:22:06,000
places that got changed, it can help you with the

434
00:22:06,240 --> 00:22:08,480
with the addressing those breaking changes as well.

435
00:22:08,599 --> 00:22:11,079
Speaker 2: Right, I mean, these days, aren't you just pointing your

436
00:22:11,119 --> 00:22:13,440
agent at it and saying, should it what's the consequences

437
00:22:13,480 --> 00:22:14,319
of upgrading to ten?

438
00:22:14,680 --> 00:22:18,160
Speaker 3: I should have says none, just gone, it's fine.

439
00:22:17,920 --> 00:22:19,039
Speaker 1: What is this consequence?

440
00:22:19,079 --> 00:22:22,039
Speaker 2: Thing? You speak? Yeah, then it explodes and you're like,

441
00:22:22,119 --> 00:22:23,079
why did this explode?

442
00:22:23,119 --> 00:22:23,279
Speaker 1: Oh?

443
00:22:23,319 --> 00:22:27,319
Speaker 2: You're right, You're right, You're absolutely right.

444
00:22:27,759 --> 00:22:30,519
Speaker 3: No, no, no, no, not at all. Maybe on some other

445
00:22:31,160 --> 00:22:34,720
unnamed developer ecosystems that happens when you're upgrading, but not that.

446
00:22:35,640 --> 00:22:37,480
Speaker 1: I think. I think I asked you that question on

447
00:22:37,519 --> 00:22:40,240
Blazer Train. I said, so, when would you ever not

448
00:22:40,400 --> 00:22:42,880
want to upgrade? And you said, what are you talking about?

449
00:22:42,960 --> 00:22:44,319
You always want to upgrade?

450
00:22:46,079 --> 00:22:50,200
Speaker 2: Yeah, he might be a little biased our for our

451
00:22:50,240 --> 00:22:50,920
friend Dan.

452
00:22:50,920 --> 00:22:52,640
Speaker 3: You know, he's maybe a little bit.

453
00:22:52,759 --> 00:22:53,200
Speaker 2: A little bit.

454
00:22:53,319 --> 00:22:55,519
Speaker 1: Yeah, well, like I said, you know, if you're using

455
00:22:55,559 --> 00:22:59,240
a third party tool that doesn't work or for some

456
00:22:59,279 --> 00:23:03,559
reason or the syntax changes, that happens a lot, you know.

457
00:23:04,160 --> 00:23:07,519
But you know, you get all the latest updates for

458
00:23:07,680 --> 00:23:11,440
all your packages and hopefully they work. But usually it's

459
00:23:11,480 --> 00:23:14,480
the ones that don't load or have different syntax that's

460
00:23:14,519 --> 00:23:15,000
the problem.

461
00:23:15,599 --> 00:23:18,039
Speaker 3: Yes, or maybe you have an environment constraint. We're getting

462
00:23:18,079 --> 00:23:21,440
the new runtime into your environments is requires going to

463
00:23:21,480 --> 00:23:23,920
some I person and getting things signed in triplicate and

464
00:23:23,920 --> 00:23:27,119
stuff like that. We understand that people have their processes

465
00:23:27,160 --> 00:23:29,880
that they need to follow, and that's perfectly understandable. But

466
00:23:29,880 --> 00:23:32,680
if you can upgrade, I think you will be very happy.

467
00:23:32,799 --> 00:23:35,319
Speaker 2: Yeah, like you said, at the minimum performance benefits but

468
00:23:35,359 --> 00:23:38,680
also great new features. Yeah, it's just annual cadence tough

469
00:23:38,720 --> 00:23:41,240
on the team, Like, how do you know, I know

470
00:23:41,279 --> 00:23:44,799
folks are struggling with trying to use upgrade at net

471
00:23:44,839 --> 00:23:46,680
every year. Yeah, I don't know how it is for

472
00:23:46,720 --> 00:23:47,200
you guys.

473
00:23:47,359 --> 00:23:49,400
Speaker 3: I think it's kind of a mix. Actually it's a struggle.

474
00:23:50,240 --> 00:23:51,680
I don't think it's a struggle for us to get

475
00:23:51,680 --> 00:23:53,599
a release out every year and we do know that

476
00:23:53,720 --> 00:23:56,519
we have users that also that even that, like you

477
00:23:56,519 --> 00:23:59,000
said that that pace is maybe even faster them. That's

478
00:23:59,000 --> 00:24:00,759
why we have the long term SUP releases and the

479
00:24:00,799 --> 00:24:01,759
standard support releases.

480
00:24:01,960 --> 00:24:03,960
Speaker 2: From want of way, lots of folks that are every

481
00:24:03,960 --> 00:24:05,240
other that just take the LTS.

482
00:24:05,319 --> 00:24:07,119
Speaker 3: It's not that it matters, but that's what those are

483
00:24:07,160 --> 00:24:09,200
there for. I think the struggle is actually more the

484
00:24:09,240 --> 00:24:12,279
opposite is like, you know, things just are accelerating right now,

485
00:24:12,359 --> 00:24:16,680
like like AI is making development faster and more productive,

486
00:24:16,880 --> 00:24:19,960
and you know, getting value to our to our users

487
00:24:20,039 --> 00:24:22,480
is something that we would like to to to speed up.

488
00:24:22,839 --> 00:24:25,960
But at the same time being you know, sensitive to

489
00:24:26,079 --> 00:24:28,400
and cognizant of the fact that you know, the platform

490
00:24:28,839 --> 00:24:32,759
needs to be a stable, you know, trustworthy thing, Like

491
00:24:32,799 --> 00:24:34,640
it's not something you actually want to be moving around

492
00:24:34,680 --> 00:24:36,559
a lot or changing a lot. You want it to

493
00:24:36,559 --> 00:24:39,279
be a sure foundation that you build your stuff on

494
00:24:39,359 --> 00:24:42,559
top of. So there's this tension right now of like, oh, like, well,

495
00:24:42,559 --> 00:24:46,079
we can do more right now by leveraging AI to

496
00:24:46,119 --> 00:24:48,680
help us develop features and and you know, burn through

497
00:24:48,680 --> 00:24:53,160
our backlog and quality and all these things, but still

498
00:24:53,200 --> 00:24:55,519
only shipping on that yearly cadence kind of creates a

499
00:24:56,079 --> 00:24:57,359
you know, we have to we have to wait a

500
00:24:57,400 --> 00:24:59,519
little bit then to get some of those improvements.

501
00:24:59,759 --> 00:25:02,319
Speaker 2: That's so, that's funny. I was thinking there's got to

502
00:25:02,359 --> 00:25:05,119
be features that take longer than a year to build too,

503
00:25:05,200 --> 00:25:06,559
but I don't know if that's true.

504
00:25:06,599 --> 00:25:09,839
Speaker 3: There are those as well. Runtime asink I think is

505
00:25:09,920 --> 00:25:10,799
like an example of that.

506
00:25:11,119 --> 00:25:14,839
Speaker 2: Oh my goodness, yeah, sharp Union's that's not the that's

507
00:25:14,880 --> 00:25:17,720
not the Blazer team. That's the team trying to move

508
00:25:17,759 --> 00:25:20,400
stuff what is it out of runtime and into or

509
00:25:20,440 --> 00:25:22,400
out of language and into runtime.

510
00:25:22,079 --> 00:25:23,400
Speaker 3: Yeap, out of the compiler.

511
00:25:23,440 --> 00:25:25,960
Speaker 2: Basically, I don't envy that battle. That's a big deal

512
00:25:26,000 --> 00:25:27,559
at that battle, have you guys.

513
00:25:27,559 --> 00:25:29,359
Speaker 3: So that's a big effort for eleven right now is

514
00:25:30,119 --> 00:25:33,480
working through runtime asink, and a lot of it will

515
00:25:33,559 --> 00:25:35,920
land in eleven so you can start using And I

516
00:25:35,920 --> 00:25:39,519
think though the full story is probably a post eleven feature,

517
00:25:39,839 --> 00:25:41,400
a lot of the runtime features are kind of like that.

518
00:25:41,440 --> 00:25:44,720
Like another effort is the like the web assembly runtime

519
00:25:44,759 --> 00:25:48,559
consolidation effort. Like right now, our current websmity runtime for

520
00:25:48,599 --> 00:25:51,440
Donna is based on the old Mono code base. We're

521
00:25:51,480 --> 00:25:54,079
trying to consolidate all of our runtime implementations to be

522
00:25:54,119 --> 00:25:57,599
based on course, you'll are the mobile workloads have already

523
00:25:57,599 --> 00:26:00,240
been working on that for a while. Webs somebodies of

524
00:26:00,279 --> 00:26:02,839
sort of the last one in the line to top

525
00:26:03,079 --> 00:26:06,640
that upgrade. That's also a multi release effort. Like a

526
00:26:06,640 --> 00:26:08,759
good chunk of the Blazer team right now is actually

527
00:26:09,279 --> 00:26:13,680
working on getting the new COURSELR based runtime stood up.

528
00:26:13,720 --> 00:26:15,680
Speaker 2: Well, because you guys care about wows and more than

529
00:26:15,720 --> 00:26:16,559
just about anybody.

530
00:26:16,599 --> 00:26:18,799
Speaker 1: Well, I was gonna say, do you does the ASPNT

531
00:26:18,799 --> 00:26:23,279
team core team push changes in the language? Does that

532
00:26:23,359 --> 00:26:24,480
happen the other way too?

533
00:26:24,599 --> 00:26:24,720
Speaker 2: Oh?

534
00:26:24,799 --> 00:26:26,839
Speaker 1: Yeah, have you come to the language team and say hey,

535
00:26:26,839 --> 00:26:29,119
we need this feature all the time and then they

536
00:26:29,119 --> 00:26:30,599
come back and yeah, that's.

537
00:26:30,559 --> 00:26:32,400
Speaker 3: Definitely Like I'm well, a lot of the minimum API

538
00:26:32,920 --> 00:26:36,400
development experience and how that works, oh involved like working

539
00:26:36,480 --> 00:26:39,680
with the compiler folks and getting specific language features in

540
00:26:39,720 --> 00:26:42,480
to make that experience really good, and the infrastructure around it.

541
00:26:43,319 --> 00:26:44,799
You know, a lot of the stuff that was done

542
00:26:44,880 --> 00:26:48,039
around source generators was done heavily in collaboration with the

543
00:26:48,039 --> 00:26:50,079
ace minut core team for a lot of our scenarios

544
00:26:50,119 --> 00:26:52,759
like Razor and Razor compilation was one of those, but

545
00:26:52,960 --> 00:26:54,920
not the only one. There were others as well. Yeah,

546
00:26:54,920 --> 00:26:56,640
I know that. That's one of the benefits actually of

547
00:26:57,400 --> 00:26:59,720
that stack is we can all we have this very

548
00:26:59,720 --> 00:27:05,880
fluid communication with across the stack, with run time frameworks, libraries, languages,

549
00:27:06,559 --> 00:27:10,440
app models, tooling. We kind of own that all together

550
00:27:10,480 --> 00:27:12,720
and try to deliver a cohesive in and experience.

551
00:27:12,759 --> 00:27:14,920
Speaker 1: How far is the walk between the Aspnut building and

552
00:27:14,960 --> 00:27:15,960
the c sharp Well.

553
00:27:15,880 --> 00:27:18,079
Speaker 3: So a little I took his button on Microsoft Teams

554
00:27:18,119 --> 00:27:28,000
and I just thought, well, okay, share the speaker, Hey toad, Yeah.

555
00:27:27,839 --> 00:27:30,160
Speaker 2: Are you guys all in twenty five when you are

556
00:27:30,200 --> 00:27:31,039
on campus.

557
00:27:31,640 --> 00:27:33,720
Speaker 3: I'm actual pretty serius. A lot of us are remote

558
00:27:33,759 --> 00:27:37,319
and spread across the world. The folks that are here

559
00:27:37,359 --> 00:27:40,039
in the what I am in Washington. I'm in the

560
00:27:40,079 --> 00:27:43,200
Seattle area, and building Building eighteen is where a lot

561
00:27:43,240 --> 00:27:46,839
of us sit these days. We're going through our turncuse.

562
00:27:46,119 --> 00:27:48,000
Speaker 2: It's near like a two days a week in the

563
00:27:48,039 --> 00:27:50,400
office or anything like. I don't know how that works.

564
00:27:50,559 --> 00:27:52,640
Speaker 3: Three days a week is what we're just transitioning to

565
00:27:53,279 --> 00:27:55,200
now for books that are close enough to the office

566
00:27:55,200 --> 00:27:55,799
to do.

567
00:27:55,920 --> 00:27:56,079
Speaker 2: Yeah.

568
00:27:56,279 --> 00:27:58,000
Speaker 3: Yeah, we get to see each other in person.

569
00:27:58,079 --> 00:28:00,559
Speaker 2: Yeah, yeah, that's cool. There's merited that, but at the

570
00:28:00,559 --> 00:28:03,279
same time, it's like you've got pretty good workspaces at home, now,

571
00:28:03,440 --> 00:28:04,799
like where are you most productive?

572
00:28:05,200 --> 00:28:08,200
Speaker 3: I know it's a it's tough, so I can tell

573
00:28:08,200 --> 00:28:09,559
you there are a lot of people with mixed feelings

574
00:28:09,559 --> 00:28:12,160
about it. I'm sure, yeah, but it'll be fun. It'll

575
00:28:12,200 --> 00:28:14,359
be fun to be able to you know, be in

576
00:28:14,400 --> 00:28:17,160
the in the office, to have those hallway chats and

577
00:28:17,160 --> 00:28:19,720
and all that, but still having to do teams calls

578
00:28:19,720 --> 00:28:21,720
because a lot of our people are are still remote,

579
00:28:21,799 --> 00:28:23,200
like a lot of the yeah I work with on

580
00:28:23,279 --> 00:28:26,319
Blazer and in Europe or in Prague, and we've got

581
00:28:26,359 --> 00:28:28,519
people on the East Coast like they're they're all over

582
00:28:28,559 --> 00:28:30,640
the place. So we're definitely a distributed team.

583
00:28:30,920 --> 00:28:33,160
Speaker 2: That's cool. Yeah, it's just the nature of the beast.

584
00:28:33,200 --> 00:28:35,920
You're never not going to have the teams call on Yep,

585
00:28:37,039 --> 00:28:38,599
the chance of everybody being there.

586
00:28:38,920 --> 00:28:41,880
Speaker 3: Everyone's pretty much hybrid, and you're gonna want it anyway,

587
00:28:41,960 --> 00:28:45,119
right because who wants to like take notes there?

588
00:28:45,519 --> 00:28:47,359
Speaker 2: Yeah, we got we've got tools for that. You just

589
00:28:47,400 --> 00:28:50,279
have to turn them off, yes, exactly. Yeah, it's fair.

590
00:28:50,160 --> 00:28:51,960
Speaker 1: Sounds like me trying to get all the horns to

591
00:28:52,000 --> 00:28:54,079
come to rehearsal at the same time before a gig,

592
00:28:54,759 --> 00:28:55,759
it's like pulling teeth.

593
00:28:55,920 --> 00:28:59,119
Speaker 2: They can't do that remote now they can't know I

594
00:28:59,119 --> 00:29:04,440
mean on over there. But yeah, I'm pretty sure. Did

595
00:29:04,480 --> 00:29:06,440
I say that out loud? I'm sorry, I take it.

596
00:29:07,759 --> 00:29:08,640
We should take a break.

597
00:29:09,079 --> 00:29:10,920
Speaker 1: Yeah, let's take a break. It's a good time and

598
00:29:10,960 --> 00:29:13,839
we'll be right back after these very important messages don't

599
00:29:13,839 --> 00:29:19,799
go away, and we're back. It's dot net Rock. So

600
00:29:19,799 --> 00:29:23,599
I'm Carl Franklin's Richard Campbell, Hey, and that's Daniel Roth

601
00:29:23,680 --> 00:29:29,880
and we're talking ASPNT core ten C sharp and let's

602
00:29:29,880 --> 00:29:34,519
talk about dot net eleven, the future, the future.

603
00:29:35,119 --> 00:29:37,480
Speaker 3: What's coming down. Yeah, we're hard to work at Donna

604
00:29:37,480 --> 00:29:41,039
at eleven. Already the team is is already delivering new features.

605
00:29:41,039 --> 00:29:44,400
So PREV two is already out, and we have published

606
00:29:44,400 --> 00:29:48,680
our roadmap for acep core, which includes Blazer for for

607
00:29:48,720 --> 00:29:51,559
donin at eleven. You can find that on in our

608
00:29:51,599 --> 00:29:53,960
GitHub repo. It's just a get up issue if you

609
00:29:54,000 --> 00:29:57,680
want a short link aka dot ms slash acep net

610
00:29:57,839 --> 00:30:01,720
slash roadmap, and that's where you'll find it. And there's

611
00:30:01,839 --> 00:30:05,920
kind of like four high level themes I would say

612
00:30:06,000 --> 00:30:09,880
to what we're focusing on this year. The first one

613
00:30:09,960 --> 00:30:12,000
is pretty broad. It's just like you know, addressed top

614
00:30:12,039 --> 00:30:15,000
pain points and uh and and feedback that we have

615
00:30:15,039 --> 00:30:17,640
in our repo. So everyone who has your your favorite

616
00:30:17,680 --> 00:30:19,640
issue that's sitting in the a spit core repo that

617
00:30:19,680 --> 00:30:22,119
you really want addressed, that's been there for a while.

618
00:30:22,279 --> 00:30:24,839
We look at, you know, all those thumbs up reactions

619
00:30:24,880 --> 00:30:27,039
on the original posts. We look at people commenting and

620
00:30:27,079 --> 00:30:29,319
telling us that this is important, and we're trying to

621
00:30:29,319 --> 00:30:32,480
really push to get those into the stack, even some

622
00:30:32,519 --> 00:30:34,680
things that have been around for for a while. So

623
00:30:34,799 --> 00:30:36,599
things in that bucket, Like one of the big ones

624
00:30:36,680 --> 00:30:40,440
is we're finally going to do a sync validation in

625
00:30:40,559 --> 00:30:42,960
asp net core. I think we've had that one in

626
00:30:43,319 --> 00:30:46,000
the backlog since I've been working on the stack.

627
00:30:46,119 --> 00:30:51,759
Speaker 1: Wow, are you saying validation is synchronous?

628
00:30:51,880 --> 00:30:52,880
Speaker 3: Got framework?

629
00:30:52,920 --> 00:30:55,000
Speaker 1: It is? I know a lot of people you got

630
00:30:55,000 --> 00:30:58,880
to wait to push the button before you can get

631
00:30:58,960 --> 00:31:01,640
the validation. I think that's what you're talking about.

632
00:31:01,720 --> 00:31:03,720
Speaker 3: Yeah, well, I mean you want to check your username

633
00:31:03,759 --> 00:31:05,799
to see if it's already taken in the database and

634
00:31:05,839 --> 00:31:08,640
things like that. So people have been using things like

635
00:31:08,680 --> 00:31:12,359
fluent validation and other third party libraries to achieve that

636
00:31:12,440 --> 00:31:15,160
for quite a while, we've we've decided that there's been

637
00:31:15,240 --> 00:31:17,680
enough people complaining about this that it's finally time to

638
00:31:17,880 --> 00:31:19,599
go do it. So we're going to do it for minimapis,

639
00:31:19,640 --> 00:31:22,400
we'll do it for for a Blazer, and we're actually

640
00:31:22,400 --> 00:31:24,480
working with the Core libraries team to push this down

641
00:31:24,519 --> 00:31:28,359
into like system component model data annotations and the core

642
00:31:28,720 --> 00:31:32,119
abstraction layers, so that ACINC validation now becomes a first

643
00:31:32,160 --> 00:31:35,039
class feature across the stack. Yeah, involves a lot of

644
00:31:35,039 --> 00:31:37,759
work again on compatibility. Like we were talking before, we

645
00:31:37,839 --> 00:31:39,960
care a lot about compatibility and a lot of people

646
00:31:40,079 --> 00:31:43,759
use those abstractions. So making sure that when you know

647
00:31:44,599 --> 00:31:46,960
code with ACYNC validation logic now shows up in the

648
00:31:47,000 --> 00:31:50,680
graph that we have good reasonable behaviors, good good compatibility

649
00:31:50,720 --> 00:31:54,000
story for how that will be will be handled, and

650
00:31:54,039 --> 00:31:56,440
then up in the app model layers like in Blazer,

651
00:31:56,599 --> 00:32:00,599
you know, providing you with the ability to provide the

652
00:32:00,640 --> 00:32:02,920
right user experiences when you know validation kicks off and

653
00:32:02,920 --> 00:32:04,400
now well it might take a little while while I

654
00:32:04,440 --> 00:32:06,680
go talk to the database to validate what you're doing,

655
00:32:06,960 --> 00:32:08,640
that you can provide a user experience to say, hey,

656
00:32:08,680 --> 00:32:11,319
hold on a second, I'm checking that that input here's

657
00:32:11,319 --> 00:32:14,359
a little spinner or something until the actual validation input

658
00:32:14,400 --> 00:32:17,440
comes comes back. So yeah, ACINC validation was the top

659
00:32:17,480 --> 00:32:19,799
requested feature. So we're gonna we're gonna take a look

660
00:32:19,799 --> 00:32:21,599
at that. And there's a bucket of those, Like, there's

661
00:32:21,599 --> 00:32:23,200
a lot of them that are in the stack.

662
00:32:23,039 --> 00:32:25,880
Speaker 2: That and do you do that validation through the existing

663
00:32:25,960 --> 00:32:28,839
c sharp ACINC or are you hanging in for runtime ACNC,

664
00:32:28,920 --> 00:32:30,160
Like where does that play?

665
00:32:30,319 --> 00:32:32,559
Speaker 3: It's I mean runtime ACINC I think, just takes the

666
00:32:32,599 --> 00:32:35,519
existing acc model and makes it effectively more efficient, Like

667
00:32:35,559 --> 00:32:39,279
it takes of the what the state machine being generated

668
00:32:39,279 --> 00:32:42,519
by the compiler runtime ACENC moves that into the run

669
00:32:42,559 --> 00:32:46,359
time itself, which should dramatically improve performance for people that

670
00:32:46,400 --> 00:32:48,960
have acinc code today. So this just means you use

671
00:32:49,000 --> 00:32:52,079
the c sharp ACNC coding model to write your ACINC

672
00:32:52,160 --> 00:32:55,119
validation logic and then it gets even faster thanks.

673
00:32:54,960 --> 00:32:57,359
Speaker 2: To and your expectation is once it gets when the

674
00:32:57,400 --> 00:33:00,480
runtime acinc becomes real, it'll just run just better.

675
00:33:00,559 --> 00:33:03,240
Speaker 3: Yeah that's exactly right. Cool yep, so big bucket up.

676
00:33:03,319 --> 00:33:05,640
Speaker 2: Just as I remember, I remember I was having a

677
00:33:05,640 --> 00:33:08,119
conversation with Andrews about a sink back in the day,

678
00:33:08,160 --> 00:33:10,440
and this has got to be a decade plus ago.

679
00:33:10,680 --> 00:33:12,839
It's like, well, I have control of the language. I

680
00:33:12,839 --> 00:33:14,799
could get that to happen here. We could get it

681
00:33:14,799 --> 00:33:17,640
to happen in the runtime. Ye like that that used

682
00:33:17,680 --> 00:33:19,519
to be the way. It's it's nice to have everyone

683
00:33:19,559 --> 00:33:22,039
working closer together on these kinds of problems. That and

684
00:33:22,039 --> 00:33:24,079
and ACYNC became a hit. I don't know that he

685
00:33:24,160 --> 00:33:27,240
knew at that time, Like there's a C plus plus

686
00:33:27,240 --> 00:33:29,000
inmvalentation of a sync now.

687
00:33:29,440 --> 00:33:33,119
Speaker 3: Started a wave movements when it hit.

688
00:33:33,559 --> 00:33:35,200
Speaker 1: When it hit JavaScript, I was like.

689
00:33:35,119 --> 00:33:38,079
Speaker 2: It was the right syntax. You know that people could

690
00:33:38,119 --> 00:33:38,400
dig it.

691
00:33:38,440 --> 00:33:41,640
Speaker 1: When it hit JavaScript, I knew, Wow, this is way

692
00:33:41,680 --> 00:33:44,160
bigger than way bigger than we thought.

693
00:33:44,200 --> 00:33:46,240
Speaker 3: So we also have a bucket of fundamentals work so

694
00:33:46,440 --> 00:33:49,559
again purpose part of our culture, some more performance improvements,

695
00:33:49,839 --> 00:33:54,319
security focus. We do added Pasky support and ten for

696
00:33:54,799 --> 00:33:57,960
acemic Core applications for folks that are using acemit core identity.

697
00:33:58,319 --> 00:34:00,160
We have a number of follow up items there that

698
00:34:00,200 --> 00:34:03,119
we want to do to flesh out the user experiences

699
00:34:03,119 --> 00:34:07,319
that are enabled more observability, some more tracing diagnostics, and

700
00:34:07,359 --> 00:34:09,320
we do a lot of that work in collaboration with

701
00:34:09,320 --> 00:34:11,599
our friends on the Aspire team, so you get that

702
00:34:11,639 --> 00:34:15,599
awesome experience in the Aspired dashboard and open telemetry based

703
00:34:15,920 --> 00:34:18,840
monitoring of your application. So we'll continue to push on

704
00:34:18,960 --> 00:34:24,639
cross cutting fundamentals. Our primary investments will be in our

705
00:34:24,760 --> 00:34:27,679
what we think of as our modern stack in ACE

706
00:34:27,800 --> 00:34:32,199
net core, so think like minimal APIs blazers are recommended.

707
00:34:32,400 --> 00:34:37,559
Webi offering minimal APIs for API development signal R. We

708
00:34:37,599 --> 00:34:40,239
still of course love and support our NBC developers and

709
00:34:40,239 --> 00:34:43,480
our Razor Pages developers and people building API controllers, but

710
00:34:43,519 --> 00:34:45,639
that's not really where we're like investing.

711
00:34:45,760 --> 00:34:46,679
Speaker 1: You're not innovating.

712
00:34:47,119 --> 00:34:50,159
Speaker 3: Yeah, that's not where we're trying to optimize. But you

713
00:34:50,159 --> 00:34:52,119
can feel good your apps will continue to work and

714
00:34:52,119 --> 00:34:54,559
they'll get all the other benefits from the platform improvements.

715
00:34:54,599 --> 00:34:56,920
You'll get c Shark, Clipteen, and you'll get all those

716
00:34:57,039 --> 00:34:58,159
performance improvements.

717
00:34:58,480 --> 00:35:01,840
Speaker 1: But for the app more, it seems from your attitude

718
00:35:01,840 --> 00:35:05,199
that people get really persnickety about that, Like do they

719
00:35:05,199 --> 00:35:07,760
complain to you, It's like, so what are you killing MVC?

720
00:35:08,480 --> 00:35:10,360
Speaker 3: Oh, they get nervous, I mean they want to know

721
00:35:10,400 --> 00:35:12,599
that they app we're gonna you know, stop working in

722
00:35:12,639 --> 00:35:15,079
the future, that they'll still continue to get dirty update.

723
00:35:14,960 --> 00:35:17,360
Speaker 2: Like they're just gonna fall down, right, you know, Yeah,

724
00:35:17,480 --> 00:35:19,039
well burst into flames.

725
00:35:19,079 --> 00:35:22,119
Speaker 3: And the support, like the support matters, Like you want

726
00:35:22,119 --> 00:35:23,840
to know that security fixes are going to keep coming

727
00:35:23,920 --> 00:35:26,239
coming your way. Yeah, of course, Yeah, And I think

728
00:35:26,239 --> 00:35:28,320
we have I mean, we have a There's been certainly

729
00:35:28,360 --> 00:35:31,280
some cases in the past where Microsoft has you know,

730
00:35:31,760 --> 00:35:35,400
caused people pain, you know, the the he who should

731
00:35:35,440 --> 00:35:38,400
not be named silver Light situation for example, you know,

732
00:35:38,480 --> 00:35:39,039
things like that.

733
00:35:39,199 --> 00:35:42,400
Speaker 2: Yeah, to be clear, there's one scenario and people are

734
00:35:42,440 --> 00:35:43,320
still upset about it.

735
00:35:43,400 --> 00:35:46,039
Speaker 1: Yeah, that's the only scenario really, and it was and

736
00:35:46,159 --> 00:35:47,960
it was the right call by Microsoft.

737
00:35:48,119 --> 00:35:51,599
Speaker 2: I might say it was the right corption. I would

738
00:35:51,679 --> 00:35:54,159
say there were better ways to go about doing the

739
00:35:54,239 --> 00:35:54,679
right thing.

740
00:35:54,920 --> 00:35:57,840
Speaker 1: Yeah, well their hand, their hand was forced, and.

741
00:35:57,880 --> 00:35:58,760
Speaker 2: I don't disagree.

742
00:35:58,800 --> 00:36:00,199
Speaker 3: Water under the bridge at this point.

743
00:36:00,239 --> 00:36:01,119
Speaker 2: But Blazer.

744
00:36:02,800 --> 00:36:06,840
Speaker 1: Doesn't matter. The browsers moved on, it wouldn't matter anyway.

745
00:36:07,039 --> 00:36:07,280
Speaker 2: Yeah.

746
00:36:07,360 --> 00:36:08,880
Speaker 3: I think it's really funny that people, a lot of

747
00:36:08,880 --> 00:36:10,519
people were asking me about like, how do I know

748
00:36:10,519 --> 00:36:12,400
Blazer's not going to be the next silver Light? Even

749
00:36:12,760 --> 00:36:13,719
today they still asked me that.

750
00:36:13,840 --> 00:36:14,800
Speaker 1: Yeah, you still do me too.

751
00:36:14,840 --> 00:36:17,920
Speaker 3: And I think it's ironic that the same websamby runtime

752
00:36:17,960 --> 00:36:20,639
that we use is actually used by this community project

753
00:36:20,679 --> 00:36:23,519
called open silver, which is a reimplementation of silver Light

754
00:36:23,960 --> 00:36:26,840
but based on our webssembly runtime. So you can still

755
00:36:26,920 --> 00:36:29,800
run silver Light apps in a browser using the runtime

756
00:36:29,800 --> 00:36:31,960
that we built for Blazer. So no, Blazer is not

757
00:36:32,000 --> 00:36:36,199
silver Light, but it helped, I guess, resuscitate it in

758
00:36:36,280 --> 00:36:37,960
an open source way.

759
00:36:38,199 --> 00:36:40,119
Speaker 1: If you really want to run that code, if you

760
00:36:40,159 --> 00:36:41,639
really want it, you can do it.

761
00:36:42,079 --> 00:36:45,000
Speaker 2: Yeah. Yeah, And we did shows with the open Silver

762
00:36:45,079 --> 00:36:48,440
guys back in the you know, as silver Light was

763
00:36:48,519 --> 00:36:50,400
finally coming out of support. I think it was twenty

764
00:36:50,440 --> 00:36:54,159
twenty one, you know, we were they they got done

765
00:36:54,159 --> 00:36:56,800
in time. I just don't know how many people actually

766
00:36:56,840 --> 00:36:59,880
were still using it at that point. Like from a

767
00:37:00,760 --> 00:37:06,400
CISDMIN perspective, to be able to run the silver Light

768
00:37:06,519 --> 00:37:10,679
plug in right now is incredibly hard. It only runs,

769
00:37:11,159 --> 00:37:13,239
it only runs an I E eleven, It only runs

770
00:37:13,280 --> 00:37:16,119
in a particular compatibility mode, like you have to jump

771
00:37:16,159 --> 00:37:19,960
through some hoops to make it actually allow that plug

772
00:37:19,960 --> 00:37:20,280
in to run.

773
00:37:20,360 --> 00:37:22,960
Speaker 1: And why would you run it in an in an

774
00:37:22,960 --> 00:37:26,519
old browser that doesn't have the latest security patches or

775
00:37:26,559 --> 00:37:28,960
anything like that. It's completely insecure.

776
00:37:29,239 --> 00:37:32,480
Speaker 2: Well it does. It's a main it's a it is

777
00:37:32,559 --> 00:37:38,320
a maintained mode strictly the internal you know, for certain companies,

778
00:37:38,320 --> 00:37:41,119
and they still exist that need that plug in to run.

779
00:37:41,239 --> 00:37:44,159
But it is I've done, show, I done run as

780
00:37:44,239 --> 00:37:46,960
is on this like, it is not easy to tease

781
00:37:47,039 --> 00:37:50,000
that thing back to life. It is not for public consumption.

782
00:37:50,079 --> 00:37:53,000
It is purely for old school compat.

783
00:37:52,719 --> 00:37:54,840
Speaker 1: Well, when I was excited about silver Light, it wasn't

784
00:37:54,840 --> 00:37:57,760
because I was excited about plugins. It was only later

785
00:37:57,800 --> 00:38:00,639
when I realized that when like the rest of us,

786
00:38:00,679 --> 00:38:05,239
that plugins were dangerously insecure. That and that's why I

787
00:38:05,239 --> 00:38:06,880
think it was the right call. But the whole browser

788
00:38:06,880 --> 00:38:10,480
community moved on to extensions, which are a completely secure

789
00:38:10,679 --> 00:38:13,239
version of plug ins, which weren't well.

790
00:38:13,079 --> 00:38:15,119
Speaker 3: With asp do on net. I think we have a

791
00:38:15,159 --> 00:38:17,760
pretty good track record, Like there are lots of people

792
00:38:17,960 --> 00:38:21,079
happily running their web forms, apps, their ACE, NBC apps,

793
00:38:21,119 --> 00:38:24,639
apint Webpi, and it's still fully supported, and it's been

794
00:38:24,679 --> 00:38:27,039
supported for a long long time, and we expected to

795
00:38:27,039 --> 00:38:29,239
be supported for a long long time in the future.

796
00:38:29,639 --> 00:38:33,320
Same thing with anit core, NBC ACEPNIT core APIs like those,

797
00:38:33,679 --> 00:38:35,880
you can feel good you'll continue to get platform improvements

798
00:38:35,880 --> 00:38:37,480
on those for for a while. But we were going

799
00:38:37,559 --> 00:38:41,519
to be focusing our investments in eleven on our modern

800
00:38:41,559 --> 00:38:44,360
stacks of minimal ada Blazer. That's where we're really trying

801
00:38:44,400 --> 00:38:46,719
to direct people, and you can see that in a

802
00:38:46,719 --> 00:38:48,679
lot of the features that we have planned.

803
00:38:48,800 --> 00:38:52,239
Speaker 1: So I got a question and dot ten you when

804
00:38:52,239 --> 00:38:56,480
we talked on Blazer Train, you said that there is

805
00:38:56,519 --> 00:38:59,519
a new feature in dot ten about being able to

806
00:38:59,559 --> 00:39:04,800
decorate properties of a class with an attribute that would

807
00:39:04,800 --> 00:39:10,719
allow them to persist you know, through browser storage local storage,

808
00:39:11,159 --> 00:39:14,760
which is really cool, you know, for using for keeping

809
00:39:14,800 --> 00:39:18,840
state around, right, especially for a component state. Yeah, you

810
00:39:18,880 --> 00:39:22,639
disconnect and reconnect and it's right there, something that I've

811
00:39:22,679 --> 00:39:25,119
been doing through my components and talking about on Blazer

812
00:39:25,159 --> 00:39:28,199
Train a lot. And people got confused and they're like, well,

813
00:39:28,239 --> 00:39:29,960
does that mean that I don't need to have an

814
00:39:30,000 --> 00:39:32,960
app state component? No, you still do. You still have

815
00:39:33,039 --> 00:39:36,719
to have a container for your state. You know, that's

816
00:39:36,760 --> 00:39:38,639
not going to write it for you, but now you

817
00:39:39,000 --> 00:39:41,639
can persist it. That's what it's all about. But in

818
00:39:41,719 --> 00:39:44,840
dot net eleven, I see that there's some new persistence

819
00:39:45,079 --> 00:39:46,400
stuff for state.

820
00:39:46,480 --> 00:39:49,280
Speaker 3: Yeah, so we did the pause and resume support and

821
00:39:49,360 --> 00:39:52,440
the declarative persistent component state support and DOT at ten.

822
00:39:52,559 --> 00:39:55,320
So those features are already available. So if like, for example,

823
00:39:56,079 --> 00:39:59,760
if you're pre rendering your components before they become interactive, yeah,

824
00:40:00,119 --> 00:40:03,079
and you have to acquire a bunch of state during

825
00:40:03,360 --> 00:40:05,480
that pre rendering stage where you're just basically going to

826
00:40:05,519 --> 00:40:09,239
statically render your components as HTML, and then when the

827
00:40:09,280 --> 00:40:12,800
components then wire up interactively like either either doing the

828
00:40:12,880 --> 00:40:15,960
Blazer server thing or Blazer web assembly, often you end

829
00:40:16,079 --> 00:40:19,599
up acquiring that state again. So to avoid doing that twice,

830
00:40:19,679 --> 00:40:21,320
you can just take the state that you got during

831
00:40:21,360 --> 00:40:25,079
the pre rendering and persist it into the page so

832
00:40:25,119 --> 00:40:28,119
that it can be reused when the components render interactively.

833
00:40:28,119 --> 00:40:30,960
That makes things more efficient and it improves the user experience.

834
00:40:31,400 --> 00:40:33,519
Prior to DOT in ten, it was a little clunky

835
00:40:33,559 --> 00:40:35,760
to do that, like there was some APIs and services

836
00:40:35,800 --> 00:40:37,199
that you had to wire up in the right way.

837
00:40:37,599 --> 00:40:39,880
In ten, there's just an attribute like you slap it

838
00:40:39,920 --> 00:40:41,519
on a property and say this is the state that

839
00:40:41,559 --> 00:40:45,000
I need persisted so that when I render interactively, I'm

840
00:40:45,039 --> 00:40:47,639
good to go. So it's much easier. We then took

841
00:40:47,679 --> 00:40:50,719
that model and made it so that when your circuits

842
00:40:51,239 --> 00:40:56,119
are potentially going to get evicted or might or being

843
00:40:56,199 --> 00:40:59,800
explicitly paused, you can take the state of your server

844
00:41:01,239 --> 00:41:03,840
hosted circuits and persist them so that they can be

845
00:41:03,920 --> 00:41:07,679
again rehydrated. Like this might happen if your like your client,

846
00:41:07,760 --> 00:41:10,840
becomes disconnected for an extended period of time, Blazer will

847
00:41:10,840 --> 00:41:13,079
try to hold on to your the circuit state the

848
00:41:13,079 --> 00:41:15,239
server state for at least a little while. I think

849
00:41:15,280 --> 00:41:18,119
the faults like three minutes. But if the client doesn't reconnect,

850
00:41:18,440 --> 00:41:20,360
then the server's going to say, well, I guess they're gone,

851
00:41:20,400 --> 00:41:22,440
and it will evict the circuit and the user's state

852
00:41:22,519 --> 00:41:24,159
is gone. If they try to then come back and say,

853
00:41:24,159 --> 00:41:27,159
like five minutes later, then they're basically back to the

854
00:41:27,159 --> 00:41:31,480
beginning again. With state persistence the component state persistence, you

855
00:41:31,480 --> 00:41:34,920
can before the component gets the circuit gets evicted, it

856
00:41:35,000 --> 00:41:37,960
can save its state, and then when the user comes back,

857
00:41:38,000 --> 00:41:39,679
it can just oh, be like, I know who you are.

858
00:41:39,719 --> 00:41:42,360
I'll just recreate your circuit for you from the persistent state,

859
00:41:42,400 --> 00:41:45,760
and you're good to go. That will actually happen automatically

860
00:41:45,920 --> 00:41:48,920
for you in ten the thing you can do manually

861
00:41:48,960 --> 00:41:51,840
also is you can request that the circuit be paused.

862
00:41:52,199 --> 00:41:55,800
So like let's say the the user minimizes the browser

863
00:41:56,000 --> 00:41:58,280
and goes to lunch, Well, you've got the circuit sitting

864
00:41:58,280 --> 00:42:01,400
there on the server and the connection like, well, it's

865
00:42:01,440 --> 00:42:04,360
not doing anything, it's just wasting your server resources. You

866
00:42:05,320 --> 00:42:07,239
could detect that that happened and say like, well that's

867
00:42:07,239 --> 00:42:09,320
not even visible. Let me just pause the circuit and

868
00:42:09,360 --> 00:42:12,000
that will evict it and persist it, and then when

869
00:42:12,039 --> 00:42:14,880
the browser becomes visible again, you can have logic that says, oh,

870
00:42:14,920 --> 00:42:16,719
now we should recreate that circuit for them so they

871
00:42:16,719 --> 00:42:21,360
can continue using the app. That API for explicitly pausing

872
00:42:22,039 --> 00:42:25,280
and resuming is in ten is a client side API.

873
00:42:25,280 --> 00:42:29,000
It's like a JavaScript API. We didn't get the server

874
00:42:29,360 --> 00:42:33,440
based ability to persist the circuit and rehydrate it in ten.

875
00:42:33,480 --> 00:42:37,280
We'll we'll have that done in the eleven, and we'll

876
00:42:37,280 --> 00:42:39,239
give you also of some of the policies that we

877
00:42:39,320 --> 00:42:43,079
had talked about enabling intent, Like you know you're about

878
00:42:43,079 --> 00:42:45,360
to restart the server, and so you want to actually

879
00:42:45,599 --> 00:42:47,559
take all the circuits that you currently have active and

880
00:42:47,559 --> 00:42:49,199
save them so that when the server comes back up,

881
00:42:49,199 --> 00:42:51,719
you can resume them. Ideally, you want to run some

882
00:42:51,760 --> 00:42:54,199
server side code for dealing with that type of stuff

883
00:42:54,800 --> 00:42:57,000
in eleven will make that much more and more easier

884
00:42:57,039 --> 00:42:58,239
to deal with and handle.

885
00:42:58,320 --> 00:43:01,920
Speaker 1: And here's here's a tip. Guys. You know we were

886
00:43:01,960 --> 00:43:07,599
talking about using pre rendering, right and so on initialized

887
00:43:07,679 --> 00:43:09,559
is going to fire twice, once in the pre rendered

888
00:43:09,559 --> 00:43:15,000
state and once when it's complete. I've had projects where

889
00:43:15,159 --> 00:43:19,320
that on initialized code takes a while, you know, to

890
00:43:19,840 --> 00:43:21,599
load everything. It's got to go out to the database,

891
00:43:21,599 --> 00:43:23,800
it's got to fetch a bunch of stuff, boom, put

892
00:43:23,840 --> 00:43:26,519
it all together. And you don't really want that pause

893
00:43:26,559 --> 00:43:28,599
in the pre rendered state. So what I do is

894
00:43:28,639 --> 00:43:31,840
I just get dummy stuff, you know, and use that

895
00:43:31,920 --> 00:43:34,239
in the pre rendered state and then wait until I'm

896
00:43:34,320 --> 00:43:39,400
not you know, until i'm full fully complete on the

897
00:43:39,440 --> 00:43:42,440
second pass to do the actual loading of data.

898
00:43:42,719 --> 00:43:42,920
Speaker 2: Yep.

899
00:43:43,400 --> 00:43:44,519
Speaker 1: But you could do that too.

900
00:43:44,599 --> 00:43:48,280
Speaker 3: You can even stream that pre rendered content. We support

901
00:43:48,360 --> 00:43:52,119
streaming rendering for static rendering. So streaming rendering will basically

902
00:43:52,159 --> 00:43:54,440
say like, I want to statically render this page, but

903
00:43:54,840 --> 00:43:57,920
while doing that, if there's like some long running asynchronous

904
00:43:57,960 --> 00:44:00,920
task that happens in the middle of that logic instead

905
00:44:00,920 --> 00:44:04,039
of just having the client weight for any HTML to

906
00:44:04,039 --> 00:44:06,679
show up, Go ahead and send the first batch down

907
00:44:06,719 --> 00:44:08,679
like whatever you got, send it down, and then when

908
00:44:08,719 --> 00:44:12,079
that task complete, send the following follow up batch and

909
00:44:12,119 --> 00:44:14,519
just patch that into the the dom for me. That

910
00:44:14,599 --> 00:44:17,199
works with pre rendering us as as well. So you could,

911
00:44:17,880 --> 00:44:20,239
you know, implement some like you know, i'mloading dot dot

912
00:44:20,280 --> 00:44:22,880
dot even in that static rendered state that then gets

913
00:44:22,880 --> 00:44:25,920
filled in once the database query or whatever it is

914
00:44:25,920 --> 00:44:27,320
that you're doing completes.

915
00:44:27,519 --> 00:44:30,119
Speaker 1: Yeah, good stuff, But I love being able to choose

916
00:44:30,719 --> 00:44:33,280
how that works based on the complexity or the size

917
00:44:33,360 --> 00:44:34,400
or the scale of your app.

918
00:44:34,480 --> 00:44:38,239
Speaker 3: The thing I hope that that all this work on

919
00:44:38,320 --> 00:44:40,719
pause and resume and state persistence really enables is I

920
00:44:40,719 --> 00:44:44,920
know that some people get some anxiety about the scaling

921
00:44:45,119 --> 00:44:47,760
characteristics of laser server based apps. You know, I have

922
00:44:47,800 --> 00:44:50,000
all these circuits that you're maintaining for the users that

923
00:44:50,039 --> 00:44:52,239
are connected to your application. You have all these connections.

924
00:44:53,239 --> 00:44:54,719
How is that going to scale? I mean, it turns

925
00:44:54,719 --> 00:44:57,239
out that even without any of these optimizations, it actually

926
00:44:57,239 --> 00:45:00,440
scales pretty darn good. Like you can pretty easily handle

927
00:45:00,559 --> 00:45:04,719
like tens of thousands of concurrent users on the site

928
00:45:04,719 --> 00:45:08,840
with pretty reasonable hardware for most Plazer server apps. If

929
00:45:08,840 --> 00:45:10,199
you're really trying to get big to like, you know, one,

930
00:45:10,239 --> 00:45:12,840
hundreds of thousands or millions of concurrent it's really concurrent

931
00:45:12,920 --> 00:45:15,800
users that map number of views, but people on the

932
00:45:15,840 --> 00:45:19,039
site at the same time, then yeah, maybe it could

933
00:45:19,079 --> 00:45:21,280
be heavier load, and maybe you might want to think

934
00:45:21,320 --> 00:45:24,119
about moving more of that to the client. But with

935
00:45:24,159 --> 00:45:26,320
these patterns of like you know, being able to pause

936
00:45:26,360 --> 00:45:29,360
the circuit and the victims to free up those resources.

937
00:45:29,400 --> 00:45:31,800
So even even if you have a you know, quote

938
00:45:31,880 --> 00:45:33,880
unquote a current user but they went to lunch and

939
00:45:33,880 --> 00:45:36,199
they're not using the server resources and that type of stuff,

940
00:45:36,440 --> 00:45:41,360
you can really optimize the server utilization quite a bit.

941
00:45:41,679 --> 00:45:42,400
And scale.

942
00:45:42,800 --> 00:45:45,000
Speaker 2: Are there many folks doing much of a client side

943
00:45:45,039 --> 00:45:47,000
it seems like the server side one.

944
00:45:47,280 --> 00:45:51,039
Speaker 3: There are passionate folks on both sides. It's it's it's

945
00:45:51,119 --> 00:45:54,239
uh okay, I love that. Yeah, and they love to

946
00:45:55,280 --> 00:45:56,000
each other and you don't.

947
00:45:56,119 --> 00:45:58,519
Speaker 2: And as I understand, you don't have to choose either, Right,

948
00:45:58,599 --> 00:46:00,840
you can run some stuff clients some size server like.

949
00:46:00,840 --> 00:46:02,960
Speaker 3: Yeah, in the same app, you can have a mixture

950
00:46:02,960 --> 00:46:04,960
of both. But there's definitely like sort of the blazer

951
00:46:05,199 --> 00:46:06,320
webs of the crowd who.

952
00:46:06,280 --> 00:46:09,519
Speaker 2: Like, wa love bugs.

953
00:46:09,679 --> 00:46:12,320
Speaker 3: I love it so and I do everything blazers server

954
00:46:12,320 --> 00:46:13,880
and I love it and they'd love to like, you know,

955
00:46:13,960 --> 00:46:14,760
throw The.

956
00:46:14,719 --> 00:46:19,840
Speaker 1: First question I ask potential clients is how many users

957
00:46:19,920 --> 00:46:23,679
do you think concurrently would be using your the maximum

958
00:46:23,800 --> 00:46:26,639
that would be using it concurrently? And you know, for

959
00:46:26,719 --> 00:46:29,280
the for the clients I've had, there's no more than

960
00:46:29,519 --> 00:46:32,239
you know, fifty thousand or something like that, twenty thousand,

961
00:46:32,440 --> 00:46:33,199
And I'm like, well.

962
00:46:33,159 --> 00:46:34,800
Speaker 3: Yeah, and those are big, those are usually the big ones.

963
00:46:34,840 --> 00:46:35,960
I talked to a lot of people are like, you know,

964
00:46:36,000 --> 00:46:38,039
a few hundred, yeah, And I'm like, well, don't even

965
00:46:38,039 --> 00:46:38,519
think about it.

966
00:46:38,559 --> 00:46:41,480
Speaker 1: I don't even think about it. Yeah, but yeah, for

967
00:46:41,599 --> 00:46:44,679
fifty thousand, you know, you could just get a big,

968
00:46:44,840 --> 00:46:50,079
you know, fourteen sixteen gig server if you want. And jeez, don't.

969
00:46:49,880 --> 00:46:55,199
Speaker 2: Support thousand concurrents. Yeah, what are you doing? Like that's

970
00:46:55,239 --> 00:46:57,519
a lot, Like it's just a lot.

971
00:46:58,239 --> 00:47:02,840
Speaker 1: Well that they might be doing some sort of commercial

972
00:47:03,119 --> 00:47:04,920
customers facing.

973
00:47:05,000 --> 00:47:07,719
Speaker 2: It said the whole stadium worth of people to a

974
00:47:07,840 --> 00:47:10,119
site at the same time you got.

975
00:47:10,000 --> 00:47:13,119
Speaker 3: Some global app or like I talked to a lot of

976
00:47:13,119 --> 00:47:15,400
people doing like you know SaaS offerings, so you know

977
00:47:15,400 --> 00:47:18,000
they have multiple they're they're hosting the same app for

978
00:47:18,079 --> 00:47:19,960
multiple customers, and so they have to think about the

979
00:47:19,960 --> 00:47:23,920
scale and end times for each customer. Apps at that

980
00:47:23,960 --> 00:47:26,159
scale definitely exist, and it's something you do want to

981
00:47:26,239 --> 00:47:29,199
consider when you're thinking about your architecture for your Blazer apps.

982
00:47:29,320 --> 00:47:32,000
Hopefully with these features like pause and rezoom and all

983
00:47:32,039 --> 00:47:34,159
the also the like just the static service ide rendering

984
00:47:34,159 --> 00:47:39,840
features that we're adding it there's less anxiety about using

985
00:47:39,840 --> 00:47:41,960
some of these features that are particularly convenient.

986
00:47:42,039 --> 00:47:43,960
Speaker 2: Well, I mean it's not like you can't change your

987
00:47:43,960 --> 00:47:45,239
mind either, right, Like it's just.

988
00:47:45,199 --> 00:47:47,519
Speaker 3: And you can always switch the render mode exactly.

989
00:47:47,719 --> 00:47:51,079
Speaker 1: And we gotten at ten especially because perfe and memory

990
00:47:51,119 --> 00:47:54,079
usage got so much lower. You know, you can have

991
00:47:54,159 --> 00:47:57,199
even more jeez, you wouldn't even need all that ran.

992
00:47:57,400 --> 00:48:00,880
Speaker 3: Guess it gets more efficient for static service side rendering.

993
00:48:00,960 --> 00:48:02,920
We are leaning into that also quite a bit, Like

994
00:48:02,920 --> 00:48:06,440
there's a we think there's this really nice sweet spot

995
00:48:06,480 --> 00:48:08,639
where I don't even need an interactive render mode to

996
00:48:08,679 --> 00:48:10,400
do a lot of what I'm what I'm doing. And

997
00:48:10,400 --> 00:48:12,400
for that like think of all like we have actually

998
00:48:12,480 --> 00:48:14,920
quite a few people that are still using classic NBC

999
00:48:15,559 --> 00:48:18,960
or Razor pages or back to web forms for their applications,

1000
00:48:19,360 --> 00:48:21,960
and they're just mostly doing static service side rendering and

1001
00:48:22,000 --> 00:48:25,199
maybe some JavaScript to light up some interactivity wherever they

1002
00:48:25,480 --> 00:48:27,440
need it. And there's a lot of people building apps

1003
00:48:27,480 --> 00:48:30,719
that way. Blazer we're trying to position as the you know,

1004
00:48:30,760 --> 00:48:33,639
our single recommended WebUI offering, and we want to make

1005
00:48:33,679 --> 00:48:36,480
sure that the people that come from that style of

1006
00:48:36,519 --> 00:48:40,199
app don't come to Blazer disappointed in any way, shape

1007
00:48:40,239 --> 00:48:42,519
or form. There's a few feature gaps that we're filling

1008
00:48:42,519 --> 00:48:45,320
in there and dotten at eleven, like support for temp data,

1009
00:48:45,480 --> 00:48:48,480
like dealing with session state, like having things that a

1010
00:48:48,519 --> 00:48:49,719
lot of the tag helvers.

1011
00:48:49,800 --> 00:48:51,320
Speaker 1: Yeah, there's no state that.

1012
00:48:51,239 --> 00:48:53,360
Speaker 3: We don't have in Blazer as components like adding those

1013
00:48:53,360 --> 00:48:53,760
as well.

1014
00:48:53,800 --> 00:48:56,360
Speaker 1: There's no state for static rendered mode right.

1015
00:48:56,480 --> 00:48:59,360
Speaker 3: Right, yep, so you have to like provide these mechanisms

1016
00:48:59,400 --> 00:49:03,239
to the past state state along. We're also looking at

1017
00:49:03,280 --> 00:49:05,599
like for forms, when you have a form and you

1018
00:49:05,639 --> 00:49:08,480
want to do validation today in Blazer you end up

1019
00:49:08,480 --> 00:49:11,199
flipping to do either you write your own JavaScript or

1020
00:49:11,239 --> 00:49:13,079
you flip to an interactive render mode to have client

1021
00:49:13,119 --> 00:49:15,719
side validation logic for that form. Right, you know eleven,

1022
00:49:15,760 --> 00:49:19,039
we are going to add a a a some client

1023
00:49:19,079 --> 00:49:22,599
side validation support for static service side rendering in Blazer

1024
00:49:22,639 --> 00:49:24,480
that doesn't require an interactive render mode.

1025
00:49:24,599 --> 00:49:24,920
Speaker 1: That's cool.

1026
00:49:24,920 --> 00:49:27,239
Speaker 3: Can think of it as like a modern replacement for

1027
00:49:27,360 --> 00:49:29,559
the like remember the old like jquera and uptrist to

1028
00:49:29,599 --> 00:49:32,239
validation libraries that we have for NBC. I think of

1029
00:49:32,239 --> 00:49:33,800
it as like a modern replacement for that that you

1030
00:49:33,840 --> 00:49:37,199
can use with with Blazer. And since it might as well,

1031
00:49:37,239 --> 00:49:39,400
we'll probably also make it work for existing NBC and

1032
00:49:39,480 --> 00:49:41,400
Razor Pages apps too, so you maybe can get rid

1033
00:49:41,400 --> 00:49:42,480
of that jQuery dependency.

1034
00:49:42,519 --> 00:49:45,679
Speaker 1: Finally that well, well you kind of did that already

1035
00:49:45,760 --> 00:49:50,400
with with the forms validation, not forms validation, but forms processing. Right,

1036
00:49:50,880 --> 00:49:53,719
you can do that without interactivity because you do a fetch,

1037
00:49:53,719 --> 00:49:56,960
a JavaScript fetch or something like that, and so it works,

1038
00:49:57,000 --> 00:50:00,400
but but you still don't have state, so you kind

1039
00:50:00,400 --> 00:50:02,440
of can be fooled into thinking, oh, I can just

1040
00:50:02,440 --> 00:50:04,760
put a class level variable here. Yeah, you get pretty close,

1041
00:50:04,800 --> 00:50:05,519
You get pretty close.

1042
00:50:05,599 --> 00:50:10,079
Speaker 3: Yeah. I think that's the enhanced navigation, enhanced form form

1043
00:50:10,119 --> 00:50:12,519
handling that we have in Blazer, where it will feel

1044
00:50:12,599 --> 00:50:15,559
like a SPA app even though it's actually doing service

1045
00:50:15,559 --> 00:50:18,360
side rendering for the form and even that case though

1046
00:50:18,360 --> 00:50:20,800
the validation is still going to happen server side. If

1047
00:50:20,800 --> 00:50:22,880
you want to try and even prevent the request, you

1048
00:50:22,960 --> 00:50:25,519
still want that client side validation to kick in to

1049
00:50:25,519 --> 00:50:27,679
say like hold on, you still got your email or

1050
00:50:27,760 --> 00:50:31,280
phone number miss miss uh misformatted. And so that's what

1051
00:50:31,400 --> 00:50:34,320
this uh, this feature will enables. You can have a

1052
00:50:34,360 --> 00:50:36,679
client side validation model without you having to really go

1053
00:50:36,760 --> 00:50:38,239
full and full on interactive.

1054
00:50:39,000 --> 00:50:41,199
Speaker 2: Awesome. Yeah, so a bunch of stuff there.

1055
00:50:41,360 --> 00:50:43,039
Speaker 1: What else in dot net eleven?

1056
00:50:43,519 --> 00:50:46,599
Speaker 3: So on the web assembly side, one cool thing we

1057
00:50:46,800 --> 00:50:50,280
we're adding is a new a new template for building

1058
00:50:50,760 --> 00:50:55,280
uh dot net based webworkers uh in the web platform.

1059
00:50:55,320 --> 00:50:57,159
So the webworkers are right? Are these kind of like

1060
00:50:57,599 --> 00:50:59,519
it's like a separate process that you can spin up

1061
00:50:59,559 --> 00:51:02,039
in a in a browser and offload some work from

1062
00:51:02,119 --> 00:51:05,760
the UI thread and do something in the background. One

1063
00:51:05,800 --> 00:51:08,519
of the top uploaded features we have in our backlog

1064
00:51:08,599 --> 00:51:11,840
is support for multi threading in Blaser web assembly. Yeah,

1065
00:51:11,880 --> 00:51:13,880
we wanted it forever and I promised it actually for

1066
00:51:14,239 --> 00:51:17,000
your multiple years. Is that we're going to do it,

1067
00:51:17,239 --> 00:51:19,920
and we had been working hard on it. But on

1068
00:51:20,559 --> 00:51:24,239
the mono based run time, and now, as we talked earlier,

1069
00:51:24,280 --> 00:51:27,119
we're consolidating our run times to be based on core CLR,

1070
00:51:27,280 --> 00:51:29,159
so we need to get that done first before we

1071
00:51:29,159 --> 00:51:31,599
can deliver multi threading and then do the multi threading

1072
00:51:31,760 --> 00:51:34,039
on top of course CLR. So the multi threading work

1073
00:51:34,079 --> 00:51:36,000
is kind of blocked right now. It's kind of pause,

1074
00:51:36,360 --> 00:51:40,320
so sort of as a peace offering to our users

1075
00:51:40,360 --> 00:51:43,480
that really need some way to move work off of

1076
00:51:43,559 --> 00:51:45,960
the UI thread to free up.

1077
00:51:46,360 --> 00:51:48,239
Speaker 1: The main So the web worker is kind of like

1078
00:51:48,280 --> 00:51:51,039
a service worker in a pwa A, right, is it

1079
00:51:51,159 --> 00:51:52,079
kind of the same idea?

1080
00:51:52,840 --> 00:51:55,000
Speaker 3: Yeah, yeah, very very very similar. Think it's the same

1081
00:51:55,079 --> 00:51:56,719
underlying infrastructure.

1082
00:51:56,159 --> 00:51:57,639
Speaker 1: But it's C sharp so yeah.

1083
00:51:57,679 --> 00:51:59,360
Speaker 3: So what you can do is you can have a

1084
00:51:59,679 --> 00:52:02,320
a donn It webworker that your Blazer web assembly app

1085
00:52:02,360 --> 00:52:04,639
references and you can use that to fire up some

1086
00:52:04,639 --> 00:52:06,559
work that happens in the background, like if you have

1087
00:52:06,599 --> 00:52:09,159
some really CPU intensive stuff that you don't want to

1088
00:52:09,159 --> 00:52:12,360
have happen on the UI thread. Donnet webworker template will

1089
00:52:12,400 --> 00:52:16,280
allow you to do that. Nice, so that'll be available,

1090
00:52:16,280 --> 00:52:19,320
and it's general purpose. It's not actually even Blazer specific,

1091
00:52:19,400 --> 00:52:21,639
like there's nothing, there's no Blazer component model in this thing.

1092
00:52:21,679 --> 00:52:23,199
It's just a way to run dot neit code on

1093
00:52:23,239 --> 00:52:27,039
a webworker. It came up in part because one of

1094
00:52:27,079 --> 00:52:30,440
our internal teams at Microsoft that the team that builds

1095
00:52:31,199 --> 00:52:33,599
Copilot Studio, like that the tool that you use to

1096
00:52:33,599 --> 00:52:36,760
build like custom agents that run in Microsoft Copilot Microsoft

1097
00:52:36,760 --> 00:52:40,320
through sixty five Copilot. Copilot Studio actually uses our Donet

1098
00:52:40,360 --> 00:52:43,840
web assembly run time for their agentic infrastructure, and they

1099
00:52:43,920 --> 00:52:46,039
run a lot of it client side on web Assembly,

1100
00:52:46,599 --> 00:52:50,119
but they do it on a background webworker. They don't

1101
00:52:50,159 --> 00:52:52,079
do it on the UI thread which when we found

1102
00:52:52,079 --> 00:52:54,480
out about this, we were like, wow, that's like amazing

1103
00:52:54,480 --> 00:52:55,800
that you were able to figure out how to do that,

1104
00:52:55,880 --> 00:53:00,760
because if it wasn't an officially supported feature, like they've

1105
00:53:00,800 --> 00:53:02,599
gone in and seeing the found all the run time

1106
00:53:02,639 --> 00:53:05,480
APIs and just worked it out themselves. And we're like,

1107
00:53:05,519 --> 00:53:08,639
we should probably, you know, make this more first class,

1108
00:53:08,639 --> 00:53:10,559
like make it a thing that that everyone can do

1109
00:53:10,639 --> 00:53:14,199
and everyone can use. So we're standardizing that pattern in

1110
00:53:14,280 --> 00:53:15,920
eleven and giving you a template so that you can

1111
00:53:15,960 --> 00:53:18,599
do it. And also it helps mitigate a lot of

1112
00:53:18,679 --> 00:53:21,239
these scenarios that people want multi threading for at least

1113
00:53:21,239 --> 00:53:25,159
as a temporary measure. I do want to some caveats

1114
00:53:25,199 --> 00:53:29,039
that you are spinning up. You know, basically two run times, right,

1115
00:53:29,039 --> 00:53:30,880
you have the runtime on the main thread and another

1116
00:53:30,960 --> 00:53:33,360
runtime in the background thread. So memory usage can be

1117
00:53:33,559 --> 00:53:37,519
heavy with this pattern, so use it judiciously. If you

1118
00:53:37,559 --> 00:53:39,920
don't need it, don't don't. Don't don't go spinning up

1119
00:53:39,920 --> 00:53:42,000
web workers left and right in your in your application.

1120
00:53:42,039 --> 00:53:44,840
But for those people who have those CPU intensive workloads,

1121
00:53:44,880 --> 00:53:46,920
things they need to off move off the UI thread.

1122
00:53:46,960 --> 00:53:48,320
This is a pattern that you can now.

1123
00:53:48,400 --> 00:53:50,360
Speaker 1: So don't run it on one of those old Android

1124
00:53:50,400 --> 00:53:53,039
phones you've found in your drawer of broken dreams.

1125
00:53:53,639 --> 00:53:54,239
Speaker 3: Maybe not?

1126
00:53:56,119 --> 00:53:58,880
Speaker 2: Who's running proto anymore?

1127
00:53:59,159 --> 00:54:01,519
Speaker 1: Sandwich screep saw.

1128
00:54:01,280 --> 00:54:07,840
Speaker 2: Which uh the drawer broken dreams?

1129
00:54:08,159 --> 00:54:09,360
Speaker 1: I still have mine?

1130
00:54:09,920 --> 00:54:13,760
Speaker 2: Yeah, pack all those phone phones, those old old phones.

1131
00:54:14,320 --> 00:54:16,400
Speaker 3: Other cool things. I see. Sharp unions I think are

1132
00:54:16,440 --> 00:54:19,400
finally coming right, like C sharp unions.

1133
00:54:19,440 --> 00:54:21,840
Speaker 2: Yeah, yeah, they've they've been hammered on that for a

1134
00:54:21,880 --> 00:54:23,360
long time, trying to get that right.

1135
00:54:24,800 --> 00:54:26,480
Speaker 1: That is you're right, you know, I think you and

1136
00:54:26,559 --> 00:54:28,960
Kathleen are the only ones who understand what that is.

1137
00:54:31,679 --> 00:54:34,079
Speaker 3: We have this are right? Like you want to return

1138
00:54:34,159 --> 00:54:36,960
multiple types from a controller action or a minimal API

1139
00:54:37,199 --> 00:54:40,440
like either the actual result or a you know, some

1140
00:54:40,800 --> 00:54:45,039
HP status code thing. All those like types that have

1141
00:54:45,400 --> 00:54:48,519
multiple genetic parameters where you're basically sort of handcrafting unions

1142
00:54:49,639 --> 00:54:52,599
in in a core using a proper sea sharp union feature.

1143
00:54:52,599 --> 00:54:54,159
I think we'll make a lot of those patterns more

1144
00:54:54,280 --> 00:54:57,760
for more natural. We'll need to do framework work to

1145
00:54:57,960 --> 00:54:59,719
enable that in the ACE.

1146
00:55:00,360 --> 00:55:03,079
Speaker 1: I mean, don't mere mortals just create a class to return.

1147
00:55:03,639 --> 00:55:06,639
Speaker 3: Yeah you can. I mean, nothing stop you from sort

1148
00:55:06,679 --> 00:55:09,920
of creating your own union today manually. It just gives

1149
00:55:09,920 --> 00:55:11,559
you a language feature for for doing.

1150
00:55:11,480 --> 00:55:14,039
Speaker 1: Those things, right, I suppose. So if you really want

1151
00:55:14,079 --> 00:55:16,960
to impress somebody on a job interview, you say, well,

1152
00:55:17,159 --> 00:55:21,599
just spent a union and you got the job.

1153
00:55:21,719 --> 00:55:24,239
Speaker 3: My friend, I didn't know this was like a like

1154
00:55:24,320 --> 00:55:27,639
a NEWT features. I'm using unions of my.

1155
00:55:29,239 --> 00:55:31,440
Speaker 2: Only the cool kids, that's right.

1156
00:55:33,519 --> 00:55:37,280
Speaker 3: Yeah, And of course there's all the AI stuff which

1157
00:55:37,280 --> 00:55:39,320
would have to work out half to day something.

1158
00:55:40,519 --> 00:55:42,760
Speaker 2: You know what. I'm not unhappy we didn't talk much

1159
00:55:42,760 --> 00:55:46,239
about AI. It happens often enough, but we are.

1160
00:55:46,440 --> 00:55:49,320
Speaker 3: We will pay pay homage to the the AI gods

1161
00:55:49,400 --> 00:55:51,400
to make sure we do all the I think so

1162
00:55:51,559 --> 00:55:52,559
Microsoftic Centers. A.

1163
00:55:53,000 --> 00:55:56,239
Speaker 2: Hey, I'm excited about the past key implementation. That makes

1164
00:55:56,280 --> 00:55:59,679
me happy because you know, by bit getting away from

1165
00:55:59,679 --> 00:56:02,079
past ors is a good thing. So there's a lot

1166
00:56:02,079 --> 00:56:05,119
of cool stuff coming. And I really like the way

1167
00:56:05,159 --> 00:56:07,760
you talk about asp core as a whole. It doesn't

1168
00:56:07,800 --> 00:56:11,480
matter whether your web forms or MVC or raizor or Blazer.

1169
00:56:11,800 --> 00:56:12,400
It's all the same.

1170
00:56:12,440 --> 00:56:16,239
Speaker 3: It's one framework and one dot web development story. That's

1171
00:56:16,280 --> 00:56:18,559
that's that's pretty important for what we're trying to.

1172
00:56:18,239 --> 00:56:20,719
Speaker 2: Deliver well in airon lies, you know the issue and

1173
00:56:21,119 --> 00:56:23,119
even going back to the comment, which is too many

1174
00:56:23,239 --> 00:56:26,239
UXes and so the C a unified group out there

1175
00:56:26,760 --> 00:56:29,440
presenting one, you know, a set of ways to do

1176
00:56:29,519 --> 00:56:31,719
things that work together. I love everything about that.

1177
00:56:32,519 --> 00:56:35,360
Speaker 1: Yeah, anything else you want to spring on us Dan

1178
00:56:35,480 --> 00:56:36,840
here at the last minute.

1179
00:56:36,559 --> 00:56:39,679
Speaker 3: Well, I'll show just one one little AI think just

1180
00:56:39,719 --> 00:56:40,519
one little.

1181
00:56:40,239 --> 00:56:42,239
Speaker 2: Cool Okay, one little AI think brother, hit.

1182
00:56:42,119 --> 00:56:44,320
Speaker 3: Me one thing we are working on in Blaze, and

1183
00:56:44,480 --> 00:56:45,960
we showed a little bit of this at dot net

1184
00:56:45,960 --> 00:56:48,840
comp But I think it's cool is we're working like

1185
00:56:48,880 --> 00:56:51,880
when you're trying to build an agentic app, right, an

1186
00:56:51,880 --> 00:56:55,599
app that surfaces AI functionality to your users. You know

1187
00:56:55,599 --> 00:56:57,559
not you're going to build it with a I two,

1188
00:56:57,599 --> 00:56:59,880
but like the actually having an AI feature in the app.

1189
00:57:00,079 --> 00:57:02,559
One of the problems you offer encounter is, well, I

1190
00:57:02,639 --> 00:57:04,800
have some client and it needs to talk to the

1191
00:57:04,800 --> 00:57:06,960
server and the servers where I'm really accessing the AI

1192
00:57:07,119 --> 00:57:10,039
resources like Microsoft Foundry or whatever wherever your model is

1193
00:57:10,039 --> 00:57:13,880
is hosted. How should I set up that channel of communication?

1194
00:57:14,440 --> 00:57:18,480
How do I deal with the streamed results from from

1195
00:57:18,679 --> 00:57:21,519
the AI the agent, Like, you know it's going to

1196
00:57:21,519 --> 00:57:23,440
stream you back a bunch of tokens. How do I

1197
00:57:23,480 --> 00:57:25,880
deal with that? What if I want to handle multimodal inputs,

1198
00:57:25,920 --> 00:57:27,440
like I want to be able to talk to my agent, Now,

1199
00:57:27,440 --> 00:57:29,400
I've got to figure out an API surface area for

1200
00:57:29,440 --> 00:57:31,760
dealing with that. Maybe I want to send it images

1201
00:57:31,960 --> 00:57:36,800
or camera input. There's a protocol that's been defined called

1202
00:57:37,199 --> 00:57:41,239
AGUI Agent to QI I guess what's short for. That

1203
00:57:41,360 --> 00:57:46,360
defines that interaction between front ends and their AGENTIC Backe

1204
00:57:46,480 --> 00:57:48,719
and so we've been working with our friends on the

1205
00:57:48,719 --> 00:57:53,000
Foundry chain that built the Microsoft Agent Framework library to

1206
00:57:53,159 --> 00:57:57,760
add AGUI support to that framework so that you can

1207
00:57:57,800 --> 00:58:01,199
easily stand up an AGUI endpoint and then on the client,

1208
00:58:01,239 --> 00:58:03,400
like in your Blazer app or your Blazer Hybrid app

1209
00:58:03,480 --> 00:58:06,239
or your Maui app. We're going to give you Blazer

1210
00:58:06,320 --> 00:58:08,880
Ai components that make it just really trivial then for

1211
00:58:08,920 --> 00:58:11,679
you to build out that agentic user interface that then

1212
00:58:11,760 --> 00:58:14,199
talks to that back end. So that's something that we're

1213
00:58:14,199 --> 00:58:17,719
working pretty hard on with our friends and partners over

1214
00:58:17,719 --> 00:58:20,400
at co pilot Kit who wrote the AGUI spec. They've

1215
00:58:20,440 --> 00:58:23,000
been great partners to work with. We have some early

1216
00:58:23,039 --> 00:58:26,320
preview bits for the AGUI support that's already out There's

1217
00:58:26,440 --> 00:58:29,239
if you really hunt around in the agent Framework Repel,

1218
00:58:29,280 --> 00:58:31,320
you can even find some branches with prototypes of the

1219
00:58:31,320 --> 00:58:34,599
Blazer Ai components that we've been working on, and we

1220
00:58:34,639 --> 00:58:37,159
expect to get those out here relatively short order for

1221
00:58:37,159 --> 00:58:40,800
people to be able to try so awesome. Agentic UI

1222
00:58:40,960 --> 00:58:43,519
is the big thing that we're working on in the

1223
00:58:43,519 --> 00:58:44,519
eleven time frame as.

1224
00:58:44,400 --> 00:58:49,119
Speaker 2: Well, the new term of concept. Okay, I love it.

1225
00:58:49,440 --> 00:58:52,320
Speaker 1: Yeah, thanks Dan, I'm sure we'll talk about that more

1226
00:58:52,360 --> 00:58:56,280
next time we talk to you. Sounds great, Yeah, and uh,

1227
00:58:56,639 --> 00:58:59,840
speaking of talking next time, We'll talk to you next time,

1228
00:59:00,079 --> 00:59:23,760
dear listener on dot net rocks. Dot net rocks is

1229
00:59:23,800 --> 00:59:27,480
brought to you by Franklin's Net and produced by Pop Studios,

1230
00:59:27,840 --> 00:59:31,880
a full service audio, video and post production facility located

1231
00:59:31,920 --> 00:59:34,840
physically in New London, Connecticut, and of course in the

1232
00:59:34,880 --> 00:59:38,800
cloud online at pwop dot com.

1233
00:59:38,960 --> 00:59:41,119
Speaker 5: Visit our website at d O T N E t

1234
00:59:41,360 --> 00:59:45,360
R O c k S dot com for RSS feeds, downloads,

1235
00:59:45,519 --> 00:59:49,199
mobile apps, comments, and access to the full archives going

1236
00:59:49,239 --> 00:59:52,639
back to show number one, recorded in September two thousand

1237
00:59:52,639 --> 00:59:52,920
and two.

1238
00:59:53,519 --> 00:59:55,880
Speaker 1: And make sure you check out our sponsors. They keep

1239
00:59:55,960 --> 00:59:59,119
us in business. Now go write some code. See you

1240
00:59:59,159 --> 00:59:59,559
next time.

1241
01:00:00,639 --> 01:00:09,079
Speaker 3: Chapters Middle vand day A Summer times is hard and

1242
01:00:09,320 --> 01:00:10,800
my taxes in line

