1
00:00:00,960 --> 00:00:02,879
Speaker 1: Hey Richard, Hey Carl, what do you know?

2
00:00:03,120 --> 00:00:06,679
Speaker 2: Well, I know that our friend Michelle Rubusta Monte is

3
00:00:06,719 --> 00:00:08,880
with us to tell us about something that's going on

4
00:00:09,519 --> 00:00:11,199
adjacent to DEV Intersection.

5
00:00:11,240 --> 00:00:12,039
Speaker 1: What is it?

6
00:00:12,039 --> 00:00:16,199
Speaker 3: It's cybersecurity Intersection. Let's let Michelle tell that story.

7
00:00:16,679 --> 00:00:21,320
Speaker 4: Hey Michelle, Hey Carl, Hey Richard, how are you.

8
00:00:21,000 --> 00:00:22,839
Speaker 2: Tell us about cybersecurity Intersection?

9
00:00:23,480 --> 00:00:26,920
Speaker 4: Well, so, Richard and I are partnering with the group

10
00:00:27,000 --> 00:00:30,359
that does DEV Intersection and next Gen AI, and we

11
00:00:30,600 --> 00:00:34,200
are putting on a new conference dedicated to one hundred

12
00:00:34,240 --> 00:00:40,000
percent security focused topics. And I mean, honestly, the lineup

13
00:00:40,039 --> 00:00:43,679
of speakers is incredible. We have Paula A. Jenis, who's

14
00:00:43,719 --> 00:00:47,600
here from Poland and does keynotes all over the world

15
00:00:47,719 --> 00:00:50,600
and is one of the top rated RSA speakers and

16
00:00:50,640 --> 00:00:53,159
black hat speaker. We're so lucky to have her. But

17
00:00:53,240 --> 00:00:56,000
she's not only keynoting, she's got a workshop teaches you

18
00:00:56,039 --> 00:01:01,039
about protecting your environments against hackers and shows you about

19
00:01:01,280 --> 00:01:03,719
how to you know, do attacks so that you can

20
00:01:03,759 --> 00:01:07,840
prevent them. It's pretty cool and sessions like that as well.

21
00:01:07,840 --> 00:01:10,799
But we also have speakers from Microsoft. We have we

22
00:01:10,840 --> 00:01:15,120
have speakers that specialize in you know secure coding practices,

23
00:01:15,640 --> 00:01:20,439
Azure security, Zuero, trust architectures on Azure UH and people

24
00:01:20,439 --> 00:01:23,519
who do decision maker tracks, so things around governance policy

25
00:01:23,560 --> 00:01:26,200
and you know how to how to manage and your

26
00:01:26,200 --> 00:01:29,480
production operations keep them secure. So it's an amazing group

27
00:01:29,519 --> 00:01:31,040
of speakers, really excited about it.

28
00:01:31,120 --> 00:01:33,560
Speaker 2: And I think I can count myself among the group

29
00:01:33,599 --> 00:01:34,599
of speakers there.

30
00:01:35,040 --> 00:01:37,120
Speaker 4: Well, yes you can. That is great.

31
00:01:37,480 --> 00:01:42,159
Speaker 2: Yeah, I'm doing a securing Blazer Server applications talk and

32
00:01:42,239 --> 00:01:45,959
also I think we're doing a Security this Week live

33
00:01:46,040 --> 00:01:48,480
show there somewhere that is correct.

34
00:01:48,719 --> 00:01:51,200
Speaker 4: Yeah, we'll be recording Security this Week Live. We're going

35
00:01:51,239 --> 00:01:54,719
to have a great panel with some folks. The interesting

36
00:01:54,719 --> 00:01:57,920
thing here is we don't really have a Microsoft and

37
00:01:58,000 --> 00:02:02,120
dot net and Azure focused toecurity conference yet, so that's

38
00:02:02,159 --> 00:02:05,159
the reason we're putting this on as well. You know

39
00:02:05,200 --> 00:02:08,280
there are other security conferences, but they have a spread

40
00:02:08,280 --> 00:02:10,439
of topics that maybe don't focus on the things you

41
00:02:10,520 --> 00:02:13,080
do day to day. And you know this overlaps with

42
00:02:13,199 --> 00:02:17,560
again our community of folks that specialize in again dot net,

43
00:02:17,680 --> 00:02:21,039
Azure and yeah, they need to keep it secure too,

44
00:02:21,280 --> 00:02:22,840
So with tons of talks.

45
00:02:23,719 --> 00:02:27,240
Speaker 3: Cyber Intersection is part of a trio of conferences we're doing.

46
00:02:27,280 --> 00:02:30,360
They have Intersection alongside the next Gen AI Conference all

47
00:02:30,439 --> 00:02:34,680
in Orlando the week of October fifth through tenth. That's

48
00:02:34,759 --> 00:02:38,080
workshops and the main conference. And you can get a

49
00:02:38,120 --> 00:02:41,400
special registration code if you sign up through Cybersecurity Intersection

50
00:02:41,639 --> 00:02:42,360
dot com.

51
00:02:42,680 --> 00:02:47,400
Speaker 4: Yeah, so if you sign up at Cybersecurity Intersection dot com,

52
00:02:47,599 --> 00:02:52,520
then you put in this code so Alliance cyber three

53
00:02:52,599 --> 00:02:56,319
hundred and you'll get three hundred off the entry price.

54
00:02:56,560 --> 00:02:59,639
So that's a special code that only works at cybersecurity

55
00:03:00,599 --> 00:03:04,439
dot com. And then you have access to all the conferences.

56
00:03:04,479 --> 00:03:09,400
Speaker 2: Like Richard said, Wow, that's cool. Thanks Michelle. I'm looking

57
00:03:09,439 --> 00:03:24,080
forward to it and I'll see you there. Hey, guess what.

58
00:03:24,159 --> 00:03:27,199
It's dot net Rocks. I'm Carl Franklin and I'm Richard

59
00:03:27,240 --> 00:03:31,360
Kemp and we're here for episode number nineteen hundred and

60
00:03:31,400 --> 00:03:32,080
sixty eight.

61
00:03:32,639 --> 00:03:34,639
Speaker 1: A good year for your listening.

62
00:03:34,240 --> 00:03:40,199
Speaker 2: Pleasure, for your listening pleasure. Yes, So David Wensche is

63
00:03:40,240 --> 00:03:42,680
here and we're going to talk to him in a minute.

64
00:03:42,719 --> 00:03:45,840
But first, how are you, mister Campbell. I haven't checked

65
00:03:45,840 --> 00:03:46,919
in with you in a while.

66
00:03:46,719 --> 00:03:50,039
Speaker 3: You know, post summer going into the fall conference season,

67
00:03:50,080 --> 00:03:54,039
I'm literally going to be traveling all of October. I'm

68
00:03:54,039 --> 00:03:59,879
doing like five shows and two user groups back to back. Wow,

69
00:04:00,240 --> 00:04:01,800
and the boss is not coming with me because you

70
00:04:01,879 --> 00:04:03,639
looked at it? What nah?

71
00:04:03,960 --> 00:04:06,080
Speaker 2: I was just that was my next question. Is Stacy

72
00:04:06,120 --> 00:04:07,080
coming with you?

73
00:04:07,120 --> 00:04:10,080
Speaker 3: No, no, she's not. We'll be together a dev intersection.

74
00:04:10,199 --> 00:04:13,120
Oh cool? Yeah, well you and I. Stacy's not coming

75
00:04:13,120 --> 00:04:16,519
for that one either, but yeah, okay Intersection and then

76
00:04:16,519 --> 00:04:20,160
the Azure Dev Summit and then the Norwegian show is

77
00:04:20,199 --> 00:04:22,120
this tron time and Stavanger.

78
00:04:22,360 --> 00:04:24,560
Speaker 2: I looked at my schedule for dev Intersection. I signed

79
00:04:24,639 --> 00:04:26,680
up for a lot of stuff. Yeah, yeah, and put

80
00:04:26,720 --> 00:04:28,160
you to work there. I'm going to be well, you

81
00:04:28,279 --> 00:04:30,920
sign up for something out yourself. I know, I brought

82
00:04:30,920 --> 00:04:31,519
it on myself.

83
00:04:31,639 --> 00:04:31,879
Speaker 1: Yeah.

84
00:04:31,920 --> 00:04:34,000
Speaker 3: You made that talk with Maddie, which is really going

85
00:04:34,040 --> 00:04:36,879
to be cool. You know, it's spiifying.

86
00:04:37,639 --> 00:04:40,279
Speaker 2: Rocks dot com in front of a live audience.

87
00:04:40,560 --> 00:04:43,360
Speaker 3: I think you're crazy, but I love it. It is crazy,

88
00:04:43,560 --> 00:04:46,839
you know me as the conference owner, delighted me as

89
00:04:46,839 --> 00:04:47,560
your co host.

90
00:04:47,879 --> 00:04:48,560
Speaker 1: What are you doing?

91
00:04:48,600 --> 00:04:54,319
Speaker 2: What are you doing? Especially because you've seeing my code right?

92
00:04:54,399 --> 00:04:54,720
Speaker 1: Yeah? I know.

93
00:04:54,879 --> 00:04:59,240
Speaker 3: I you usually don't fly that close to the sun. Right,

94
00:04:59,720 --> 00:05:02,920
you know that, guy. I've seen your demos. They're polished,

95
00:05:02,920 --> 00:05:04,680
their routine they work every time.

96
00:05:04,720 --> 00:05:09,560
Speaker 2: You know, they haven't all been polished. I've had some clams.

97
00:05:09,759 --> 00:05:11,680
Speaker 3: It's funny anyway, it's going to be a riot.

98
00:05:13,120 --> 00:05:18,560
Speaker 2: In the early days of Zamorin, I remember spending the

99
00:05:18,560 --> 00:05:22,399
first half of the workshop just getting people to Hello

100
00:05:22,480 --> 00:05:24,639
World because it was so difficult.

101
00:05:24,800 --> 00:05:27,519
Speaker 3: No, you should have done the workshop called get Zamoran

102
00:05:27,560 --> 00:05:28,639
running on your machine.

103
00:05:28,720 --> 00:05:31,759
Speaker 2: Yeah, that's basically the first half of the day. Yeah,

104
00:05:31,920 --> 00:05:34,240
it got easier as time went on, but back in

105
00:05:34,279 --> 00:05:37,120
the day, that's what we did. All right, let's run

106
00:05:37,199 --> 00:05:38,920
the crazy music for better no framework?

107
00:05:39,000 --> 00:05:47,959
Speaker 1: Awesome? All right, what do you got?

108
00:05:48,000 --> 00:05:50,920
Speaker 2: Well? Me, being a Blazer guy, I found this trending

109
00:05:51,079 --> 00:05:56,399
and true repo on GitHub from Mista Howard m I

110
00:05:56,600 --> 00:06:00,040
S T A h O W A r D And

111
00:06:00,160 --> 00:06:04,079
it's Blazer dash. Why Dash did Dash? You Dash render?

112
00:06:04,680 --> 00:06:06,639
Blazer Why did you render?

113
00:06:10,800 --> 00:06:14,959
Speaker 3: So it's a powerful I wonder what this does, carlus.

114
00:06:15,680 --> 00:06:18,519
Speaker 2: It's a performance monitoring and debugging tool for Blazer apps.

115
00:06:18,560 --> 00:06:24,480
Helps identify unnecessary rerenders and optimize component performance across server,

116
00:06:25,120 --> 00:06:29,639
web assembly and service side rendered environments. That's fantastic, And

117
00:06:29,680 --> 00:06:33,879
if you look down the features, one of the one

118
00:06:33,920 --> 00:06:39,120
of the best one is unnecessary render detection. Find components

119
00:06:39,120 --> 00:06:43,439
that re render without actual changes. Interesting and it's so

120
00:06:43,519 --> 00:06:47,040
easy to do. Basically, anytime you do a state has

121
00:06:47,160 --> 00:06:51,160
changed in Blazer, you're forcing a rerender, but you don't

122
00:06:51,160 --> 00:06:53,839
always need to. And I find that this is one

123
00:06:53,879 --> 00:06:59,120
of the things the nuances of Blazer that most developers

