1
00:00:01,080 --> 00:00:05,679
How'd you like to listen to dot
NetRocks with no ads? Easy? Become

2
00:00:05,679 --> 00:00:09,839
a patron For just five dollars a
month, you get access to a private

3
00:00:10,000 --> 00:00:14,439
RSS feed where all the shows have
no ads. Twenty dollars a month will

4
00:00:14,439 --> 00:00:19,039
get you that and a special dot
NetRocks patron mug. Sign up now at

5
00:00:19,039 --> 00:00:23,800
Patreon dot dot NetRocks dot com.
Hey, Carl and Richard here with your

6
00:00:23,920 --> 00:00:28,800
twenty twenty four NDC schedule. Will
be at as many NDC conferences as possible

7
00:00:28,800 --> 00:00:33,280
this year, and you should consider
attending no matter what. Ndcoslow is happening

8
00:00:33,439 --> 00:00:38,560
June tenth through the fourteenth. Get
your tickets at ndcoslow dot com. The

9
00:00:38,600 --> 00:00:43,640
Copenhagen Developers Festival happens August twenty sixth
through the thirtieth. Early bird discount ends

10
00:00:43,679 --> 00:00:51,479
April twenty sixth. Tickets at Cphdevfest
dot com. Ndcporto is happening October fourteenth

11
00:00:51,560 --> 00:00:57,799
through the eighteenth. The early bird
discount ends June fourteenth. Tickets at Ndcporto

12
00:00:57,920 --> 00:01:14,200
dot com. And we'll see you
there, we hope. Hey, guess

13
00:01:14,200 --> 00:01:18,159
what it's dot net rocks and guess
where in Seattle that build? I'm Carl

14
00:01:18,200 --> 00:01:21,079
Franklin. I'm Richard Gamble, and
while we're here with a couple of C

15
00:01:21,280 --> 00:01:27,280
Sharp legends, but we are in
a podcast booth with some fabric walls,

16
00:01:27,519 --> 00:01:30,760
no ceiling, and a whole bunch
of other podcasters. Yeah, a few

17
00:01:30,760 --> 00:01:34,840
other shows going at the moment that
we're recording. Amanda Silvers in one room

18
00:01:36,000 --> 00:01:38,640
and Marc Siavich is in another room. So it's quite an all star back

19
00:01:38,719 --> 00:01:44,159
cast. And by room we mean
polls with fabric stretched around. Yeah,

20
00:01:44,159 --> 00:01:47,840
but we'll see what these headsets are
good, So hopefully they cross talk is

21
00:01:47,879 --> 00:01:49,319
not too bad. Yeah, hopefully. I mean, it feels like I'm

22
00:01:49,359 --> 00:01:53,840
landing a plane. Well it's really
belt for like the NFL. Yeah,

23
00:01:53,959 --> 00:01:59,400
so you feel like you're planning a
kickoff. So I'll be color here.

24
00:01:59,680 --> 00:02:02,319
Can they do the play by play? All right? He's at the thirty,

25
00:02:02,680 --> 00:02:06,599
he's at the forty. Yeah,
he's stopping him now, Bob.

26
00:02:06,959 --> 00:02:10,800
Last time I said this was in
nineteen seventy four and the World Series against

27
00:02:10,800 --> 00:02:14,639
it. I know who I'm talking
about. All Right, anyway, let's

28
00:02:14,639 --> 00:02:24,360
get started with better know a framework. Awesome, alight, man, what

29
00:02:24,400 --> 00:02:29,039
do you got? I found this
cool thing called Terminal dot Gooey. What

30
00:02:29,159 --> 00:02:34,800
is terminal Terminal dot Gooey is a
toolkit for building rich console apps for dot

31
00:02:34,879 --> 00:02:38,120
net, dot net core and mono
that works on Windows, the Mac,

32
00:02:38,719 --> 00:02:44,560
and Linux or Unix. How about
that? And by you know, it

33
00:02:44,599 --> 00:02:47,960
looks just like you know, Norton
Utilities from nineteen eighty three, oh man,

34
00:02:49,199 --> 00:02:52,800
like the demo does, but it
also has like Google asci art graphics

35
00:02:52,800 --> 00:02:55,639
and things. It's really cool.
So super old school though, that's awesome,

36
00:02:55,759 --> 00:02:59,280
very old school. Well, you
know that I think these things are

37
00:02:59,280 --> 00:03:00,919
coming back, you know, yeah, they have been coming back for a

38
00:03:00,960 --> 00:03:05,439
while. Everybody likes a command line, but yeah, if you can do

39
00:03:05,479 --> 00:03:07,360
a text based gooey, then it's
not as obnoxious as a mouse based guey.

40
00:03:07,439 --> 00:03:09,759
I guess I suppose so. I
mean, I kind of think that

41
00:03:09,879 --> 00:03:14,520
these are more retro toys for people. Our age that you know, grew

42
00:03:15,120 --> 00:03:17,240
make you feel better call you know
when his command line would call ourselves a

43
00:03:17,280 --> 00:03:22,240
green screen. You know, honestly, I remember when I got rid of

44
00:03:22,280 --> 00:03:28,039
my Hercule Lee's graphics card and the
world was all caller yeah in other top

45
00:03:28,120 --> 00:03:32,960
days and cga c ga yeah,
and g e ga e ga and hands

46
00:03:34,000 --> 00:03:37,719
graphics adapter. Welcome to some old
guys talk about old things that don't matter

47
00:03:37,719 --> 00:03:39,520
anymore. There you go, all
right? Anyway, that's what I got.

48
00:03:39,560 --> 00:03:44,120
Tonald Duck Gooey and who's talking to
us today? Drafted comment off a

49
00:03:44,159 --> 00:03:46,960
show eighteen ninety eight, not that
long ago. This is the one we

50
00:03:46,000 --> 00:03:51,520
did with Sean Wildermouth back in May, because we're publishing this in June,

51
00:03:52,319 --> 00:03:54,599
talking about being a senior software developer. Yeah, we kind of went back

52
00:03:54,639 --> 00:03:58,680
and forth on this show because we
did we have not a soft skills show

53
00:03:58,719 --> 00:04:00,479
in a long time, and we
weren't sure how this is going to come

54
00:04:00,479 --> 00:04:03,960
out. But boy, we got
a really strong reaction. And Sean wasn't

55
00:04:04,000 --> 00:04:08,560
really sure. He pushed her too, right, He like, have I

56
00:04:08,560 --> 00:04:11,199
ever done the right thing here?
And it's like, let's see what the

57
00:04:11,199 --> 00:04:14,199
listeners think, and the listeners seem
I think we resonated with certain folks,

58
00:04:14,240 --> 00:04:19,480
and one of them here is Rob
Schroeder, who said, as a senior

59
00:04:19,519 --> 00:04:23,480
dev who just ticked over into his
fifties, this episode came at the right

60
00:04:23,519 --> 00:04:28,000
time. It's good to hear that
Shawn's experience in struggles mirror mine. Also,

61
00:04:28,839 --> 00:04:31,439
I struggle to know where my career
should go. Management hold zero appeal

62
00:04:31,519 --> 00:04:35,160
to me. So I've been sort
of peaked at the lead engineer level a

63
00:04:35,279 --> 00:04:39,279
kid go into training. But despite
thirty years under my belt, I still

64
00:04:39,279 --> 00:04:43,240
feel like I don't know enough.
Isn't that funny? And that's totally inside

65
00:04:43,240 --> 00:04:46,040
of you, Rob, Like you
know far more than you realize. If

66
00:04:46,040 --> 00:04:48,959
you actually sit down and make a
plan to teach people, you'll know what

67
00:04:49,079 --> 00:04:53,839
to do. You know far more
than you realize. What I still have

68
00:04:53,879 --> 00:04:56,480
going for me is a willingness to
learn new things and demonstrate how they could

69
00:04:56,480 --> 00:05:00,480
be useful. Maybe if that goes, I will reevaluate the Yeah, if

70
00:05:00,519 --> 00:05:03,079
you stop caring, then it's time
to move on. As long as you

71
00:05:03,160 --> 00:05:06,199
care, it's great. So Rob, thank you so much for your comment.

72
00:05:06,240 --> 00:05:09,199
To copy music Coby is on its
way to you, and if you'd

73
00:05:09,240 --> 00:05:11,560
like a copy of music Koba,
I write a comment on the website at

74
00:05:11,560 --> 00:05:14,560
dot at Rocks dot com or on
the Facebook so we publish every show there

75
00:05:14,720 --> 00:05:15,879
and if you comment there and I
read it in the show, we'll send

76
00:05:15,879 --> 00:05:19,519
you copy music Go buy. You
could also send us an X. It

77
00:05:19,680 --> 00:05:23,680
just doesn't sound right, No,
that's wrong. Let's just send me an

78
00:05:23,839 --> 00:05:25,959
X. What does that mean?
A kiss or huck? I can't remember

79
00:05:26,160 --> 00:05:29,519
on the switch Send us a tweet. Of course, we've been on Twitter

80
00:05:29,560 --> 00:05:32,800
forever, but you can also follow
us on masdon where the cool kids are

81
00:05:32,839 --> 00:05:36,199
hanging out. I'm at Carl Franklin
at tech Hub dot social, and I'm

82
00:05:36,279 --> 00:05:40,240
Rich Campbell at Mastered on dot social. Send us a two. That's another

83
00:05:40,240 --> 00:05:43,959
way that you can get a copy
of music to code buy. Here you

84
00:05:44,000 --> 00:05:46,720
go. So let's bring on our
guests. They've been on the show before.

85
00:05:46,879 --> 00:05:50,560
They've been on many shows of their
own talking about c sharp. Every

86
00:05:50,560 --> 00:05:55,519
time there's a new C sharp version. You'll see them online doing videos.

87
00:05:55,879 --> 00:06:00,800
It's Mad's Torgerson and Dustin Campbell.
Let me read their bios. Mads Targusen

88
00:06:00,879 --> 00:06:03,759
is the architec for the C sharp
language at Microsoft and runs the C sharp

89
00:06:03,839 --> 00:06:08,759
design meetings and Prior to joining Microsoft
in two thousand and five, he was

90
00:06:08,800 --> 00:06:15,600
an associate professor at University of RHUs
and doing programming language research YEP and Dustin

91
00:06:15,639 --> 00:06:19,560
Campbell is a principal software engineer on
the dot Net Developer Experience Team, where

92
00:06:19,560 --> 00:06:25,199
he currently works on the Razor C
sharp and Visual Basic language experiences for visual

93
00:06:25,199 --> 00:06:30,680
Studio. Passionate about coding productivity,
Dustin's primary focus is on making dot net

94
00:06:30,720 --> 00:06:33,480
tooling great and helping design the next
version of c sharp. Is part of

95
00:06:33,480 --> 00:06:38,439
the language design team. Prior to
his current role, he spent several years

96
00:06:38,439 --> 00:06:42,759
working as a program manager in the
project called Rosalin maybe you've heard of it,

97
00:06:43,279 --> 00:06:47,120
designing the next generation of the c
sharp and VBID experiences. Dustin is

