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

2
00:00:03,040 --> 00:00:03,799
no ads?

3
00:00:04,440 --> 00:00:04,799
Speaker 2: Easy?

4
00:00:05,360 --> 00:00:08,560
Speaker 1: Become a patron for just five dollars a month. You

5
00:00:08,599 --> 00:00:12,160
get access to a private RSS feed where all the shows.

6
00:00:11,839 --> 00:00:14,240
Speaker 2: Have no ads. Twenty dollars a month.

7
00:00:14,279 --> 00:00:16,879
Speaker 1: We'll get you that and a special dot net Rocks

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

9
00:00:21,120 --> 00:00:36,320
dot com. Hey guess what, it's dot net rocks. I'm

10
00:00:36,399 --> 00:00:40,039
Carl Franklin and a Verchard Campbell. Dustin Campbell. No relation

11
00:00:40,399 --> 00:00:41,759
is here. He's our guest today.

12
00:00:41,920 --> 00:00:45,159
Speaker 2: I wish I was cool enough to be related to Dustin, honestly.

13
00:00:44,840 --> 00:00:46,920
Speaker 1: Talking to him in a minute. Richard, you remember that

14
00:00:47,039 --> 00:00:48,640
when we were on the scott net Rocks tour.

15
00:00:48,880 --> 00:00:49,799
Speaker 2: Yes, we went.

16
00:00:51,479 --> 00:00:56,560
Speaker 1: To that pub and the sign said no Campbell's allowed. Yes,

17
00:00:56,600 --> 00:00:58,240
and you sat down in front of the sign and

18
00:00:58,240 --> 00:01:01,799
I hung your head and shape we take.

19
00:01:01,640 --> 00:01:05,319
Speaker 2: A picture that turns out actually relating to those Campbell's

20
00:01:05,599 --> 00:01:06,359
so right.

21
00:01:06,599 --> 00:01:13,519
Speaker 1: Yeah, yeah, well, let's get started with better no framework, awesome.

22
00:01:20,799 --> 00:01:24,280
Speaker 2: Apart man, what do you got Simon crop, the source

23
00:01:24,280 --> 00:01:26,840
of all the amazing Simon Crop.

24
00:01:26,920 --> 00:01:30,040
Speaker 1: Yes, yeah, sources of all good things on the internet. Anyway,

25
00:01:30,879 --> 00:01:38,040
found this it's Ziggy Creatures account on GitHub fusion cash.

26
00:01:38,519 --> 00:01:42,560
So it's an open source, fast, easy to use, robust

27
00:01:42,599 --> 00:01:48,480
hybrid cash with advanced resiliency features. And they even you know, say,

28
00:01:48,760 --> 00:01:53,920
you know what about this Microsoft hyper cash hybrid cash

29
00:01:53,920 --> 00:01:57,239
that they came out within dot net nine, so they

30
00:01:57,400 --> 00:02:00,159
actually addressed that, you know, what's the difference in how

31
00:02:00,200 --> 00:02:04,680
can it work together? But these guys got an award

32
00:02:04,760 --> 00:02:08,120
from Google. Oh yeah, in twenty twenty one, fusion cash

33
00:02:08,319 --> 00:02:12,879
received the Google Open Source Peer Bonus Award. So you

34
00:02:12,919 --> 00:02:17,520
know it does it does all sorts of things right,

35
00:02:17,560 --> 00:02:24,560
but resiliency features, performance, scalability features, flexibility, observability like native

36
00:02:24,719 --> 00:02:30,479
observability supportvia open telemetry, full sync and async support. Like

37
00:02:30,599 --> 00:02:34,240
it's really good. Yeah, and it's all open source and

38
00:02:34,639 --> 00:02:36,120
know and learn it, love it, go get it.

39
00:02:36,199 --> 00:02:37,240
Speaker 2: That's pretty cool. Yeah.

40
00:02:37,360 --> 00:02:39,400
Speaker 1: They don't don't try and solve this problem. It is

41
00:02:39,439 --> 00:02:42,879
solved totally. You have several options. Don't do it yourself.

42
00:02:43,039 --> 00:02:45,240
Speaker 2: Yeah, So he was talking to us today, Richard Braud

43
00:02:45,280 --> 00:02:47,400
the comment off of show eighteen thirty five, which is

44
00:02:47,439 --> 00:02:49,599
back in twenty twenty three. We did another show called

45
00:02:49,639 --> 00:02:52,759
The Next Sea Sharp, but this was with Mads, I've

46
00:02:52,759 --> 00:02:54,680
temporarily called the show the Next Sea Shop, but who

47
00:02:54,719 --> 00:02:56,520
knows what's going to happen. We're just beginning to recording

48
00:02:56,560 --> 00:02:59,599
off and change the name after right. And we had

49
00:02:59,599 --> 00:03:01,560
a pun of comments on those shows, as usual, because

50
00:03:01,560 --> 00:03:04,000
there's lots of See Sharp lovers listen to the show,

51
00:03:04,039 --> 00:03:07,400
and when the gods of See Sharp show up to

52
00:03:07,439 --> 00:03:09,560
talk to us about it, they have things to say. Yeah.

53
00:03:09,599 --> 00:03:11,560
This comment comes from Aaron Morgan, who said, what I

54
00:03:11,560 --> 00:03:14,599
love about discards the underscore is that they show intent.

55
00:03:14,759 --> 00:03:17,599
I'm a big believer in self documenting code, and discards

56
00:03:17,639 --> 00:03:21,439
form part of this toolbox, particularly with returned tuples or,

57
00:03:21,479 --> 00:03:24,919
as Mads mentioned, deconstructors. You don't always want to use

58
00:03:24,960 --> 00:03:25,879
all the parameters.

59
00:03:26,240 --> 00:03:30,719
Speaker 1: Yeah, this is the underscore thing that you can return.

60
00:03:30,879 --> 00:03:33,439
It's not really returning anything, but it shows that you

61
00:03:33,439 --> 00:03:35,800
know something is being returned even though you're not using it.

62
00:03:35,919 --> 00:03:36,400
Speaker 3: Yeah.

63
00:03:36,439 --> 00:03:39,280
Speaker 2: But it's a discard, yeah, discard. Yeah. I understand that

64
00:03:39,319 --> 00:03:41,960
they also avoid memory allocation of that variable, although I'm

65
00:03:42,000 --> 00:03:44,280
not sure if that later compilers figure out that var

66
00:03:44,439 --> 00:03:47,840
isn't used or infers a discard at run time anyway. Yeah, okay,

67
00:03:48,439 --> 00:03:50,240
and it might even change as the different versions. This

68
00:03:50,319 --> 00:03:52,680
is a couple of versions you go to. I bet

69
00:03:52,719 --> 00:03:54,680
you Dustin can probably answer that one. I'm sure you can.

70
00:03:55,439 --> 00:03:57,120
So Aaron, thank you so much for commented. A copy

71
00:03:57,120 --> 00:03:58,400
of music code By is on its way to you.

72
00:03:58,400 --> 00:04:00,120
And if you'd like a copy of music code to

73
00:04:00,120 --> 00:04:02,199
comment on the website at dot rocks dot com or

74
00:04:02,199 --> 00:04:03,960
on the facebooks. We publish every show there. And if

75
00:04:03,960 --> 00:04:05,599
you comment there and I read on the show, well,

76
00:04:05,639 --> 00:04:06,879
don't do your copy used to go by.

77
00:04:06,919 --> 00:04:08,599
Speaker 1: And if you want music to code By but you

78
00:04:08,599 --> 00:04:10,439
don't want to comment, just go to music to code

79
00:04:10,439 --> 00:04:13,960
by dot net. There's twenty two tracks. Now you can

80
00:04:14,000 --> 00:04:17,959
get the collection an MP three, flack or wave format.

81
00:04:19,319 --> 00:04:21,360
All right, So before we bring on Dustin, we got

82
00:04:21,360 --> 00:04:24,680
to talk about nineteen sixty four because that's our show number. Yeah,

83
00:04:24,720 --> 00:04:27,279
and we've been talking about Dustin. We've been talking about

84
00:04:27,319 --> 00:04:29,800
what happens, you know, in the years that our show

85
00:04:29,839 --> 00:04:34,399
numbers represent. So nineteen sixty four was a big year

86
00:04:34,480 --> 00:04:36,680
for a lot of things. Civil Rights Act was signed

87
00:04:36,759 --> 00:04:41,319
yep in past outlawing discrimination based on race, color, religion, sex,

88
00:04:41,399 --> 00:04:46,839
or national origin. The Gulf of Tonkin Resolution. The resolution

89
00:04:46,959 --> 00:04:52,079
authorized major US involvement in the Vietnam War. So one

90
00:04:52,399 --> 00:04:56,480
so far, that's one one positive, one negative. Martin Luther

91
00:04:56,560 --> 00:04:59,399
King Junior was awarded the Nobel Peace Prize in nineteen

92
00:04:59,480 --> 00:05:03,759
sixty four. On February ninth, the Beatles made their first

93
00:05:03,759 --> 00:05:10,240
appearance on The Ed Sullivan Show, starting American Beatlemania. On

94
00:05:10,279 --> 00:05:13,439
February twenty fifth, Cassius Clay announced his name changed to

95
00:05:13,560 --> 00:05:18,199
Muhammad Ali after defeating Sonny Liston for the heavyweight boxing title.

96
00:05:18,439 --> 00:05:22,600
I'm more kil Sonny Listen, Sonny Listen. I'm gonna knock

97
00:05:22,639 --> 00:05:23,519
out Sonny Listen.

98
00:05:24,160 --> 00:05:25,199
Speaker 2: Yeah, he was something else.

99
00:05:26,439 --> 00:05:28,959
Speaker 1: The Ford Mustang was unveiled at the New York World's

100
00:05:28,959 --> 00:05:32,920
Fair on April seventeenth, becoming an iconic American car. How

101
00:05:32,920 --> 00:05:38,120
about that. The Boston Strangler, the final known murder, occurred

102
00:05:38,120 --> 00:05:40,439
in nineteen sixty four, marking the end of a series

103
00:05:40,480 --> 00:05:45,600
of crimes that terrorized the city. Kashmir, India backed out

104
00:05:45,639 --> 00:05:48,759
of a promise to hold a plebiscite in the disputed

105
00:05:48,839 --> 00:05:52,560
territory of Kashmir, escalating tensions in the region. And you know,

106
00:05:52,759 --> 00:05:57,079
they've been pretty much at at odds ever since.

107
00:05:57,160 --> 00:05:59,480
Speaker 2: They've been escalated ever since let's be clear.

108
00:06:00,079 --> 00:06:03,560
Speaker 1: Yeah, with a few close calls, if I remember correctly, Yeah,

109
00:06:03,639 --> 00:06:08,199
China tested its first atomic bomb, becoming the fifth nation

110
00:06:08,240 --> 00:06:09,560
to possess nuclear weapons.

111
00:06:10,000 --> 00:06:12,199
Speaker 2: How about that? Who were the other four? Okay?

112
00:06:12,240 --> 00:06:18,040
Speaker 1: Well, the United States obviously, I'm gonna say Russia, Soviet Union,

113
00:06:18,279 --> 00:06:19,079
Soviet Union.

114
00:06:19,240 --> 00:06:19,439
Speaker 3: Yeah.

115
00:06:19,560 --> 00:06:23,800
Speaker 2: Yeah. And let's say who were the other two?

116
00:06:24,120 --> 00:06:27,600
Speaker 1: France and United Kingdom. Oh okay, yeah, of course France,

117
00:06:28,160 --> 00:06:33,759
all right? And smoking. US General Surgeon General released a

118
00:06:33,800 --> 00:06:37,560
report linking smoking to cancer, influencing public health policies. That

119
00:06:37,680 --> 00:06:40,920
happened early in the year. Do you have any computer

120
00:06:41,279 --> 00:06:44,759
or otherwise events that you want to talk about?

121
00:06:45,000 --> 00:06:47,720
Speaker 2: A couple of space ones, the first flight of Gemini one,

122
00:06:47,759 --> 00:06:50,720
which was an unmanned test flight of that whole stack

123
00:06:50,759 --> 00:06:53,600
that would be the for the American missions for long

124
00:06:53,680 --> 00:06:57,720
duration in space before the Saturn rockets and Mariner four launches,

125
00:06:57,839 --> 00:07:02,000
the first flyby of Mars. On the computer side of things,

126
00:07:02,040 --> 00:07:06,160
the first program written and executed written in basic yay,

127
00:07:06,399 --> 00:07:10,000
happens in nineteen sixty four. Yeah, Kenedy and Kurtz from Dartmouth.

128
00:07:10,199 --> 00:07:13,639
Dartmouth ran on a GE two two five. Although became

129
00:07:13,759 --> 00:07:17,720
rapidly so popular they had to upgrade that machine. Yeah,

130
00:07:17,879 --> 00:07:21,040
and what else? Oh, the first mouse prototype so Bail

131
00:07:21,120 --> 00:07:24,079
English and Nigola Singlebart out of the Stanford Research Atitude.

132
00:07:24,079 --> 00:07:26,240
Although they originally called it the Bug.

133
00:07:26,399 --> 00:07:28,160
Speaker 1: Wait a minute, I thought that was Xerox Park Or

134
00:07:28,160 --> 00:07:32,680
did Xerox Park show it to Steve Jobs.

135
00:07:32,360 --> 00:07:35,199
Speaker 2: Integrated it into a full product? This was the prototype?

136
00:07:35,240 --> 00:07:38,000
This is before that, before that? Oh okay, yeah, all right,

137
00:07:38,279 --> 00:07:41,000
so yeah, initially called the Bug, then later named the Mouse.

138
00:07:41,480 --> 00:07:45,360
By the next year and one for you, Carl, Robert