124
00:06:59,120 --> 00:07:02,360
don't understand. When should I do state has changed, when

125
00:07:02,360 --> 00:07:06,240
should I not? And when should I do invoke sync

126
00:07:06,319 --> 00:07:08,399
state has changed, which has more to do with the

127
00:07:08,519 --> 00:07:13,040
UI thread than it does a sink. But you basically,

128
00:07:13,319 --> 00:07:17,639
anytime you have a UI and event like a button

129
00:07:17,720 --> 00:07:21,680
click or something like that that's triggered from UI and

130
00:07:21,720 --> 00:07:24,600
you write some code, you do not have to rerender

131
00:07:24,680 --> 00:07:28,000
after that, it's automatically done. When you do have to

132
00:07:28,040 --> 00:07:30,839
rerender is when you have like a callback from JavaScript

133
00:07:31,360 --> 00:07:34,800
or a timer or something that isn't started on the

134
00:07:34,920 --> 00:07:38,240
UI thread. That's when you do that. But doing some

135
00:07:38,319 --> 00:07:40,800
code reviews and stuff, I see it's all over the map.

136
00:07:40,839 --> 00:07:44,040
People just throw state has changed in there as an

137
00:07:44,040 --> 00:07:48,519
insurance policy, but it's unnecessary. So this is a great

138
00:07:48,519 --> 00:07:49,240
tool for that.

139
00:07:49,399 --> 00:07:49,839
Speaker 1: Awesome.

140
00:07:50,040 --> 00:07:52,800
Speaker 2: Yeah, well that's what I got. Who's talking to us today?

141
00:07:52,839 --> 00:07:55,680
Speaker 3: Richard grabbed a comment off a show fourteen seventy five,

142
00:07:56,319 --> 00:07:59,000
just back in September twenty seventeen, or were talked to

143
00:07:59,040 --> 00:08:03,360
Jesse Shadwick about the new Razor Pages in Core to

144
00:08:03,959 --> 00:08:06,319
Core two. A bit of a flashback. I know, I

145
00:08:06,319 --> 00:08:08,639
love it, Oh my god, but the comments are awesome

146
00:08:08,680 --> 00:08:09,199
on this show.

147
00:08:09,240 --> 00:08:10,920
Speaker 2: Wait a minute, what episode number was that.

148
00:08:10,879 --> 00:08:12,800
Speaker 3: Fourteen seventy five, five hundred shows ago?

149
00:08:12,839 --> 00:08:15,319
Speaker 2: Oh my god, that's like right before Columbus Sail the

150
00:08:15,360 --> 00:08:22,240
Ocean Blue. We weren't doing the what happened this year

151
00:08:22,279 --> 00:08:23,199
back then? Yeah?

152
00:08:23,279 --> 00:08:24,120
Speaker 1: No, please don't.

153
00:08:25,079 --> 00:08:27,000
Speaker 3: All of that history is questionable at best.

154
00:08:27,360 --> 00:08:27,959
Speaker 2: Yeah right.

155
00:08:28,079 --> 00:08:31,319
Speaker 3: This comment comes from Saint Forever, which I suspect is

156
00:08:31,360 --> 00:08:35,320
not their name. Also, a regular comment on the show

157
00:08:35,480 --> 00:08:39,320
is including today the current shows. Wow, and they go

158
00:08:39,360 --> 00:08:41,200
on to say another great show. I've been looking forward

159
00:08:41,200 --> 00:08:43,039
to the show ever since it was first listed as

160
00:08:43,039 --> 00:08:45,000
an upcoming show because we used to do that, used

161
00:08:45,039 --> 00:08:47,639
to show the upcoming roster. We don't anymore, right indeed.

162
00:08:47,679 --> 00:08:50,080
Asp doi net Coror Razor Pages is a well architected

163
00:08:50,120 --> 00:08:53,600
programming model for developing modern WebUI. Microsoft recommended it as

164
00:08:53,600 --> 00:08:56,320
the best way to build both simple and complex webuyes

165
00:08:56,679 --> 00:08:58,519
and as the way forward for billy web locations. With

166
00:08:58,600 --> 00:09:02,399
all all the MVCs ceremony and please Carl and Richard

167
00:09:02,440 --> 00:09:05,039
at BEG you keep them coming great shows on Razor pages.

168
00:09:05,360 --> 00:09:07,480
Developers will adopt this program all the logue full well

169
00:09:07,519 --> 00:09:09,360
the Dotta ros Dowy shows on Razor Pages, and it

170
00:09:09,399 --> 00:09:13,679
will help them make the choice. Yeah, okay, I mean

171
00:09:13,720 --> 00:09:17,360
it's been a few years, but sure, let's do one. Yeah, okay, sure,

172
00:09:18,000 --> 00:09:20,360
so thanks. See, Yeah, we're with you. We're a big

173
00:09:20,399 --> 00:09:22,279
fan of Razor Pages. That's certainly what the run as

174
00:09:22,440 --> 00:09:26,559
site is built out of. And although the the Dotta

175
00:09:26,639 --> 00:09:29,519
rock side is Blazer, of course that's my friend Carl's

176
00:09:29,519 --> 00:09:32,559
a big Blazer fan. Getting smallt we'll we'll keep on

177
00:09:32,799 --> 00:09:35,039
doing a thing. Yeah, And a copy of music Coby

178
00:09:35,120 --> 00:09:36,159
is on its way to you. And if you'd like

179
00:09:36,200 --> 00:09:37,720
a copy of music Cobe, I write a comment on

180
00:09:37,720 --> 00:09:39,840
the website at dot NetRocks dot com or on the facebooks.

181
00:09:39,840 --> 00:09:41,399
You publish every show there, and if you comment there

182
00:09:41,399 --> 00:09:43,360
and I'm reading the show, we'll send you copy of music.

183
00:09:43,360 --> 00:09:45,799
Speaker 2: Go and music to codeby is what we're talking about,

184
00:09:45,840 --> 00:09:48,919
still going strong after all these years. Twenty two tracks,

185
00:09:48,960 --> 00:09:52,799
twenty five minutes long each, perfect for those Pomedoro units

186
00:09:53,440 --> 00:09:56,240
when you want to slip in and out of focus easily,

187
00:09:57,000 --> 00:10:00,159
and that's at music toocoby dot net. Then we have

188
00:10:00,240 --> 00:10:05,320
the collection in MP three flak and wave formats, and

189
00:10:05,799 --> 00:10:08,440
that brings us to nineteen sixty eight, which is the

190
00:10:08,519 --> 00:10:11,720
leader of the show and the things that happened in

191
00:10:11,799 --> 00:10:16,600
nineteen sixty eight. Some bad things happened in nineteen sixty eight.

192
00:10:18,080 --> 00:10:23,679
Martin Luther King was assassinated, Bobby Kennedy was assassinated. The

193
00:10:23,799 --> 00:10:28,360
Tet offensive. On January thirtieth, Vietnamese forces launch a surprise

194
00:10:28,399 --> 00:10:37,360
attack across South Vietnam. The DNC protests in Chicago deep

195
00:10:37,399 --> 00:10:40,120
divisions over the deep Vietnam War and civil rights. I

196
00:10:40,120 --> 00:10:44,200
remember getting back to the Beatles from last week, Paul

197
00:10:44,240 --> 00:10:47,480
McCartney was saying, Yeah, they told us not to be political.

198
00:10:48,159 --> 00:10:50,240
You know when they say, what do you think about Vietnam? Oh,

199
00:10:50,279 --> 00:10:58,600
bad woo, bad wolf, that's it. Yeah, two thousand and one.

200
00:10:58,600 --> 00:11:03,399
A Space Odyssey was released in sixty eight. Yeah, Summer Olympics.

201
00:11:03,399 --> 00:11:07,399
First time the public heard the phrase artificial intelligence. Yeah, ever,

202
00:11:07,440 --> 00:11:11,080
that's right, that's the first time. Yeah. Summer Olympics in

203
00:11:11,159 --> 00:11:14,879
Mexico City notable for the black Power sloop by American

204
00:11:14,879 --> 00:11:19,200
athletes Tommy Smith and John Carlos during the metal ceremony.

205
00:11:19,720 --> 00:11:22,480
So you know, this is nothing new, this American No,

206
00:11:22,679 --> 00:11:23,679
this is part of the history.

207
00:11:23,799 --> 00:11:24,039
Speaker 1: Yeah.

208
00:11:24,279 --> 00:11:27,120
Speaker 2: A Civil Rights Act of nineteen sixty eight was signed

209
00:11:27,120 --> 00:11:30,679
into law. Great stuff, addressing housing discrimination and making a

210
00:11:30,759 --> 00:11:34,360
significant step in the civil rights movement. And I'll let

211
00:11:34,360 --> 00:11:35,519
you talk about Apollo eight.

212
00:11:35,799 --> 00:11:38,679
Speaker 3: Well, you know, an amazing because last week's show we

213
00:11:38,679 --> 00:11:41,639
were talking about the disaster apollowed one. Yeah, and the

214
00:11:41,720 --> 00:11:44,720
three astronauts lost there. And so just shy of two

215
00:11:44,799 --> 00:11:50,120
years later, the first humans ever leave the Earth and

216
00:11:50,200 --> 00:11:54,200
go beyond low Earth orbit. They Level Andmbornman and Andrews

217
00:11:54,240 --> 00:11:57,679
go around the Moon a free return trajectory. They get

218
00:11:57,679 --> 00:12:03,279
the famous photograph earth Rise by anders Yeah, and they

219
00:12:03,320 --> 00:12:04,399
read from Genesis.

220
00:12:04,639 --> 00:12:04,879
Speaker 1: Yeah.

221
00:12:04,919 --> 00:12:07,720
Speaker 3: But Level is also the guy who held his arm

222
00:12:07,759 --> 00:12:10,000
out at full length and covered the Earth with his thumb.

223
00:12:10,000 --> 00:12:14,399
It's like everything we've ever known YEP is behind my thumb. Yeah,

224
00:12:14,440 --> 00:12:17,840
it's crazy, crazy cool. It was an extraordinary moment and

225
00:12:17,879 --> 00:12:21,039
a real positive one, and for better or worse, it

226
00:12:21,159 --> 00:12:23,600
was also there was a serious picture at that moment

227
00:12:23,639 --> 00:12:25,759
to end the Apollo program. At that point, the Americans

228
00:12:25,799 --> 00:12:28,639
had finally were ahead on the space rice. They'd now

229
00:12:28,759 --> 00:12:30,360
done something that the Soviets had not done.

230
00:12:30,440 --> 00:12:35,159
Speaker 2: I don't think it can be exaggerated the importance of

231
00:12:35,200 --> 00:12:39,080
that image of Earth from space, the Earth rise, and

232
00:12:39,200 --> 00:12:41,440
the impact that it well, not just the earth rise,

233
00:12:41,519 --> 00:12:43,960
but you know, basically when we got out in the

234
00:12:44,000 --> 00:12:47,559
Shuttle and we're able to take these pictures that were

235
00:12:47,879 --> 00:12:51,000
where the Earth was bigger, but earth rise was in

236
00:12:51,039 --> 00:12:53,399
the pale blue dot, of course, but the picture of

237
00:12:53,399 --> 00:13:01,120
Earth from space is probably the biggest cultural achievement for

238
00:13:01,720 --> 00:13:05,279
the mythos of who are we as a race, as

239
00:13:05,320 --> 00:13:11,639
the human race, and with the biggest impact since you know,

240
00:13:11,799 --> 00:13:15,480
the Egyptians perhaps or any of the ancient.

241
00:13:15,919 --> 00:13:18,639
Speaker 3: Astronauts to this day still talk about the overview effect

242
00:13:18,679 --> 00:13:21,480
that you see that the borders are invisible. Yeah, right,

243
00:13:21,480 --> 00:13:23,799
that the planet as a whole one. It changes the

244
00:13:23,799 --> 00:13:27,559
way you perceive things, really does. I got two computing ones,

245
00:13:28,679 --> 00:13:30,399
and we'll talk about which one is more important. The

246
00:13:30,399 --> 00:13:32,000
first one, I think you'll think is the most portant,

247
00:13:32,000 --> 00:13:33,720
but pretty sure. The second one is actually the first