98
00:06:47,160 --> 00:06:53,360
a programming nut. His favorite color
is blue. Welcome back, guys.

99
00:06:53,480 --> 00:06:56,040
Is any of that true? Some
of that's true, Some of it is

100
00:06:56,040 --> 00:06:59,439
true. What a luxury that we
get to be sit together rather than the

101
00:06:59,560 --> 00:07:02,680
usual of remote thing. Yeah,
it's fun to be together and chat a

102
00:07:02,720 --> 00:07:08,639
bit. This we we just went
through the keynote of Build and it's all

103
00:07:08,639 --> 00:07:12,879
copilot all the time. It's a
a I like, where where's the pro

104
00:07:13,000 --> 00:07:15,839
You guys have got to talk?
What are you talking about? We're talking

105
00:07:15,879 --> 00:07:19,800
about programming? Good, because that's
a good thing of a bill to talk

106
00:07:19,800 --> 00:07:26,120
about programming. Yeah, I mean, don't get me wrong. AI Copilot

107
00:07:26,199 --> 00:07:30,160
it is really important. It's really
taking off and it's getting into everything.

108
00:07:30,279 --> 00:07:35,959
It is getting into the coding experience. Should you copilot like first people first

109
00:07:36,519 --> 00:07:41,519
met copilot as part of a developer
experience. That's where that kind of that's

110
00:07:41,519 --> 00:07:44,959
what that's why so good Microsoft had
come up with it was GitHub. Yeah,

111
00:07:45,560 --> 00:07:50,399
well get hub. You know it's
owned subsidiary, so we'll take that,

112
00:07:50,439 --> 00:07:57,160
thank you very much. Yeah,
but but it is really impacting the

113
00:07:57,319 --> 00:08:01,480
developer experience very much, right,
I use getthub copile internally. We were

114
00:08:01,720 --> 00:08:05,519
we were in fact just using it. We were working on our talk and

115
00:08:05,600 --> 00:08:07,639
it was filling in stuff for us, just the small things as we're and

116
00:08:07,680 --> 00:08:11,439
it was actually you know, just
filling out the boilerplate as we were writing

117
00:08:11,519 --> 00:08:16,560
up demos. And I love that. Yeah, even on crazy brand new

118
00:08:16,639 --> 00:08:20,600
sea sharp bits that nobody's seen yet. It was like, so when you

119
00:08:20,600 --> 00:08:22,720
guys are working on like I mean, you're working on dot at nine right

120
00:08:22,759 --> 00:08:26,920
now, so sharp thirteen, Yeah
at thirteen, lucky number thirteen. Man.

121
00:08:28,160 --> 00:08:33,840
Yeah, So the way that copilot
works, it can actually understand the

122
00:08:33,919 --> 00:08:37,080
new language features and you can see
how it interacts with like that's almost a

123
00:08:37,120 --> 00:08:41,480
way to look at how that feature
surfaces, because it isn't a trained on

124
00:08:41,559 --> 00:08:45,159
your reposts, I mean your personal
repost like I can comment, you know,

125
00:08:45,279 --> 00:08:48,480
list all of the connection strings that
Matt's has put in his reposts,

126
00:08:48,519 --> 00:08:54,120
and yeah, Matt Matt's posts all
of his passwords. One that's how you

127
00:08:54,240 --> 00:08:58,960
know works. You got to do
it yourself and right a four loop to

128
00:08:58,000 --> 00:09:05,840
print them out. There's a language
feature for you. I mean, that's

129
00:09:05,840 --> 00:09:09,360
been one of the interesting challenges for
AI to get up to speed, right,

130
00:09:09,440 --> 00:09:13,759
because the older the version of the
language, the more code is already

131
00:09:13,799 --> 00:09:18,559
out there in it new things.
And that's some something we've gotten a lot

132
00:09:18,600 --> 00:09:20,720
better at. Yeah, and I
think there's a long ways to go,

133
00:09:20,919 --> 00:09:28,080
too, right, because you know, the I guess the the best idea

134
00:09:28,159 --> 00:09:30,960
that we have is like, let's
let's, you know, try and make

135
00:09:31,080 --> 00:09:35,279
the AI to produce code that is
the latest and greatest, right, But

136
00:09:35,000 --> 00:09:37,960
what if that doesn't mean anything to
you yet? Right, right, Like

137
00:09:39,080 --> 00:09:41,960
it introduces collection expressions, but you're
still new in upper rays and C sharp

138
00:09:43,000 --> 00:09:48,200
one O syntax, you know.
And so I I like the idea that,

139
00:09:48,519 --> 00:09:50,600
you know, if we can get
AI to the place where it actually

140
00:09:50,679 --> 00:09:54,360
it's almost as if you asked it
a question and responded in your own voice,

141
00:09:54,360 --> 00:09:58,600
where you just look at your code
and produce code that is essentially look

142
00:09:58,639 --> 00:10:01,440
at it, and it's friction free. You're comfortable in C sharp seven.

143
00:10:01,600 --> 00:10:03,679
Yeah, so that's the code I'm
going to spit out for you. Yeah.

144
00:10:03,720 --> 00:10:07,080
I know, I'm on C sharp
nine, I'm on C sharp thirteen,

145
00:10:07,159 --> 00:10:09,360
whatever, whatever, But I haven't
used any of those features yet,

146
00:10:09,360 --> 00:10:11,919
and I really don't know what that
does. Yeah. So yeah, but

147
00:10:13,039 --> 00:10:16,039
this was a conversation we had ages
ago about how were we going to manage

148
00:10:16,480 --> 00:10:18,879
the fact that you maintain backward compatibility
so all that out code always runs,

149
00:10:18,960 --> 00:10:22,679
but still encourage people to use the
new features. And you said tooling,

150
00:10:24,440 --> 00:10:28,200
and this looks like tooling like that, this is the tool that. Well,

151
00:10:28,240 --> 00:10:30,200
I'll spit you out your CE sharp
seven. I'll say, hey,

152
00:10:30,200 --> 00:10:31,919
would you let us see what this
looks like in thirteen because you can do

153
00:10:33,000 --> 00:10:37,759
it this way and it's maybe a
little terser, a little clearer. You

154
00:10:37,840 --> 00:10:41,000
know. All of those things seem
to me to be really compelling for developers

155
00:10:41,080 --> 00:10:43,480
to say, this still runs,
but you could have it this way instead

156
00:10:43,960 --> 00:10:46,360
and lead them to the path of
using the new features. Yes, and

157
00:10:46,480 --> 00:10:50,279
we do that often already, even
without the use of copilot, without a

158
00:10:52,240 --> 00:10:54,159
yeah, you just have has a
lot of that coded in right. Yeah,

159
00:10:54,360 --> 00:11:01,600
And the interesting is that how that
interplay evolved between what co pilot feels

160
00:11:01,759 --> 00:11:07,879
like suggesting based on it's on the
model that it's right referring to virtually on

161
00:11:07,000 --> 00:11:13,159
probability, yes, versus the deterministic
but sort of needs to be hand rolled

162
00:11:13,200 --> 00:11:18,080
a little more. Things that we
also have built in sort of intelli sense

163
00:11:18,120 --> 00:11:22,279
and telecode type technology, code fixes
that suggest using new features and that kind

164
00:11:22,279 --> 00:11:24,279
of thing. Yeah, I can
tell you from experience that when I ask

165
00:11:24,399 --> 00:11:28,120
chat GPT to write me a console
app that does X, it creates a

166
00:11:28,200 --> 00:11:31,679
main and a you know, a
submain in the program and all that stuff,

167
00:11:33,000 --> 00:11:37,320
whereas you guys have completely simplified that
and yeah, so really even a

168
00:11:37,320 --> 00:11:39,600
couple of versions ago. Yeah,
it you know, it takes time to

169
00:11:39,639 --> 00:11:43,320
get that stuff trained on, you
know, even to have code out there.

170
00:11:43,799 --> 00:11:48,000
Right, that's and that's that's that's
writing that way or has best practices

171
00:11:48,279 --> 00:11:52,000
and all that kind of thing.
That in the perspective of gethub copilot,

172
00:11:52,039 --> 00:11:54,519
where it's parsing public repositories, it's
not only that you have to put the

173
00:11:54,600 --> 00:11:58,879
feature out there so that somebody has
to code against it enough times that it

174
00:12:00,159 --> 00:12:03,960
rises in probability is a correct answer
for a large language model. Yes,

175
00:12:03,039 --> 00:12:05,879
so, and you said that you
want it to be as natural as you

176
00:12:05,960 --> 00:12:11,840
know, talking to somebody who's very
much like yourself. Is there going to

177
00:12:11,919 --> 00:12:13,639
be away soon or is there a
way, you know, get hub co

178
00:12:13,799 --> 00:12:16,639
pilot to say, you know,
this is the version of C sharp language

179
00:12:16,639 --> 00:12:20,279
that I want to use, and
you should spit out everything like this.

180
00:12:20,080 --> 00:12:24,200
I even want it to be more
like it's it, you know, hand

181
00:12:24,279 --> 00:12:28,080
in hand with some of the ID
tooling that we have. If I can

182
00:12:28,159 --> 00:12:30,919
get of us more than text,
more than just code, give us some

183
00:12:30,919 --> 00:12:33,399
semantics here, here's what I was
trying to do. Yeah, And the

184
00:12:33,480 --> 00:12:35,120
idea is like, you know,
I've got the whole project here, I

185
00:12:35,240 --> 00:12:39,039
know what's in there. Like they
don't do that, but they do this,

186
00:12:39,679 --> 00:12:41,879
you know, and it might be
c sharp ten, but they might

187
00:12:41,960 --> 00:12:46,440
be still using us. It might
use a smattering of features and different things.

188
00:12:46,440 --> 00:12:48,080
All right, So you don't want
to you don't want to have to

189
00:12:48,240 --> 00:12:50,559
tell the tool anything. It should
read the code that's there and say,

190
00:12:50,879 --> 00:12:54,080
hey, this is how you write
your code. Let me write code like

191
00:12:54,159 --> 00:12:56,600
this. Yes, yeah, absolutely, that's legit. Well you can say

192
00:12:56,639 --> 00:13:01,039
that, let the version of c
sharp that using that your cs prog file.

193
00:13:01,279 --> 00:13:05,720
Right, But it's not there by
default, right, not by default,

194
00:13:05,759 --> 00:13:09,399
it's the it's the latest by default, And that might not be what

195
00:13:09,639 --> 00:13:11,960
your program looks like. It also
might be it might make a suggestion that

196
00:13:13,120 --> 00:13:16,120
looks completely different than the code you're
looking at, and so then there's friction

197
00:13:16,200 --> 00:13:20,559
should I accept this suggestion or yeah, that kind of thing. So yeah,

198
00:13:20,559 --> 00:13:24,120
I'd love it to just get friction
free, to just kind of no

199
00:13:24,679 --> 00:13:28,360
be able to speak in your language. Right. I've said this before that

200
00:13:28,559 --> 00:13:31,279
you know, there are people who
are kind of hesitant to trust AI.

201
00:13:33,080 --> 00:13:37,519
But code is one of the places
where it really shines because you can test