139
00:07:45,399 --> 00:07:50,000
Moog demonstrates his first Moog synthesize Wow keyboard with the

140
00:07:50,000 --> 00:07:53,319
patch panel with all the effects and within that year

141
00:07:53,600 --> 00:07:57,000
the doors will make the song Strange Days featuring the move.

142
00:07:57,079 --> 00:07:59,199
Speaker 1: Did I tell you my Robert Moog story or Mog

143
00:07:59,319 --> 00:08:01,519
or how you pronoun So? When I was working at

144
00:08:01,600 --> 00:08:06,920
Voyetra Technologies and these guys did the sound blaster and

145
00:08:07,120 --> 00:08:10,639
the MIDI interface basically that was there. That's how they

146
00:08:10,680 --> 00:08:13,399
got popular. Then they became Turtle Beach. But anyway, I

147
00:08:13,439 --> 00:08:16,480
was working for them and doing tech support and we

148
00:08:16,480 --> 00:08:20,160
were at a NAM show in Los Angeles and we

149
00:08:20,199 --> 00:08:24,839
had a booth and Robert Moog comes over with a

150
00:08:24,879 --> 00:08:29,279
young girl who I imagine is his granddaughter. And he says, oh,

151
00:08:29,360 --> 00:08:32,240
this is really neat stuff. Check this out. Can you

152
00:08:32,240 --> 00:08:34,799
give us a demo? And he's looking at it and

153
00:08:34,840 --> 00:08:38,919
she looks bored to death. Right, She's a thirteen year

154
00:08:38,919 --> 00:08:42,000
old girl who would rather be anywhere except with Grandpa

155
00:08:42,200 --> 00:08:46,000
synth here, who's gonna take her around all these booths.

156
00:08:46,360 --> 00:08:50,440
So I did a demo and stuff, and I saw

157
00:08:50,480 --> 00:08:52,399
his badge that it was Robert Moog and so now

158
00:08:52,440 --> 00:08:53,279
I'm like, you know.

159
00:08:53,279 --> 00:08:55,879
Speaker 2: Now you're starstruck. I'm gobsmacked.

160
00:08:56,120 --> 00:08:57,679
Speaker 1: Right, Yeah, So I did a demo and then I

161
00:08:57,679 --> 00:09:00,480
walked over the lead programmer after and I said, hey,

162
00:09:00,840 --> 00:09:03,639
I just gave a demo sequence of plus to Robert Moog.

163
00:09:04,399 --> 00:09:06,679
He goes, oh, that guy he comes around every year,

164
00:09:10,799 --> 00:09:14,720
so Blase, yeah, he comes around. We give him the

165
00:09:14,720 --> 00:09:18,840
same demo every year. So that's my story. That's awesome.

166
00:09:19,200 --> 00:09:21,279
If that's all we got, I guess it's time to

167
00:09:21,360 --> 00:09:26,600
introduce Dustin. Yeah officially, so dust NEARBIA hasn't changed that much,

168
00:09:26,639 --> 00:09:28,480
but it has a little bit. Dustin Campbell is a

169
00:09:28,480 --> 00:09:32,120
principal software architect in dot net Tooling, where he currently

170
00:09:32,120 --> 00:09:36,840
works on Razor c Sharp and visual basic language experiences.

171
00:09:36,600 --> 00:09:38,559
Speaker 2: For visual Studio and Visual Studio code.

172
00:09:39,120 --> 00:09:43,399
Speaker 1: Passionate about coding productivity, Dustin's primary focus is on making

173
00:09:43,440 --> 00:09:46,759
dot net tooling great and helping design the next version

174
00:09:46,879 --> 00:09:49,840
of c sharp as part of the language design team.

175
00:09:50,440 --> 00:09:52,960
Prior to his current role, he spent several years working

176
00:09:53,000 --> 00:09:55,840
as program manager on Project Rosalind maybe you've heard of

177
00:09:55,879 --> 00:09:59,759
that couple times design, Yeah, designing the next generation of

178
00:09:59,799 --> 00:10:04,039
the see sharp and vb ID experiences. Dustin is a

179
00:10:04,080 --> 00:10:08,600
programming nut. His favorite color is blue. Well, I notice

180
00:10:08,679 --> 00:10:10,559
you have a blue shirt on and I'm wearing blue.

181
00:10:10,720 --> 00:10:13,679
Speaker 2: He's wearing a blue shirt. Yeah, yeah, yeah, Well, welcome back.

182
00:10:13,799 --> 00:10:14,480
Speaker 3: Well, thank you.

183
00:10:14,480 --> 00:10:16,639
Speaker 2: You guys have been busy. I guess huh.

184
00:10:16,279 --> 00:10:19,240
Speaker 3: It's uh yeah, it's always it's always busy times. It's

185
00:10:19,240 --> 00:10:22,320
been exceedingly busy lately. So yeah, it's really good.

186
00:10:22,399 --> 00:10:25,759
Speaker 2: We just hit preview six. Granted we're time shifting this,

187
00:10:25,919 --> 00:10:28,519
but yeah, I think, yeah, we just did preview six,

188
00:10:28,559 --> 00:10:30,679
maybe previous haven by the time this show publishes.

189
00:10:30,879 --> 00:10:34,799
Speaker 3: Yeah, yeah, about there. I honestly the previews probably for

190
00:10:34,960 --> 00:10:38,399
many folks that blur. For me, I'm not sure. Yeah, sure,

191
00:10:40,720 --> 00:10:43,960
I try and keep my eyes on C sharp fourteen. Right,

192
00:10:44,039 --> 00:10:47,000
but even still as kind of features come in from

193
00:10:47,120 --> 00:10:51,080
that and get merged into Maine, I'm like, is this

194
00:10:51,120 --> 00:10:55,559
feature in this build? I don't remember. It's hard to keep.

195
00:10:55,399 --> 00:10:59,039
Speaker 2: Track, and I appreciate you guys didn't go all superstitions

196
00:10:59,080 --> 00:11:02,840
and skip thirden It just shipped with dot net nine, Like, yeah,

197
00:11:02,879 --> 00:11:05,240
it did twelve ship with dot net aid And we're

198
00:11:05,279 --> 00:11:07,320
not afraid of numbers. Programmers.

199
00:11:07,399 --> 00:11:10,480
Speaker 3: We tried to, you know, we it was a thing.

200
00:11:10,519 --> 00:11:12,240
We were like, well, should we do that, because you know,

201
00:11:12,399 --> 00:11:14,600
we did it with other things. We've done that before.

202
00:11:14,639 --> 00:11:19,200
It wasn't officially for superstitious reasons, but somehow we managed

203
00:11:19,200 --> 00:11:22,320
to magically skip thirteen on other things, and we're like, no, no, no,

204
00:11:22,360 --> 00:11:23,320
we're going to embrace this.

205
00:11:23,600 --> 00:11:26,080
Speaker 2: Yeah, you skip Windows nine too. That was mostly for

206
00:11:26,159 --> 00:11:28,200
compatibility nightmares, right.

207
00:11:28,559 --> 00:11:31,960
Speaker 3: I think that turned out to be painful, But you know.

208
00:11:31,960 --> 00:11:35,200
Speaker 2: I was a very wise choice that we're not going

209
00:11:35,240 --> 00:11:38,320
to do a nine because of all the nine X,

210
00:11:38,440 --> 00:11:40,559
the ninety five, ninety eight, Like did you just don't?

211
00:11:40,639 --> 00:11:40,799
Speaker 3: Yeah?

212
00:11:41,200 --> 00:11:41,519
Speaker 2: Yeah?

213
00:11:41,600 --> 00:11:44,440
Speaker 3: And it wasn't OS ten envy, right, So yeah, it

214
00:11:44,480 --> 00:11:47,039
wasn't actually not no, no, I couldn't.

215
00:11:46,679 --> 00:11:50,200
Speaker 2: Have been no, I'm pretty sure Windows eleven was OS

216
00:11:50,279 --> 00:11:55,440
eleven envy, but then you know whatever. You know. I

217
00:11:55,519 --> 00:11:57,440
also do the show called Windows Weekly, and I hear

218
00:11:57,480 --> 00:12:02,679
this stuff all at time. Yeah, so you're all about fourteen. Yeah,

219
00:12:02,840 --> 00:12:05,039
I mean I would think that the previews are important

220
00:12:05,080 --> 00:12:06,320
to you just because this is when you sort of

221
00:12:06,320 --> 00:12:08,200
put the bits in more people's hands.

222
00:12:08,399 --> 00:12:11,080
Speaker 3: Yeah, and they start to kind of crystallize. I mean really,

223
00:12:11,480 --> 00:12:14,559
there's also the moments we have that are like, okay,

224
00:12:14,559 --> 00:12:18,559
you know, there's build, you know, there's various events throughout

225
00:12:18,559 --> 00:12:20,480
the year. You know, dott a comp comes up where

226
00:12:20,519 --> 00:12:23,879
we try and actually, you know, ship the thing weird.

227
00:12:23,919 --> 00:12:26,039
But at those moments we try and have like some

228
00:12:26,600 --> 00:12:30,559
constellation of features together so that it kind of hangs together.

229
00:12:31,000 --> 00:12:33,559
And then it's about kind of getting feedback, adding enhancement

230
00:12:33,600 --> 00:12:35,799
stuff we know that we need to finish up and

231
00:12:35,840 --> 00:12:39,559
wrap up or things that are coming later throughout the previews,

232
00:12:39,559 --> 00:12:41,399
but yeah, we try and get kind of those moments

233
00:12:41,399 --> 00:12:43,840
to be a little more cohesive.

234
00:12:44,159 --> 00:12:47,639
Speaker 1: So and your mads usually do your walk through video

235
00:12:47,919 --> 00:12:49,559
about you know, what's new and c sharp.

236
00:12:49,600 --> 00:12:50,759
Speaker 2: I always enjoy those.

237
00:12:51,200 --> 00:12:54,120
Speaker 3: We did that in May. Yeah, we did the What's

238
00:12:54,120 --> 00:12:58,159
New in C sharp fourteen, we shared all the and

239
00:12:58,200 --> 00:13:01,519
what was great about that was in this case we

240
00:13:01,600 --> 00:13:05,200
had everything ready to go in the latest with at

241
00:13:05,279 --> 00:13:09,799
least experience in the latest dep seventeen the fourteen preview

242
00:13:09,840 --> 00:13:13,799
with seventeen fourteen that went out, so it was you know,

243
00:13:13,919 --> 00:13:15,960
you hadn't tellisons on the new features that shipped with

244
00:13:15,960 --> 00:13:19,240
the dot net preview then in your hands, so you

245
00:13:19,240 --> 00:13:22,759
didn't have to go grab some you know, beta thing

246
00:13:22,840 --> 00:13:24,279
or preview thing. It was right there. I mean you

247
00:13:24,320 --> 00:13:26,279
had to get you know, the SDK to build, but

248
00:13:26,600 --> 00:13:27,480
the features were there.

249
00:13:27,720 --> 00:13:29,919
Speaker 2: How much of the new features or feedback from the

250
00:13:29,960 --> 00:13:32,399
old version and how much are like epics you've been

251
00:13:32,440 --> 00:13:34,759
planning for many versions that finally come to fruition.

252
00:13:35,000 --> 00:13:38,559
Speaker 3: Well, in this case, I think most of them are

253
00:13:39,000 --> 00:13:43,759
are kind of the longer planning ones for fourteen. You know,

254
00:13:43,840 --> 00:13:47,320
we started trying to do this, but in a way

255
00:13:47,639 --> 00:13:49,960
a lot of them are still even this one. I'm

256
00:13:50,000 --> 00:13:52,840
thinking about the new extension members feature that's coming, sure,

257
00:13:53,759 --> 00:13:56,759
but that's still like, well, we did extension members, you know,

258
00:13:57,399 --> 00:14:01,159
fifteen years ago with which with methods only right and

259
00:14:01,200 --> 00:14:04,080
C sharp three, so this is kind of like a

260
00:14:04,120 --> 00:14:07,320
continuation of that, but we had a really different idea

261
00:14:08,000 --> 00:14:10,240
last year, kind of like in C sharp thirteen, of

262
00:14:10,320 --> 00:14:13,039
what we thought that would look like, and ended up

263
00:14:13,039 --> 00:14:15,159
going back to the drawing board on it and coming

264
00:14:15,200 --> 00:14:19,879
out with something that looks more like what people knew

265
00:14:19,919 --> 00:14:23,799
and knew from extension methods already. So in that way,

266
00:14:23,840 --> 00:14:26,240
it kind of is a continuation, but also it's been

267
00:14:26,279 --> 00:14:30,039
a long, kind of planned sort of thing where we've

268
00:14:30,080 --> 00:14:32,960
really had to work very hard and kind of toil

269
00:14:33,000 --> 00:14:34,200
a little bit more on the designs.

270
00:14:34,279 --> 00:14:35,879
Speaker 2: And I know it's something we've heard over over again

271
00:14:35,960 --> 00:14:39,000
from folks like you and Anders and Mads. It's like,

272
00:14:39,440 --> 00:14:42,120
you're really careful about putting a feature into a language

273
00:14:42,159 --> 00:14:44,559
because you pretty much can never take it out.

274
00:14:44,720 --> 00:14:47,960
Speaker 3: Every language has kind of a capacity too writ like

275
00:14:48,000 --> 00:14:50,759
where you get over that jump the shark moment where

276
00:14:50,759 --> 00:14:53,360
it's like, all right, this is too much now, and

277
00:14:53,399 --> 00:14:54,039
then you're.

278
00:14:53,879 --> 00:14:55,080
Speaker 2: Like yeah, I was kind of saying.

279
00:14:55,080 --> 00:14:57,240
Speaker 3: Then you're like, you know, then you have to have

280
00:14:57,279 --> 00:14:59,960
your good bits moment with JavaScript or your C plus plus,