248
00:13:33,759 --> 00:13:36,440
one is that in nineteen sixty eight the company Intel

249
00:13:36,759 --> 00:13:39,519
was founded, No kidding, I Noice and more. Yeah, And

250
00:13:39,559 --> 00:13:42,759
their first product they'll start working hard on is making

251
00:13:44,120 --> 00:13:47,320
digital RAM because at that point most computers are still

252
00:13:47,440 --> 00:13:49,039
using Ferris core memory.

253
00:13:50,039 --> 00:13:50,960
Speaker 1: It's the idea of.

254
00:13:52,519 --> 00:13:55,840
Speaker 3: Integrated circuit memory is still novel. There's only test articles

255
00:13:55,840 --> 00:13:57,679
so far. They haven't really scaled it up. But the

256
00:13:57,799 --> 00:14:01,240
original product what Moore wrote more Law about, because this

257
00:14:01,320 --> 00:14:03,639
is the year that he will author the statement that

258
00:14:03,679 --> 00:14:07,039
will become Moore's law. He was talking about RAM. He

259
00:14:07,080 --> 00:14:09,879
wasn't talking about CPUs. The CPU is still two years away.

260
00:14:10,159 --> 00:14:10,559
Speaker 1: Wow.

261
00:14:10,840 --> 00:14:14,200
Speaker 3: And yet there's something bigger that happened in nineteen sixty eight.

262
00:14:15,000 --> 00:14:18,720
It is colloquially called today the mother of all demos.

263
00:14:19,480 --> 00:14:22,679
This is dougle Engelbart's demo, which was originally named a

264
00:14:22,759 --> 00:14:25,919
Research Center for Augmenting Human Intellect. This is the Stanford

265
00:14:26,000 --> 00:14:30,519
Research Institute. And he had been working on a system

266
00:14:31,240 --> 00:14:37,000
of computing that he called NLS, short for online system,

267
00:14:37,039 --> 00:14:39,720
because picking random letters out of words is something they did.

268
00:14:39,840 --> 00:14:42,519
Even then, he couldn't want to call it OS because

269
00:14:42,519 --> 00:14:46,120
there's already operating system so online system NLS. There was

270
00:14:46,159 --> 00:14:50,039
about a thousand people in the audiences at Stanford, including

271
00:14:50,080 --> 00:14:54,960
Alan Ka, Like a lot of your foundational computing people

272
00:14:55,000 --> 00:14:57,679
were in the room for this demo. And this was

273
00:14:57,720 --> 00:15:01,840
a distributed computing demo, So not only were they at

274
00:15:03,039 --> 00:15:07,600
the SRI Center there, but they had these custom made

275
00:15:07,840 --> 00:15:12,759
twelve hundred modems and least lines to different locations. Bill

276
00:15:12,840 --> 00:15:16,159
Paxton was remote. Bill English was there, and they used

277
00:15:16,200 --> 00:15:20,519
an edit for video projector to show the screen that

278
00:15:20,559 --> 00:15:23,919
Engelbert was working from on a twenty two foot wide screen.

279
00:15:23,960 --> 00:15:26,720
Soever you could see it. The mouse prototype, which had

280
00:15:26,720 --> 00:15:28,919
only been built a year or two before, is involved,

281
00:15:29,440 --> 00:15:35,919
and what Douglas is demonstrating is resizing windows and highlighting text.

282
00:15:36,600 --> 00:15:40,559
And at one point Paxton remotely edits some text that

283
00:15:42,039 --> 00:15:45,240
Ingelbart had written. And at the end of this ninety

284
00:15:45,440 --> 00:15:49,600
minute demo, it's just this huge standing ovation. Wow, they

285
00:15:49,759 --> 00:15:55,440
saw the future that day. The future we were in diapers, right,

286
00:15:56,679 --> 00:16:00,440
this is nineteen sixty eight, we were one one year old. Yeah,

287
00:16:00,519 --> 00:16:04,200
the metaphors that you use in the computer today were

288
00:16:04,279 --> 00:16:07,200
demonstrated that day. It's why they call it the Mother

289
00:16:07,240 --> 00:16:07,960
of all demos.

290
00:16:08,200 --> 00:16:11,279
Speaker 2: Wow, I can't imagine what the excitement must have been

291
00:16:11,399 --> 00:16:13,320
like the audience.

292
00:16:13,320 --> 00:16:16,000
Speaker 3: And that's the same year as we put humans around

293
00:16:16,000 --> 00:16:21,000
the moon like sixty eight is horrible and astonishing.

294
00:16:21,200 --> 00:16:25,320
Speaker 2: Yeah, what are you amazing? And on that happy note,

295
00:16:25,679 --> 00:16:30,039
which it is actually it is introduced David So. David

296
00:16:30,080 --> 00:16:35,600
Wenja is a principal software engineer at Microsoft based in Melbourne, Australia.

297
00:16:35,720 --> 00:16:39,039
He's currently the lead developer on the Razor Tooling experience

298
00:16:39,120 --> 00:16:42,200
in Visual Studio and Visual Studio Code, but has otherwise

299
00:16:42,679 --> 00:16:45,559
been working on dot net tooling for the last seven years,

300
00:16:46,200 --> 00:16:49,000
with almost the entirety of that work being done in

301
00:16:49,039 --> 00:16:54,279
the open on GitHub. He's passionate about good design, simple code,

302
00:16:54,399 --> 00:16:58,320
and delivering a constant stream of pull requests to surprise

303
00:16:58,440 --> 00:17:03,279
and confuse his coworker nice. When not working, he spends

304
00:17:03,320 --> 00:17:06,039
more time than he probably should on social media and

305
00:17:06,240 --> 00:17:12,000
enjoys admiring his lego collection from a respectful distance. Welcome, David,

306
00:17:12,160 --> 00:17:12,920
Thank you very much.

307
00:17:13,000 --> 00:17:18,359
Speaker 5: Lovely pronunciation by the way. Yeah, I'm trying you trying

308
00:17:18,680 --> 00:17:19,640
Melbourne right as well?

309
00:17:19,720 --> 00:17:21,160
Speaker 2: That's the Melbourne Nevin.

310
00:17:21,279 --> 00:17:24,160
Speaker 5: Yeah, usually that's the trap. Yeah, thank you for having.

311
00:17:24,039 --> 00:17:26,480
Speaker 3: Me all I remember most about Melbourne. Is it's windy

312
00:17:26,680 --> 00:17:29,799
all the flip and time. Sometimes a warm wind, sometimes

313
00:17:29,839 --> 00:17:31,599
it's a bitterly cold wind.

314
00:17:32,240 --> 00:17:35,880
Speaker 5: Yes, well, especially at the places where the conference venues

315
00:17:35,920 --> 00:17:37,519
tend to be, which is I'm sure what you've bunk

316
00:17:37,559 --> 00:17:38,000
out a lot?

317
00:17:38,240 --> 00:17:39,519
Speaker 1: Yeah? Right by the river right?

318
00:17:39,799 --> 00:17:42,960
Speaker 2: Yeh. So I have a couple of Australian terms I'd

319
00:17:43,039 --> 00:17:44,839
like to settle with you.

320
00:17:45,519 --> 00:17:45,799
Speaker 5: Okay.

321
00:17:46,759 --> 00:17:49,759
Speaker 2: First of all, I first, I can't remember who I

322
00:17:49,839 --> 00:17:51,880
was talking to when I first heard the word chuffed.

323
00:17:52,960 --> 00:17:56,559
That's an Australian term for really happy. I'm excited. I'm chuffed.

324
00:17:57,039 --> 00:17:58,720
Speaker 5: I'm chuffed to be here, chuff to be here.

325
00:17:58,839 --> 00:18:02,319
Speaker 2: And second one is you guys really don't put shrimp

326
00:18:02,440 --> 00:18:03,519
on the bobbie.

327
00:18:03,200 --> 00:18:03,799
Speaker 1: Do you know?

328
00:18:04,079 --> 00:18:06,000
Speaker 5: I don't think I've ever seen anyone do that.

329
00:18:06,039 --> 00:18:07,480
Speaker 2: And they don't say that, I mean, we don't call

330
00:18:07,519 --> 00:18:09,720
it shrimp. No, that's an American.

331
00:18:09,759 --> 00:18:12,640
Speaker 5: We would say prawns. Yeah, we would say prawns. And

332
00:18:13,079 --> 00:18:14,559
even then, but on.

333
00:18:14,640 --> 00:18:16,319
Speaker 2: The barbie, you don't do you say barbie or do

334
00:18:16,359 --> 00:18:19,160
you say grill? Now we say bobby, you do say barbie? Okay?

335
00:18:19,359 --> 00:18:21,119
Speaker 5: Oh yeah, we like to shorten everything.

336
00:18:21,799 --> 00:18:25,720
Speaker 3: Yeah, yeah, even McDonald's is too long. It's mackers.

337
00:18:26,359 --> 00:18:27,559
Speaker 5: Yes, absolutely, so.

338
00:18:27,599 --> 00:18:31,319
Speaker 2: I remember Adam Cogan saying let's have some brecky not

339
00:18:31,440 --> 00:18:32,680
breakfast hot eggs.

340
00:18:34,759 --> 00:18:35,119
Speaker 5: That's right.

341
00:18:35,200 --> 00:18:38,440
Speaker 2: And also Foster's beer is like water. You don't drink that.

342
00:18:38,480 --> 00:18:39,880
Speaker 1: Stuff, right, Yeah, we don't drink that.

343
00:18:40,000 --> 00:18:43,400
Speaker 5: No, No, I remember, Actually I was. I was in

344
00:18:43,480 --> 00:18:45,759
London a few months ago and walked into a to

345
00:18:45,880 --> 00:18:48,519
a pub there and they had it. I actually can't

346
00:18:48,519 --> 00:18:51,000
remember the last time I'd seen Foster's. Yeah, I have

347
00:18:51,079 --> 00:18:52,640
to travel internationally to do it.

348
00:18:53,119 --> 00:18:57,880
Speaker 2: So the American idea of Australia is nothing like Australia itself.

349
00:18:57,960 --> 00:19:00,440
You just gotta go, yeah, got to go.

350
00:19:00,720 --> 00:19:03,400
Speaker 5: The American idea of animals that will kill you. And

351
00:19:03,960 --> 00:19:05,839
Appeck Steakhouse no.

352
00:19:06,200 --> 00:19:10,359
Speaker 3: Yeah, yeah, I know Crocodile Dundee really and Outback Steakhouse

353
00:19:10,440 --> 00:19:12,319
is owned by somebody from California.

354
00:19:12,359 --> 00:19:15,000
Speaker 2: If I'm not mistaken, like you know, I would not

355
00:19:15,119 --> 00:19:15,839
Australian at.

356
00:19:15,759 --> 00:19:19,160
Speaker 5: All, wouldn't surprise me if they've never been to Australia. Yeah, well,

357
00:19:19,200 --> 00:19:20,960
then again, I've never been to an Appback steakhouse. So

358
00:19:21,039 --> 00:19:23,160
maybe you know, maybe I should speak at a school.

359
00:19:23,200 --> 00:19:26,200
Speaker 2: I mean, it's all right, but I wouldn't call it Australian. Yeah,

360
00:19:26,240 --> 00:19:30,799
all right, let's talk about the Razor experience, the Razor

361
00:19:31,000 --> 00:19:34,480
editor experience. I have a particular interest in this because

362
00:19:34,519 --> 00:19:38,720
I'm a Blazer developer mostly. And you heard our talk

363
00:19:38,799 --> 00:19:40,880
with Dustin Campbell, right, Yes, that's right.

364
00:19:42,000 --> 00:19:46,640
Speaker 5: Dustin's been I guess, moonlighting on Razor Tooling for a bit.

365
00:19:46,720 --> 00:19:49,519
He's you know, he floats around and works on what

366
00:19:49,599 --> 00:19:52,240
he wants to work on, but he's been helping out.

367
00:19:52,319 --> 00:19:52,480
Speaker 2: Yeah.

368
00:19:52,759 --> 00:19:56,839
Speaker 5: Yeah, he's been helping out. Heapes on Razor Tooling, doing

369
00:19:56,960 --> 00:19:59,480
lots of stuff on the compiler, but also lots of