202
00:13:37,600 --> 00:13:39,360
it immediately. You know, it's
not like it's giving you a fact that

203
00:13:39,480 --> 00:13:43,120
you are then going to regurgitate and
you could look like a complete idiot or

204
00:13:43,600 --> 00:13:50,080
or worse right, you're getting some
code and it runs or it doesn't run.

205
00:13:50,519 --> 00:13:52,879
The compiler has to say yeah,
intelligence has to say yeah, of

206
00:13:52,919 --> 00:14:00,799
course. There's these things called tests
that some people's talk those tests that an

207
00:14:00,840 --> 00:14:07,679
a I wrote for you first doing
that, so I mean that's how they

208
00:14:07,759 --> 00:14:11,200
get you. Yeah, yeah,
first that generated code that didn't work then

209
00:14:11,200 --> 00:14:15,519
I wrote test around it, so
it passed anyway. But wouldn't it be

210
00:14:15,600 --> 00:14:18,480
great though, if we could have
tests for everything that AI outputs, you

211
00:14:18,559 --> 00:14:22,159
know, just like everything that the
large language model says. It's just it

212
00:14:22,240 --> 00:14:26,960
sooner or later you you actually have
to use your brain and your eyes to

213
00:14:26,039 --> 00:14:28,399
look at it. Go is that
a real test? Is that what we

214
00:14:28,519 --> 00:14:33,240
want to validate? M But then
it begs the question that, well,

215
00:14:33,320 --> 00:14:35,919
if we need to be smarter than
the AI, then what's the use of

216
00:14:37,000 --> 00:14:41,000
an AI? Just type save key
strokes? Yeah, it's productivity. It

217
00:14:41,559 --> 00:14:43,080
saves time. Oh, I get
it. It was a rhetorical question.

218
00:14:43,240 --> 00:14:46,919
I say, I actually, and
I actually turn it off a lot of

219
00:14:46,960 --> 00:14:48,679
times. I have there's a button
in the in visual studio where I can

220
00:14:48,720 --> 00:14:52,000
turn it on and off. And
I turned off a lot of the time

221
00:14:52,039 --> 00:14:56,360
because when it makes a suggestion,
I find my my my ADHD brain finds

222
00:14:56,399 --> 00:15:01,120
myself staring at that code and trying
to under stand what it's doing as opposed

223
00:15:01,159 --> 00:15:03,200
to what I really wanted. Was
like a blank slate, So I think

224
00:15:03,360 --> 00:15:07,720
and start filling it out to fund
them A very interesting definition. It's like

225
00:15:09,000 --> 00:15:11,960
how many times do you want the
blank slate versus the blank state is stopping

226
00:15:13,080 --> 00:15:16,480
you. You get to that blank
screen like I don't know what to do,

227
00:15:16,480 --> 00:15:20,600
and describing it to the tool actually
helps you know what to do.

228
00:15:20,879 --> 00:15:24,879
What I do is I ask four
comments. I ask a comment every line

229
00:15:24,879 --> 00:15:28,399
of code, and they will do
that to parse existing code. No,

230
00:15:28,480 --> 00:15:31,519
no, no, when you when
you want it to, let's say,

231
00:15:31,600 --> 00:15:35,120
generate a method that does acts okay, and when in this generated code,

232
00:15:35,159 --> 00:15:37,720
I want you to comment everyone,
tell me what you're doing, help you

233
00:15:37,799 --> 00:15:41,879
with parsing for understanding, and I'll
do that. That's a great idea.

234
00:15:41,519 --> 00:15:50,480
I am pentameter, I like I
am acceptameter. I want you to comment

235
00:15:50,519 --> 00:15:58,200
every line of code in rhyming couplets, write a sonnet. I know it's

236
00:15:58,320 --> 00:16:00,440
just a machine, but it feels
a little cruel. Actually, yeah,

237
00:16:00,480 --> 00:16:03,559
I know. I know you want
to say I'm sorry, but I'm sorry,

238
00:16:04,120 --> 00:16:07,480
thank you to write, thank you
very much. I used the iamic

239
00:16:07,559 --> 00:16:14,000
Contemporary trip to to show people what
overflowing the token buffer looked like, because

240
00:16:14,000 --> 00:16:15,159
it was the first thing I said
is everything you should say to me is

241
00:16:15,159 --> 00:16:19,039
that I just keep asking it things
and after a certain point when it overflowed,

242
00:16:19,039 --> 00:16:22,279
that would stroll off and suddenly we
drop and so it was just like

243
00:16:22,480 --> 00:16:26,399
look this and here's this is also
look what it said. It it got

244
00:16:26,480 --> 00:16:30,720
weird because it had a portion of
a set of tokens. This is older

245
00:16:30,840 --> 00:16:34,000
versions stuff. But it was just
like ways to remind people there's this is

246
00:16:34,200 --> 00:16:37,919
software and it's not intelligent. So
should we talk about c sharp? Oh

247
00:16:38,080 --> 00:16:44,519
yeah, that's what what pardon there's
this thing right now where every conversation degenerates

248
00:16:44,720 --> 00:16:51,679
in just went straight there. Yeah, regenerate from that. So at first

249
00:16:51,720 --> 00:16:52,200
to get it out of the way, move on. So what's new,

250
00:16:52,240 --> 00:16:56,679
pussy cat? Hmm, you're making
a new language, a new version of

251
00:16:56,679 --> 00:16:59,360
the new version again. Yeah.
Yeah, it happens every year. Now,

252
00:17:00,320 --> 00:17:03,720
is that good? Yes? Not
everybody thinks. So. I do

253
00:17:04,039 --> 00:17:07,799
know that there's folks out there.
We certainly get the emails of resolves like

254
00:17:07,119 --> 00:17:11,799
so fast, so fast. He
did look at me when he said that

255
00:17:11,920 --> 00:17:17,359
too, Yes, I did,
but it was not necessarily because it was

256
00:17:17,680 --> 00:17:22,240
not to imply that you had a
different opinion. More, I think that

257
00:17:22,359 --> 00:17:25,839
the perception when when we come out
every year, the perception of speed is

258
00:17:25,880 --> 00:17:30,160
certainly different, right because the number
of times you have to well you feel

259
00:17:30,240 --> 00:17:33,599
you have to go and reorient yourself
and figure out what's up now is you

260
00:17:33,680 --> 00:17:37,559
know, more frequent, But I
mean the PM in me and I know

261
00:17:37,680 --> 00:17:41,440
that's a you know, out of
style term, but the PM ME says

262
00:17:41,880 --> 00:17:45,920
are we're building features that can ship
in a year because that's what we have

263
00:17:45,079 --> 00:17:51,839
for time. So that's that's one
of the risks I feel that we're so

264
00:17:51,920 --> 00:17:57,039
I don't feel that the overall velocity
of c Sharp's evolution is actually higher.

265
00:17:57,480 --> 00:18:03,279
I feel like we we ship deltas
more often you get like the first down

266
00:18:03,359 --> 00:18:07,039
payment on a feature that immediately gives
you value, and then the next round.

267
00:18:07,079 --> 00:18:11,640
So we did collection expressions for instance
twelve. There'll be a few more

268
00:18:11,720 --> 00:18:15,000
things based on that in thirteen and
in fourteen, maybe in fifteen. So

269
00:18:15,119 --> 00:18:18,480
at the end of all of that, you'll have the same amount of feature.

270
00:18:18,720 --> 00:18:22,039
It will just have come out in
increments in increments. It is,

271
00:18:22,279 --> 00:18:26,279
And I also wonder if that helps
people use it, because it's a small

272
00:18:26,319 --> 00:18:30,720
step in each version. It possibly
helps some people. And what it does

273
00:18:30,839 --> 00:18:34,640
for us is it gives us feedback
in between, so the feedback loop becomes

274
00:18:34,720 --> 00:18:37,880
more fine grained. A lot of
people we're using the first part, and

275
00:18:37,960 --> 00:18:40,480
we're going to be like, oh, actually that direction we thought we were

276
00:18:40,519 --> 00:18:42,880
going to take it in, We're
going to take it over the webstead Yeah,

277
00:18:44,200 --> 00:18:47,920
or between three possible things we could
do with it next we'll find out

278
00:18:47,920 --> 00:18:51,319
which one is the most important based
on the scenario. So the feature we

279
00:18:51,359 --> 00:18:52,720
did, that's kind of the poster
show that was like C sharp nine,

280
00:18:52,799 --> 00:18:57,480
we started doing records and then continue
doing records in C sharp ten, Yeah,

281
00:18:57,480 --> 00:19:00,680
and then continue doing records and C
sharp them. But really it was

282
00:19:00,759 --> 00:19:03,000
kind of a you know, when
we first did it, it was a

283
00:19:03,079 --> 00:19:07,599
question of like what did we need
to do. What's the goal to make

284
00:19:07,599 --> 00:19:11,200
sure that our future selves were equipped
in order to do the next things,

285
00:19:11,359 --> 00:19:14,839
whatever those might be, depending on
what people really needed next. And you

286
00:19:14,880 --> 00:19:17,920
said that there were features that you
may have started, like in C sharp

287
00:19:18,039 --> 00:19:21,839
nine that won't even come out until
now. How many how many of those

288
00:19:21,960 --> 00:19:25,640
are there that took four or five
years to Yeah, So that's to the

289
00:19:25,720 --> 00:19:30,880
other part of Richard's question is that
we we try very hard not to limit

290
00:19:30,960 --> 00:19:37,960
ourselves to bite sized features, because
we do need to do big revolutionary things

291
00:19:38,039 --> 00:19:41,759
in the language occasionally. Does that
mean you pushed dark code out, like

292
00:19:41,920 --> 00:19:47,279
code that's now in the system but
generally not available to the user. As

293
00:19:47,400 --> 00:19:49,519
if you're going that long on code, or does it stay in a brand,

294
00:19:49,599 --> 00:19:52,880
you can go for it later,
it can go for a don release.

295
00:19:52,920 --> 00:19:56,960
It kind of depends, right.
A good example is the generic math

296
00:19:56,240 --> 00:20:00,000
stuff that shipped a couple of releases
ago now, right, but that actually

297
00:20:00,759 --> 00:20:06,519
shipped it is an experimental preview and
like an SDK before that, because we

298
00:20:06,640 --> 00:20:10,240
needed a couple of releases to deal
to get the run time support to do

299
00:20:10,400 --> 00:20:14,160
things like static abstract members on interfaces, which we did, which is a

300
00:20:14,200 --> 00:20:17,200
whole thing. Is that just time
to interact with the other teams, It's

301
00:20:17,480 --> 00:20:19,480
it's it's it's bake right as well, to see if it's like okay,

302
00:20:19,599 --> 00:20:23,559
is this hanging together? Does this
actually meet the scenario? Let's get let's

303
00:20:23,559 --> 00:20:26,079
get some people that are you know, kind of kind of front runners that

304
00:20:26,160 --> 00:20:32,000
want to really play with this to
try it out, and but we still

305
00:20:32,039 --> 00:20:33,319
need to get it out there for
them, and so we've shipped it as