281
00:15:00,080 --> 00:15:01,960
your modern C plus plus moment where you're trying to

282
00:15:02,000 --> 00:15:05,159
like shed things that like, Okay, yes this is for legacy,

283
00:15:05,200 --> 00:15:07,279
but please don't use this for modern things.

284
00:15:07,440 --> 00:15:09,960
Speaker 1: I was going to say, Dustin, do you have customers

285
00:15:10,039 --> 00:15:14,080
and people that provide feedback that you have so many

286
00:15:14,120 --> 00:15:17,960
features that kind of overlap, right, and when to use

287
00:15:18,000 --> 00:15:20,919
what and how to use what? And I can see

288
00:15:21,559 --> 00:15:24,399
people just wanting to exercise the new stuff for the

289
00:15:24,440 --> 00:15:28,519
sake of doing it, and you know, the guidance is

290
00:15:28,559 --> 00:15:31,799
really important, like here's when you do this, here's when

291
00:15:31,799 --> 00:15:32,799
you do not do this.

292
00:15:33,159 --> 00:15:36,600
Speaker 3: Absolutely yeah, and we do get that feedback. It's I was,

293
00:15:37,039 --> 00:15:39,480
you know, we were talking about recently. We're like, man

294
00:15:39,559 --> 00:15:42,000
c sure one Oh was a way simpler language. It

295
00:15:42,120 --> 00:15:45,120
was way clear on how to do a thing because

296
00:15:45,159 --> 00:15:46,480
there was just the one way.

297
00:15:47,600 --> 00:15:51,080
Speaker 1: Visual basic forms designer was easy too, because you have

298
00:15:51,279 --> 00:15:53,840
no choices, yeah, no options.

299
00:15:53,960 --> 00:15:57,360
Speaker 3: Yeah, and so it was it was, it was. It

300
00:15:57,399 --> 00:15:59,759
was easy. You could still do pretty much all the

301
00:15:59,799 --> 00:16:03,039
things I mean, but you might write a lot more

302
00:16:03,080 --> 00:16:06,120
code to do it. It's just you know, so so

303
00:16:06,200 --> 00:16:09,080
in some cases there is that like we need to

304
00:16:09,120 --> 00:16:13,960
decide what, like when and why to do something. Sometimes

305
00:16:13,519 --> 00:16:16,799
it's it's taste too right, Some things peel to others.

306
00:16:17,240 --> 00:16:20,120
Sometimes there's a really important reason to have it go.

307
00:16:20,240 --> 00:16:22,600
Let go back to var which is so controversial and

308
00:16:22,639 --> 00:16:24,919
I love bringing it up because it just brings controversy

309
00:16:24,919 --> 00:16:28,960
and comments, but still to this day. Right, But it

310
00:16:29,000 --> 00:16:31,519
had a very important reason to be there, which was,

311
00:16:31,759 --> 00:16:35,279
you know, because you didn't have a way to put

312
00:16:35,279 --> 00:16:37,279
a type for an anonymous type if you were putting

313
00:16:37,279 --> 00:16:39,799
something into a projection and like a link query, right

314
00:16:39,799 --> 00:16:45,120
and a link expression. So that's what they were there for. Functionally,

315
00:16:45,320 --> 00:16:47,919
they had to be there. But then they're also kind

316
00:16:47,919 --> 00:16:50,440
of convenient, and they're you know, three letters long, which

317
00:16:50,480 --> 00:16:52,840
means you put that in a space and now everything

318
00:16:52,879 --> 00:16:55,519
lines up. All your types line up to the tabs

319
00:16:55,559 --> 00:16:58,440
if you have your ends set to four and you know,

320
00:16:58,480 --> 00:17:00,240
and so they get it could use a lot, and

321
00:17:00,240 --> 00:17:03,840
then people get grumpy or people get happy, and and

322
00:17:04,079 --> 00:17:08,039
and and so then at that point it becomes like, well,

323
00:17:08,640 --> 00:17:12,880
taste or you know, is my program clear? And you

324
00:17:12,960 --> 00:17:14,839
have to kind of you know, but you kind of give.

325
00:17:15,119 --> 00:17:17,200
We give often it seems like we give people too

326
00:17:17,200 --> 00:17:19,960
many I don't know, handguns to shoot themselves in their

327
00:17:19,960 --> 00:17:20,359
feet with.

328
00:17:20,559 --> 00:17:24,759
Speaker 2: Sometimes yeah it's not only your foot, it's like here, yeah,

329
00:17:24,920 --> 00:17:25,920
try both feet at once.

330
00:17:26,920 --> 00:17:29,400
Speaker 3: We we you know, back in C sharp one, Oh,

331
00:17:29,440 --> 00:17:32,720
I know, we were a lot more prescriptive about some

332
00:17:32,759 --> 00:17:35,400
of those kinds of things. An example that comes up

333
00:17:35,400 --> 00:17:38,680
a lot we talk about still is like if I

334
00:17:38,759 --> 00:17:40,799
recall and I might be wrong about this because things

335
00:17:40,880 --> 00:17:42,799
change all the time and they change subtly, but like,

336
00:17:42,960 --> 00:17:45,599
at least at the beginning, I know that we were

337
00:17:45,680 --> 00:17:50,160
very specific about like no, try catch Finally, they must

338
00:17:50,200 --> 00:17:53,880
have braces, right, yeah, they cannot be embedded statements like

339
00:17:53,880 --> 00:17:56,440
an if where you can choose to have braces or not,

340
00:17:56,799 --> 00:17:59,680
because we felt very prescriptive, like no, you need the

341
00:17:59,680 --> 00:18:03,359
delay nation to see. These are very different contexts and

342
00:18:03,440 --> 00:18:04,839
what you're trying to do there, And I think that's

343
00:18:04,839 --> 00:18:08,839
still the case today, but we constantly get requests to know,

344
00:18:09,039 --> 00:18:09,880
come on, I'm.

345
00:18:09,640 --> 00:18:13,319
Speaker 2: Putting one statement like this is just too much.

346
00:18:14,400 --> 00:18:16,880
Speaker 1: Do you think you guys would be relying more on

347
00:18:18,039 --> 00:18:22,519
co pilot agent to be prescriptive about what you're doing?

348
00:18:22,680 --> 00:18:26,400
You know, I don't mean like Clippy, but Hay and hey,

349
00:18:26,880 --> 00:18:29,519
I noticed that you're trying to do this link statement

350
00:18:29,799 --> 00:18:31,759
and it'd probably be a lot easier if you use

351
00:18:31,880 --> 00:18:34,440
this method instead of that one. I mean, I mean

352
00:18:34,480 --> 00:18:37,119
you're kind of doing that already with for sure, with

353
00:18:37,279 --> 00:18:38,319
copilot yeah, we.

354
00:18:38,279 --> 00:18:40,279
Speaker 3: Do it already. I mean I think I think a

355
00:18:40,359 --> 00:18:43,279
you know, a coding agent or you know, something you

356
00:18:43,319 --> 00:18:45,599
know like like Copilot is going to be, you know,

357
00:18:45,640 --> 00:18:48,599
hopefully doing that. I I also hope that you know,

358
00:18:48,799 --> 00:18:50,920
an agent like that is also going to be looking

359
00:18:50,960 --> 00:18:54,000
at like the code base you're on, right, So that

360
00:18:54,079 --> 00:18:56,640
if I am on a legacy code base and this

361
00:18:56,759 --> 00:18:58,839
code base happens to always new up a raised with

362
00:18:59,680 --> 00:19:02,920
new erase and tax and doesn't use collection expressions, it

363
00:19:02,920 --> 00:19:04,400
doesn't use any of these kinds of things, I would

364
00:19:04,440 --> 00:19:06,839
hope it's not saying you should be using collection expressions

365
00:19:06,839 --> 00:19:08,680
on this line of code you just wrote, and it's like, no, no,

366
00:19:08,680 --> 00:19:10,319
it should look like the rest of the code, right.

367
00:19:10,839 --> 00:19:12,799
And so I would hope that when we get those

368
00:19:12,799 --> 00:19:15,480
coding agents that that are, that they're smart enough to

369
00:19:15,519 --> 00:19:19,079
kind of keep you in your context too while maybe

370
00:19:19,119 --> 00:19:22,000
allowing you to say, you know, I would like suggestions

371
00:19:22,000 --> 00:19:24,400
that help me kind of move this forward bit by bit.

372
00:19:25,039 --> 00:19:26,759
So I don't know, maybe.

373
00:19:26,519 --> 00:19:29,759
Speaker 2: Because it does strike me with you doing annualships of

374
00:19:29,799 --> 00:19:32,480
dot net, like the rate of new versions of c

375
00:19:32,640 --> 00:19:35,960
sharp has gone up, and you know, you can still

376
00:19:36,039 --> 00:19:38,839
code like it's twenty fifteen, Like it works just fine,

377
00:19:39,119 --> 00:19:41,119
you can. And I think it's a question I asked

378
00:19:41,119 --> 00:19:42,839
of mad As a number of years ago, just like,

379
00:19:42,880 --> 00:19:44,440
how are you going to convince us to use the

380
00:19:44,480 --> 00:19:46,400
new syntax? And it's like, I think that's what the

381
00:19:46,400 --> 00:19:49,759
tooling's all about, is helping to guide you to more

382
00:19:49,799 --> 00:19:50,960
efficient ways to code.

383
00:19:51,440 --> 00:19:53,640
Speaker 3: Yeah, if it's going to cause if it's going to

384
00:19:53,640 --> 00:19:56,559
help with efficiency for exam, is a great reason. Right,

385
00:19:57,200 --> 00:19:59,559
It's one of the reasons we did a collection expressions.

386
00:19:59,599 --> 00:20:02,400
I I love collection expressions, and that's the square brackets

387
00:20:02,480 --> 00:20:04,720
right where you just past things in a square bracket

388
00:20:04,759 --> 00:20:07,160
and it picks the type, you know, based on what

389
00:20:07,200 --> 00:20:09,759
you're passing it into or what you're assigning it to,

390
00:20:11,200 --> 00:20:15,240
and then gives you a type that might be something

391
00:20:15,240 --> 00:20:17,680
that was compiler generated, might be just list of T

392
00:20:18,119 --> 00:20:22,039
might be you know, array dot empty, depending on what

393
00:20:22,079 --> 00:20:24,559
you're doing with it. And but the point is that

394
00:20:25,000 --> 00:20:28,920
that allows me to kind of, you know, allows the

395
00:20:28,960 --> 00:20:31,400
compiler at least to be able to be very efficient

396
00:20:31,440 --> 00:20:35,079
in what it generates, so we can do things like

397
00:20:35,119 --> 00:20:37,720
when you start because those features, that feature also allows

398
00:20:37,759 --> 00:20:41,079
for spreads and combining collections together, and it can try

399
00:20:41,119 --> 00:20:46,599
and do that as efficiently as possible, and hopefully, you know,

400
00:20:46,759 --> 00:20:50,279
it's it's code that like, it ends up making your

401
00:20:50,279 --> 00:20:52,720
code look better to do something more efficient, whereas if

402
00:20:52,759 --> 00:20:54,799
you'd written the more efficient way, it would have been

403
00:20:54,799 --> 00:20:58,960
a mess. I find that a lot also with list patterns,

404
00:20:59,039 --> 00:21:02,039
where if I'm doing a list pattern is somewhat complex,

405
00:21:02,519 --> 00:21:05,000
and then I, you know, I start to stray away

406
00:21:05,039 --> 00:21:07,240
from it a little bit. But but when I get

407
00:21:07,240 --> 00:21:08,880
when I get into a list pattern, I look at

408
00:21:08,920 --> 00:21:10,559
the code that it got generated, I'm like, oh, I

409
00:21:10,599 --> 00:21:13,160
would never write this. This is way in the weeds.

410
00:21:13,200 --> 00:21:15,640
But the compiler is bending over backwards trying to do

411
00:21:15,720 --> 00:21:18,039
the most efficient thing at the il level that it

412
00:21:18,039 --> 00:21:20,960
can do. So I mean, that's one of the reasons

413
00:21:20,960 --> 00:21:22,960
to kind of go those go with those new things too.

414
00:21:23,160 --> 00:21:26,000
Speaker 2: Visual studio code versus visual studio.

415
00:21:26,359 --> 00:21:31,200
Speaker 3: Which is your favorite? A, oh, well, it depends on

416
00:21:31,240 --> 00:21:33,720
the day of the week, Carl, I dog food both.

417
00:21:34,200 --> 00:21:38,000
I love visual studio. It is the starship enterprise. However

418
00:21:38,920 --> 00:21:41,960
it is. You know, it is a lot. I'm really

419
00:21:42,039 --> 00:21:44,799
used to it, and I know keyboard shirtcuts all over

420
00:21:44,839 --> 00:21:46,519
the place. I know I can get around it really

421
00:21:46,519 --> 00:21:51,400
fast and so I I and and often I'm sometimes

422
00:21:51,440 --> 00:21:54,559
I'm also working on visual studio pieces like visual studio

423
00:21:54,559 --> 00:21:57,680
components and things that are like, oh, it's it's kind

424
00:21:57,680 --> 00:22:00,200
of easier. I mean, I can debug these things with

425
00:22:00,200 --> 00:22:02,440
with VS code as well, but it's like, hey, but

426
00:22:02,480 --> 00:22:04,920
I'm doing mixed mode debugging of some old calm thing.

427
00:22:06,079 --> 00:22:08,039
I'd rather I'd rather be in visual studio. We're into

428
00:22:08,079 --> 00:22:08,799
the tools better.

429
00:22:09,519 --> 00:22:13,759
Speaker 1: I wish the Razor code editor was better Razor file

430
00:22:13,839 --> 00:22:14,480
Code Editor.

431
00:22:14,519 --> 00:22:16,039
Speaker 3: No, I do too. I've been working on it for