370
00:19:59,519 --> 00:20:02,640
stuff on the two. And yes, I heard I heard

371
00:20:02,720 --> 00:20:06,240
your excitement at when he mentioned this new co hosting effort,

372
00:20:06,400 --> 00:20:09,839
and I thought, oh, well, if that's if that's interesting

373
00:20:09,920 --> 00:20:12,319
to people, then I can talk about that for oh,

374
00:20:12,519 --> 00:20:14,200
I don't know forever. I've been working on it for

375
00:20:14,240 --> 00:20:17,240
about eighteen months, almost exclusively.

376
00:20:17,359 --> 00:20:21,079
Speaker 2: So yeah, well, why don't you remind us what that

377
00:20:21,880 --> 00:20:22,400
was all about?

378
00:20:22,759 --> 00:20:26,279
Speaker 5: Sure, well, I mean let me take one step further back.

379
00:20:27,279 --> 00:20:31,880
So in actually almost at the time that comment that

380
00:20:31,960 --> 00:20:35,000
Richard red was from when Visual Studia twenty twenty two

381
00:20:35,200 --> 00:20:38,039
was released. I believe the first version of that. There

382
00:20:38,160 --> 00:20:40,319
was a new Razor Editor then and it was based

383
00:20:40,359 --> 00:20:43,920
on LSP, which is Language Server Protocol, which is this

384
00:20:44,519 --> 00:20:47,680
way to disconnect language services from the ide and have

385
00:20:48,680 --> 00:20:52,079
you know, sharing of code and have one server be

386
00:20:52,119 --> 00:20:55,119
able to go in multiple IDs, et cetera. It's really

387
00:20:55,200 --> 00:20:59,839
cool idea. And the Razor Editor was the first sort

388
00:20:59,880 --> 00:21:04,400
of widely used LSP editor in Visual Studio. LSP had

389
00:21:04,440 --> 00:21:06,599
come out of Visual Studio Code and it's much much

390
00:21:06,599 --> 00:21:09,039
bigger part of that, just you know, by its architecture,

391
00:21:09,079 --> 00:21:10,880
it's more separated and things.

392
00:21:11,559 --> 00:21:15,400
Speaker 3: It's cool and so stuff being built visual Studio being

393
00:21:15,440 --> 00:21:18,079
brought to Visual Studio, code being brought to Visual Studio.

394
00:21:18,640 --> 00:21:19,960
Speaker 1: I didn't know about that. That's interesting.

395
00:21:20,160 --> 00:21:23,880
Speaker 5: Yeah. So actually eighty nine of the code in the

396
00:21:23,960 --> 00:21:28,200
Razor repository is behind sort of part of this LSP server,

397
00:21:28,400 --> 00:21:30,799
and the same server is shipped with vs code in

398
00:21:30,839 --> 00:21:33,720
the c sharp extension and with Visual Studio, and in

399
00:21:33,799 --> 00:21:36,039
fact there's even some bits that go the other way.

400
00:21:36,160 --> 00:21:40,319
So the CSS LSP server that is shipped in Visual

401
00:21:40,359 --> 00:21:43,319
Studio is the VS code one. They just reship it.

402
00:21:44,319 --> 00:21:48,319
So it's a lovely architecture and when it works, it's great.

403
00:21:49,640 --> 00:21:52,920
Speaker 3: And that's qualifier their David.

404
00:21:53,000 --> 00:21:56,319
Speaker 2: Yeah, that was very polite, kind of almost Canadian way

405
00:21:56,440 --> 00:21:58,519
to express your opinion about that.

406
00:21:59,279 --> 00:22:02,160
Speaker 5: Yeah, I know, LSP is great, I think. So it's

407
00:22:02,200 --> 00:22:04,960
not so much that the LSP doesn't work. There's dot

408
00:22:05,039 --> 00:22:08,759
Net projects are difficult for LSP because LSP has no

409
00:22:08,839 --> 00:22:11,559
concept of projects at all. And in dot net world,

410
00:22:11,640 --> 00:22:14,200
we're used to having cs prog files and we have references,

411
00:22:14,319 --> 00:22:16,839
and you know, automatically, every c sharp file that's in

412
00:22:16,960 --> 00:22:19,880
your folder is just picked up magically. You don't need

413
00:22:19,960 --> 00:22:22,559
include statements and import statements and all these wonderful things

414
00:22:22,599 --> 00:22:25,240
we benefit from. Of course, the LSP server has to

415
00:22:26,720 --> 00:22:29,519
deal with that itself, and so what we ended up

416
00:22:29,559 --> 00:22:32,920
with is this situation where the Razor tooling has to

417
00:22:33,079 --> 00:22:35,839
understand your project, It has to understand your references so

418
00:22:35,920 --> 00:22:38,440
it can find your components, and that sort of thing,

419
00:22:38,680 --> 00:22:40,920
has to monitor all the files for changes, and we

420
00:22:41,000 --> 00:22:43,720
have the Roslin LSP server sitting next to it, which

421
00:22:43,759 --> 00:22:45,440
has to do the exact same thing for all the

422
00:22:45,519 --> 00:22:52,839
sea sharp files. And at some point Raiser, the Razor compiler,

423
00:22:53,240 --> 00:22:56,079
became a source generator and so it plugs into Roslin,

424
00:22:56,240 --> 00:22:58,519
and so now Roslin has to monitor all the Razor files,

425
00:22:58,640 --> 00:23:00,799
and Raiser Tooling has to monitor all Raise files, and

426
00:23:00,880 --> 00:23:03,000
we have lots of these double handling. And Razor has

427
00:23:03,039 --> 00:23:05,519
a project system and Rosslin has a project system, and

428
00:23:06,400 --> 00:23:09,759
there was bugs in Razors and probably less bugs in

429
00:23:09,839 --> 00:23:11,680
Roslin's because it's a bit more battle hard and it's

430
00:23:11,680 --> 00:23:15,119
got a few more users. And so a couple of

431
00:23:15,200 --> 00:23:19,359
years ago, while working on the Razor tooling and fixing

432
00:23:19,400 --> 00:23:23,839
all these lots of issues around this project system, I

433
00:23:24,000 --> 00:23:26,519
just sort of had the idea that, like, maybe if

434
00:23:26,599 --> 00:23:30,559
we just lived in the same world as Roslin, we could,

435
00:23:31,599 --> 00:23:33,480
you know, things would be better. We do less work,

436
00:23:33,680 --> 00:23:35,759
we take advantage of some of the stuff that Rosin's

437
00:23:35,759 --> 00:23:37,839
already done, et cetera, et cetera. And that's where this

438
00:23:37,960 --> 00:23:41,039
idea of co hosting comes from. I didn't coin the name,

439
00:23:41,240 --> 00:23:44,519
but basically the idea is that Razor is hosted in

440
00:23:45,079 --> 00:23:49,119
the same world as Rosslyn, and you know that's the

441
00:23:49,160 --> 00:23:51,440
same process or not the same process doesn't really matter,

442
00:23:52,519 --> 00:23:57,079
just more they have the same view of the world context. Yeah,

443
00:23:58,319 --> 00:24:03,559
lsp is it's kind of like web API that that

444
00:24:03,680 --> 00:24:06,880
sort of change from web views to web api. It's

445
00:24:06,920 --> 00:24:09,960
that sort of thing applied to IDE tooling. So in

446
00:24:10,079 --> 00:24:12,880
the old in the old days, maybe not the old days,

447
00:24:12,920 --> 00:24:15,680
but you know, in a different type of thinking, you know,

448
00:24:15,799 --> 00:24:19,240
you might have you might have an I frame, and

449
00:24:19,839 --> 00:24:21,519
let's say you go like a master detail page on

450
00:24:21,559 --> 00:24:23,680
a web page right right, and so you want to

451
00:24:23,680 --> 00:24:26,119
show an order detail inside a grid where you might

452
00:24:26,160 --> 00:24:28,000
have an I frame, and you say, show me the

453
00:24:28,079 --> 00:24:31,400
order page here, and that works, but you're getting the

454
00:24:31,440 --> 00:24:33,839
whole page, and so that page might need to have

455
00:24:33,920 --> 00:24:36,480
some smarts to know if it's inside the grid or

456
00:24:36,559 --> 00:24:38,880
not or whatever. If you make a change to this

457
00:24:39,000 --> 00:24:40,759
doesn't apply for it's used, it's a been annoying. And

458
00:24:40,839 --> 00:24:43,359
so we move forward from that and we you know,

459
00:24:43,519 --> 00:24:45,400
have web API is now where you don't give me

460
00:24:45,480 --> 00:24:47,359
the order page. You just give me the data for

461
00:24:47,519 --> 00:24:49,400
the order and I'll work out how to display it.

462
00:24:49,640 --> 00:24:51,599
And that's kind of the same thinking on the tooling side.

463
00:24:51,680 --> 00:24:55,039
So in a c sharp file, when you bring up

464
00:24:55,039 --> 00:25:00,240
the IntelliSense list, Roslin essentially is responsible for rendering that list.

465
00:25:01,000 --> 00:25:04,720
Under the LSP world, the IDE is responsible for rendering

466
00:25:04,799 --> 00:25:07,519
the list. The language server just tells it which items

467
00:25:07,559 --> 00:25:11,119
to put in. So it's more portable and it's flexible

468
00:25:11,200 --> 00:25:16,119
and all those things. Yeah, yeah, it's it's definitely. It's

469
00:25:16,160 --> 00:25:19,160
a cool architecture. It's just that and some of the

470
00:25:19,279 --> 00:25:21,519
quirks of Razor also always where it sort of shows

471
00:25:21,640 --> 00:25:23,960
some of its rough edges. So Razor is, you know,

472
00:25:24,079 --> 00:25:28,359
five languages in one file and that's a bit difficult, right,

473
00:25:28,480 --> 00:25:33,440
So the Razor wrong, Yeah, that's right. The Razor LSP

474
00:25:34,200 --> 00:25:37,880
server in order to answer some of these questions, it

475
00:25:37,960 --> 00:25:40,440
would have to call to the Rosalin LSP server to

476
00:25:40,519 --> 00:25:43,279
get its answer, and like, hey, you know, Razer will

477
00:25:43,319 --> 00:25:46,079
get asked, you know, what should I show it line

478
00:25:46,160 --> 00:25:48,440
five of this file, and Raser has to go, well,

479
00:25:48,480 --> 00:25:51,240
actually line five, that's actually C sharp and that's actually

480
00:25:51,279 --> 00:25:53,960
line seventy four in this generated C sharp file. So

481
00:25:54,000 --> 00:25:55,960
I'll go and ask Roslin what to show at line

482
00:25:56,039 --> 00:25:59,200
seventy four. Rosal will respond, I'll translate that back, send

483
00:25:59,279 --> 00:26:02,799
that back up. And that sort of stuff still happens

484
00:26:03,000 --> 00:26:05,599
in co hosting because it's still an LSP based editor

485
00:26:05,839 --> 00:26:09,039
in from the Razor point of view, but now we

486
00:26:09,720 --> 00:26:13,000
like that connection to Roslyn rather than making LSP calls

487
00:26:13,039 --> 00:26:16,079
and serialization and de serialization of data and working with

488
00:26:16,200 --> 00:26:18,920
strings and sort of primitive types. That's now just a

489
00:26:18,960 --> 00:26:21,599
C sharp method call and we just call an API

490
00:26:21,640 --> 00:26:23,720
and roslins ay, give me a list please.

491
00:26:24,000 --> 00:26:26,359
Speaker 2: So I get how it's more efficient for you guys

492
00:26:26,440 --> 00:26:29,160
in the back end to render all this stuff, But

493
00:26:29,279 --> 00:26:33,319
what can you nail down the benefits to the developer

494
00:26:34,440 --> 00:26:36,279
this co hosting architecture, So.

495
00:26:37,400 --> 00:26:39,880
Speaker 5: I mean the benefits. The biggest benefits that you're going

496
00:26:39,960 --> 00:26:44,200
to see is just performance and reliability. It's a lot faster,

497
00:26:44,440 --> 00:26:46,640
a lot use a lot more memory, a lot less memory.

498
00:26:51,359 --> 00:26:54,759
Reliabilities is definitely a huge one though one of the