306
00:20:33,599 --> 00:20:37,200
with an experimental flag, right.
Yeah. I mean, because what you

307
00:20:37,279 --> 00:20:41,000
were describing with records is that you
kept adding features to records over time that

308
00:20:41,119 --> 00:20:45,680
was more like it was always But
it's interesting to say, like you knew

309
00:20:45,680 --> 00:20:48,200
where you wanted to go, or
you thought you knew where you wanted to

310
00:20:48,279 --> 00:20:52,240
go, and then you decomposed it
of the steps you could fit into the

311
00:20:52,319 --> 00:20:56,839
interval, and then at each interval
the customer are pressed against it and maybe

312
00:20:56,960 --> 00:20:59,599
changed it for you. Yes,
well, Rosalind was like that wasn't It

313
00:21:00,079 --> 00:21:03,920
took a few years to come in, so it was. And another example,

314
00:21:03,319 --> 00:21:07,640
maybe the most extreme example in the
language is pattern matching, which came

315
00:21:07,720 --> 00:21:14,160
in and C sharp seven. Yeah, and it was the most basic of

316
00:21:14,240 --> 00:21:17,759
things when you look back on it, but it introduced the notion of patterns,

317
00:21:18,240 --> 00:21:22,880
and it unified switch statements and is
expressions around this notion of patterns.

318
00:21:22,920 --> 00:21:27,279
It had like that core. Oh
here's we're turning a page. Here's a

319
00:21:27,319 --> 00:21:30,839
whole new thing. But the new
thing itself was kind of small. It

320
00:21:30,880 --> 00:21:34,119
could do type tests and compared to
constants, that was pretty much it pretty

321
00:21:34,160 --> 00:21:40,000
much it. Yeah, But then
from there we knew we had thought ahead

322
00:21:40,119 --> 00:21:42,559
enough that we knew we had syntactic
headroom to keep adding, and then it

323
00:21:42,680 --> 00:21:47,160
was a question of rinse and repeat
for release after release after release, we

324
00:21:47,200 --> 00:21:52,160
had various forms of recursive patterns and
list patterns and conditional patterns and all those

325
00:21:52,200 --> 00:21:56,640
things that wasn't even the right order
ranges and everything. Yeah, and it

326
00:21:56,839 --> 00:22:03,920
just sometimes doing it that way really
helps, just helps the feature get right.

327
00:22:06,000 --> 00:22:08,839
You need to make sure that you
think ahead enough that you haven't just

328
00:22:08,960 --> 00:22:12,079
designed yourself into a dead end,
right that the direction you want to go

329
00:22:12,240 --> 00:22:15,359
now you can't go there right,
right? But also, I mean how

330
00:22:15,440 --> 00:22:19,920
much of the feedback influence you along
that path too. It certainly it influenced

331
00:22:21,000 --> 00:22:25,160
us both in terms of the couple
of things we had thought about, which

332
00:22:25,279 --> 00:22:27,119
is the next important thing we should
get to in terms of priority. I

333
00:22:27,559 --> 00:22:30,759
think you're doing it right if you
push it out there and the thing they

334
00:22:30,839 --> 00:22:33,119
ask for is the next thing you
were planning to build. Yeah, yeah,

335
00:22:33,160 --> 00:22:37,079
yeah. And then sometimes that's the
thing we know that like, Okay,

336
00:22:37,200 --> 00:22:38,279
this is the first bug that's going
to get filed in this future,

337
00:22:38,640 --> 00:22:42,240
right, we know that we know
it's missing. And sometimes it's it's you

338
00:22:42,319 --> 00:22:48,400
know, getting that signal from the
customer and also coupling that with whatever resources

339
00:22:48,440 --> 00:22:52,000
there are there's and so sometimes like, well we're not getting to that yet

340
00:22:52,119 --> 00:22:55,880
because the person's over here working on
those, they're clearly the good person to

341
00:22:55,960 --> 00:22:57,119
go do that. Yeah. I
think that's the thing that a lot of

342
00:22:57,160 --> 00:23:00,839
folks struggle with, this is the
reality that programmers aren't widgets. You can't

343
00:23:00,920 --> 00:23:04,920
just plug them into any old thing. That there's definitely folks with minds well

344
00:23:06,000 --> 00:23:08,920
suited to particular problem spaces, like
this feature will be better if we wait

345
00:23:10,039 --> 00:23:11,799
for that person to work on it. Yeah, they're passions to people.

346
00:23:12,359 --> 00:23:15,680
People get passionate about. Like when
we did records, the last feature to

347
00:23:15,759 --> 00:23:21,160
go in I think was all the
required members for properties, and that turned

348
00:23:21,160 --> 00:23:22,519
out to be somebody who's just like, I am super passionate about this.

349
00:23:22,960 --> 00:23:26,759
It is I feel that it's broken
until we do this, And so they

350
00:23:26,839 --> 00:23:29,599
went after it and it happened,
yeah, and made it more Robust's Yeah,

351
00:23:29,599 --> 00:23:33,000
accordingly, how much is discoverability a
feature? Because I mean, you

352
00:23:33,039 --> 00:23:37,400
guys are always adding things. What
you can do with link now could be

353
00:23:37,480 --> 00:23:40,319
a book. This thick. I
mean, I got a foot between my

354
00:23:40,400 --> 00:23:45,759
hands and I guess what I'm asking
is do you get customers that say,

355
00:23:47,119 --> 00:23:48,880
you know, it would be really
great if ce Shark could do this,

356
00:23:48,119 --> 00:23:51,599
And the answer is oh yeah,
just do this sea shark can do that?

357
00:23:51,839 --> 00:23:56,519
Do that? Yeah, that happens. And I mean there's discoverability just

358
00:23:56,599 --> 00:24:02,519
in terms of sort of documentary how
do I find out? But then there's

359
00:24:02,519 --> 00:24:07,200
also then there's also literally like the
discoverability feature of pressing dot and seeing what

360
00:24:07,359 --> 00:24:12,559
you get up, like a feature
we're going to be showing at the at

361
00:24:12,960 --> 00:24:22,519
built here is about that as about
actually adding discoverability to that of APIs as

362
00:24:23,039 --> 00:24:26,440
you know, as part of your
programming experience. But there is the there

363
00:24:26,519 --> 00:24:30,039
is a question about we talked about
before with AI, and the same goes

364
00:24:30,079 --> 00:24:36,200
for things like stacko, like sites
that give you answers to how do I

365
00:24:36,319 --> 00:24:40,160
do this? They're lagging, right, They're like right, they'll give you

366
00:24:41,279 --> 00:24:48,680
yesterday's best answer if you search,
And so there's there's always a challenge of

367
00:24:48,839 --> 00:24:52,079
how do we help people realize what
is the best thing you can do today?

368
00:24:52,440 --> 00:24:56,119
Right? Yeah? And to that
end, what it really means is

369
00:24:56,160 --> 00:25:02,240
the different ways that you can construct
let's say a link statement. You know,

370
00:25:02,480 --> 00:25:07,960
if you do something like with from
you know, X, sequels parentheses

371
00:25:07,039 --> 00:25:12,279
from blah blah blah in or if
you just do list dot were like those

372
00:25:12,319 --> 00:25:17,160
are two different ways to do sart
of the same thing with two different syntax

373
00:25:17,200 --> 00:25:19,559
trees. And so if you know
how to do those and you're good on

374
00:25:19,599 --> 00:25:23,720
the fundamentals, then when you press
the dot, then you'll you'll find the

375
00:25:23,799 --> 00:25:26,960
new stuff. Well, I think, and you bring up an interesting example

376
00:25:27,079 --> 00:25:33,799
because the success of c sharp three
to zeros extension methods, it's kind of

377
00:25:33,839 --> 00:25:37,000
been through the roof over the last
ten releases, and and you know,

378
00:25:37,440 --> 00:25:41,519
it's much easier to press dot and
discover the next thing I need to do

379
00:25:41,599 --> 00:25:44,880
with those extension methods then to go, well, how did I do a

380
00:25:44,920 --> 00:25:48,440
group by I don't remember what the
syntax for that is in query expressions,

381
00:25:48,480 --> 00:25:52,400
but I can sort it out when
I press dot. And so that's actually

382
00:25:52,480 --> 00:25:55,480
one of the main features we're looking
at for c sharp thirteen that we're going

383
00:25:55,559 --> 00:25:59,960
to show, which is you know, extensions that taking more than extension meta

384
00:26:00,000 --> 00:26:03,759
methods, but you know, going
further extension properties, being able to you

385
00:26:03,839 --> 00:26:07,480
know, add extension static methods for
a type you can I think you got

386
00:26:07,519 --> 00:26:12,440
the slogan for c sharp thirteen just
pressed dot, just pressed That's not bad

387
00:26:12,440 --> 00:26:15,640
at all. But we've been talking
about that is like, you know,

388
00:26:15,720 --> 00:26:19,519
the discovernment. Yeah, that's fine, that's fine. I know what to

389
00:26:19,559 --> 00:26:27,359
send you back. Yeah, okay, Yeah, dear idiot, I always

390
00:26:27,400 --> 00:26:36,880
think of guitar strings or something.
It's funny how much intelligence counts, like

391
00:26:37,119 --> 00:26:42,640
just it's you. You try turning
that off and work especially. Yeah,

392
00:26:44,400 --> 00:26:48,400
I mean it's the power of you
know, the popularity of type script is

393
00:26:48,680 --> 00:26:52,920
really? Is that? Yeah?
You know? Yeah, We've been using

394
00:26:53,200 --> 00:26:59,640
very preliminary bits for our presentation here
because what we are showing only ships in

395
00:26:59,720 --> 00:27:02,359
another six months from now, right, So this is a rough version.

396
00:27:02,480 --> 00:27:10,079
So occasionally, you know, thirteen
thirteen. Occasionally the idea just goes blank

397
00:27:10,160 --> 00:27:15,480
on us with these bits and you're
back in the eighties. Yeah. Wow,

398
00:27:15,720 --> 00:27:18,400
this is hard. I have to
tie the whole name of this member

399
00:27:18,519 --> 00:27:22,440
so many clicks, especially with the
naming conventions we have. They really made

400
00:27:22,519 --> 00:27:26,119
for completion, you know, yeah, or those times to be completed,

401
00:27:26,240 --> 00:27:30,880
those awkward times when you write a
comment that you think copal's going to pick

402
00:27:30,960 --> 00:27:38,599
up on your presenter and nothing happens, and you're like hello, and if

403
00:27:38,640 --> 00:27:41,519
they could speak, it would say
shut up. I'm thinking I'm looking at

404
00:27:41,559 --> 00:27:45,519
the c sharp blank getub in the
milestones category and for it's like you know,

405
00:27:45,680 --> 00:27:48,960
versions for ten and eleven and twelve
and so forth, and needs more

406
00:27:49,000 --> 00:27:53,240
work and backlog and working said and
any time, and my favorite of all,

407
00:27:53,519 --> 00:28:00,799
likely never. Yeah, it's very
polite, don't get likely. You

408
00:28:00,839 --> 00:28:04,720
could have just said no, or
how about the standard Microsoft answer? Why