432
00:22:16,039 --> 00:22:18,559
a while. Sorry, we're trying. We're working on it. We

433
00:22:18,599 --> 00:22:21,680
have we have some some things coming that I hope

434
00:22:21,680 --> 00:22:24,480
will u We'll make things coming.

435
00:22:24,640 --> 00:22:26,559
Speaker 2: Let me make you have here, all right, things?

436
00:22:26,680 --> 00:22:29,920
Speaker 3: Yeah, okay, we we do have some things coming that

437
00:22:29,920 --> 00:22:31,799
I hope will make that easier and better for you.

438
00:22:31,839 --> 00:22:33,279
Speaker 2: All right. So there's a studio code.

439
00:22:33,119 --> 00:22:35,799
Speaker 3: Yeah, visual studio code. I love visual studio code for

440
00:22:37,440 --> 00:22:39,039
I don't know. I open it every time I want

441
00:22:39,039 --> 00:22:43,119
to do it. Get marriage personally, it's just easy. But

442
00:22:44,319 --> 00:22:47,640
I I like the copied experience a lot in there.

443
00:22:47,960 --> 00:22:50,440
We have we also have different things that we're dog

444
00:22:50,440 --> 00:22:52,759
fooding at Microsoft, different models and things that show up.

445
00:22:52,799 --> 00:22:54,519
One might show up in VS code first, one might

446
00:22:54,559 --> 00:22:57,279
show up in Visual Studio first. And one of the

447
00:22:57,279 --> 00:22:59,240
great things for Visual Studio Code is that it's just

448
00:22:59,279 --> 00:23:02,359
it's just it's just faster to release and get things

449
00:23:02,400 --> 00:23:06,880
an experiment and prototype. And so when we did our

450
00:23:06,920 --> 00:23:10,559
build demo actually this year, what the stuff that didn't

451
00:23:10,599 --> 00:23:14,839
ship in the released Visual Studio that we wanted to

452
00:23:14,880 --> 00:23:17,000
show that was kind of like you know, kind of

453
00:23:17,000 --> 00:23:19,200
hot bits you know that I built on the side.

454
00:23:19,319 --> 00:23:21,839
Was it was very easy to light up Visual Studio

455
00:23:21,880 --> 00:23:24,279
Code with that and start playing around with it and

456
00:23:24,319 --> 00:23:26,359
show those features than in Visual Studio Code. It's just

457
00:23:26,400 --> 00:23:28,200
great for that kind of rapid prototyping.

458
00:23:28,319 --> 00:23:32,160
Speaker 1: I have an I nine machine and so running Visual

459
00:23:32,200 --> 00:23:35,119
Studio is no problem for me. It's very fast and

460
00:23:35,200 --> 00:23:38,359
I have lots of RAM. But I know that, you know,

461
00:23:38,640 --> 00:23:42,400
if on a less powerful laptop, that might take a while,

462
00:23:43,119 --> 00:23:44,920
you know to do stuff that I'm used to on

463
00:23:44,960 --> 00:23:48,039
my desktop. So Visual Studio Code works really well on

464
00:23:48,160 --> 00:23:49,200
lower power machines.

465
00:23:49,400 --> 00:23:52,599
Speaker 3: Yeah. Yeah, the Visual Studio Code, to be fair, is

466
00:23:52,680 --> 00:23:56,480
getting big. Oh you know, it is getting bigger.

467
00:23:56,480 --> 00:23:59,039
Speaker 2: Well it's not getting calm though, No.

468
00:23:58,640 --> 00:24:01,640
Speaker 3: No, no, it's not going to be one would hope

469
00:24:01,839 --> 00:24:05,640
single threaded apartment model anything. Yeah, in Visual Studio code,

470
00:24:05,640 --> 00:24:07,880
but it's uh, well it's single threaded though you know

471
00:24:08,000 --> 00:24:13,039
it's all process all different processes right right, but but

472
00:24:13,160 --> 00:24:16,920
it's uh yeah, visual it's it's Visual Studio code was

473
00:24:17,039 --> 00:24:19,480
lean when I was working on it, you know, about

474
00:24:19,519 --> 00:24:21,920
six six years ago. I was like, oh, this is amazing.

475
00:24:22,680 --> 00:24:25,599
And then it's gotten bigger and bigger as a as.

476
00:24:25,480 --> 00:24:26,599
Speaker 2: People make demands on it.

477
00:24:26,680 --> 00:24:29,039
Speaker 3: Right, I also use it for more things, so I've

478
00:24:29,039 --> 00:24:31,599
got more extensions in there, I've got more stuff loaded in,

479
00:24:31,680 --> 00:24:35,599
and yeah, it bulks up, but it is great.

480
00:24:35,680 --> 00:24:37,319
Speaker 2: You start to wonder if we shouldn't be setting up

481
00:24:37,359 --> 00:24:39,079
profiles where it's like, oh I need to work as

482
00:24:39,079 --> 00:24:42,960
a Python code that's a configuration, or yeah, here I

483
00:24:43,000 --> 00:24:47,640
am editing Jason again. You know, it's so does it

484
00:24:47,759 --> 00:24:49,920
have the idea of templates like visual studio does.

485
00:24:50,720 --> 00:24:54,559
Speaker 3: No Visual Studio Code it does, but we we so

486
00:24:54,839 --> 00:24:57,359
when we did c sharp def kit, we introduced a

487
00:24:58,160 --> 00:25:00,960
like a new project command and thing that basically what

488
00:25:01,000 --> 00:25:03,279
that does is it goes through the dot that new

489
00:25:04,079 --> 00:25:06,799
command and pulls in all those templates. So it uses

490
00:25:07,000 --> 00:25:08,160
what you've got at the command line.

491
00:25:08,200 --> 00:25:10,440
Speaker 2: That's cool, that's cool. Yeah, I don't use it so much.

492
00:25:10,480 --> 00:25:14,240
Speaker 1: I mean, Jeff Fritz is a is a huge code fan,

493
00:25:15,000 --> 00:25:17,759
a Visual Studio Code fan, and so when he does

494
00:25:17,799 --> 00:25:20,799
his Blazer puzzles, they're usually in Visual Studio Code. When

495
00:25:20,839 --> 00:25:23,720
I do them, they're usually in Visual Studios. So but

496
00:25:24,079 --> 00:25:26,799
I'm just I'm watching from the aside, you know, I'm

497
00:25:27,279 --> 00:25:31,759
I'm watching to see when will Visual Studio Code have

498
00:25:31,960 --> 00:25:34,519
all the features that I need from Visual Studio so

499
00:25:34,559 --> 00:25:36,279
that I could make the jump because I'd like to.

500
00:25:36,440 --> 00:25:42,039
Speaker 3: Yeah, it's it's a it's a really different model, right right, Yeah,

501
00:25:42,079 --> 00:25:43,759
I mean Visual Studio Code doesn't have a lot of

502
00:25:43,799 --> 00:25:46,960
visual in it either, right, So he doesn't have the

503
00:25:46,960 --> 00:25:49,359
designers and those kinds of things, and they avoid.

504
00:25:49,119 --> 00:25:51,559
Speaker 2: But it's also the difference between an IDE and an

505
00:25:51,640 --> 00:25:54,720
editor with extensions. It just seems like a different philosophy.

506
00:25:54,720 --> 00:25:56,400
I don't really use the designers anyway.

507
00:25:56,519 --> 00:25:58,599
Speaker 3: Yeah, so Visual Studio Code is getting closer to that

508
00:25:58,640 --> 00:26:01,720
IDE model now, right, some of these some of the extensions.

509
00:26:01,720 --> 00:26:03,839
C sharp dev gets a great example where you know,

510
00:26:03,839 --> 00:26:06,160
I always said that, like you know, an ID is

511
00:26:06,200 --> 00:26:07,920
the thing that kind of lays down the whole tool

512
00:26:08,039 --> 00:26:10,400
chain for you, so you have everything there ready to

513
00:26:10,480 --> 00:26:13,720
go to build your solution. But vis code like some

514
00:26:13,759 --> 00:26:17,640
of the extensions they do that and and it's it's

515
00:26:17,680 --> 00:26:19,640
becoming more id like in that sense.

516
00:26:19,720 --> 00:26:22,640
Speaker 1: And you have hot reload so you can you know,

517
00:26:22,759 --> 00:26:24,759
work on it and look at it in another window

518
00:26:24,799 --> 00:26:27,720
and you know, h So, yeah, that's about all I

519
00:26:27,799 --> 00:26:30,359
use the designers for is just to check, you know,

520
00:26:30,400 --> 00:26:32,359
if I'm doing examle or something like that, just to

521
00:26:32,440 --> 00:26:33,759
check to make sure it looks right.

522
00:26:34,160 --> 00:26:36,359
Speaker 3: And we're working hard on making that better and better too.

523
00:26:36,480 --> 00:26:37,759
So I'm the hot reload great.

524
00:26:37,880 --> 00:26:39,880
Speaker 2: So how much time is your language and how much

525
00:26:39,960 --> 00:26:41,279
is tooling when you're working?

526
00:26:41,440 --> 00:26:44,400
Speaker 3: When I'm working most of it when I'm coding, most

527
00:26:44,440 --> 00:26:46,079
of it is tooling. I don't. I do very little

528
00:26:46,119 --> 00:26:49,079
work on say, like the compilers. I work on the

529
00:26:49,160 --> 00:26:51,359
Razor compiler a little bit right now, just because there's

530
00:26:51,680 --> 00:26:53,759
there's a lot of low hanging performance fruit in there.

531
00:26:55,079 --> 00:27:00,000
But I but mostly I'm working in the tooling space,

532
00:27:01,000 --> 00:27:05,039
so doing things in hot reload, doing things and you

533
00:27:05,119 --> 00:27:07,519
know and see sharp and mostly in Razor. For like

534
00:27:07,559 --> 00:27:08,799
the last couple of years, I've had a lot of

535
00:27:08,799 --> 00:27:10,880
fun work. I swapped over and said, I'll work on

536
00:27:10,960 --> 00:27:13,799
Razor for a while. That's been really fun cool. Before that,

537
00:27:13,880 --> 00:27:16,359
I did the wind forms designer for dot net Core

538
00:27:17,480 --> 00:27:19,640
and so that that was the thing. So I kind

539
00:27:19,640 --> 00:27:21,720
of try and bounce around a little bit and sometimes

540
00:27:21,799 --> 00:27:24,599
I want to go really deep on something. And it's

541
00:27:24,599 --> 00:27:25,720
been Razor for a little bit.

542
00:27:26,000 --> 00:27:26,400
Speaker 2: Awesome.

543
00:27:27,000 --> 00:27:29,880
Speaker 1: Well, I can't wait till I'm looking forward to those

544
00:27:30,519 --> 00:27:32,240
upcoming things that you talked about.

545
00:27:32,400 --> 00:27:35,400
Speaker 3: We see, Yeah, they're not They're in the open. You

546
00:27:35,440 --> 00:27:36,279
can go look them up.

547
00:27:36,680 --> 00:27:39,279
Speaker 2: Yeah, I mean there's no secrets anymore, right, Like it's

548
00:27:39,279 --> 00:27:42,519
always yeah, Yeah, you're right. Yeah. I think it's kind

549
00:27:42,519 --> 00:27:45,599
of nice too. I mean it's it's weird. It's just yeah,

550
00:27:45,680 --> 00:27:47,680
it's a different world. We just know. We just talk

551
00:27:47,720 --> 00:27:50,799
about this is what we're making. You've seen us debate

552
00:27:50,839 --> 00:27:53,440
it on GitHub as we've come up with the ideas. Like,

553
00:27:53,480 --> 00:27:54,599
it's all pretty public.

554
00:27:54,759 --> 00:27:58,000
Speaker 1: I don't usually use the preview versions of visual Studio anymore.

555
00:27:59,440 --> 00:28:02,640
I'm not sure why. Maybe I'm just afraid of crashes

556
00:28:02,720 --> 00:28:06,039
and stuff. When I'm working, kisses me off.

557
00:28:06,200 --> 00:28:09,720
Speaker 3: I use dailies. When I get in, I install a

558
00:28:09,759 --> 00:28:16,359
newldivisual job, right, it is, and sometimes you should be

559
00:28:16,400 --> 00:28:17,079
glad that I did.

560
00:28:18,759 --> 00:28:20,279
Speaker 2: Sometimes you than me.

561
00:28:21,319 --> 00:28:23,359
Speaker 3: Sometimes F five doesn't work.

562
00:28:25,279 --> 00:28:28,880
Speaker 2: Sometimes and then you're literally like, I'll wait for tomorrow's

563
00:28:28,880 --> 00:28:29,920
bills and then we'll see.

564
00:28:30,119 --> 00:28:33,240
Speaker 3: Yeah, well, and I've got multiple visual studios installed, so

565
00:28:33,279 --> 00:28:35,440
I'll back down to some previous version.

566
00:28:35,480 --> 00:28:39,519
Speaker 2: Really installs have been great, yeah, kind of and kind

567
00:28:39,519 --> 00:28:40,119
of essential.

568
00:28:40,160 --> 00:28:42,079
Speaker 3: I guess, yeah, I.

569
00:28:42,000 --> 00:28:43,880
Speaker 2: Don't know how much we've really talked about what's coming

570
00:28:43,920 --> 00:28:47,160
in the language for savings side extension members. But because there's.

571
00:28:47,359 --> 00:28:50,519
Speaker 1: Maybe we should wait until after the break to do that. Okay,

572
00:28:50,680 --> 00:28:52,319
all right, this is a good time to take a break.

573
00:28:52,359 --> 00:28:54,920
We'll be right back with Dustin Campbell on dot ned rocks.

574
00:28:55,279 --> 00:29:00,319
Stay tuned. You know dot net six has officially reached