499
00:26:55,079 --> 00:26:57,240
one of the the other problem with this sort of

500
00:26:57,279 --> 00:27:04,559
disconnected world. Fundamentally, the Raiser language server cannot see the

501
00:27:04,759 --> 00:27:07,920
Roslin compilation, so it doesn't actually know about any of

502
00:27:07,960 --> 00:27:11,200
the types used in your project. It doesn't know about

503
00:27:11,200 --> 00:27:14,359
any of the references, and so there's this communication of

504
00:27:15,119 --> 00:27:17,359
like component information and what is the list of components

505
00:27:17,400 --> 00:27:18,519
that available in this project?

506
00:27:18,559 --> 00:27:19,039
Speaker 2: For example?

507
00:27:19,839 --> 00:27:22,039
Speaker 5: We have to find that out in Roslin where there's

508
00:27:22,039 --> 00:27:25,039
a compilation, and then we send it across to RASA

509
00:27:26,039 --> 00:27:28,680
and that data has to come across. It's a lot

510
00:27:28,759 --> 00:27:30,759
of data and one of the key areas that Dustin

511
00:27:30,799 --> 00:27:34,880
actually worked on was was making that used message pack

512
00:27:34,960 --> 00:27:37,279
and used checksum so we could send less data if

513
00:27:37,279 --> 00:27:40,920
nothing's changed. And it's a much more reliable system now

514
00:27:40,960 --> 00:27:42,839
than it was it used to when when I first

515
00:27:42,920 --> 00:27:45,920
joined the team, or when Raiser sort of Raisers sort

516
00:27:45,920 --> 00:27:48,720
of joined the Roslin team, they came to me through

517
00:27:48,759 --> 00:27:53,599
osmosis ident around here. But when that when that first happened,

518
00:27:54,119 --> 00:27:57,759
it was literally adjacent file serialized disc And that's why,

519
00:27:58,200 --> 00:28:00,240
like everyone, when there was problems with the Razor A,

520
00:28:00,440 --> 00:28:03,839
people would delete their OBJ folder and that would fix things.

521
00:28:03,880 --> 00:28:05,759
Because when they were just deleting this Jason file which

522
00:28:05,839 --> 00:28:09,000
was this cash and it just got corrupted or it

523
00:28:09,079 --> 00:28:11,480
got out of date, and so there's all the synchronization

524
00:28:11,599 --> 00:28:14,000
issues trying to synchronize all this information. You know, Razor

525
00:28:14,079 --> 00:28:16,920
has to compile your c sharp file and it pushed

526
00:28:16,920 --> 00:28:19,599
it to Roslin in order for Roslam to answer questions,

527
00:28:20,039 --> 00:28:23,359
and that's synchronizing two systems, and we just don't need

528
00:28:23,400 --> 00:28:24,000
to do that anymore.

529
00:28:24,160 --> 00:28:29,799
Speaker 2: So is this why for example, if you type a type,

530
00:28:30,039 --> 00:28:32,640
you know you have a variable of a type and

531
00:28:32,720 --> 00:28:38,000
the namespace isn't qualified you In the Visual Studio code editor,

532
00:28:38,079 --> 00:28:40,359
you can hover over that type and it will say

533
00:28:40,640 --> 00:28:44,359
using blah blah blah. But in the Razor editor it

534
00:28:44,480 --> 00:28:46,680
doesn't do that. Like there are little things like that,

535
00:28:46,839 --> 00:28:48,680
like code lens is one thing that I miss in

536
00:28:48,720 --> 00:28:52,240
the Razorator. So you're saying that this new co hosting

537
00:28:52,720 --> 00:28:56,319
model will enable and facilitate those kinds of features.

538
00:28:56,559 --> 00:28:59,160
Speaker 5: Ah, that's I'm going to take that as two questions

539
00:28:59,160 --> 00:29:02,119
because they were both really good but very different answers

540
00:29:02,200 --> 00:29:06,240
unbunounced to you. So as far as the first one, yes,

541
00:29:06,720 --> 00:29:09,200
So you were talking about add using, and in some

542
00:29:09,400 --> 00:29:11,400
cases Razor does support ad using, and we do that

543
00:29:11,799 --> 00:29:14,039
relay thing where we ask Roslin, hey, what should we

544
00:29:14,119 --> 00:29:18,160
do here? But this co hosting will definitely enable us

545
00:29:18,240 --> 00:29:22,599
to add more of that in future. So we in

546
00:29:22,839 --> 00:29:25,599
Razor we now have full access to the same compilation

547
00:29:26,000 --> 00:29:29,079
as rosalind, the same documents, the same project information, and

548
00:29:29,200 --> 00:29:34,559
so we can call any of Roslin's normal API to

549
00:29:35,359 --> 00:29:37,599
find out what we need to do, what we might

550
00:29:37,640 --> 00:29:39,920
want to do that was never possible for so all

551
00:29:39,960 --> 00:29:41,920
those things we can start to take advantage of now.

552
00:29:42,000 --> 00:29:44,839
I will say the effort so far has just been

553
00:29:45,559 --> 00:29:47,880
you know, we're sort of rebuilding the plane as it's going.

554
00:29:47,960 --> 00:29:50,640
So we're just trying to get everything working right. The

555
00:29:50,680 --> 00:29:55,160
features can come from here, So yeah, that's definitely something

556
00:29:55,200 --> 00:29:58,799
we want to invest in. I did one sneaky feature

557
00:29:58,880 --> 00:30:00,480
like that I worked on a couple of weeks ago,

558
00:30:01,000 --> 00:30:04,119
where so go to definition in a Razer file. You

559
00:30:04,200 --> 00:30:06,480
could do it on a Blaser component, but you couldn't

560
00:30:06,519 --> 00:30:09,680
do it on an MVC tag helper. And the reason

561
00:30:09,759 --> 00:30:11,920
for that is because all that data that synchronizes across

562
00:30:12,000 --> 00:30:16,680
from Roslin, it includes type names and property names and things.

563
00:30:17,119 --> 00:30:20,680
And in Blazer you can infer okay, well, if there's

564
00:30:20,680 --> 00:30:23,559
a component with a type name of whatever, then it's

565
00:30:23,599 --> 00:30:26,559
in a file called whatever, not Razer. But in MVC

566
00:30:27,119 --> 00:30:30,640
you cannot make that connection. Take Helpers could be called anything,

567
00:30:30,720 --> 00:30:32,640
they can be defined in any old class. And so

568
00:30:32,759 --> 00:30:35,160
we just couldn't answer this questions in Razer because all

569
00:30:35,200 --> 00:30:36,720
we had was a type name, but we didn't have

570
00:30:36,839 --> 00:30:41,519
any information about the compilation. Now, with co hosting, I

571
00:30:41,720 --> 00:30:44,119
wrote some code a couple weeks ago. It just calls

572
00:30:44,160 --> 00:30:47,519
the standard Roslin method for hey, give me the type

573
00:30:47,599 --> 00:30:50,880
for this type name please, and Roslin does, and then

574
00:30:50,920 --> 00:30:53,160
now we know where it comes from. So we're definitely

575
00:30:53,200 --> 00:30:55,599
going to start to see more of those things coming hopefully.

576
00:30:56,400 --> 00:31:00,720
Speaker 2: Okay, what about the underscore imports Raiser. I always thought

577
00:31:00,720 --> 00:31:03,119
it was weird that we had a separate imports list

578
00:31:03,279 --> 00:31:06,960
for Razor components than we do for regular Sea Sharp components.

579
00:31:07,759 --> 00:31:12,920
Is that something that this will enable us to, I

580
00:31:12,960 --> 00:31:16,200
don't know, just use the CEA sharp global usings or

581
00:31:16,359 --> 00:31:17,400
regular using statements.

582
00:31:18,039 --> 00:31:22,599
Speaker 5: That's that's an interesting question. We definitely technically are capable

583
00:31:22,640 --> 00:31:26,720
of doing that. The one interesting thing about Raiser that

584
00:31:26,839 --> 00:31:29,920
this doesn't change is the ownership of things is a

585
00:31:30,200 --> 00:31:32,519
bit weird. So Razer came out of ASP dot net,

586
00:31:32,799 --> 00:31:37,079
including the tooling and the compiler, and probably three years

587
00:31:37,119 --> 00:31:40,720
ago maybe the tooling and compiler came over to Roslyn,

588
00:31:41,039 --> 00:31:44,079
and so the Roslin compiler team owned the Razor compiler.

589
00:31:44,480 --> 00:31:47,640
Rosin Ide Tooling owned Razor Tooling, which is where I

590
00:31:48,160 --> 00:31:50,240
sort of came to be on it. The runtime is

591
00:31:50,279 --> 00:31:53,799
still owned by ASP dot net, and so those sorts

592
00:31:53,839 --> 00:31:58,039
of decisions are more on the runtime side. Obviously, you know,

593
00:31:58,240 --> 00:32:01,160
we meet with them and we have likeguage design meetings,

594
00:32:01,680 --> 00:32:03,079
not as often as Sea Shark, but you know they

595
00:32:03,119 --> 00:32:06,720
do exist, and so that's that's the sort of change

596
00:32:06,759 --> 00:32:07,960
we can definitely talk about.

597
00:32:09,799 --> 00:32:12,240
Speaker 2: I don't know, but there's a reason that they chose

598
00:32:12,279 --> 00:32:13,799
to do it that way, right, I mean.

599
00:32:14,160 --> 00:32:17,960
Speaker 5: Well that predates global usings in c sharp, So you

600
00:32:18,039 --> 00:32:20,079
know the reason they did that is because they were

601
00:32:20,119 --> 00:32:22,279
trying to solve a problem that rasor developers had and

602
00:32:22,480 --> 00:32:25,079
sea sharp developers, I mean, they probably had it at

603
00:32:25,079 --> 00:32:27,079
the time, but maybe it was less important or that

604
00:32:27,240 --> 00:32:29,440
just wasn't Sea sharp was ready to tackle yet. So

605
00:32:30,039 --> 00:32:32,759
it's sort of this you know, parallel invention thing that

606
00:32:32,880 --> 00:32:34,799
sometimes happened, and then you get to the end you're like, oh,

607
00:32:34,839 --> 00:32:36,880
we've got two systems for this, can we merge them?

608
00:32:37,720 --> 00:32:39,079
And it certainly technically we can.

609
00:32:39,160 --> 00:32:40,640
Speaker 2: It's just sure is it?

610
00:32:40,960 --> 00:32:41,519
Speaker 5: How hard is it?

611
00:32:42,400 --> 00:32:42,920
Speaker 2: Will we break?

612
00:32:43,000 --> 00:32:43,240
Speaker 1: People?

613
00:32:43,799 --> 00:32:46,200
Speaker 2: Be nice to have the option like look in at

614
00:32:46,640 --> 00:32:48,920
you know, look at underscore imports and if it's not there,

615
00:32:48,960 --> 00:32:51,359
look in global usings and if it's their using yeah.

616
00:32:51,799 --> 00:32:56,839
Speaker 3: Easy, Yeah, definitely, and then all the places you'd go anyway, right.

617
00:32:57,079 --> 00:32:59,960
Speaker 5: Yeah. So the other thing you asked about though was codelin,

618
00:33:00,160 --> 00:33:03,680
which is interesting. So code lens is supported in visual

619
00:33:03,680 --> 00:33:07,240
stdio code, as you mentioned, and the code that does

620
00:33:07,279 --> 00:33:09,680
that is in the Razor repot. That's like we own that,

621
00:33:09,839 --> 00:33:12,279
that's our code, but it doesn't work in Visual studio.

622
00:33:12,960 --> 00:33:14,079
The reason it doesn't work.

623
00:33:13,960 --> 00:33:17,079
Speaker 2: Wea code lens works in Visual studio, but not in

624
00:33:17,160 --> 00:33:18,279
the Razor editor.

625
00:33:18,079 --> 00:33:21,519
Speaker 5: But not erase fun. Yes, sorry, code land's in a

626
00:33:21,599 --> 00:33:25,400
Razor fhile. In visual studio, code is our code, but

627
00:33:25,519 --> 00:33:27,599
it doesn't work in Visual studio in a Razor fhile.