409
00:28:04,799 --> 00:28:07,960
would you ever want to do that? Yeah, but you know it's not

410
00:28:08,279 --> 00:28:11,960
it's actually not just about politeness.
It's a little bit about mindset as well,

411
00:28:12,079 --> 00:28:15,400
Like you want to keep an open
mind. It's like, we can't

412
00:28:15,480 --> 00:28:18,960
imagine that right now. Yeah,
but who knows, like maybe in two

413
00:28:19,079 --> 00:28:23,799
or three years, so ten that
that's actually just maybe this was actually an

414
00:28:23,839 --> 00:28:29,759
insight of sometime in the future,
we're going to need this this as opposed

415
00:28:29,759 --> 00:28:32,960
to that's just a crazy idea and
we're going to likely never. Yeah,

416
00:28:33,240 --> 00:28:36,279
so we and I'm only half joking, like we really do try to.

417
00:28:36,519 --> 00:28:38,240
Yeah, you got to stay open. Yes, it's the only way to

418
00:28:40,359 --> 00:28:44,279
thrive long term, right, Like
is that maybe it will come back around,

419
00:28:44,319 --> 00:28:48,279
it's not. It's a crazy idea
only today right at this point in

420
00:28:48,400 --> 00:28:51,400
time, likely not likely never.
And with that, gentleman, I had

421
00:28:51,440 --> 00:28:57,799
an interrupt for one moment for this
very important message and we're back. It's

422
00:28:57,839 --> 00:29:00,839
not that rocks, I'm mature.
Well that's called Franklin. Yo. We're

423
00:29:00,920 --> 00:29:06,240
here in a strange room called the
Elliott Bay Room at the conventions that are

424
00:29:06,279 --> 00:29:10,519
in Seattle for build sitting with our
friends Mats and Dustin, talking a bit

425
00:29:10,559 --> 00:29:15,559
about how c sharp gets built.
Obviously new version coming and the very open

426
00:29:15,720 --> 00:29:19,759
process of you know, it's you
want to know what's coming in c sharp,

427
00:29:19,960 --> 00:29:23,640
it's in the GitHub repository. You
can pick up those bits and compile

428
00:29:23,720 --> 00:29:26,839
them and play with your own version. If you hate yourself, you know,

429
00:29:27,000 --> 00:29:30,400
like they have those choice you can
very least read. Look, you

430
00:29:30,480 --> 00:29:34,400
don't even have to hate yourself that
much. You can go use a tool

431
00:29:34,440 --> 00:29:40,519
that's not our tool. But there's
there's a website called sharp lab todo where

432
00:29:40,519 --> 00:29:45,240
you can go and play with the
different branches. Yeah yeah, literally built

433
00:29:45,279 --> 00:29:48,599
this thing and it's fantastic. It'll
yeah yeah. So you literally can pick

434
00:29:48,640 --> 00:29:52,119
a version of a beta version or
alpha version of branch out of the rodul

435
00:29:52,720 --> 00:29:57,240
and just go for it. The
feature branch that is building let's say params

436
00:29:57,279 --> 00:30:00,640
collections like that feature brand. You
can just go and play with that and

437
00:30:00,759 --> 00:30:03,160
see what the feature looks like,
so this is built by the community.

438
00:30:03,200 --> 00:30:06,960
Do you use it? We use
it all the time, no kidding.

439
00:30:07,039 --> 00:30:11,119
Yeah, that's cool, especially because
the code that you write in there becomes

440
00:30:11,160 --> 00:30:14,400
part of the r L, so
you can just super easily just keep sending

441
00:30:15,640 --> 00:30:18,680
share it around, share it.
Watch this. This is not what we

442
00:30:18,799 --> 00:30:21,279
planned. We do it all the
time in the in the in the C

443
00:30:21,400 --> 00:30:23,720
Sharp Language design meeting was like,
how did what is that? What does

444
00:30:23,799 --> 00:30:26,480
that? Nobody remembers, right,
it's like, oh, just go somebody

445
00:30:26,480 --> 00:30:29,720
writes it up in sharp labs.
So here's what it does. Yeah,

446
00:30:29,960 --> 00:30:32,680
somebody's eyes glazes over for a moment, you know, they're they're typing it

447
00:30:32,799 --> 00:30:36,240
up and sharp lab. Right,
see what use we actually do with that?

448
00:30:36,440 --> 00:30:41,119
The sharp lab guys just got some
serious free advertising the morning We love

449
00:30:41,160 --> 00:30:42,440
you all, Yeah, from Microsoft. I don't think there's any money in

450
00:30:42,519 --> 00:30:47,200
it for them, but they got
the glory though. Definitely created a service.

451
00:30:47,319 --> 00:30:49,920
It was a wonderful thing, makes
a difference through Yeah, Andre Shecklin,

452
00:30:52,000 --> 00:30:56,200
mind, yeah, sharp on GitHub. It's it's beautiful. It looks

453
00:30:56,279 --> 00:30:56,960
right like soon did I see that? It's like, oh, I know

454
00:30:57,000 --> 00:31:00,960
what to do with that? Off
you go you know, you can take

455
00:31:00,000 --> 00:31:03,759
her away, but yeah, you
can pick the version. That's amazing.

456
00:31:03,920 --> 00:31:07,359
Here's Richard Campbell playing with it live
on radio. So that's right. What

457
00:31:07,480 --> 00:31:11,720
could what could be better? Go
wrong? Yeah? So as long as

458
00:31:11,799 --> 00:31:17,160
we're looking at things, I'm just
the podcasting listeners need to know that.

459
00:31:17,400 --> 00:31:19,519
I look to my right and I
see the Paramount Theater. Yeah, and

460
00:31:19,680 --> 00:31:26,079
like we're two sides of this room
are glass looking out at the wonder that

461
00:31:26,400 --> 00:31:30,960
is the gray weather of Sattle.
Yes, because they put the audio podcast

462
00:31:32,079 --> 00:31:37,920
in the room of the best Few. Yeah, Paramount looks great. Great,

463
00:31:37,960 --> 00:31:38,920
and one of my favorite shows.
Wait wait, don't tell me is

464
00:31:38,960 --> 00:31:44,359
coming there. Well, I know
it's a very good whiskey shop around the

465
00:31:44,400 --> 00:31:45,920
corner too. You know, we
could just blow off the rest of the

466
00:31:47,039 --> 00:31:49,640
Thursday and just you know, so
I could go wrong. Yeah, let's

467
00:31:49,680 --> 00:31:52,960
just walk out on their responsibilities.
Would be the first time. Oh wait,

468
00:31:53,359 --> 00:31:57,279
no, that's not true. I
probably would. We're pretty good.

469
00:31:57,480 --> 00:32:00,759
Did you get it? Are you
getting pushed back for the yearly cadence?

470
00:32:00,920 --> 00:32:06,039
Like? And then get we get
into the long term support versus the short

471
00:32:06,160 --> 00:32:08,880
term? Like, I know,
I know why we're doing this. I

472
00:32:09,079 --> 00:32:15,640
believe in the idea, but I
feel for the working developer whose I don't

473
00:32:15,680 --> 00:32:19,279
think culture is in a place where
it's like, we just use the new

474
00:32:19,359 --> 00:32:23,920
versions. We keep using new versions. Corporate Life says wants more stability than

475
00:32:23,960 --> 00:32:29,079
that. They're really not inclined to
change unless we really make them, and

476
00:32:29,200 --> 00:32:35,559
this seems somewhat arbiture. Three years
from now you need to switch. Well

477
00:32:35,680 --> 00:32:38,960
we I'm going to just I'm going
to totally do a dodge here. I

478
00:32:39,119 --> 00:32:45,240
appreciate that the dot net has this
release cadence and policy with the LTS and

479
00:32:45,400 --> 00:32:50,039
STS. From a language point of
view, that doesn't really matter. We

480
00:32:50,759 --> 00:32:54,680
ship the same roughly the same volume
of features, and you don't take features

481
00:32:54,680 --> 00:32:58,759
away. We don't take features away. It doesn't matter to us if it's

482
00:32:58,759 --> 00:33:02,759
an LTS TS release. It matters
to the support policy, which is other

483
00:33:02,839 --> 00:33:07,119
people than us generally have to kind
of live up to the support policy.

484
00:33:07,279 --> 00:33:13,200
Is there a minimum version of dot
net that thirteen will run on. Yes,

485
00:33:13,279 --> 00:33:19,000
and no, so's it's supported only
on the latest version. Yes.

486
00:33:19,759 --> 00:33:22,200
However, well, and the big
schism was the break for four point eight

487
00:33:22,240 --> 00:33:27,680
where you stopped him winning. You
see sharp features, well the old framework,

488
00:33:27,839 --> 00:33:30,599
Well, yeah, well again,
yes and no. So here's the

489
00:33:30,680 --> 00:33:36,160
story. There are new versions of
the runtime. It will have new APIs

490
00:33:36,200 --> 00:33:39,319
that the language may depend on for
certain features. It will have new runtime

491
00:33:39,400 --> 00:33:45,440
features in i L that the language
may depend on for some features. And

492
00:33:45,680 --> 00:33:49,599
if you try to target them older, well those features won't work, just

493
00:33:49,680 --> 00:33:53,079
break. But as long as you
then you get a nice message saying this

494
00:33:53,160 --> 00:33:57,720
is not supported on the runtime you're
targeting, and that's it. I would

495
00:33:57,720 --> 00:33:59,960
have been happy with an object now
found because that's so much fun to shay.

496
00:34:00,680 --> 00:34:05,640
Okay, if you know this is
we are so friendly now sorry,

497
00:34:06,079 --> 00:34:12,199
yeah, sorry, we so we
We don't really, we don't really try

498
00:34:12,239 --> 00:34:15,320
to trip you up there. You're
not just stopping anybody when you don't if

499
00:34:15,360 --> 00:34:20,559
you're in visual studio, I don't
think that that combination of like pull down

500
00:34:20,639 --> 00:34:22,960
menu shows up for you to mix
and match like that, because because you're

501
00:34:23,079 --> 00:34:27,400
entering on supported territories and we're like
you have to. But if you just

502
00:34:27,480 --> 00:34:30,239
go and edit your product file and
say I want to do this, and

503
00:34:30,400 --> 00:34:32,519
we're like fine, we'll tell you
when you catch you and we'll just generate

504
00:34:32,559 --> 00:34:35,880
the errors when the errors come.
And if you know what you're doing you

505
00:34:36,000 --> 00:34:37,440
can, you can get pretty far. I mean a lot of us,

506
00:34:37,920 --> 00:34:42,000
you know, are working on Roslin. We're working on projects like Razor.

507
00:34:42,079 --> 00:34:45,239
These are tooling projects, or visual
Studio, which still runs on dot net

508
00:34:45,280 --> 00:34:49,840
framework. And so if we want
to use new language features in our active

509
00:34:49,880 --> 00:34:52,880
development, then we need to have
some ways of kind of doing this,

510
00:34:52,960 --> 00:34:55,519
and you kind of have to like
you know, you wind up kind of