575
00:29:00,400 --> 00:29:03,359
the end of support and now is the time to upgrade.

576
00:29:03,759 --> 00:29:07,559
Dot Net eight is well supported on AWS. Learn more

577
00:29:07,599 --> 00:29:15,000
at aws dot Amazon dot com, slash dot net. And

578
00:29:15,119 --> 00:29:17,160
we're back. It's dot in a Rocks. I'm Carl Franklin.

579
00:29:17,240 --> 00:29:18,079
Speaker 2: Yeah, I'm Richard Kembel.

580
00:29:18,160 --> 00:29:21,680
Speaker 1: Dustin Campbell's here talking and we're shifting gears now into

581
00:29:22,400 --> 00:29:25,480
C sharp features. I guess what you're talking is what

582
00:29:25,519 --> 00:29:27,039
you were about to talk about.

583
00:29:27,279 --> 00:29:29,640
Speaker 3: We can talk about Sea Shark features new things. I mean,

584
00:29:29,680 --> 00:29:31,839
like I said, extension members is obviously the big one.

585
00:29:31,880 --> 00:29:34,319
That's the one that, yeah, we've put a lot of

586
00:29:35,000 --> 00:29:35,559
energy into.

587
00:29:36,160 --> 00:29:38,440
Speaker 2: When you talk about an epic feature that's been going

588
00:29:38,440 --> 00:29:40,680
on for a while like that, what has been going

589
00:29:40,720 --> 00:29:40,920
on for.

590
00:29:41,079 --> 00:29:43,839
Speaker 1: Well, you mentioned that they're kind of like extension methods

591
00:29:43,920 --> 00:29:47,519
but different. So can you give us an elevator pitch?

592
00:29:47,720 --> 00:29:49,880
Speaker 3: Yeah, So the the elevator pitch is kind of a

593
00:29:50,319 --> 00:29:52,759
more of a hey, why didn't you do this already

594
00:29:53,119 --> 00:29:56,559
for like extension properties or something like that, Why don't

595
00:29:56,559 --> 00:29:59,559
we have these already? And it turns out that extension methods,

596
00:29:59,640 --> 00:30:02,000
while very convenient to be able to say, I've got

597
00:30:02,000 --> 00:30:04,039
a static method, let me put this on one of

598
00:30:04,039 --> 00:30:06,640
the parameters, and all of a sudden, I can turn

599
00:30:06,680 --> 00:30:09,440
it into making it look like an instance method. And

600
00:30:09,799 --> 00:30:13,200
the very power of that is that, you know, in

601
00:30:13,200 --> 00:30:16,240
tell a sense, now allows me to discover APIs I

602
00:30:16,240 --> 00:30:19,240
didn't know we're there. And so the question is why

603
00:30:19,279 --> 00:30:22,799
didn't we do this before? Well, because it turns out

604
00:30:22,839 --> 00:30:26,559
that methods are uniquely you know, designed to be able

605
00:30:26,559 --> 00:30:28,400
to kind of support this sort of thing. They're the

606
00:30:28,440 --> 00:30:31,839
only thing other than a type that allows generic type parameters,

607
00:30:32,200 --> 00:30:34,079
which you kind of need, you know, if you want

608
00:30:34,079 --> 00:30:36,759
to do something on a list of T, you kind

609
00:30:36,759 --> 00:30:39,920
of need a place to put that T. And then

610
00:30:40,240 --> 00:30:42,880
they're the only ones that other than say an index

611
00:30:42,920 --> 00:30:45,319
or that takes a parameter so that you could put

612
00:30:45,359 --> 00:30:47,759
that this keyword there. Right. So the reason we never

613
00:30:47,799 --> 00:30:50,400
did anything else with it wasn't because we didn't want to,

614
00:30:50,559 --> 00:30:53,000
is because we kind of got ourselves kind of painted

615
00:30:53,039 --> 00:30:58,119
into a design corner very quickly. And so the reason

616
00:30:58,519 --> 00:31:00,799
now that we've got this the pitch is that, hey,

617
00:31:00,839 --> 00:31:05,680
extension members are a syntax that allows us to basically

618
00:31:05,680 --> 00:31:08,400
declare the members as if you were going to in

619
00:31:08,440 --> 00:31:09,920
the way that they would look if you were going

620
00:31:09,960 --> 00:31:12,799
to call them like essentially like their reduced forms what

621
00:31:12,799 --> 00:31:15,559
we call them. So instead of like the expanded calling

622
00:31:15,559 --> 00:31:18,000
it as a static member, I'm going to call it

623
00:31:18,240 --> 00:31:20,880
in its reduced form, and we put that inside a

624
00:31:20,920 --> 00:31:24,319
syntax that we call an extension block. And the real,

625
00:31:25,119 --> 00:31:27,079
you know, magic to the extension block is that's the

626
00:31:27,079 --> 00:31:29,240
place where you can hang all the stuff that methods

627
00:31:29,279 --> 00:31:31,599
get that no other members do. That's where you can

628
00:31:31,640 --> 00:31:35,279
put that first parameter that what we call the receiver

629
00:31:35,440 --> 00:31:38,440
parameter for an extension method where that this would have been.

630
00:31:38,799 --> 00:31:41,160
That's where you can put attributes on that parameters, where

631
00:31:41,160 --> 00:31:43,559
you can give it a name. That's where all that

632
00:31:43,599 --> 00:31:46,000
can go on the extension block. And that's also where

633
00:31:46,000 --> 00:31:49,759
you can put generic type parameters that will then apply

634
00:31:49,880 --> 00:31:54,640
to any member inside of that extension block. And so

635
00:31:54,799 --> 00:31:57,160
now all the other members get to inherit all this

636
00:31:57,279 --> 00:31:59,559
stuff and now they can become extensions.

637
00:31:59,640 --> 00:32:02,799
Speaker 1: I missed in two thousand and two when we started

638
00:32:02,880 --> 00:32:06,960
dot net Rocks that we wouldn't read code on the show. Yeah, However,

639
00:32:07,279 --> 00:32:12,880
I'm dying to hear a good example of an extension

640
00:32:12,960 --> 00:32:16,480
member so I can grock it better. I mean, I

641
00:32:16,480 --> 00:32:17,839
really want to see it, But can you get me

642
00:32:17,880 --> 00:32:18,440
an example.

643
00:32:18,480 --> 00:32:20,799
Speaker 3: I think a good example would be like if you

644
00:32:20,839 --> 00:32:23,000
wanted to put a property on something that was like

645
00:32:24,000 --> 00:32:26,400
I don't want to say count because counts the one

646
00:32:26,400 --> 00:32:29,000
that you really probably shouldn't do, and ie innumerable, Right,

647
00:32:30,079 --> 00:32:31,799
that's a method today, but that's the one that like

648
00:32:32,240 --> 00:32:35,319
it actually just enumerates the whole thing. It's you know, Oh,

649
00:32:35,440 --> 00:32:38,480
then to call this thing that you would expect on

650
00:32:38,519 --> 00:32:41,440
a collection to be a property, right, but we could

651
00:32:41,480 --> 00:32:45,200
add and is empty right as a property, you wouldn't

652
00:32:45,200 --> 00:32:47,079
want that to have the method syntax. You'd want that

653
00:32:47,119 --> 00:32:49,079
to be a property to kind of indicate that, yeah,

654
00:32:49,119 --> 00:32:51,799
that's that's that's that's a quicker syntax, right, that's a

655
00:32:51,839 --> 00:32:53,720
quicker thing to call. So that's the kind of thing

656
00:32:53,720 --> 00:32:56,079
that like, it's not there today, but you want to

657
00:32:56,079 --> 00:32:59,160
add it. That's the sort of thing that you might

658
00:32:59,160 --> 00:33:02,799
add things. And then the other piece that this gives us, Carl,

659
00:33:02,960 --> 00:33:06,920
is it gives you the ability to have extension members

660
00:33:06,960 --> 00:33:11,960
that are static. So you could have an extension method

661
00:33:12,119 --> 00:33:15,160
is a static on another type. So I, for example,

662
00:33:15,640 --> 00:33:17,880
I love the string dot create method. I use it

663
00:33:17,880 --> 00:33:20,359
all the time in dot Net, but it's not available

664
00:33:20,359 --> 00:33:23,599
on dot Net framework. But it was absolutely able to

665
00:33:23,640 --> 00:33:25,680
write it with an extension member for dot Net framework.

666
00:33:25,680 --> 00:33:27,720
I could write a create method that was static for

667
00:33:27,799 --> 00:33:30,839
the type string. And so now I have a great

668
00:33:30,880 --> 00:33:34,440
method that works across framework and then also use the

669
00:33:34,440 --> 00:33:35,559
correct one on dot Net.

670
00:33:35,640 --> 00:33:36,799
Speaker 2: Wow, all right when I'm.

671
00:33:36,720 --> 00:33:40,400
Speaker 3: Doing multi targeting scenarios and things, so's it helps. There's

672
00:33:40,440 --> 00:33:42,279
a lot of discoverability. So if you want to have

673
00:33:42,319 --> 00:33:45,440
a different kind of member and get that same discoverability.

674
00:33:46,160 --> 00:33:47,160
That's what you get out of US.

675
00:33:47,240 --> 00:33:51,480
Speaker 1: So extension methods you get to sort of well I

676
00:33:51,519 --> 00:33:54,119
wouldn't say override, but you basically get to add things

677
00:33:54,160 --> 00:33:59,920
onto a static type. And these you can add static

678
00:34:00,079 --> 00:34:03,640
properties to a type that work on that type.

679
00:34:03,519 --> 00:34:05,680
Speaker 2: Yeah, or or non static.

680
00:34:05,440 --> 00:34:08,679
Speaker 3: Or properties that were are instant, yeah, like instance kind

681
00:34:08,679 --> 00:34:12,159
of looking exstance type. And so in this release you'll

682
00:34:12,199 --> 00:34:16,679
get statics and methods. You'll get instance methods. You'll get

683
00:34:18,360 --> 00:34:20,400
obviously instance methods because they were already there, but in

684
00:34:20,440 --> 00:34:22,519
the new syntax you'll be able to do methods as well.

685
00:34:23,199 --> 00:34:26,159
You'll get static properties and instance properties, and then other

686
00:34:26,199 --> 00:34:29,239
things are kind of coming. I think we've merged in

687
00:34:29,880 --> 00:34:35,760
one that's really exciting, which is extension operators. Which that's yeah,

688
00:34:35,880 --> 00:34:38,840
so you can have an operator that you didn't write

689
00:34:38,840 --> 00:34:41,360
on the on a type specifically, but you said no,

690
00:34:41,519 --> 00:34:43,159
we want to have this here, and we want to

691
00:34:43,199 --> 00:34:45,639
be able to by bringing in say a name space

692
00:34:45,719 --> 00:34:47,960
or bringing in that context. Say, now these operators are

693
00:34:47,960 --> 00:34:51,159
in scope and interesting. We've done that for like the

694
00:34:51,840 --> 00:34:54,280
tensor team wants to use that, and some others so

695
00:34:55,239 --> 00:34:58,480
we've brought we brought that one in and eventually we'll

696
00:34:58,480 --> 00:35:00,639
get to things like constructors stuff like that.

697
00:35:00,920 --> 00:35:03,920
Speaker 1: So I have a little hack that I do. You know,

698
00:35:04,000 --> 00:35:07,440
the iclonable interface has been around forever and it's it's

699
00:35:07,480 --> 00:35:11,880
an interface a way forever. Yeah, that you implement a

700
00:35:11,920 --> 00:35:17,079
clone method and that returns a copy of your data

701
00:35:17,159 --> 00:35:19,639
basically a copy of your object, but a deep copy.

702
00:35:19,960 --> 00:35:22,559
But it's up to you to create that and return it.

703
00:35:23,159 --> 00:35:25,719
So what I do is if I want to make

704
00:35:25,760 --> 00:35:29,360
a clone of a deep object now, instead of implementing iclonal,

705
00:35:29,360 --> 00:35:32,159
because I might not have eye clonable, right, I just

706
00:35:32,480 --> 00:35:39,880
serialize it and de serialize it. Yeah, Jason serializer. And

707
00:35:40,000 --> 00:35:44,280
that's how you get a deep copy of something. And

708
00:35:44,320 --> 00:35:47,559
that's a nice little hack that might be you could

709
00:35:47,559 --> 00:35:50,360
turn into an extension member.

710
00:35:50,800 --> 00:35:51,760
Speaker 2: That's what I'm thinking of.

711
00:35:52,079 --> 00:35:54,920
Speaker 3: Yeah, absolutely, you could do that today though, right, you

712
00:35:54,960 --> 00:35:57,119
could make an extension method just put on a like object.

713
00:35:57,199 --> 00:36:00,840
Could this is Carl's clone and then and and you

714
00:36:00,840 --> 00:36:03,400
know Carl's JSON clone and make that happen.

715
00:36:04,119 --> 00:36:05,719
Speaker 2: I just don't know if it's a good idea.

716
00:36:05,920 --> 00:36:10,199
Speaker 3: Yeah, that's the extension members thing. Other things that are

717
00:36:10,199 --> 00:36:12,440
coming that we don't talk about a lot, but that

718
00:36:12,519 --> 00:36:16,599
are kind of cool we're doing. The one that I

719
00:36:16,639 --> 00:36:19,480
think is is going to be kind of kind of

720
00:36:19,480 --> 00:36:23,079
a quiet, sort of like sleeper hit. Possibly, we'll see

721
00:36:23,840 --> 00:36:28,000
when people realize it's there is null conditional assignment. And

722
00:36:28,039 --> 00:36:30,199
this is one of these things we didn't do for

723
00:36:30,239 --> 00:36:32,519
a long time because we had reasons. We thought, well,

724
00:36:32,559 --> 00:36:35,519
this will make it things confusing, and then we just