628
00:33:27,880 --> 00:33:32,240
And the reason for that is so LSP is, you know,

629
00:33:32,400 --> 00:33:36,319
essentially a standard set of APIs for ID tooling. So

630
00:33:36,440 --> 00:33:39,880
the Razor server supports the code lens API, but the

631
00:33:40,000 --> 00:33:41,920
Visual Studio client doesn't.

632
00:33:42,519 --> 00:33:43,759
Speaker 3: And so that's on.

633
00:33:43,960 --> 00:33:47,759
Speaker 5: Visual Studio to you know, move further towards embracing alix

634
00:33:47,799 --> 00:33:48,359
per But they.

635
00:33:48,319 --> 00:33:48,880
Speaker 1: Are doing that.

636
00:33:49,039 --> 00:33:52,039
Speaker 5: Get busy they are doing.

637
00:33:54,559 --> 00:33:55,160
Speaker 2: I'll let him know.

638
00:33:56,640 --> 00:33:59,799
Speaker 5: Since version like seventeen point ten, I think of Visual

639
00:34:00,119 --> 00:34:03,240
do all of the error list and the squiggles and

640
00:34:03,319 --> 00:34:06,279
the diagnostics and everything, all of that is powered entirely

641
00:34:06,319 --> 00:34:10,239
through LSP in Visa studio. And that's one of those

642
00:34:10,480 --> 00:34:12,920
you know, rebuilding the plane things where no one really

643
00:34:13,039 --> 00:34:15,880
noticed we just swapped out. We were using this system.

644
00:34:16,039 --> 00:34:18,039
Now we're using this system. We can get rid of

645
00:34:18,079 --> 00:34:20,679
the old system now and so it's slowly being adopted

646
00:34:20,719 --> 00:34:23,920
over there, but visual studio is twenty years of history

647
00:34:23,960 --> 00:34:24,519
of not doing it.

648
00:34:24,800 --> 00:34:27,079
Speaker 2: Say so, sure, it's a lot of inertia. All right,

649
00:34:28,039 --> 00:34:30,239
This seems like a good time to take a break,

650
00:34:30,400 --> 00:34:33,159
so we will be back right after these very important

651
00:34:33,159 --> 00:34:37,599
messages stick around. Do you have a complex dot net

652
00:34:37,679 --> 00:34:40,960
monolith you'd like to refactor to a micro services architecture?

653
00:34:41,599 --> 00:34:45,559
The Microservice Extractor for dot Net tool visualizes your app

654
00:34:45,800 --> 00:34:49,840
and helps progressively extract code into micro services. Learn more

655
00:34:49,880 --> 00:34:53,719
at aws dot Amazon dot com slash modernize.

656
00:34:57,719 --> 00:34:59,960
Speaker 3: All right, and we're back. I'm Richard Campbell. Let's call Frank.

657
00:35:00,519 --> 00:35:03,480
You talking a bit about to David about all the

658
00:35:03,519 --> 00:35:06,079
fun things in Roslin and when you mentioned co hosting

659
00:35:06,880 --> 00:35:10,679
Roslin and Razor together. Of course, I'm collecting links for

660
00:35:10,760 --> 00:35:12,840
the show, so I search for that, and I think

661
00:35:12,880 --> 00:35:17,320
I found the GitHub issues ninety five nineteen where this

662
00:35:17,519 --> 00:35:19,679
whole thing kind of kicks off, and I see you

663
00:35:19,880 --> 00:35:22,920
stepping in. It's really fun for me to suddently see

664
00:35:23,039 --> 00:35:26,320
here's where David got involved and started doing his work

665
00:35:26,440 --> 00:35:28,159
all the way back at twenty twenty three.

666
00:35:28,719 --> 00:35:32,000
Speaker 5: That issue is it lives on my book Macbarr in

667
00:35:32,119 --> 00:35:34,360
my browser. I bet my that is my stream of

668
00:35:34,400 --> 00:35:35,280
consciousness issue.

669
00:35:36,960 --> 00:35:40,800
Speaker 3: It is a beast and then to the point where

670
00:35:40,840 --> 00:35:45,280
it has a it has a there's another issue that

671
00:35:45,440 --> 00:35:48,440
is a summary of all of the LSP implementations that

672
00:35:48,480 --> 00:35:50,719
you can see are gradually all getting checked off.

673
00:35:51,519 --> 00:35:53,000
Speaker 5: Yes, I think itels like one left.

674
00:35:53,880 --> 00:35:57,519
Speaker 3: Yeah, you're hitting a point of this is becoming a ship. Yeah,

675
00:35:57,639 --> 00:35:59,159
like you can see. I'll include it in the show

676
00:35:59,159 --> 00:36:00,760
notes for people who want to see this because it's

677
00:36:00,880 --> 00:36:05,199
really I love the historical sense of this, because there's

678
00:36:05,239 --> 00:36:08,800
halfway through this issue you guys change gears on this

679
00:36:09,119 --> 00:36:12,159
LSP integration mindset. You could see you clearly think bigger

680
00:36:12,199 --> 00:36:12,320
in it.

681
00:36:12,440 --> 00:36:15,519
Speaker 5: There was actually I think two or three points where

682
00:36:16,480 --> 00:36:19,000
we had to change gears and not even it wasn't

683
00:36:19,000 --> 00:36:22,400
even enough. It was actually Roslin. So I had the

684
00:36:22,480 --> 00:36:24,760
idea for this probably two years ago, and I think

685
00:36:24,800 --> 00:36:27,880
the first PR was January twenty twenty four, so well

686
00:36:27,920 --> 00:36:32,039
that's coming up to almost two years. And the basic

687
00:36:32,159 --> 00:36:35,280
idea was can we use the razor source generator in

688
00:36:35,480 --> 00:36:38,639
the ide not just at build time, and then live

689
00:36:38,679 --> 00:36:41,440
within Rosalin And that was all cool. And we got

690
00:36:41,480 --> 00:36:44,480
together a team, you know, with Roslin, and had a

691
00:36:44,519 --> 00:36:47,119
bunch of meetings, which is what that stream of consciousness

692
00:36:47,119 --> 00:36:51,920
issue is sort of the summary of. And so all fine,

693
00:36:51,960 --> 00:36:55,039
we start working. And then Roslin, for you know, they

694
00:36:55,039 --> 00:36:59,000
obviously have their own desires and performance goals. So I

695
00:36:59,079 --> 00:37:01,519
think the first thing that had was they moved all

696
00:37:01,679 --> 00:37:05,400
source generators. Now none of them run in the visual

697
00:37:05,400 --> 00:37:09,679
studio process, and so if Razer wanted to access that data,

698
00:37:09,880 --> 00:37:11,840
we couldn't be in the visual studio process anymore. So

699
00:37:11,920 --> 00:37:13,840
we now had to go over to this process, and

700
00:37:13,880 --> 00:37:16,280
so we rearchitected there in the middle to do that.

701
00:37:16,480 --> 00:37:16,920
Speaker 1: And then.

702
00:37:18,840 --> 00:37:21,599
Speaker 5: That you know, we sort of got past that. There's

703
00:37:21,599 --> 00:37:24,559
a bunch of stuff of having our own external process

704
00:37:24,599 --> 00:37:28,360
which we haven't had before, et cetera. And then they

705
00:37:28,599 --> 00:37:31,880
Rosland introduced this another thing for source generators where they

706
00:37:32,000 --> 00:37:35,719
now run if you set your idea up or by default,

707
00:37:35,920 --> 00:37:38,360
they run in what's called balance mode, which is essentially

708
00:37:38,400 --> 00:37:40,440
they run when you save a file and when you

709
00:37:40,519 --> 00:37:42,400
do a build, but they don't run on every keystroke.

710
00:37:42,440 --> 00:37:44,880
Because there's lots of source generators now and some of

711
00:37:44,920 --> 00:37:47,960
them are a little slow. Of course, for Razor that

712
00:37:48,079 --> 00:37:50,440
doesn't work. We need to run on every keystroke, and

713
00:37:50,519 --> 00:37:52,119
so we had to adapt to that as well. And

714
00:37:52,239 --> 00:37:55,840
so there's been a few things where I guess it's

715
00:37:55,920 --> 00:37:57,880
the downside of living in the same world is where

716
00:37:57,920 --> 00:38:02,280
sort of we're also from the same monumental shifts that

717
00:38:02,400 --> 00:38:04,559
happened sometimes in that world. We were a little bit

718
00:38:04,599 --> 00:38:05,360
isolated before.

719
00:38:05,440 --> 00:38:08,840
Speaker 3: But sure, now your change in architecture is also added

720
00:38:08,880 --> 00:38:10,440
by their changes in architecture.

721
00:38:10,519 --> 00:38:13,480
Speaker 5: That's right, And I mean there's other there's changes in

722
00:38:13,599 --> 00:38:17,199
architecture that they could do and that are sort of

723
00:38:17,280 --> 00:38:19,360
on their roadmap that would make things easier for us too.

724
00:38:20,119 --> 00:38:22,239
So you know, it's not all I don't want to

725
00:38:22,280 --> 00:38:24,119
make it seem like the bad thing, but it's It's

726
00:38:24,119 --> 00:38:27,679
definitely been an interesting eighteen months. And I think the

727
00:38:29,000 --> 00:38:32,119
biggest thing about the exciting thing for me now is

728
00:38:32,480 --> 00:38:34,320
like as you say, we're sort of starting to get

729
00:38:34,360 --> 00:38:37,119
in close to the end, is just that this is

730
00:38:37,159 --> 00:38:40,679
the first thing I can remember working on a Microsoft

731
00:38:40,760 --> 00:38:45,199
where it's a reasonable size idea and a reasonable size implementation,

732
00:38:45,559 --> 00:38:49,119
but it's sort of all or nothing. We can't really

733
00:38:49,280 --> 00:38:53,079
do this halfway. We couldn't have rolled this out piece

734
00:38:53,079 --> 00:38:55,639
at a time, we would have just been you know,

735
00:38:55,800 --> 00:38:59,239
essentially making everything worse for everybody. And so that's a

736
00:38:59,280 --> 00:39:01,440
little nerve wrack, you know, the big switch it happened.

737
00:39:01,480 --> 00:39:04,119
Speaker 3: Yeah, you don't like big bangs, big bangs bad.

738
00:39:04,880 --> 00:39:08,719
Speaker 5: Yeah, well that's right. It happened about a month ago

739
00:39:08,760 --> 00:39:10,960
with Visual Studio code. We switched the sea Sharp extension

740
00:39:11,000 --> 00:39:13,800
to have this on by defaults and you know, there

741
00:39:13,880 --> 00:39:17,280
was a couple of little rough edges, but nothing too bad.

742
00:39:17,320 --> 00:39:19,559
And of course that extension releases weekly if you're on

743
00:39:19,599 --> 00:39:22,119
the pre release channel, so it's pretty quick to get

744
00:39:22,199 --> 00:39:25,679
to get a fix out. But yeah, having it on

745
00:39:26,880 --> 00:39:29,480
in Visual Studio is the next big the next big hurdle,

746
00:39:29,599 --> 00:39:32,039
So it's definitely exciting times definitely.

747
00:39:32,159 --> 00:39:32,360
Speaker 1: Yeah.

748
00:39:32,440 --> 00:39:34,840
Speaker 3: Okay, Well it's just you know, as part of the

749
00:39:34,960 --> 00:39:38,519
new Microsoft, the fact that the literally the thinking and

750
00:39:38,639 --> 00:39:41,400
how these features evolve is documented publicly.

751
00:39:41,440 --> 00:39:43,159
Speaker 1: Anybody can look at it if they want to look out.

752
00:39:43,199 --> 00:39:46,199
Speaker 5: I mean, that's one of the I would say, the

753
00:39:46,199 --> 00:39:49,000
reason I'm at Microsoft, but definitely one of the biggest

754
00:39:49,039 --> 00:39:51,400
draw cards, you know. I remember I was a sea

755
00:39:51,400 --> 00:39:54,320
Sharp developer in industry when Roslin was open sourced and

756
00:39:54,440 --> 00:39:57,880
just watching all of everything happening on GitHub and you

757
00:39:57,960 --> 00:40:01,039
know a few little contributions here and there. That's like