511
00:34:55,599 --> 00:35:00,400
like I think with a we've talked
about sometimes like a decoder ring sort of

512
00:35:00,480 --> 00:35:02,519
version half big version of the language
where it's like, well, I don't

513
00:35:02,559 --> 00:35:08,280
really have default interface methods from c
sharp eight because that requires a change in

514
00:35:08,320 --> 00:35:13,760
the run time to support that.
But I can get index system dot index

515
00:35:13,840 --> 00:35:16,360
and range, I can. I
can write those types myself, and c

516
00:35:16,519 --> 00:35:22,360
Sharp like the compiler generally goes along
by checking these API patterns and if they're

517
00:35:22,400 --> 00:35:24,719
there, yeah, they'll support it. Yeah that's crazy. So we do

518
00:35:24,840 --> 00:35:30,440
it. I mean, if a
feature is better implemented within your runtime feature,

519
00:35:30,960 --> 00:35:34,000
we will do that. Yeah,
we don't always you always target the

520
00:35:34,039 --> 00:35:37,440
best. We always do it.
We can if something is like that just

521
00:35:37,519 --> 00:35:39,360
has to happen in the runtime or
else it doesn't, we can't make it

522
00:35:39,480 --> 00:35:43,400
work. Or it will be very
inefficient or whatever, We'll do it and

523
00:35:43,480 --> 00:35:45,960
then sorry, that feature doesn't work
down level. But if it does work

524
00:35:46,000 --> 00:35:50,519
down level, who are we to
say and you can't do that? Can

525
00:35:50,559 --> 00:35:52,360
we stop you from doing We say
you're in a non supportive scenario. If

526
00:35:52,400 --> 00:35:55,360
you send us bugs based in this
will tell tell you stop that that is

527
00:35:57,119 --> 00:36:00,239
that's unsupported. Don't do that.
There's one thing that I forget, you

528
00:36:00,320 --> 00:36:04,679
know, sitting in my office and
building code all in the latest bits all

529
00:36:04,760 --> 00:36:07,039
the time, is that, you
know, people want to do weird things

530
00:36:07,559 --> 00:36:12,920
right because they are weird. And
and so I was. And here's a

531
00:36:12,960 --> 00:36:15,920
great example. I was teaching a
workshop at dev sum last week in Stockholm

532
00:36:16,400 --> 00:36:22,559
on Blazer and I'm talking about Blazer
web assembly where there's a hosted version on

533
00:36:22,639 --> 00:36:24,679
the server side and there's this on
the on the other side. And somebody

534
00:36:24,719 --> 00:36:30,480
said, could we run dot net
eight on the server and dot net seven

535
00:36:30,599 --> 00:36:34,280
on the client? And my immediate
reaction was like, you stupid idiots,

536
00:36:34,320 --> 00:36:38,639
why would you do that? Right? And then I'm talking to Steve Sanderson

537
00:36:38,760 --> 00:36:43,159
like down at the bar, and
he goes, why not, Yeah,

538
00:36:43,440 --> 00:36:46,440
yeah, he goes, why wouldn't
you Why stop that? Why yeah,

539
00:36:46,559 --> 00:36:52,159
why stop the Why tell that person
no that? Why prescribe right right exactly?

540
00:36:52,280 --> 00:36:55,800
Because maybe those are the constraints that
they're using. But the fact is,

541
00:36:57,039 --> 00:36:59,840
yeah, that'll work just fine.
I mean, and sometimes it's it's

542
00:37:00,000 --> 00:37:02,440
some of our you know, largest
customers, some of our biggest dott neet

543
00:37:02,480 --> 00:37:07,039
lovers that have to stay back yeah
a while, right, they can't go

544
00:37:07,239 --> 00:37:10,159
forging ahead, They're not nimble enough
or whatever. So it's yeah, in

545
00:37:10,239 --> 00:37:15,079
those cases sometimes you know, and
guess what they can squeak by done.

546
00:37:15,119 --> 00:37:16,920
That's pretty good. It lasts for
a long time. Yeah, yeah,

547
00:37:17,199 --> 00:37:22,480
s's it's legit. Is there an
end to this? Like how many language

548
00:37:22,480 --> 00:37:24,239
features do we need? What that's
they're gonna say, ah, we're done.

549
00:37:24,320 --> 00:37:28,239
Yeah, yeah, no, you
gotta romantic to fifteen and then you're

550
00:37:28,239 --> 00:37:30,320
gonna retire. We're going to move
to D now. I forget sharp.

551
00:37:30,440 --> 00:37:37,000
I remember when I was new at
Microsoft, one of the first PDC's I

552
00:37:37,079 --> 00:37:39,840
went to when andrews. Heilsberg was
still in charge of Sea sharp right,

553
00:37:40,039 --> 00:37:43,920
and I got to tag along with
him to an interview like this. It

554
00:37:44,000 --> 00:37:45,800
was probably like two thousand and six, right, something like that, And

555
00:37:46,320 --> 00:37:49,320
I don't think it was you,
but it could have been. Yeah,

556
00:37:49,360 --> 00:37:52,960
probably, and somebody. We were
there and somebody they asked the question like,

557
00:37:53,559 --> 00:37:57,400
can you keep at this? And
Anders was like, hmm, not

558
00:37:57,559 --> 00:38:00,480
forever. I mean we probably have
one or two good versions left in US

559
00:38:00,639 --> 00:38:07,079
and we're talking like version three.
Yeah, And it just turned out that,

560
00:38:07,559 --> 00:38:12,840
hey, this isn't so bad.
You know, you imagine this kitchen

561
00:38:13,000 --> 00:38:17,920
sink train wreck situation if you keep
adding stuff. But somehow, somehow we've

562
00:38:19,719 --> 00:38:23,880
managed it. Seems we managed it
pretty well to keep adding things to the

563
00:38:24,000 --> 00:38:30,400
language that somehow makes life simpler for
development, right, more complicated. I

564
00:38:30,480 --> 00:38:34,800
think we we we focus a lot
in this release. We've been talking about

565
00:38:34,840 --> 00:38:37,760
a lot, right, We focus
a lot on you know, adding features

566
00:38:38,039 --> 00:38:44,639
or expanding features that you already use, taking out roadblocks that you would hit

567
00:38:44,760 --> 00:38:50,280
with an existing feature, and really
kind of making it so that because it's

568
00:38:50,400 --> 00:38:55,800
true that languages do have like a
capacity right for like big ideas, right,

569
00:38:55,920 --> 00:39:00,639
and you only get so many big
ideas, and so we spend a

570
00:39:00,679 --> 00:39:07,199
lot of time investing in features that
maybe aren't giant ideas, right, but

571
00:39:07,400 --> 00:39:12,679
they are like they expand your expressiveness
how you can work with existing API.

572
00:39:12,840 --> 00:39:15,599
So often we get things that are
like requests from you know, Stephen Tobe

573
00:39:15,639 --> 00:39:17,760
and his team, you know,
on the fromt the library's team saying we're

574
00:39:17,760 --> 00:39:22,400
building APIs like this or Fowler David
Fowler, like the minimal API stuff with

575
00:39:22,519 --> 00:39:27,719
Sofia right where it was like,
we need to write code like this,

576
00:39:28,039 --> 00:39:31,559
we need this kind of expressiveness out
of C sharp, and it causes us

577
00:39:31,599 --> 00:39:35,199
to kind of just take a look
at the features we already haven't say well,

578
00:39:35,239 --> 00:39:38,119
how can we make those better?
And they sound like big features,

579
00:39:38,159 --> 00:39:42,519
but they end up being kind of
you know, adjustments to to things that

580
00:39:42,679 --> 00:39:45,039
just make things kind of more satisfying
to use. Do you guys usually start

581
00:39:45,119 --> 00:39:52,719
with extension methods in terms of experimenting
with new features. No, no,

582
00:39:52,960 --> 00:39:55,920
think so. I don't think so
No, I in what way do you

583
00:39:57,000 --> 00:39:58,920
mean? Well? Okay, so, like let's say you want to add

584
00:39:59,000 --> 00:40:01,840
something new to string, I mean
canonical example, right, so you do

585
00:40:01,920 --> 00:40:07,199
a string extension library and just add
your there. Yes, I think that,

586
00:40:07,639 --> 00:40:12,679
but that's more like the library people. And certainly when people are prototyping

587
00:40:13,159 --> 00:40:16,000
should I put this new member or
these new members on an existing type,

588
00:40:16,039 --> 00:40:21,119
they will start out with extension methods
if they happen to be instance methods or

589
00:40:21,400 --> 00:40:23,920
if not, well, up until
C sharp thirteen they wouldn't have been able

590
00:40:23,960 --> 00:40:27,800
to. But now, of course
they can just be able to. Soon

591
00:40:27,960 --> 00:40:30,920
do tell. I mean, they'll
be able to add extension properties or extension

592
00:40:30,960 --> 00:40:36,519
index ers, static this or that, or operators and that's new and thirteen

593
00:40:37,639 --> 00:40:39,920
extension everything. Yeah, somebody will
come in because this is one of those

594
00:40:39,960 --> 00:40:44,039
down payments, right, Well,
there'll be extension, some new things,

595
00:40:44,079 --> 00:40:47,360
and then we'll probably keep adding stension, more things and extension all like that

596
00:40:47,519 --> 00:40:52,480
idea. Yeah, well, I
mean, and again we go back to

597
00:40:52,599 --> 00:40:58,480
a show the pivot to Core and
see I think with C sharp six,

598
00:40:58,519 --> 00:41:01,639
where if they said to you,
this feels like the Cambrian explosion, Like

599
00:41:01,760 --> 00:41:07,880
you've now setting yourselves up for all
these extension approaches to allow many people,

600
00:41:07,079 --> 00:41:10,920
including folks inside of Microsoft, to
extend the language the way they want to

601
00:41:12,320 --> 00:41:16,320
and see how that resonates and decide
what becomes more than an extension. Yeah,

602
00:41:16,360 --> 00:41:20,480
I think I asked you this last
time we talked. But are there

603
00:41:20,519 --> 00:41:25,239
any features that, after implementing,
you regretted adding because they've been abused or

604
00:41:25,400 --> 00:41:30,880
used wrongly? Hmmm I mean,
I know there's some that we added and

605
00:41:30,039 --> 00:41:36,840
then decided not to keep as good. That was during the cycle that we're

606
00:41:36,840 --> 00:41:40,159
out there in preview. That's that
leaps to mind, and that's a good

607
00:41:40,199 --> 00:41:44,079
thing. You put it out there. You watch what happened with you go,

608
00:41:44,760 --> 00:41:46,719
that's not right. But there are
dangerous features like new you know,

609
00:41:46,880 --> 00:41:52,920
to create new versions of methods that
are I guess it was shadows and VB

610
00:41:52,159 --> 00:41:55,159
right, where you have one class
and then in a subclass and you can

611
00:41:55,280 --> 00:42:00,679
just take over that whatever that method
is or that property handler. I've seen

612
00:42:00,719 --> 00:42:04,639
that abused. Yeah, and then
you lose track and lose control of your

613
00:42:05,639 --> 00:42:09,159
of your code. There's a difference
between a feature can be abused and then