725
00:36:35,599 --> 00:36:38,000
realized after times like now we're kind of already used

726
00:36:38,000 --> 00:36:39,719
to all this stuff, so it's probably going to be fine.

727
00:36:39,840 --> 00:36:41,920
We were just we were worried then, yeah, ever since,

728
00:36:42,679 --> 00:36:45,559
you know, but this is about like, you know, null

729
00:36:45,639 --> 00:36:48,400
conditional stuff, as we call it, the Elvis operator, right,

730
00:36:48,519 --> 00:36:52,039
the question dot ye right, So using it for invocations

731
00:36:52,119 --> 00:36:54,320
and that kind of thing, and using it within your

732
00:36:54,320 --> 00:36:58,840
conditions for like an if statement. But null conditional assignment

733
00:36:58,920 --> 00:37:00,639
is like, but why do I have to check if

734
00:37:00,639 --> 00:37:02,840
something's null just to be able to sign a property

735
00:37:02,840 --> 00:37:06,360
on it? Right? I gotta say if X is not null,

736
00:37:06,440 --> 00:37:09,599
then X dot y equals this for example, Well why

737
00:37:09,639 --> 00:37:12,159
can't I just say X, question dot y equals this?

738
00:37:13,079 --> 00:37:16,039
And that's kind of the that's the pitch. That's something

739
00:37:16,039 --> 00:37:18,559
we thought would be confusing. It turns out to look

740
00:37:18,599 --> 00:37:21,320
really that. It just looks fine, and it so flows fine,

741
00:37:21,320 --> 00:37:23,960
and that's so. So essentially it puts the null check

742
00:37:24,000 --> 00:37:26,440
in for you, so that assignment doesn't happen if X

743
00:37:26,559 --> 00:37:27,039
is noll.

744
00:37:27,039 --> 00:37:29,119
Speaker 1: Well, what if you want to assign it to something else?

745
00:37:29,360 --> 00:37:32,519
If it's all so for example, a command parameter, sure,

746
00:37:32,599 --> 00:37:36,280
adeo net command parameter, Well, you don't want to send

747
00:37:36,280 --> 00:37:37,800
the database and null. You want to send it a

748
00:37:37,880 --> 00:37:39,559
dB null value.

749
00:37:39,440 --> 00:37:43,119
Speaker 3: Right, absolutely, and you should do that today. Yeah, yeah, yeah,

750
00:37:43,159 --> 00:37:45,320
you can do that today. You know, for those kinds

751
00:37:45,320 --> 00:37:48,079
of cases, you've you've got those code patterns to write that, right.

752
00:37:48,199 --> 00:37:48,440
Speaker 2: Yeah.

753
00:37:48,480 --> 00:37:50,719
Speaker 3: For for this that simple kind of thing of like

754
00:37:50,960 --> 00:37:52,599
why do I always have to do this? Why can't

755
00:37:52,639 --> 00:37:54,679
I just do this in a one liner? We're given

756
00:37:54,719 --> 00:37:57,840
some of the kind of those kinds of things. They're

757
00:37:57,840 --> 00:38:01,920
just kind of small, simple features. Yeah, what else are

758
00:38:01,960 --> 00:38:07,159
you interested in? Some of are really really really pretty small.

759
00:38:07,599 --> 00:38:09,760
But a lot of time we're just trying to find

760
00:38:09,800 --> 00:38:13,639
things that really, I don't know, that kind of alleviate

761
00:38:13,719 --> 00:38:16,199
just a little bit of pain. Sure, help kind of

762
00:38:16,239 --> 00:38:18,719
elevate the expressiveness that people feel, so they don't feel

763
00:38:18,760 --> 00:38:22,079
like they're bumping into rules all the time, you know,

764
00:38:22,360 --> 00:38:25,159
just make it feel a little more I don't know,

765
00:38:25,239 --> 00:38:30,320
natural and intuitive. And so sometimes it's just removing, you know,

766
00:38:30,519 --> 00:38:33,639
barriers that didn't really need to be there, we determined

767
00:38:33,679 --> 00:38:35,440
didn't need to be there in the first place.

768
00:38:35,599 --> 00:38:39,679
Speaker 1: I've learned some things about sea sharp that I didn't

769
00:38:39,719 --> 00:38:42,400
know just by letting co pilot do its thing.

770
00:38:42,519 --> 00:38:46,239
Speaker 2: Yeah, you know, and I say, huh, that's that's a

771
00:38:46,280 --> 00:38:48,519
really cool way to do that. I didn't know you could.

772
00:38:48,760 --> 00:38:51,480
Speaker 3: And we try to keep Copilot updated with with the latest,

773
00:38:51,719 --> 00:38:54,199
latest stuff. Sometimes hard because it's got to be there,

774
00:38:54,199 --> 00:38:57,679
but like you know, we pass along, like because the

775
00:38:58,440 --> 00:39:00,920
GitHub repo for the sea sharp line languages out there

776
00:39:01,360 --> 00:39:05,960
and we are just big nerds with writing out all

777
00:39:05,960 --> 00:39:09,199
the notes and everything, and those feed right into it. Yeah,

778
00:39:09,599 --> 00:39:11,800
those are those are those are that's great training data.

779
00:39:13,000 --> 00:39:18,039
Speaker 1: So yeah, yeah, so you mentioned you're working on Razor stuff. Ye,

780
00:39:18,199 --> 00:39:22,079
and I d Forrasor and I was I was complaining

781
00:39:22,119 --> 00:39:24,079
about in visual studio. You know, when you have a

782
00:39:24,159 --> 00:39:27,599
Razor file and a code block that I miss little

783
00:39:27,639 --> 00:39:30,800
things that I get in a code behind file or

784
00:39:30,800 --> 00:39:33,920
a regular c sharp file. And so what are you

785
00:39:33,960 --> 00:39:34,760
what are you working on?

786
00:39:35,079 --> 00:39:39,679
Speaker 3: Over on that side, there's a there's been some investment there.

787
00:39:40,320 --> 00:39:43,400
We so a while ago there was an attempt, well

788
00:39:43,480 --> 00:39:46,800
not an attempt, but to start to getting towards moving

789
00:39:46,920 --> 00:39:50,440
the entire Razor editor stack over to kind of a

790
00:39:50,519 --> 00:39:54,719
language server model where it lives, you know, as a

791
00:39:54,760 --> 00:39:57,400
separate server that Visual Studio talks to, so we could

792
00:39:57,440 --> 00:40:01,000
kind of share a code better with vis codes experience

793
00:40:01,039 --> 00:40:04,119
and that kind of thing. And I came in to

794
00:40:04,159 --> 00:40:07,719
look at it and it was like, hmm, this is uh,

795
00:40:07,760 --> 00:40:10,440
this needs love. It's getting there, but it's it needs

796
00:40:10,440 --> 00:40:12,480
some it needs it needs work to get to get

797
00:40:12,599 --> 00:40:15,679
over the finished line, to really get there. And what

798
00:40:15,719 --> 00:40:19,480
we what we eventually discovered that is that we're kind

799
00:40:19,480 --> 00:40:22,360
of Razor was kind of doing too much on its own,

800
00:40:22,400 --> 00:40:27,400
because really what Razor is is it's like it's a

801
00:40:27,480 --> 00:40:29,840
pass through. Most of the time. It's like, oh, you're

802
00:40:29,880 --> 00:40:31,480
in c sharp here, let me pass you through to

803
00:40:31,559 --> 00:40:35,679
c sharp's editor. And it goes and it asks c sharps.

804
00:40:35,719 --> 00:40:38,679
You know, the Rosalind language server, Hey, give me intellisen's

805
00:40:38,679 --> 00:40:41,559
in this location in the generated code behind file for

806
00:40:41,599 --> 00:40:44,159
a razor Or. It does the same thing if you're

807
00:40:44,199 --> 00:40:47,000
in HTML. The times that you're in those transition points

808
00:40:47,039 --> 00:40:48,840
where you type an at or code, or you're in

809
00:40:48,840 --> 00:40:53,519
a directive, a Razor directive, those are few compared to

810
00:40:53,719 --> 00:40:56,599
how often you're just typing in C sharp hedtmail. And

811
00:40:56,679 --> 00:41:00,760
so this is so so what we decided to do

812
00:41:00,840 --> 00:41:03,320
with it was this instead of making it a sense,

813
00:41:03,360 --> 00:41:06,280
So that makes it essentially three language servers right where

814
00:41:06,280 --> 00:41:08,880
you've got Razor, and then it's like going off to

815
00:41:08,960 --> 00:41:13,679
two different language servers and serializing all the data, passing

816
00:41:13,679 --> 00:41:16,880
it back over potentially you know, in vs code over

817
00:41:16,960 --> 00:41:19,679
named pipes, you know, and then taking it, munching it

818
00:41:19,760 --> 00:41:22,719
up and passing it again, serializing and passing again back

819
00:41:22,760 --> 00:41:25,440
to VS code. It seemed kind of kind of wasteful,

820
00:41:25,800 --> 00:41:29,199
and most of the challenges actually with C sharp. C

821
00:41:29,320 --> 00:41:32,199
sharp is the one that has the most i would say,

822
00:41:32,639 --> 00:41:36,000
kind of sophisticated experience when it comes to, you know,

823
00:41:36,119 --> 00:41:41,000
the editor. So we're implementing a model we're calling co hosting,

824
00:41:41,599 --> 00:41:45,599
which is essentially because Roslin's there as a language server

825
00:41:45,719 --> 00:41:48,400
as well. In VS code. It actually has one in

826
00:41:48,480 --> 00:41:51,599
Visual Studio, though it's not used by default, but there

827
00:41:51,639 --> 00:41:55,639
is there's one there where we've changed kind of the

828
00:41:55,719 --> 00:41:59,519
Rosen language server to be able to load other languages

829
00:41:59,559 --> 00:42:03,760
that kind of piggyback on C Sharp. So and Razor

830
00:42:03,800 --> 00:42:06,639
has all this code also to generate that the C

831
00:42:06,760 --> 00:42:09,239
shark code behind and the HTML pieces and kind of

832
00:42:09,559 --> 00:42:12,199
push those the text of those into other language the

833
00:42:12,199 --> 00:42:15,159
other language servers. But in a co hosting model where

834
00:42:15,199 --> 00:42:20,519
we're living in the same process as as Roslin, we

835
00:42:20,559 --> 00:42:24,679
can just make the Razor compiler that runs the code

836
00:42:24,679 --> 00:42:28,119
generator or runs runs the code generation to build that

837
00:42:28,159 --> 00:42:30,079
code behind. We could just turn into a source generator

838
00:42:30,480 --> 00:42:34,000
and so now instead of running code and Razor to

839
00:42:34,039 --> 00:42:36,400
compile it and then push that code into C sharp,

840
00:42:36,440 --> 00:42:39,440
we let Roslyn use this entire source generator kind of system,

841
00:42:39,840 --> 00:42:41,400
and we can pull on and say, oh, just give

842
00:42:41,400 --> 00:42:43,920
me the latest, give me the latest that I need here,

843
00:42:44,320 --> 00:42:46,880
and then the code is already in Roslin, and we

844
00:42:46,880 --> 00:42:49,320
could just ask at this position, hey, what's intellisence, and

845
00:42:49,400 --> 00:42:52,239
being in the same process, now we get back instead

846
00:42:52,239 --> 00:42:55,599
of serialized JSON data that we've then decerialized and we

847
00:42:55,639 --> 00:42:58,719
don't know anything about it other than the strings we

848
00:42:58,800 --> 00:43:01,119
have the rich rosalins. We know what symbol. This came

849
00:43:01,119 --> 00:43:03,639
from we know we can do a lot more with it. Wow,

850
00:43:03,679 --> 00:43:06,880
And so the idea is that then we're kind of

851
00:43:06,960 --> 00:43:10,280
leaning more into the idea that really Razor is kind

852
00:43:10,320 --> 00:43:14,599
of about views and about generating really C sharp code

853
00:43:14,679 --> 00:43:19,079
with with htmo as opposed to HTML with some c

854
00:43:19,199 --> 00:43:21,280
sharp script but kind of you know, saying no, no,

855
00:43:21,360 --> 00:43:24,159
this is c sharp. And we've done the same thing

856
00:43:24,159 --> 00:43:27,440
with sample for VS code, so because it's a C

857
00:43:27,559 --> 00:43:29,800
sharp based kind of thing where it's got very much

858
00:43:29,840 --> 00:43:32,679
C sharp code behind and it's a very much adotinant language.

859
00:43:32,840 --> 00:43:36,639
And so for VS code, the intelligence runs inside the

860
00:43:36,719 --> 00:43:39,000
rasinal Language Server. We all live in the same process.

861
00:43:39,000 --> 00:43:41,239
We call that call that co hosting. That's something we're

862
00:43:41,280 --> 00:43:44,880
working on. It is something that's on a feature flag

863
00:43:45,239 --> 00:43:47,400
right now. It's actually can be turned on in VS

864
00:43:47,400 --> 00:43:48,800
but we're we're going to be using it for Visual

865
00:43:48,880 --> 00:43:49,679
Geo code pretty soon.

866
00:43:49,719 --> 00:43:51,239
Speaker 2: Okay, So yeah, that was my question.

867
00:43:51,360 --> 00:43:54,000
Speaker 1: I heard you talked a lot about Visual Studio code,

868
00:43:54,199 --> 00:43:56,239
but I thought I heard that this is also in

869
00:43:56,320 --> 00:43:56,960
Visual Studio.

870
00:43:57,119 --> 00:43:57,480
Speaker 2: Yeah.

871
00:43:57,639 --> 00:44:00,280
Speaker 3: Yeah. The language server is used for both the and

872
00:44:00,440 --> 00:44:02,960
VUS code. So there is like a.