758
00:40:01,320 --> 00:40:03,119
with such a huge draw card for me. It's the

759
00:40:03,199 --> 00:40:05,320
bit about my job I love the most is that

760
00:40:05,599 --> 00:40:09,880
interacting with the our users on GitHub because they're all developers,

761
00:40:09,920 --> 00:40:11,599
we all speak the same language. You know, we can

762
00:40:11,679 --> 00:40:14,239
all can we can we can shortcut a lot of things.

763
00:40:15,400 --> 00:40:18,639
I love that bit. And so you know, I'm I'm

764
00:40:18,679 --> 00:40:21,280
on read at watching when people mention it, I'm on

765
00:40:21,760 --> 00:40:24,960
blue Sky and masterdon and everywhere else. Just yeah, that

766
00:40:25,079 --> 00:40:28,000
community involvement of being on GitHub is a wonderful thing.

767
00:40:28,119 --> 00:40:33,159
Speaker 2: Does Microsoft need more contributors to the GitHub repos for

768
00:40:34,000 --> 00:40:37,239
all of these things? Is there a lack of Is

769
00:40:37,280 --> 00:40:39,760
there a perceived lack on Microsoft's part of, you know,

770
00:40:39,840 --> 00:40:41,199
we need more community involvement?

771
00:40:41,320 --> 00:40:43,840
Speaker 5: I think I think it's I mean, it's gift. So

772
00:40:43,960 --> 00:40:45,519
I don't know, I don't know the need is the

773
00:40:45,599 --> 00:40:48,800
right word. I think it's always welcome, it's it's a

774
00:40:48,840 --> 00:40:52,320
gift when it comes. I think there's some It really

775
00:40:52,400 --> 00:40:55,840
depends on the product, you know, sometimes, particularly say the

776
00:40:55,920 --> 00:40:59,880
c sharp compiler side of Rouslom. Sometimes when they're getting

777
00:41:00,119 --> 00:41:02,639
to crunch time for a release, which is, you know,

778
00:41:02,760 --> 00:41:07,039
sort of starting about a month or two ago, their

779
00:41:07,280 --> 00:41:10,960
heads down fixing bugs, reviewing prs, etc. Any extra load

780
00:41:11,079 --> 00:41:14,480
on them to review community prs is often too much

781
00:41:14,639 --> 00:41:18,079
and they'll they'll have to push the community pr like

782
00:41:18,119 --> 00:41:20,400
to tell the person, you know, we're not going to

783
00:41:20,400 --> 00:41:22,599
be able to get to this for a couple of months, so,

784
00:41:23,320 --> 00:41:25,920
you know, and that's you know, not a great thing

785
00:41:25,960 --> 00:41:28,800
to have to say, because obviously maybe someone was hoping

786
00:41:28,840 --> 00:41:31,239
to get something into Sea Sharp fourteen and they've missed

787
00:41:31,280 --> 00:41:34,760
the boat or not from their fault, you know. So

788
00:41:34,840 --> 00:41:37,199
I think that sort of thing can happen. But generally speaking,

789
00:41:37,320 --> 00:41:40,320
Roslin gets a reasonable load of community contributions that are

790
00:41:41,599 --> 00:41:45,119
they're all very welcome on Razer. We don't get a lot.

791
00:41:45,599 --> 00:41:50,119
We've had some over the years and definitely very appreciative.

792
00:41:50,119 --> 00:41:53,320
I think Razor is a difficult, slightly difficult thing to

793
00:41:53,360 --> 00:41:55,400
get started with, just because you know, it is five

794
00:41:55,519 --> 00:42:00,480
languages in one and it's hard to juggle and learn

795
00:42:00,559 --> 00:42:03,320
about all the little quirks of Well, here's a method

796
00:42:03,360 --> 00:42:05,119
that sounds like it does the right thing, but before

797
00:42:05,159 --> 00:42:07,079
you call this, you have to be sure of these

798
00:42:07,119 --> 00:42:09,679
other things first. And it's not really well documented.

799
00:42:09,800 --> 00:42:15,000
Speaker 2: Obviously, I can't imagine how one would go about trying

800
00:42:15,079 --> 00:42:19,119
to write a Razor editor. I mean that just seems

801
00:42:19,239 --> 00:42:23,079
like a big, big chunk of meat to you know,

802
00:42:23,320 --> 00:42:24,000
to chew off.

803
00:42:24,599 --> 00:42:27,199
Speaker 5: It's it's definitely I mean I wasn't there when it started,

804
00:42:27,239 --> 00:42:31,079
but yeah, it's definitely an ambitious goal. In particular the

805
00:42:31,159 --> 00:42:34,000
way that LSP works. You know, essentially the Razor tooling

806
00:42:34,119 --> 00:42:37,760
produces two files. Out of your razor file, it produces

807
00:42:37,760 --> 00:42:42,159
a HTML file and a c sharp file, and most

808
00:42:43,679 --> 00:42:46,920
you know, most of the questions that are asked about it,

809
00:42:46,960 --> 00:42:49,679
it actually forwards onto these other two servers and then

810
00:42:49,719 --> 00:42:51,599
it gets the answers back, and sometimes we have to

811
00:42:51,639 --> 00:42:54,079
combine them, and sometimes we have to discard some or

812
00:42:54,159 --> 00:42:58,840
we have to map coordinates around and it's it's interesting

813
00:42:58,880 --> 00:43:01,800
we get I mean, we get a lot of benefit

814
00:43:01,880 --> 00:43:03,559
from that as well, though. So yeah, we don't really

815
00:43:03,679 --> 00:43:06,719
understand C sharp code, and we don't want to because

816
00:43:06,840 --> 00:43:09,159
obviously that would be writing a separate PASA, which we

817
00:43:09,159 --> 00:43:12,519
don't have to. That's right. One of the other big

818
00:43:12,599 --> 00:43:16,480
innovations that's actually on by default in dotnet ten is

819
00:43:17,760 --> 00:43:20,320
and fred on the ross and compiler team did this

820
00:43:20,480 --> 00:43:25,039
for us. He raised a compiler now uses part of

821
00:43:25,119 --> 00:43:29,800
the Roslyn PASA to parse the sea sharp and so

822
00:43:30,599 --> 00:43:36,440
for things like interpolated strings in your sea sharp, that

823
00:43:36,679 --> 00:43:38,840
was something the Razor compiler didn't know how to handle,

824
00:43:39,159 --> 00:43:41,480
and to implement it in the Razor compiler would have

825
00:43:41,559 --> 00:43:43,920
been teaching it the same parsing rules as is in

826
00:43:44,000 --> 00:43:45,800
the sea sharp compaler. So if we can just reuse

827
00:43:45,840 --> 00:43:49,440
that component, we sort of get it for free. And

828
00:43:49,559 --> 00:43:51,280
so there's a lot more of those, you know, like

829
00:43:51,320 --> 00:43:53,159
I was saying before, a lot more of those sharing things.

830
00:43:53,199 --> 00:43:56,800
I'm hoping that we can take advantage of. My sort

831
00:43:56,840 --> 00:44:02,800
of personal goal or north star maybe is right now

832
00:44:03,440 --> 00:44:06,000
the light bulb menu in a raiser file, we have

833
00:44:06,159 --> 00:44:09,880
an allow list of which things we will show. So

834
00:44:10,079 --> 00:44:12,960
Roslin might suggest six things you could do to this code,

835
00:44:13,320 --> 00:44:15,400
but we'll only show two of them, and that's because

836
00:44:15,480 --> 00:44:18,440
we need to sort of vet each one and make

837
00:44:18,480 --> 00:44:21,119
sure that it's not going to possibly break your razor code.

838
00:44:21,639 --> 00:44:23,559
My north star is that we can just remove that

839
00:44:23,639 --> 00:44:25,760
allow list and we can just say anything that Roland

840
00:44:25,760 --> 00:44:29,800
suggests we know how to handle. And so we've done

841
00:44:29,800 --> 00:44:32,719
it for using statements that was one of the one

842
00:44:32,760 --> 00:44:35,199
of the big things I remember first working on was

843
00:44:35,239 --> 00:44:38,719
pretty exciting. Was any anything that tries to introduce a

844
00:44:38,800 --> 00:44:41,280
using directive, we will now map that to a Raser

845
00:44:41,360 --> 00:44:45,320
using directive and they're pretty similar. So that's okay. But yeah,

846
00:44:45,400 --> 00:44:47,239
we've got more work to do obviously. You know, if

847
00:44:47,320 --> 00:44:49,760
you want to add a method, that's pretty easy in

848
00:44:49,760 --> 00:44:51,519
a c sharp file, but in a Razer file you

849
00:44:51,639 --> 00:44:53,239
might need to add a code block, you might not

850
00:44:53,719 --> 00:44:55,000
you might be a code behind file.

851
00:44:55,280 --> 00:44:55,440
Speaker 1: You know.

852
00:44:55,559 --> 00:44:57,280
Speaker 5: There's all these sorts of things we need to work through.

853
00:44:57,920 --> 00:44:58,480
Speaker 1: But I'm hoping.

854
00:44:58,880 --> 00:45:01,679
Speaker 5: I'm hoping this is a new foundation we can get

855
00:45:01,679 --> 00:45:01,960
there from.

856
00:45:02,320 --> 00:45:06,880
Speaker 2: What do you think is the feature of the up

857
00:45:06,920 --> 00:45:10,480
and coming Razor editor in Visual Studio twenty twenty six

858
00:45:10,639 --> 00:45:13,760
that people will freak out the most about. And I'm

859
00:45:13,840 --> 00:45:16,719
talking about Blazer developers here. What are they going to

860
00:45:16,800 --> 00:45:17,239
like the most?

861
00:45:17,400 --> 00:45:20,280
Speaker 5: Well, I mean, I hope they just the thing with

862
00:45:20,360 --> 00:45:23,519
the Razor editor over the last couple of years is

863
00:45:23,920 --> 00:45:27,079
the reliability has really not been that good, and so

864
00:45:27,159 --> 00:45:31,320
I definitely hope that is the biggest change that they'll notice.

865
00:45:31,400 --> 00:45:33,360
I think the challenge is it's hard for us as

866
00:45:33,440 --> 00:45:36,320
humans to notice that sort of thing. We are very

867
00:45:36,400 --> 00:45:39,360
quick to write it off. And you know, I was

868
00:45:39,400 --> 00:45:42,039
mentioning about how we used to use this serialized Jason file.

869
00:45:42,679 --> 00:45:45,639
I still see comments on Reddit of people saying, oh,

870
00:45:45,760 --> 00:45:48,079
just delete your OBJ folder and that'll fix the razor editor.

871
00:45:48,480 --> 00:45:50,079
Sometimes I go in there and I say, well, actually

872
00:45:50,239 --> 00:45:51,960
that won't do anything. We have no files in there,

873
00:45:52,000 --> 00:45:53,760
but you feel free to delete it. That's fine, we

874
00:45:53,840 --> 00:45:54,280
won't hurt.

875
00:45:54,440 --> 00:45:57,360
Speaker 2: But what a lot of times just closing the razor

876
00:45:57,440 --> 00:45:59,679
file and reopening it, you know, gets rid of this

877
00:46:00,559 --> 00:46:02,239
and recolors everything correctly.

878
00:46:02,440 --> 00:46:05,360
Speaker 5: And yeah, that's right, and so that that I'm hoping

879
00:46:05,519 --> 00:46:08,000
that we have to do that less. In fact, I'm

880
00:46:08,000 --> 00:46:10,440
hoping you have to do that never, especially the colors one.

881
00:46:10,559 --> 00:46:12,400
That one we have a we actually have a name

882
00:46:12,480 --> 00:46:14,679
for that internally. We call that Disco colors. And it's

883
00:46:15,119 --> 00:46:21,159
pretty well, pretty well known issue. Yeah that with co hosting.

884
00:46:21,880 --> 00:46:24,440
With co hosting, that should be completely a thing of

885
00:46:24,480 --> 00:46:29,119
the past. The question is whether anyone will will notice,

886
00:46:29,119 --> 00:46:30,519
because you know, when things are working.

887
00:46:30,519 --> 00:46:32,960
Speaker 2: Of course there will, we'll see. The other thing is, dude,