614
00:42:09,400 --> 00:42:13,480
I wish we hadn't done it.
Okay, Yeah, that's a good point.

615
00:42:13,599 --> 00:42:15,559
I mean, they might be that
their feature by and large is a

616
00:42:15,599 --> 00:42:19,440
great feature and adding a lot of
value. And yes, here and there

617
00:42:19,480 --> 00:42:23,000
people also abusing Harry carrying kit for
twelve year olds or for example. But

618
00:42:23,119 --> 00:42:27,719
any powerful language has that shoot your
toe off effect, Like that's sort of

619
00:42:27,760 --> 00:42:30,280
a measure. It's not a real
language, and you can't blow your toe

620
00:42:30,320 --> 00:42:31,920
off, all right, So let's
forget about bad. Yes, there's like

621
00:42:32,000 --> 00:42:37,440
the language features that I wouldn't say
I completely regret them, but maybe they

622
00:42:37,480 --> 00:42:40,920
didn't have the impact they thought they'd
bigger. And because now you have you

623
00:42:42,079 --> 00:42:46,119
have a measure that we don't know
of, which was effort. I imagine

624
00:42:46,239 --> 00:42:51,960
you worked really hard on certain features, absolutely, and the customer doesn't do

625
00:42:52,159 --> 00:42:54,199
what you thought. Take a feature
like dynamic, right, we can talk

626
00:42:54,239 --> 00:42:59,639
about dynamic. Sure. It was
a massive effort, and it was part

627
00:42:59,679 --> 00:43:02,960
of a it was part of a
future that never really fully came to,

628
00:43:05,760 --> 00:43:10,039
in which there was Python and Ruby
running on dot net and it and also

629
00:43:10,320 --> 00:43:14,880
in which people were using comments were
up much more than they ended up doing.

630
00:43:15,960 --> 00:43:22,320
And so all of this came together
into this beautiful feature that happens to

631
00:43:22,440 --> 00:43:30,840
be also you know, a big
performance bottleneg and a big tax on us

632
00:43:30,920 --> 00:43:36,440
forever more and so as abercoll,
it generated lots of bio. Yeah,

633
00:43:36,960 --> 00:43:40,639
and it became it became a it
became a hindrance for other directions we wanted

634
00:43:40,639 --> 00:43:45,199
to go. And when dot Native
was happening, it became a problem like

635
00:43:45,239 --> 00:43:49,840
how do we compile US native code? Because yeah, because it turns out

636
00:43:49,880 --> 00:43:53,960
that it's the impact it had was
Newton Soft Jason people people used it for

637
00:43:54,079 --> 00:43:59,199
Jason and uh, and so then
it wound up in a lot of apps.

638
00:43:59,760 --> 00:44:01,440
But in this you know, then
it'd liked me. It harder to

639
00:44:01,679 --> 00:44:05,320
compile than the native code and all
that sort, and you can't take it

640
00:44:05,400 --> 00:44:07,360
out. Yeah, no, but
correct. But I also want to point

641
00:44:07,400 --> 00:44:12,679
out, like, even even as
it has those drawbacks, and even as

642
00:44:13,039 --> 00:44:15,320
things didn't go the way we imagine
when we to sign it. You know,

643
00:44:15,400 --> 00:44:19,360
sometimes you see code where people using
you just like, yeah, all

644
00:44:19,480 --> 00:44:21,599
right, all right, okay,
I see that, now that's cool,

645
00:44:21,880 --> 00:44:25,360
you know, so it yeah,
it would we have done it that same

646
00:44:25,400 --> 00:44:29,239
way if we had known, Yeah, how the world would have gone?

647
00:44:29,320 --> 00:44:32,480
Probably not. Yeah, but it's
but that's not to say that I fully

648
00:44:32,559 --> 00:44:36,119
regretted either. I thought it was
a beautiful to sign. It was also

649
00:44:36,239 --> 00:44:40,960
in between two largely successful features,
between Link and ACYNC, between those those

650
00:44:42,079 --> 00:44:45,000
versions of the language, so you
know, we can kind of the middle

651
00:44:45,039 --> 00:44:47,880
sibling in that. Yeah, exactly. I've always paid attention to Iron Python

652
00:44:49,559 --> 00:44:52,639
and Iron Ruby wasn't around for near
as long, but you know, we

653
00:44:52,719 --> 00:44:54,559
had John Lamb on it, and
yeah, look, both those languages are

654
00:44:54,760 --> 00:44:59,480
enjoyable. I write more Python,
I care to admit, because I do

655
00:44:59,639 --> 00:45:01,480
a lot data handling, Like it's
just a big chunk of my life.

656
00:45:01,599 --> 00:45:05,800
And by golly, Python's flipping good
at that. And get Hub likes to

657
00:45:05,840 --> 00:45:10,599
remind me once a year you wrote
more Python than your thought. But yeah,

658
00:45:10,719 --> 00:45:14,360
you know, I remember dabbling and
Ruby going this is very cool.

659
00:45:14,440 --> 00:45:16,480
I do not need this. It's
not a thing for me. But it's

660
00:45:16,519 --> 00:45:22,159
not just a dynamic ness I think. I mean, Python nails a few

661
00:45:22,199 --> 00:45:24,480
other things really well. One of
course is it's always had this alignment with

662
00:45:24,639 --> 00:45:30,039
the numbers community, which has grown
up to be scientific and then machine learning

663
00:45:30,119 --> 00:45:35,239
and then AI and like it.
It was really good at at exploiting that

664
00:45:35,400 --> 00:45:43,800
affinity to to popularity there being really
easy to use for people aren't professional developers

665
00:45:43,880 --> 00:45:49,360
necessarily. But then also some things
are just really neat, and people have

666
00:45:49,440 --> 00:45:52,719
done a lot of hard work inside
of Python to make some things remarkably easy.

667
00:45:53,000 --> 00:45:57,000
Yeah, and we've and we've definitely
stolen from there. Like if you

668
00:45:57,039 --> 00:46:00,880
look at if you look at ind
index and rain, it was like it

669
00:46:00,039 --> 00:46:05,039
was nailed. Should this is so
cool in Python? Why is it so

670
00:46:05,119 --> 00:46:10,400
hard? And t sharp was Yeah, There was even a whole thing around

671
00:46:10,519 --> 00:46:14,760
the indexes where we wanted to do
the you know, index from the end

672
00:46:15,320 --> 00:46:17,320
of of of an array or something
like that, and we couldn't use the

673
00:46:17,360 --> 00:46:22,760
Python syntax because the Python syntexts use
negatives minus one. We're like, we

674
00:46:22,880 --> 00:46:25,159
can't do that. I remember the
meeting like, it was like but why.

675
00:46:25,280 --> 00:46:29,559
It was like, because that that
compiles and grows today and that would

676
00:46:29,559 --> 00:46:34,440
be a break and change at run
time for chaos chaos. So we ended

677
00:46:34,519 --> 00:46:37,880
up using the hat character for it. That was the only concession we made.

678
00:46:37,920 --> 00:46:39,880
We really strive. We were very
inspired by Python. And yeah,

679
00:46:40,400 --> 00:46:44,239
because because there's features in c sharp, they have gone everywhere, like I

680
00:46:44,320 --> 00:46:49,440
you think a weight gone every Yes, it is a better way to think

681
00:46:49,480 --> 00:46:55,599
about x ascretous execution. It just
is C plus plus. Guys adopted it,

682
00:46:55,760 --> 00:46:59,119
like what the what. Yeah,
we're pretty proud about it. You

683
00:46:59,199 --> 00:47:01,639
should be. That's the hell of
a thing. But it's like, yeah,

684
00:47:01,639 --> 00:47:06,000
and it's interesting thinking the terms of
when people have it right, copy

685
00:47:06,079 --> 00:47:08,519
it. Yeah, I mean everybody's
happier and it's a compliment. Yeah,

686
00:47:08,880 --> 00:47:13,559
you got this right. This was
the right way, and so we should

687
00:47:13,639 --> 00:47:16,880
use it absolutely and we've done it. We've definitely just mentioned we've done our

688
00:47:16,960 --> 00:47:22,400
share of they being heavily inspired yea
and vice versa. You have inspired others.

689
00:47:22,440 --> 00:47:24,840
Absolutely, Yeah, we're all better
for it. Yeah, are we?

690
00:47:25,760 --> 00:47:29,920
Now? This angle of this is, are we converging in languages?

691
00:47:30,239 --> 00:47:36,519
I don't know. There seems to
be. There's definitely something happened where languages

692
00:47:36,599 --> 00:47:43,559
went from being very purely themselves to
all sort of going all going for the

693
00:47:43,719 --> 00:47:51,079
center and kind of slapping optic grind
and functional things together, simpler syntaxes,

694
00:47:51,199 --> 00:47:54,880
and where we all kind of there's
a WorldWind of borrowing from each other,

695
00:47:54,960 --> 00:48:00,719
where we all end up in sort
of like ant a pragmatic center. Yeah,

696
00:48:00,480 --> 00:48:04,920
the general purpose language is I also
think there's a cult of non general

697
00:48:04,920 --> 00:48:08,480
purpose line. Yes, yes,
there's only languages with a purpose, right

698
00:48:09,480 --> 00:48:13,159
or a goal. But even still
they'll be like you know, those of

699
00:48:13,159 --> 00:48:16,000
those languages will still a lot of
times bring some of these paradigms in because

700
00:48:16,000 --> 00:48:20,039
they're natural and they're proven. It's
been I mean, guys, it's been

701
00:48:20,400 --> 00:48:23,920
twenty years since we were like talking
about link and PC, right, so

702
00:48:25,199 --> 00:48:29,599
you know, and it's that's that
brought a lot of mainstream for at least

703
00:48:29,639 --> 00:48:31,199
for those that were had their eyes
on. Microsoft brought a lot of that

704
00:48:31,239 --> 00:48:34,320
functional stuff. I mean we talked
about it in the show over the time,

705
00:48:34,360 --> 00:48:39,159
but I watched the way F sharp
evolved and seeing sort of the concessions

706
00:48:39,239 --> 00:48:45,440
to practicality. It's the functional purity. I get it. Go live in

707
00:48:45,519 --> 00:48:51,559
haske Land, you know, practical
functionality. There's some concessions and F sharp

708
00:48:51,639 --> 00:48:54,320
struck that I thought. Yes,
it's still a very small part of the

709
00:48:54,440 --> 00:48:59,800
market. The F sharp enthusiasts are
enthusiastic. But that I think it's also

710
00:48:59,800 --> 00:49:02,000
a product of being a smaller club, is that those that are in it

711
00:49:02,079 --> 00:49:07,320
take it very seriously. It also
has a certain like it's it's very intellectually

712
00:49:07,360 --> 00:49:10,480
stimulating. Write codin right, and
so you're like, I'm doing really well.

713
00:49:12,039 --> 00:49:15,000
When you g get my head in
the functional space and I write a

714
00:49:15,119 --> 00:49:19,840
nice expressive, I am delighted.
It's like a factory. Man, I'm