873
00:44:03,039 --> 00:44:05,719
Speaker 1: And the language server is a process outside of both

874
00:44:05,760 --> 00:44:06,880
of the IDEs is that.

875
00:44:06,920 --> 00:44:10,199
Speaker 3: It doesn't have to be It can just be a

876
00:44:10,280 --> 00:44:13,360
logical service that's created and running there that you talk to.

877
00:44:14,599 --> 00:44:16,760
You know, it doesn't have to go over it just

878
00:44:16,800 --> 00:44:18,119
needs to go over a stream. It doesn't have to

879
00:44:18,159 --> 00:44:20,199
be a name. I could just be right there in process.

880
00:44:20,239 --> 00:44:23,480
And that's how it is ADS today. When we move

881
00:44:23,519 --> 00:44:26,519
it to co hosting. However, when it runs inside Roslin's

882
00:44:26,559 --> 00:44:29,519
language server, it does move. Most of it moves out

883
00:44:29,519 --> 00:44:32,400
of process because Rosin wrote a lot of Roslin runs

884
00:44:32,440 --> 00:44:34,159
out of process in visual Studio and it lives in

885
00:44:34,239 --> 00:44:36,360
what we call Visual Studios Service Hub, and it runs

886
00:44:36,360 --> 00:44:37,559
as part of that service over there.

887
00:44:37,599 --> 00:44:41,199
Speaker 1: It sounds like you'd be passing less data more efficiently.

888
00:44:40,800 --> 00:44:43,639
Speaker 3: Yeah, and well, but less data between between Razor and

889
00:44:43,639 --> 00:44:45,039
c sharp, which is a big ball of nick.

890
00:44:45,199 --> 00:44:45,440
Speaker 4: Yeah.

891
00:44:45,519 --> 00:44:48,519
Speaker 3: So my hope is that improves performance, but it also

892
00:44:48,599 --> 00:44:51,079
just makes it easier to get more c sharp in there.

893
00:44:51,320 --> 00:44:51,599
Speaker 2: Right.

894
00:44:51,679 --> 00:44:53,840
Speaker 3: And then the other thing, Carl, that we've been doing

895
00:44:53,960 --> 00:44:56,480
is that we've been pulling more on the Razor compiler

896
00:44:56,559 --> 00:44:59,840
and trying to make that more Roslin like. It started

897
00:44:59,840 --> 00:45:02,400
out kind of being Rosin like, and then it kind

898
00:45:02,400 --> 00:45:05,320
of I think part of the problem is that being

899
00:45:05,960 --> 00:45:10,440
needing to serve like the needs of like a really

900
00:45:10,960 --> 00:45:14,639
like rapidly developing space at web speed essentially, like you know,

901
00:45:14,679 --> 00:45:17,119
as every technology comes on, Razor needed to be there,

902
00:45:17,559 --> 00:45:19,199
and so there was never time to kind of go

903
00:45:19,280 --> 00:45:21,599
and say, well, let's what should we do. What's the

904
00:45:21,639 --> 00:45:23,519
right thing to do? Like, no, just go, just go

905
00:45:23,559 --> 00:45:25,480
and get it done. And so there's a lot of

906
00:45:25,480 --> 00:45:29,960
that debt go and while you're going go faster. Yeah,

907
00:45:30,000 --> 00:45:31,800
and there's a lot of that debt in the compiler.

908
00:45:31,920 --> 00:45:33,960
So trying to make it a little more rosin like

909
00:45:34,280 --> 00:45:36,480
so that we can then bring in pieces of Roslin

910
00:45:36,559 --> 00:45:40,400
to say, you not have a separate saf for example,

911
00:45:40,440 --> 00:45:44,320
C sharp tokenizer in Razor as we have in you know,

912
00:45:44,360 --> 00:45:46,480
from Roslin. So we brought in an API to bring

913
00:45:46,480 --> 00:45:49,480
in Roslin c sharp tokenizer. So now you know, nobody

914
00:45:49,519 --> 00:45:51,199
has to go to the Razor compiler to say just

915
00:45:51,239 --> 00:45:53,159
to give you things that you you know, you would

916
00:45:53,159 --> 00:45:56,280
hope would be there, like I don't know, binary literals,

917
00:45:56,360 --> 00:45:58,039
things like that that would be at the token level

918
00:45:58,079 --> 00:45:59,960
that they would have to code specifically into the race

919
00:46:00,079 --> 00:46:03,679
or compiler again to get those features from c sharp

920
00:46:04,320 --> 00:46:06,679
that when we add them. So we're trying to do

921
00:46:06,719 --> 00:46:10,480
a better job of bringing over more features from you know,

922
00:46:10,559 --> 00:46:12,320
modern features, because as soon as you use you know,

923
00:46:12,400 --> 00:46:13,719
as soon as they're in C sharp, if they're not

924
00:46:13,760 --> 00:46:17,000
in Razor, everybody's confused about what the dacoder ring is

925
00:46:17,039 --> 00:46:19,119
for what C sharp features I can use here? Yeah,

926
00:46:19,159 --> 00:46:21,920
and where I can use them. So we're trying to

927
00:46:22,000 --> 00:46:23,039
trying to smooth that out.

928
00:46:22,880 --> 00:46:26,800
Speaker 1: To code lens would be nice in the Razor code editor.

929
00:46:27,000 --> 00:46:30,000
Speaker 3: Oh yeah, yeah, that is not on the It's something

930
00:46:30,000 --> 00:46:31,519
we were working on, but yeah, that would be nice.

931
00:46:31,519 --> 00:46:34,239
Speaker 1: Well, is that because of the Roslin thing? Like, is

932
00:46:34,280 --> 00:46:37,000
that like a Roslin feature? Code lens?

933
00:46:37,360 --> 00:46:40,320
Speaker 3: It's it's not a Roslin feature so much as it's

934
00:46:41,280 --> 00:46:43,639
it's just an expensive feature. It's it's because you know,

935
00:46:43,679 --> 00:46:46,239
you're running you're running final references on everything all the time,

936
00:46:46,840 --> 00:46:51,079
and uh, you know, Razor is I would say Razor

937
00:46:51,119 --> 00:46:55,840
has some fundamental challenges with how its model, how how

938
00:46:55,840 --> 00:46:58,239
it kind of works, like it kind of parses everything

939
00:46:58,239 --> 00:47:01,760
on one every keystroke and rebuild everything on every keystroke,

940
00:47:01,760 --> 00:47:05,280
whereas Roslin's much more incremental. And so when you're typing

941
00:47:05,280 --> 00:47:08,320
in a method body for example, in Roslin, we're we're

942
00:47:08,360 --> 00:47:11,039
not parsing the rest of the file, it's just just

943
00:47:11,079 --> 00:47:13,199
the bits that you're changing. And so to keep a

944
00:47:13,239 --> 00:47:16,239
line up there with the final references kind of updating

945
00:47:16,719 --> 00:47:20,360
it's it's not terrible. It would be much harder for

946
00:47:20,599 --> 00:47:22,519
I mean Razor would. It would just be challenging. I

947
00:47:22,519 --> 00:47:25,679
would say, so we but as we move the compiler forward,

948
00:47:25,719 --> 00:47:27,079
maybe and get maybe get there.

949
00:47:27,119 --> 00:47:30,239
Speaker 1: Well, I'm I'm mostly using code behind files now anyway,

950
00:47:30,320 --> 00:47:33,440
So okay, and it's for that reason that you know,

951
00:47:33,480 --> 00:47:34,880
I miss all the things that.

952
00:47:35,480 --> 00:47:37,079
Speaker 3: Yeah, now I get it, I totally get it.

953
00:47:37,199 --> 00:47:42,119
Speaker 1: Yeah, well, that that sounds good, Dustin, I can't wait

954
00:47:42,159 --> 00:47:44,280
for that. And is that coming in the next version

955
00:47:44,280 --> 00:47:46,480
of dot net or or the next version of c

956
00:47:46,639 --> 00:47:48,159
sharp or both.

957
00:47:48,519 --> 00:47:50,840
Speaker 3: Well, the tooling things I'm talking about will be coming

958
00:47:50,840 --> 00:47:53,360
in like kind of like the next next the next

959
00:47:53,440 --> 00:47:55,280
visual studios we get going, yeah.

960
00:47:55,119 --> 00:47:56,599
Speaker 2: Oh, the next visual studio. Wow.

961
00:47:56,880 --> 00:47:58,840
Speaker 3: Great, And then whenever they show up in VS code,

962
00:47:58,840 --> 00:48:01,320
probably in vs code maybe sooner, maybe not.

963
00:48:01,599 --> 00:48:05,800
Speaker 2: We're not expecting a new studio fort net ten.

964
00:48:05,960 --> 00:48:07,599
Speaker 3: These are not things I can speak to.

965
00:48:07,800 --> 00:48:11,039
Speaker 1: Well, okay, I think there are new versions of the

966
00:48:11,360 --> 00:48:13,519
studio all the time. But they're subversions.

967
00:48:13,599 --> 00:48:16,159
Speaker 3: Yeah, right, that's right, there are, but that's what you're

968
00:48:16,199 --> 00:48:18,599
talking about, right, major versions or things like that.

969
00:48:18,639 --> 00:48:21,000
Speaker 2: I'm not sure, Okay, Yeah, it's just there's been no

970
00:48:21,079 --> 00:48:25,880
announcement about a Studio twenty twenty five at this point,

971
00:48:26,400 --> 00:48:32,079
and normally, like you think back to see to dot

972
00:48:32,159 --> 00:48:35,239
net six, like that was very much tied together with

973
00:48:35,480 --> 00:48:38,679
twenty nineteen, like they had to have both, Like you

974
00:48:38,679 --> 00:48:40,800
couldn't even run the preview if you didn't download the

975
00:48:40,840 --> 00:48:43,679
preview bits at twenty nineteen as well. Not that I

976
00:48:43,719 --> 00:48:45,920
love that like that, I've felt like those were two close,

977
00:48:46,000 --> 00:48:49,840
closely tied. You know. It kind of made an impossible situation,

978
00:48:49,880 --> 00:48:51,599
Like I feel for the Maui team because they were

979
00:48:51,599 --> 00:48:53,480
also trying to push Maui out at the same time.

980
00:48:53,519 --> 00:48:57,199
It's like, wait, language is changing, dead platform is changing,

981
00:48:57,679 --> 00:49:00,480
and you're trying to build a new SDK. Ah gee,

982
00:49:00,480 --> 00:49:01,559
I wonder why that's hard.

983
00:49:01,880 --> 00:49:05,400
Speaker 3: Yeah, yeah, it's tough. Coordination is hard for sure.

984
00:49:05,719 --> 00:49:08,880
Speaker 2: Yeah, So it's just quite you know. It's not like

985
00:49:08,920 --> 00:49:12,599
Studio doesn't commonantly update anyway, right, it gets its quarterly.

986
00:49:12,639 --> 00:49:15,280
It's like there's new features all the time. It's really

987
00:49:15,280 --> 00:49:17,440
a question of when do you declare a new version.

988
00:49:17,840 --> 00:49:19,800
Speaker 3: Yeah, And there's been a lot of summer releases on

989
00:49:19,880 --> 00:49:21,920
that too. As we've been you know, putting out new

990
00:49:21,920 --> 00:49:24,400
co pilot experiments, trying new things. There's been a lot

991
00:49:24,480 --> 00:49:26,480
that e any that haven't hit the previu channel that

992
00:49:26,639 --> 00:49:28,199
hit the release channel. So there's been a lot of

993
00:49:28,360 --> 00:49:31,000
a lot of updates lately. Yeah, in that space, but.

994
00:49:30,960 --> 00:49:33,840
Speaker 2: It's also been a while. Twenty two is the current version, Like,

995
00:49:34,000 --> 00:49:37,039
is it really going to be twenty two? Yeah, it's funny.

996
00:49:37,280 --> 00:49:38,800
We were talking about that on the dev team. I

997
00:49:38,920 --> 00:49:40,840
was trying to I had to remind people. It was like,

998
00:49:40,840 --> 00:49:43,440
do you guys remember what the big depths like we called,

999
00:49:43,480 --> 00:49:47,320
you know, twenty twenty two, what the big thing was? Gosh,

1000
00:49:47,320 --> 00:49:49,039
that was a long time ago. It was sixty four

1001
00:49:49,079 --> 00:49:50,440
bit that was the big thing.

1002
00:49:50,840 --> 00:49:52,880
Speaker 3: That was my gosh, that seems like a lifetime ago

1003
00:49:53,000 --> 00:49:56,000
that we were trying to get everything out of sixty fourth. Yeah.

1004
00:49:56,039 --> 00:49:57,440
So yeah, it's been a while.

1005
00:49:57,559 --> 00:49:58,800
Speaker 2: Yeah, just make it all work.

1006
00:49:58,840 --> 00:50:01,719
Speaker 1: But there's been inter releases like I was talking about

1007
00:50:01,760 --> 00:50:05,320
before that, you know, just not they're not just bug fixes,

1008
00:50:05,320 --> 00:50:06,679
but you have new features.

1009
00:50:06,280 --> 00:50:07,440
Speaker 2: In these interim releases.

1010
00:50:07,840 --> 00:50:08,280
Speaker 3: That's right.

1011
00:50:08,360 --> 00:50:10,280
Speaker 2: So what's a version actually it is?

1012
00:50:10,360 --> 00:50:12,280
Speaker 3: I mean, you know, maybe we'll just get high enough

1013
00:50:12,280 --> 00:50:14,199
that will be in kind of chrome version numbers where

1014
00:50:14,199 --> 00:50:16,119
you just don't even know what you're running anymore. Yeah,

1015
00:50:16,119 --> 00:50:18,199
I don't know. This is version six thousand or something.

1016
00:50:18,320 --> 00:50:22,119
Speaker 2: Right, reopen it and it updates, updates every time you