888
00:46:33,000 --> 00:46:35,480
I have an I nine computer with sixty four gigs

889
00:46:35,519 --> 00:46:38,719
of RAM, and it's still happens on my computer.

890
00:46:39,079 --> 00:46:41,079
Speaker 5: Yeah, I mean that one, that one's not a performancing,

891
00:46:41,119 --> 00:46:43,880
that one's just keeping these two worlds up to date.

892
00:46:43,960 --> 00:46:46,719
That one's that What that means is, you know, Rosen

893
00:46:46,840 --> 00:46:49,400
thinks that there's a there's a class from you know,

894
00:46:49,559 --> 00:46:51,760
character four to character seven, and Razer thinks that's a

895
00:46:51,880 --> 00:46:54,760
character seeks to character whatever, and we just get the

896
00:46:54,800 --> 00:46:56,519
colors from it. But so that one should be thin.

897
00:46:56,719 --> 00:46:58,480
But yeah, and the other thing is performance, and the

898
00:46:58,519 --> 00:47:02,800
big the big win for performance with co hosting really

899
00:47:03,280 --> 00:47:08,639
is hot reload. So with the old editor, we you know,

900
00:47:08,840 --> 00:47:12,360
the Razor tooling compiled all your Raiser files and Roslin

901
00:47:12,400 --> 00:47:16,719
compiled your Razor files. At build time and obviously at runtime,

902
00:47:17,119 --> 00:47:18,800
both of those two things can be in play, and

903
00:47:18,880 --> 00:47:21,800
so hot reload has this code to map from. We

904
00:47:21,960 --> 00:47:24,840
essentially have two solutions in memory, ones called design time,

905
00:47:24,880 --> 00:47:26,480
which is what you're looking at. One is called runtime,

906
00:47:27,119 --> 00:47:29,199
and hot reload has to map between the two, et cetera.

907
00:47:30,400 --> 00:47:32,079
And all of that just goes away now because co

908
00:47:32,199 --> 00:47:35,519
hosting uses the same source generator, build time users. And

909
00:47:35,679 --> 00:47:38,280
so I mean, I can't remember off the top of

910
00:47:38,320 --> 00:47:41,800
my head, but Chris on the Razor Compiler team produced

911
00:47:41,840 --> 00:47:44,920
a series of graphs of that some of the time

912
00:47:45,000 --> 00:47:48,000
savings for large projects were just astronomical, and it's just

913
00:47:48,400 --> 00:47:50,280
we're just not doing a whole lot of work we

914
00:47:50,360 --> 00:47:52,800
had to do before, and so hopefully that impacts.

915
00:47:52,840 --> 00:47:55,800
Speaker 2: We have a ten second rule for het reload. If

916
00:47:55,840 --> 00:47:58,039
it does an update in ten seconds, I closed, I

917
00:47:58,440 --> 00:48:01,320
stopped the app and run it again. It's just one

918
00:48:01,360 --> 00:48:01,880
of those things.

919
00:48:02,039 --> 00:48:05,320
Speaker 5: Yeah, so yeah, that that should be a big win

920
00:48:05,400 --> 00:48:05,719
as well.

921
00:48:06,039 --> 00:48:09,760
Speaker 2: Yeah that's great. But yeah, well these dall sound really

922
00:48:09,840 --> 00:48:14,320
fantastic and yeah, very powerful and as I mentioned before,

923
00:48:15,000 --> 00:48:20,480
paving the way to parody with the visual Studio code

924
00:48:20,599 --> 00:48:25,039
editor that we desperately want. So this is all good news.

925
00:48:25,679 --> 00:48:28,480
Is there anything else that we didn't touch on that

926
00:48:28,559 --> 00:48:29,440
you want to talk about?

927
00:48:30,039 --> 00:48:33,320
Speaker 5: I don't think so, you know, as I I could

928
00:48:33,360 --> 00:48:34,400
talk about this stuff.

929
00:48:35,840 --> 00:48:38,920
Speaker 2: For a while. You know, we're not pressed for time.

930
00:48:39,039 --> 00:48:41,880
We have someone if you want to continue.

931
00:48:43,199 --> 00:48:45,679
Speaker 3: I mean, the main part about what do you think

932
00:48:45,719 --> 00:48:48,119
in the terms of testing for all of this, because

933
00:48:48,159 --> 00:48:51,480
I think it's always a challenge with these mixed language files.

934
00:48:51,519 --> 00:48:53,760
It's like, how do I know that it's working correct?

935
00:48:53,920 --> 00:48:57,239
Speaker 5: Yeah, So that's that's Actually, that's one really big influence

936
00:48:57,320 --> 00:49:00,559
that I think. So, as I said, right started an

937
00:49:00,599 --> 00:49:03,920
asp on net. When it came over to Rosalin, two

938
00:49:04,000 --> 00:49:06,599
of the people from the asp on net team came

939
00:49:06,639 --> 00:49:09,199
over with it, and so they were heading up the

940
00:49:09,280 --> 00:49:12,960
Razor effort, but they were under Roslin, and over time,

941
00:49:13,119 --> 00:49:16,280
through Riors and people getting promoted and some leaving Microsoft,

942
00:49:16,320 --> 00:49:20,400
et cetera, that it's all changed out. But the I

943
00:49:20,480 --> 00:49:25,000
feel like what we've been working on, you know, me

944
00:49:25,119 --> 00:49:26,400
and Dust and the rest of the team over the

945
00:49:26,480 --> 00:49:29,400
last few years is sort of the rosalindification of Razor

946
00:49:29,760 --> 00:49:33,239
taking all these things from and so the testing is.

947
00:49:33,360 --> 00:49:36,519
Speaker 3: Meme has stuck around. Right to me, it'd always felt

948
00:49:36,800 --> 00:49:39,920
temporary that this was the new version of c sharp,

949
00:49:39,960 --> 00:49:42,760
this sort of compiler of a service mindset, but it

950
00:49:42,960 --> 00:49:45,760
just yeah, it turns it seems like everything compiler related

951
00:49:45,800 --> 00:49:47,719
has lived under Roslin ever since.

952
00:49:48,159 --> 00:49:52,360
Speaker 5: Yeah, sometimes codenames stick, you know, But yeah, the testing front,

953
00:49:52,719 --> 00:49:55,559
the testing front is definitely something we've we've taken from them,

954
00:49:55,719 --> 00:50:00,519
and so there's a bunch of new tests for hosting

955
00:50:01,440 --> 00:50:03,920
in the Raisor repo, and every single one of them

956
00:50:04,280 --> 00:50:07,000
is written as what I would call a Roslin style test,

957
00:50:07,000 --> 00:50:11,000
which is really like snapshot testing, where we essentially have

958
00:50:11,480 --> 00:50:15,119
here's your raser document, here's your operation you want to run,

959
00:50:15,320 --> 00:50:17,920
and here's what the raser document should look like. The

960
00:50:18,079 --> 00:50:21,760
older styal tests that come from more on the ASPN

961
00:50:21,800 --> 00:50:25,239
and outside, they're more written like a library test, written

962
00:50:25,239 --> 00:50:27,519
because asp dot net developers were all used to writing

963
00:50:27,559 --> 00:50:29,639
libraries right like, it makes total sense how they got there.

964
00:50:29,679 --> 00:50:32,360
It's just an interesting difference. And so there's lots of mocks,

965
00:50:32,400 --> 00:50:34,639
and there's lots of unit tests of specific this method

966
00:50:34,719 --> 00:50:36,920
should do this. And in the tooling side, we don't

967
00:50:36,960 --> 00:50:38,960
really care what that method should do. We just care

968
00:50:39,000 --> 00:50:40,920
that the user's code looks how they think it should

969
00:50:40,920 --> 00:50:44,480
look after they've done whatever of they've done. And so

970
00:50:44,599 --> 00:50:46,800
I think that's a big part of it. I think

971
00:50:46,840 --> 00:50:50,760
one of the interesting things when we go to graduate

972
00:50:51,000 --> 00:50:55,199
co hosting from being a an experiment and let's put

973
00:50:55,239 --> 00:50:57,480
it out there and see if it breaks, to actually, okay,

974
00:50:57,519 --> 00:51:01,320
it's great, let's turn it on and we remove some

975
00:51:01,480 --> 00:51:04,920
of the old code. The temptation is, oh, we don't

976
00:51:04,960 --> 00:51:07,760
need this test assembly anymore because none of this code

977
00:51:07,840 --> 00:51:09,840
is real. But I think we actually need to go

978
00:51:10,000 --> 00:51:12,480
through that test code with a little bit of a

979
00:51:12,519 --> 00:51:14,880
fine tooth comb, because there's probably some little nuggets in

980
00:51:14,920 --> 00:51:17,599
there that we maybe don't have coverage on that, you know,

981
00:51:17,719 --> 00:51:19,960
we need to add in the newer style.

982
00:51:20,280 --> 00:51:24,960
Speaker 2: Good stuff. What's next for you, David? What's in your inbox?

983
00:51:25,679 --> 00:51:26,400
Your to do list?

984
00:51:27,639 --> 00:51:31,719
Speaker 5: Well, not a lot because the wonders of time zone

985
00:51:31,719 --> 00:51:33,599
differences mean I get most of the day to myself.

986
00:51:33,719 --> 00:51:37,800
So no, the thing I'm working on, I'm still just

987
00:51:37,880 --> 00:51:40,440
you know, trying to basically land this ship, you know,

988
00:51:40,519 --> 00:51:42,960
work out how to pull out some of the older

989
00:51:42,960 --> 00:51:46,119
stuff and make it as efficient as possible. Very very

990
00:51:46,199 --> 00:51:49,679
keen to see the feedback from people, and I'm I'm

991
00:51:49,760 --> 00:51:51,800
hesitant to take on too much right now because I'm

992
00:51:51,880 --> 00:51:54,400
just poised for the bugs. But if you see them,

993
00:51:54,519 --> 00:51:56,440
if you see them, log them and of fixham.

994
00:51:56,920 --> 00:51:57,360
Speaker 2: That's great.

995
00:51:57,440 --> 00:51:59,559
Speaker 3: Take the preview out for us bin try this on.

996
00:52:00,199 --> 00:52:05,159
Speaker 2: Yeah, absolutely absolutely, I'm looking forward to it. Yeah, okay, Well,

997
00:52:05,840 --> 00:52:07,840
thanks very much for spending the hour with us.

998
00:52:07,880 --> 00:52:08,119
Speaker 1: David.

999
00:52:08,119 --> 00:52:10,440
Speaker 2: It's great pleasure to talk to you, and we're going

1000
00:52:10,519 --> 00:52:12,400
to have to have you on again. If you have

1001
00:52:12,519 --> 00:52:15,039
anything that haply comes up that you want to talk about,

1002
00:52:15,679 --> 00:52:17,440
feel free to reach out. Thank you all right, and

1003
00:52:17,559 --> 00:52:40,719
we'll talk to you next time on dot netwoks. Dot

1004
00:52:40,840 --> 00:52:43,400
net Rocks is brought to you by Franklin's Net and

1005
00:52:43,559 --> 00:52:47,440
produced by Pop Studios, a full service audio, video and

1006
00:52:47,559 --> 00:52:51,760
post production facility located physically in New London, Connecticut, and

1007
00:52:51,920 --> 00:52:55,920
of course in the cloud online at pwop dot com.

1008
00:52:56,719 --> 00:52:58,760
Visit our website at d O T N E t

1009
00:52:59,079 --> 00:53:03,079
R O c K S DOM for RSS feeds, downloads,

1010
00:53:03,280 --> 00:53:06,920
mobile apps, comments, and access to the full archives going

1011
00:53:07,000 --> 00:53:10,360
back to show number one, recorded in September two thousand

1012
00:53:10,400 --> 00:53:13,000
and two. And make sure you check out our sponsors.

1013
00:53:13,199 --> 00:53:16,000
They keep us in business. Now go write some code,

1014
00:53:16,559 --> 00:53:17,320
see you next time.

1015
00:53:18,239 --> 00:53:20,039
Speaker 5: You got jud Middle Vans

1016
00:53:22,119 --> 00:53:26,840
Speaker 1: And the