715
00:49:19,920 --> 00:49:22,880
just fun. That's the way we
used to feel about C plus plus.

716
00:49:22,360 --> 00:49:28,320
Hey, I did it file and
it doesn't crash the machine for at least

717
00:49:28,360 --> 00:49:31,360
an hour. That is good.
I feel good. Hey, you know,

718
00:49:32,199 --> 00:49:35,920
write a good sequel expression is like
that too. When you can actually,

719
00:49:36,079 --> 00:49:38,199
you know, it's another kind of
functional mindset of here is a good

720
00:49:38,360 --> 00:49:43,239
efficient expression that gets as the precisely
the result we want and it's optimal,

721
00:49:43,360 --> 00:49:45,880
and you're like, yeah, this
thing just works. Yeah yeah. Before

722
00:49:45,960 --> 00:49:49,840
we hang up, I want to
go back to what we were talking about

723
00:49:49,840 --> 00:49:52,760
at the beginning of the show,
which is Ai, you just said something

724
00:49:52,840 --> 00:49:54,599
that made me reminded me of this. You know, when you write a

725
00:49:54,800 --> 00:50:00,880
good sequel expression, you write a
good function. Yeah, whatever language.

726
00:50:01,079 --> 00:50:06,800
Now we're having these tools do it
for us. So let's say you need

727
00:50:06,880 --> 00:50:10,719
it to hire a junior developer.
How are you going to know if they

728
00:50:10,800 --> 00:50:15,599
are if they're there GPT brain or
you know, copilot brain, or they

729
00:50:15,679 --> 00:50:22,639
can actually think in code and actually
reason through this stuff. Well or do

730
00:50:22,679 --> 00:50:29,480
you care? I do care because
I feel that if you're just doing that

731
00:50:30,079 --> 00:50:35,159
right, you're not using the tool. You're being used by the tool,

732
00:50:35,320 --> 00:50:39,159
right, you know, I don't
want that, right, Like when when

733
00:50:39,199 --> 00:50:43,599
I when new engineers, when new
engineers come to me, I want to

734
00:50:43,639 --> 00:50:45,800
know what their side projects are.
I want to know how much they love

735
00:50:46,519 --> 00:50:51,199
this work and uh, and that
speaks to me more than like and then

736
00:50:51,199 --> 00:50:55,239
if they're using AI. I'm pretty
confident that they're using it to be productive,

737
00:50:55,880 --> 00:51:00,360
but they're they're passionate about the space, they're passionate about software. That's

738
00:51:00,440 --> 00:51:02,559
That's how I've been collecting. I've
been talking to a lot of pms and

739
00:51:02,559 --> 00:51:07,039
collecting data around what after more than
a year, what get hep co pilot's

740
00:51:07,039 --> 00:51:10,199
been doing to check in patterns.
And one of the things that's really emerged

741
00:51:10,199 --> 00:51:16,639
from that is, uh, revert
within a few hours or almost nothing,

742
00:51:17,280 --> 00:51:21,960
like they pretty much the code is
correct. So it has changed because it

743
00:51:22,199 --> 00:51:25,239
is less iteration and major refactoring and
so forth. Like typically the code comes

744
00:51:25,320 --> 00:51:30,000
up pretty good and it stays or
they haven't thought about it enough and the

745
00:51:30,079 --> 00:51:34,000
come was completely wrong. Take it
out, start again, yea. And

746
00:51:34,119 --> 00:51:38,679
that seems like an interaction with like
an intern where it's like, oh,

747
00:51:38,800 --> 00:51:42,159
take a stab at this, let's
see where it goes. Oh okay,

748
00:51:42,199 --> 00:51:45,440
well that wasn't the right way,
Let's go try it again, as opposed

749
00:51:45,480 --> 00:51:47,480
to you know, iterate, iterate, iterate, iterating, Yeah, why

750
00:51:47,480 --> 00:51:51,360
do you think that is? Do
you feel like it's like it's not it's

751
00:51:51,400 --> 00:51:52,800
produced something that you're like, Okay, I don't want to refine this.

752
00:51:52,880 --> 00:51:55,159
I need to go back to the
drawing board. Yeah, well, I

753
00:51:55,239 --> 00:51:59,599
get the sense that this is you're
also watching the shape of people learning to

754
00:51:59,760 --> 00:52:01,960
work with this tool, and they're
asking you to do things they don't fully

755
00:52:02,079 --> 00:52:07,199
understand. When they do fully understand, it doesn't make it to the check

756
00:52:07,280 --> 00:52:10,320
in until it's right. But when
they don't fully understand their check it anyway,

757
00:52:10,320 --> 00:52:13,119
then they realize they're going a mistake. It went away. So my

758
00:52:13,239 --> 00:52:16,639
thinking now is a year from now
that pattern will change as those people get

759
00:52:16,719 --> 00:52:21,000
more experienced, there will be less
revert events. But at the moment where

760
00:52:21,079 --> 00:52:23,360
this like there's an argument and I
was talking to people, it is like

761
00:52:23,400 --> 00:52:27,719
this is not working. People reverting
code a lot, and I'm like,

762
00:52:27,800 --> 00:52:30,400
but then what happens, Well,
then they do it again and it goes

763
00:52:30,559 --> 00:52:35,360
and it goes better. It's like
interesting, So that's really cool observation,

764
00:52:35,920 --> 00:52:39,440
manifestation of the learnings. It's not
just is AI doing what it should as

765
00:52:39,480 --> 00:52:45,440
a tool, it's also us learning
to use it the way that it the

766
00:52:45,519 --> 00:52:47,440
way that it was actually going to
be good. Yeah that's what you want

767
00:52:47,480 --> 00:52:51,960
it to Yeah, interesting times,
Yes, it's very interesting. And guys,

768
00:52:52,000 --> 00:52:53,800
what's next? For you. I
know that C sharp thirteen is about

769
00:52:53,800 --> 00:52:59,199
after build. I bet November just
to guess what about after build? What

770
00:52:59,239 --> 00:53:02,199
are you going back to work on
besides Sea sharp thirteen? What's next besides

771
00:53:02,239 --> 00:53:07,599
Oh, personally, I'm very interested
in see sharp fourteen. If I didn't

772
00:53:07,599 --> 00:53:13,039
see that coming, right, let's
just knock that out of the part.

773
00:53:13,360 --> 00:53:16,519
You know, there are a few
So with the extensions work that's starting to

774
00:53:16,639 --> 00:53:22,159
roll out and see Sharp thirteen.
Hopefully that's like one of the big things

775
00:53:22,199 --> 00:53:24,960
that have been on the radar for
a long time that starts to come to

776
00:53:25,079 --> 00:53:29,280
freih So is it triage like this
isn't going to make it that will be

777
00:53:29,320 --> 00:53:32,559
fourteen. No, it's just fleshing
it out right and making sure that when

778
00:53:32,599 --> 00:53:39,519
we go so. But besides extensions, there are a few other things on

779
00:53:39,599 --> 00:53:45,440
the radar currently that will say are
like big, big feature areas that it

780
00:53:45,440 --> 00:53:47,440
would be really cool if we can
nail. From a design perspective. One

781
00:53:47,480 --> 00:53:52,000
of the ones that we get asked
about a lot is unions union types,

782
00:53:52,880 --> 00:53:57,400
and we are very actively looking at
that, but we still haven't reached a

783
00:53:57,440 --> 00:53:59,559
point where we can say, oh, this is how we're going to do

784
00:53:59,639 --> 00:54:07,000
it. There's sort of two competing
approaches out there in existing languages. That's

785
00:54:07,039 --> 00:54:14,280
discriminated unions and functional land that are
very sort of declared types and alternative to

786
00:54:14,559 --> 00:54:20,039
optagonoid inheritance almost. And then there's
union types in typescript, which are very

787
00:54:20,119 --> 00:54:25,480
much a different thing, much more
structural, lightweight thing, and both have

788
00:54:25,719 --> 00:54:30,920
really good arguments going for them.
They're also quite far apart. So when

789
00:54:31,000 --> 00:54:36,239
we say we would like to do
something with unions, what do we end

790
00:54:36,320 --> 00:54:39,079
up actually really needing on top of
what's already in C shark in order to

791
00:54:39,119 --> 00:54:43,920
give people your expressiveness. So that's
one that I hope to be able to

792
00:54:44,000 --> 00:54:49,119
devote more time and effort to.
Cool. Yeah, a few other things

793
00:54:49,199 --> 00:54:55,039
like that, how about you.
Well, since I write code instead of

794
00:54:55,079 --> 00:55:00,280
imagine code like maths, I'm kidding, Mads, I'm sorry. I like

795
00:55:00,360 --> 00:55:04,159
to take things apart and put them
back together a comeback right now. No,

796
00:55:04,280 --> 00:55:06,000
I know he is, he's going
to give it to me after the

797
00:55:06,039 --> 00:55:09,000
case. But I like to take
things apart and put them back together again.

798
00:55:09,039 --> 00:55:15,039
And so right now I am working
on that for Razor Tooling and Compiler.

799
00:55:15,199 --> 00:55:19,760
It's something that a lot of our
customers write a lot of a lot

800
00:55:19,800 --> 00:55:23,639
of a lot of razor and and
and it's also at the you know,

801
00:55:24,119 --> 00:55:28,960
forefront and importance of like things like
Blazer and some of the most important platforms.

802
00:55:29,039 --> 00:55:31,719
So I'm trying to get that tooling
stack with the help of some very

803
00:55:31,800 --> 00:55:37,239
smart people, they're trying to get
that really turned around into something that we

804
00:55:37,320 --> 00:55:39,800
can we can feel like is going
to be, you know, lightweight and

805
00:55:39,880 --> 00:55:44,119
successful. That's awesome. Yeah,
all right, guys, well I think

806
00:55:44,159 --> 00:55:46,159
that's it. Thanks very much,
and have a great rest of your time

807
00:55:46,239 --> 00:55:50,480
at build. Thank you very much. I always a pleasure, Yes,

808
00:55:50,599 --> 00:55:53,360
definitely for us too, and we'll
see you next time. A dot net

809
00:55:53,800 --> 00:56:19,679
rock. Dot net Rocks is brought
to you by Franklin's Net and produced by

810
00:56:19,800 --> 00:56:24,679
Pop Studios, a full service audio, video and post production facility located physically

811
00:56:24,800 --> 00:56:30,719
in New London, Connecticut, and
of course in the cloud online at pwop

812
00:56:30,960 --> 00:56:34,760
dot com. Visit our website at
d O T N E t R O

813
00:56:34,960 --> 00:56:39,199
c k S dot com for RSS
feeds, downloads, mobile apps, comments,

814
00:56:39,559 --> 00:56:44,639
and access to the full archives going
back to show number one, recorded

815
00:56:44,679 --> 00:56:47,599
in September two thousand and two,
and make sure you check out our sponsors.

816
00:56:47,760 --> 00:56:52,360
They keep us in business. Now
go write some code. See you

817
00:56:52,480 --> 00:57:02,360
next time. You got meddle Vans
and my bed is harder than my taxes

818
00:57:02,440 --> 00:57:05,119
in lie credit roll