1017
00:50:22,159 --> 00:50:23,000
close it, right.

1018
00:50:23,320 --> 00:50:25,400
Speaker 3: Yeah, yeah, let's see.

1019
00:50:25,800 --> 00:50:27,880
Speaker 2: Oh my goodness, I just pulled up the release notes.

1020
00:50:28,079 --> 00:50:31,280
There have been fourteen releases on twenty twenty two.

1021
00:50:31,400 --> 00:50:36,719
Speaker 3: Yeah, fourteen, and that's just the minor releases, right, the dots. Yeah, yeah,

1022
00:50:36,760 --> 00:50:39,239
this is the dots, and that means and I think

1023
00:50:39,320 --> 00:50:41,119
every other one of those I can't remember. It's the

1024
00:50:41,159 --> 00:50:46,320
even ones are long care support. So yeah, it's crazy.

1025
00:50:46,480 --> 00:50:48,840
Speaker 2: It just yeah, it speaks to it's getting really hard

1026
00:50:48,840 --> 00:50:52,360
to understand what version numbers are when you're yeah constantly, right,

1027
00:50:52,440 --> 00:50:55,000
it's the even numbers. Seventeen point two is LTSC.

1028
00:50:55,199 --> 00:50:58,880
Speaker 1: Yeah, how long is the list of is your barn list?

1029
00:50:58,920 --> 00:51:01,119
Your list of features.

1030
00:51:00,880 --> 00:51:03,880
Speaker 3: To implement for the language, for tooling for.

1031
00:51:04,360 --> 00:51:07,519
Speaker 1: Yeah yeah, well yeah, for the ide actually for visual studio.

1032
00:51:08,920 --> 00:51:12,199
Speaker 3: Gosh, that's never ending. We have so much we want

1033
00:51:12,239 --> 00:51:14,480
to do. We never have enough fingers to type them

1034
00:51:14,480 --> 00:51:14,800
all in.

1035
00:51:15,159 --> 00:51:15,320
Speaker 2: Yeah.

1036
00:51:15,360 --> 00:51:18,280
Speaker 1: So yeah, do you get help from the community. We do,

1037
00:51:18,400 --> 00:51:20,519
I mean it is open source. Do you get pull requests?

1038
00:51:21,199 --> 00:51:23,480
Speaker 3: Roslin gets a fair number of full requests. We even

1039
00:51:23,559 --> 00:51:27,039
have somebody we roslin we uh in the c sharp

1040
00:51:27,119 --> 00:51:30,360
language design team. We've been we experimented with this where

1041
00:51:30,400 --> 00:51:32,400
the kind of that we have a community member on

1042
00:51:32,480 --> 00:51:36,360
the language design team who's not a Microsoft employee, so

1043
00:51:36,440 --> 00:51:40,320
we we we work very closely with with with it.

1044
00:51:40,360 --> 00:51:42,519
Then there's a handful of community members that are comfortable

1045
00:51:43,079 --> 00:51:47,079
putting in compiler features and doing the entire tooling stack

1046
00:51:47,119 --> 00:51:48,719
and all the features all the way up, which is

1047
00:51:48,719 --> 00:51:51,599
great because that means because if you know, you submit

1048
00:51:51,639 --> 00:51:54,079
a language feature and it's like, oh, that's cool, but

1049
00:51:54,239 --> 00:51:55,480
now we've got a lot of work to do.

1050
00:51:56,000 --> 00:51:56,119
Speaker 2: Uh.

1051
00:51:56,760 --> 00:51:58,199
Speaker 3: And so the guys that will come in and just

1052
00:51:58,199 --> 00:52:01,000
do it all, it's like thank you, Yes, we want

1053
00:52:01,000 --> 00:52:02,360
this too, this is a great feature.

1054
00:52:02,920 --> 00:52:04,639
Speaker 2: But can they really do it all? Because I think

1055
00:52:04,679 --> 00:52:08,639
about the cultural adaptations you have to make for stuff.

1056
00:52:08,360 --> 00:52:10,800
Speaker 3: Like oh sure, no, those sorts of things are yeah,

1057
00:52:10,960 --> 00:52:13,440
globalization and all those kinds of things are different. But yeah,

1058
00:52:13,519 --> 00:52:15,559
but do but just to get the feature working, make

1059
00:52:15,559 --> 00:52:17,559
sure it works an inteli sense, put a refactoring in

1060
00:52:17,639 --> 00:52:20,440
or two, you know those kinds of things. That's pretty great.

1061
00:52:20,440 --> 00:52:21,840
Speaker 2: Do you get prs from Mark Miller?

1062
00:52:22,039 --> 00:52:24,159
Speaker 3: No?

1063
00:52:24,480 --> 00:52:26,239
Speaker 2: And would you accept them anyway? Yeah?

1064
00:52:26,679 --> 00:52:33,360
Speaker 3: No, absolutely not. I mean, guy, who's going to accept

1065
00:52:33,360 --> 00:52:35,440
an all emoji all caps PR?

1066
00:52:36,760 --> 00:52:39,880
Speaker 2: I mean, really, you gotta look at yourself in the

1067
00:52:39,920 --> 00:52:45,960
face afterwards, you know, No, I'm sorry. Yeah, yeah, you know,

1068
00:52:46,039 --> 00:52:46,840
you guys are all friends.

1069
00:52:46,840 --> 00:52:48,280
Speaker 3: Don't get you're trying to get me in trouble. I

1070
00:52:48,320 --> 00:52:49,159
can tell no, no.

1071
00:52:49,079 --> 00:52:49,559
Speaker 2: Of course not.

1072
00:52:52,000 --> 00:52:53,159
Speaker 3: Yeah.

1073
00:52:53,239 --> 00:52:55,320
Speaker 2: Yeah, you worked for Devax back in the day. It

1074
00:52:55,360 --> 00:52:57,400
was a long time ago. Now, mind you, it.

1075
00:52:57,239 --> 00:52:59,440
Speaker 3: Was a long time. So if it, if it, if it,

1076
00:53:00,039 --> 00:53:02,760
there's you at all when I say this, it's that's fair.

1077
00:53:02,920 --> 00:53:05,119
I have been at Microsoft for seventeen years.

1078
00:53:05,159 --> 00:53:05,440
Speaker 4: Wow.

1079
00:53:05,559 --> 00:53:06,800
Speaker 2: Oh man, wow wowow.

1080
00:53:06,960 --> 00:53:09,199
Speaker 3: And it seems like it doesn't seem that long ago that,

1081
00:53:09,320 --> 00:53:11,400
you know, you guys were doing dot net rocks trips

1082
00:53:11,400 --> 00:53:13,599
and I'd show up for a while ark or something.

1083
00:53:13,639 --> 00:53:17,519
It's like that was that seems like not that long ago.

1084
00:53:17,639 --> 00:53:20,119
Speaker 2: Last tour was twenty thirteen. Man, it's been a long time.

1085
00:53:20,199 --> 00:53:23,079
Speaker 3: Yeah, I was already there for five years, so it's

1086
00:53:23,119 --> 00:53:25,199
it's been. Yeah, it's been a while since I've been

1087
00:53:25,239 --> 00:53:27,199
at Microsoft, and it's been it's been a lot of fun.

1088
00:53:27,280 --> 00:53:30,519
Speaker 2: Yeah, they took our RV away. They said no more

1089
00:53:30,639 --> 00:53:36,679
tours for you. Ye know, it was batted around. I

1090
00:53:36,719 --> 00:53:38,920
had a conversation with a team that's like, would you

1091
00:53:38,960 --> 00:53:42,800
consider another road trip? It's like, you know, I'm fifty eight, right,

1092
00:53:43,679 --> 00:53:47,159
come on? Yeah, I mean I would do it. I

1093
00:53:47,199 --> 00:53:50,039
would totally do it, but I just don't. I don't know.

1094
00:53:50,159 --> 00:53:52,440
Speaker 3: Would you do it like the Iron Maiden way? Would

1095
00:53:52,440 --> 00:53:54,360
you have to get like a jet to fly yourselves

1096
00:53:54,400 --> 00:53:56,679
instead of an RV? You know you can't. I can't

1097
00:53:56,719 --> 00:53:58,280
sleep in an RV anymore. I'm too old.

1098
00:53:58,320 --> 00:54:00,480
Speaker 2: Yeah. Well, we never slept in the We never did

1099
00:54:00,559 --> 00:54:01,280
sleep in the area.

1100
00:54:01,320 --> 00:54:03,679
Speaker 3: Oh yeah, that's true. I guess you stopped in each place.

1101
00:54:03,719 --> 00:54:06,599
Speaker 2: We stayed in little hotels. It smelled bad enough as

1102
00:54:06,639 --> 00:54:11,199
it was. We stayed at.

1103
00:54:11,159 --> 00:54:14,400
Speaker 1: Laking To Ends, mostly on the last one. On the

1104
00:54:14,840 --> 00:54:17,000
first one, we were looking whatever we could find.

1105
00:54:17,400 --> 00:54:20,920
Speaker 2: Yeah, there's a couple where we did, like he did,

1106
00:54:20,920 --> 00:54:23,880
standing for beside the Denny's. Yeah, next to Denny's.

1107
00:54:23,960 --> 00:54:27,960
Speaker 1: Yeah, Okay, what's next after you hang up with us?

1108
00:54:27,960 --> 00:54:29,199
Speaker 2: What are you? What are you going to go do?

1109
00:54:29,639 --> 00:54:30,920
You're on vacation, right.

1110
00:54:31,280 --> 00:54:33,360
Speaker 3: I'm on vacation. I'm going to go play mini golf

1111
00:54:33,360 --> 00:54:33,960
with family.

1112
00:54:34,119 --> 00:54:36,320
Speaker 2: That's great. There you go, that's a great thing.

1113
00:54:36,480 --> 00:54:38,320
Speaker 3: It's yeah, we're kinds great.

1114
00:54:38,400 --> 00:54:41,840
Speaker 1: And when you get back, it's just more more razor

1115
00:54:41,880 --> 00:54:42,320
code work.

1116
00:54:42,480 --> 00:54:43,480
Speaker 3: Yeah it is.

1117
00:54:43,679 --> 00:54:45,360
Speaker 2: It's it's the grind to November.

1118
00:54:45,400 --> 00:54:48,159
Speaker 3: There's a lot to do and I kind of feel

1119
00:54:48,199 --> 00:54:50,599
like I shouldn't really be on vacation, but it was,

1120
00:54:50,639 --> 00:54:52,920
it was planned. It's like and it's never a good

1121
00:54:52,960 --> 00:54:53,440
time to go.

1122
00:54:53,599 --> 00:54:56,159
Speaker 2: It's always you need to take vacations.

1123
00:54:56,280 --> 00:54:59,239
Speaker 3: Yeah, for your agreed, and I planned it. But yeah,

1124
00:54:59,360 --> 00:55:03,599
it's there's just always too much and it's hard to

1125
00:55:03,639 --> 00:55:04,400
be away sometimes.

1126
00:55:04,440 --> 00:55:07,880
Speaker 1: I totally get it. I totally get it. And my

1127
00:55:07,960 --> 00:55:09,800
wife looks at me and when we're on vacation, you're

1128
00:55:09,840 --> 00:55:11,000
thinking about code, aren't you.

1129
00:55:12,039 --> 00:55:14,639
Speaker 2: How do you know that? Well, yeah, because I'll see

1130
00:55:14,679 --> 00:55:15,440
it in your eyes.

1131
00:55:16,159 --> 00:55:18,960
Speaker 3: I don't. I don't. I don't separate code from vacation.

1132
00:55:19,440 --> 00:55:21,760
I mean that's just what I'm coding. Let's not get

1133
00:55:21,800 --> 00:55:26,639
crazy now, Yeah, whoa no vacation can be code. That's okay,

1134
00:55:26,679 --> 00:55:29,039
it's just got to be like an nes emulator or something.

1135
00:55:29,480 --> 00:55:33,119
Speaker 1: Ah, all right, well, good, well man, it's been great

1136
00:55:33,159 --> 00:55:35,320
talking to you again, and keep up the good work.

1137
00:55:35,360 --> 00:55:37,199
I know we're in good hands with you at the

1138
00:55:37,840 --> 00:55:40,679
at the wheel. So thanks, thank you. We'll talk to

1139
00:55:40,679 --> 00:55:41,360
you next time.

1140
00:55:41,519 --> 00:55:57,480
Speaker 4: I'm dot net rocks.

1141
00:56:03,119 --> 00:56:05,840
Speaker 1: Dot net Rocks is brought to you by Franklin's Net

1142
00:56:05,920 --> 00:56:09,880
and produced by Pop Studios, a full service audio, video

1143
00:56:09,960 --> 00:56:14,039
and post production facility located physically in New London, Connecticut,

1144
00:56:14,280 --> 00:56:19,079
and of course in the cloud online at pwop dot com.

1145
00:56:19,280 --> 00:56:21,400
Visit our website at d O T N E t

1146
00:56:21,639 --> 00:56:25,679
R O c k S dot com for RSS feeds, downloads,

1147
00:56:25,840 --> 00:56:29,519
mobile apps, comments, and access to the full archives going

1148
00:56:29,559 --> 00:56:32,800
back to show number one, recorded in September two.

1149
00:56:32,599 --> 00:56:33,199
Speaker 2: Thousand and two.

1150
00:56:33,840 --> 00:56:36,159
Speaker 1: And make sure you check out our sponsors. They keep

1151
00:56:36,239 --> 00:56:38,800
us in business. Now go write some code.

1152
00:56:39,119 --> 00:56:39,880
Speaker 2: See you next time.

1153
00:56:40,800 --> 00:56:42,599
Speaker 4: You got JAD Middle Vans

1154
00:56:44,679 --> 00:56:44,719
Speaker 3: And

