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:11,320
get access to a private RSS feed where all the

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

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

8
00:00:18,160 --> 00:00:34,000
Sign up now at Patreon dot dot NetRocks dot com.

9
00:00:34,240 --> 00:00:38,000
Hey guess what it's dot net rocks insane heat.

10
00:00:37,719 --> 00:00:38,600
Speaker 2: Version in.

11
00:00:40,039 --> 00:00:42,079
Speaker 1: A little warm where you are, brother, one hundred and

12
00:00:42,119 --> 00:00:43,320
two degrees fahrenheit today.

13
00:00:43,439 --> 00:00:46,159
Speaker 2: That's no funny. That's dangerous being you'll be careful, it

14
00:00:46,280 --> 00:00:50,399
is dangerous. Thank God for air conditioning. Yeah, no kidding, Yeah.

15
00:00:50,359 --> 00:00:53,240
Speaker 1: Told, I've told neighbors who don't have it feel free

16
00:00:53,240 --> 00:00:54,280
to come over and cool off.

17
00:00:54,399 --> 00:00:57,920
Speaker 2: Yeah no, that's smart. Just get an hour cooling down? Right? Yeah?

18
00:00:58,000 --> 00:01:00,399
Speaker 1: Hey, Mark Miller's here. We're gonna have a lot of uh,

19
00:01:00,960 --> 00:01:02,920
some really good stuff that he's got to talk to

20
00:01:03,000 --> 00:01:05,400
us about. But you know, we're all we all seem

21
00:01:05,480 --> 00:01:11,359
to be on the agentic Ai bandwagon, or at least

22
00:01:11,359 --> 00:01:14,640
topic today because that's where my better know a framework

23
00:01:14,799 --> 00:01:15,760
is so oh.

24
00:01:15,719 --> 00:01:25,680
Speaker 2: Roll the crazy music. All right, man, tell me all

25
00:01:25,680 --> 00:01:29,200
about your agentic AI coding experience.

26
00:01:29,680 --> 00:01:32,200
Speaker 1: Yeah, all right, all right, Well, I haven't done a

27
00:01:32,200 --> 00:01:34,359
Blazer train in a while, and I figured this was

28
00:01:34,439 --> 00:01:38,519
the best time. So, you know, Build, we saw all

29
00:01:38,560 --> 00:01:42,280
sorts of stuff about the new features for developers that

30
00:01:42,359 --> 00:01:44,840
Microsoft is bringing out, right.

31
00:01:44,799 --> 00:01:51,760
Speaker 2: Hunter seth w O'Brian, you know, was don't stop.

32
00:01:51,560 --> 00:01:54,400
Speaker 1: And even the keynote kind of wet our appetite a

33
00:01:54,400 --> 00:01:57,040
little bit. But you know, our friends talk to us

34
00:01:57,079 --> 00:02:01,040
in terms of developers, which is great, and we all agree.

35
00:02:01,200 --> 00:02:05,799
I think that AI is a very real and helpful

36
00:02:05,879 --> 00:02:10,719
and safe thing for developers to use. You know, we

37
00:02:10,840 --> 00:02:13,639
have to be careful about safety, but for the most part,

38
00:02:14,039 --> 00:02:17,159
the tools that I've been using have been pretty good.

39
00:02:17,240 --> 00:02:20,120
So I came home from Build and I immediately started

40
00:02:20,120 --> 00:02:23,840
messing around with this stuff. And I started working with

41
00:02:23,960 --> 00:02:28,360
the agent mode in visual Studio and that didn't work

42
00:02:28,400 --> 00:02:31,879
out so well, only because it kind of got hung

43
00:02:31,960 --> 00:02:34,919
up on files, couldn't access files that it had written

44
00:02:34,960 --> 00:02:36,879
and all that kind of stuff, But it did it

45
00:02:36,960 --> 00:02:42,199
was able to generate some good stuff anyway. Then I'm

46
00:02:42,360 --> 00:02:47,039
at devsum in Stockholm. I met the rooftop bar the

47
00:02:47,039 --> 00:02:49,840
hotel and Hunter is there and I'm just kind of

48
00:02:49,840 --> 00:02:53,000
picking his brain and he's like, oh no, you got

49
00:02:53,120 --> 00:02:59,199
to use the copilot GitHub copilot coding agent in GitHub, right,

50
00:02:59,319 --> 00:03:01,199
that's what it's all. AB I just did this demo.

51
00:03:01,400 --> 00:03:03,639
Speaker 2: That's where the action is. Yeah. Right.

52
00:03:03,960 --> 00:03:06,319
Speaker 1: So I was like, Okay, here we go. I went

53
00:03:06,360 --> 00:03:08,919
home and I started playing with that, and I agree

54
00:03:08,960 --> 00:03:12,560
with Scott this is this is really really good. And

55
00:03:12,639 --> 00:03:15,639
so the whole idea is that the co pilot is

56
00:03:17,120 --> 00:03:20,879
a partner on your in the repos that you give

57
00:03:20,879 --> 00:03:24,400
it access to, and you can assign issues to it

58
00:03:25,280 --> 00:03:28,039
and it will go out and figure out those issues,

59
00:03:28,080 --> 00:03:30,520
and you can view the logs and view the session

60
00:03:30,599 --> 00:03:34,400
and see what it's doing. And then first it creates

61
00:03:35,280 --> 00:03:37,840
a sort of a draft poll request, and then it

62
00:03:37,879 --> 00:03:42,240
creates commits, and you can view those commits you know,

63
00:03:42,280 --> 00:03:45,120
in visual studio, and test them out, and if it

64
00:03:45,199 --> 00:03:47,719
didn't do something you liked, you can just add a

65
00:03:47,759 --> 00:03:51,240
comment and it'll go off and fix it. So I

66
00:03:51,400 --> 00:03:53,639
and then of course when you're done, you can merge

67
00:03:53,680 --> 00:03:57,120
the poll request. So I thought this was just absolutely brilliant.

68
00:03:57,159 --> 00:03:59,080
So I did a Blazer train about it. Episode one

69
00:03:59,159 --> 00:04:03,960
oh seven, get ub Copilot Coding Agent and we'll have

70
00:04:04,000 --> 00:04:07,120
a link to that. And also the first thing I

71
00:04:07,120 --> 00:04:12,479
did was I documented my experiences using it to create

72
00:04:12,560 --> 00:04:17,720
a whole Blazer server forms over data application using the

73
00:04:17,759 --> 00:04:20,800
north Wind database. Cool, and I use SQL like because

74
00:04:21,399 --> 00:04:25,439
you know, not everybody uses Windows. Yeah, and the video

75
00:04:25,519 --> 00:04:28,079
the one I did in the video kind of I

76
00:04:28,160 --> 00:04:29,920
kind of got stuck in the code at the end,

77
00:04:30,519 --> 00:04:33,160
but if you look at the results that i'd have

78
00:04:33,319 --> 00:04:36,480
in the actual repo that we'll have a link to. Also,

79
00:04:36,680 --> 00:04:39,800
it was much better and didn't take you know, many

80
00:04:39,879 --> 00:04:41,800
iterations to fix the bugs and stuff.

81
00:04:41,839 --> 00:04:44,720
Speaker 2: But I do like that those fighting through moments, so

82
00:04:44,759 --> 00:04:47,279
I think are really useful teaching moments too. It's like

83
00:04:47,399 --> 00:04:49,639
when the software is not behaving the way you want,

84
00:04:50,120 --> 00:04:52,800
how do you push on it to get to get results?

85
00:04:52,920 --> 00:04:57,600
Speaker 1: Absolutely, and along the way, I learned about the system

86
00:04:57,680 --> 00:05:00,680
prompt MD file that you can put in your repo

87
00:05:01,279 --> 00:05:03,879
where you tell it sort of all the general stuff

88
00:05:03,920 --> 00:05:06,079
and how you want things to be organized in the

89
00:05:06,120 --> 00:05:07,800
things that the coding standards and.

90
00:05:07,800 --> 00:05:08,480
Speaker 2: All that stuff.

91
00:05:08,560 --> 00:05:11,319
Speaker 1: Yeah, overall was really good. And so there's a third part.

92
00:05:11,560 --> 00:05:16,279
I've created a four hour webinar called a Survey of

93
00:05:16,399 --> 00:05:19,839
AI Tools for Dot net Development, which goes beyond just

94
00:05:19,959 --> 00:05:23,040
the Microsoft tools but looks at the best of breed

95
00:05:23,560 --> 00:05:30,720
and AI tools across all platforms and services. So that's

96
00:05:30,800 --> 00:05:33,639
like a survey of these things. It'll include GitHub and

97
00:05:33,680 --> 00:05:36,040
all of that stuff. And guess what, it's even going

98
00:05:36,079 --> 00:05:39,120
to include code Rush, which I learned about today from Mark.

99
00:05:39,560 --> 00:05:42,959
He's going to be talking about that. But that link

100
00:05:43,160 --> 00:05:47,160
is in the show notes as well, and also linked

101
00:05:47,240 --> 00:05:50,439
in the repo, which is in the show notes. So

102
00:05:51,120 --> 00:05:53,879
that's all the stuff that I have. Richard, who's talking.

103
00:05:53,639 --> 00:05:55,800
Speaker 2: To us today, grabbed a common top of Show nineteen

104
00:05:55,920 --> 00:05:58,120
fifty four, the one we did I had to build

105
00:05:58,160 --> 00:06:00,519
with w O'Brien where we talked about the play right MCP,

106
00:06:00,959 --> 00:06:03,519
which definitely one of those moments where like, oh man,

107
00:06:04,160 --> 00:06:07,480
we can get up to stuff with this. Yeah. Yeah,

108
00:06:07,519 --> 00:06:09,839
and John MacArthur had this great comedy said, listening to

109
00:06:09,879 --> 00:06:12,000
this and talk about copilot, I love using it for

110
00:06:12,160 --> 00:06:14,879
my get comments. It does such a good job of them,

111
00:06:14,920 --> 00:06:17,720
and it's forcing me to get better. Oh no, upon

112
00:06:17,959 --> 00:06:22,839
help me, help me no better by checking in more often,

113
00:06:22,879 --> 00:06:25,560
because I don't want lots of unrelated changes grouped together.

114
00:06:25,639 --> 00:06:29,040
See yeah, Because the tool actually remembers everything you did

115
00:06:29,480 --> 00:06:31,160
and spits it all back to you, so you have

116
00:06:31,199 --> 00:06:33,920
to be more organized and unlike when my handwritten comment

117
00:06:34,040 --> 00:06:40,040
was fixed stuff and things. Yeah, yeah, seriously, the generated

118
00:06:40,040 --> 00:06:42,959
comments are brilliant. Yeah, I gotta say, John, like, there's

119
00:06:43,040 --> 00:06:45,279
more that can be done with these tools, Like I

120
00:06:45,319 --> 00:06:48,240
appreciate your sentiment and certainly I like those parts too.

121
00:06:48,279 --> 00:06:51,759
But keep going down the path and we're just getting started. Yeah,

122
00:06:51,800 --> 00:06:54,240
it's early days, isn't it. Yeah, and John, thank you

123
00:06:54,319 --> 00:06:55,920
so much. Your comment and copy of music code By

124
00:06:56,040 --> 00:06:57,120
is on its way to you. And if you'd like

125
00:06:57,120 --> 00:06:58,759
a copy of music codbe I write a comment on

126
00:06:58,759 --> 00:07:01,319
the website at dot netrock com or on the facebooks

127
00:07:01,319 --> 00:07:03,000
we publish every show there. Any of you comment there

128
00:07:03,519 --> 00:07:05,000
and I read it on the show, we'll send you

129
00:07:05,040 --> 00:07:05,680
copy music. O.

130
00:07:05,920 --> 00:07:08,879
Speaker 1: I just sold another flak collection of music to code By.

131
00:07:08,879 --> 00:07:10,639
We're up to twenty two tracks now and you can

132
00:07:10,639 --> 00:07:13,680
get them an MP three flak and wave music to

133
00:07:13,720 --> 00:07:16,160
code by dot net. All right, before we bring on

134
00:07:16,199 --> 00:07:18,800
mister Miller, let's talk about nineteen fifty eight, because that's

135
00:07:18,800 --> 00:07:19,759
our show number.

136
00:07:19,600 --> 00:07:22,319
Speaker 2: Ninety fifty eight, A very good year in some respects.

137
00:07:22,360 --> 00:07:22,920
I mean, you know.

138
00:07:23,439 --> 00:07:26,000
Speaker 1: Oh yeah, So where do you want to go with it? Well,

139
00:07:26,079 --> 00:07:30,480
let's talk about international developments. The European Economic Community was formed,

140
00:07:30,519 --> 00:07:34,199
which is precursor to the EU. Precursor to EU. The

141
00:07:34,279 --> 00:07:39,639
West Indies Federation was formed, the Soviet American Exchange Agreement.

142
00:07:40,000 --> 00:07:44,959
Can you imagine? Yeah, Brazil won the World Cup, defeated

143
00:07:44,959 --> 00:07:47,879
Sweden five to two to win their first World Cup title.

144
00:07:48,319 --> 00:07:51,240
The first undersea voyage to the North Pole by the

145
00:07:51,360 --> 00:07:54,279
USS Nautilus. Hey, I know about that submarine.

146
00:07:54,399 --> 00:07:56,040
Speaker 2: Yeah, that's that's your part of the world.

147
00:07:56,120 --> 00:07:56,279
Speaker 3: Yeah.

148
00:07:56,319 --> 00:07:59,480
Speaker 1: It was built in my hometown. Yeah, and I'm sure

149
00:07:59,759 --> 00:08:02,199
my father probably had something to do with that because

150
00:08:02,240 --> 00:08:05,040
he was in planning, probably in the United States.

151
00:08:05,199 --> 00:08:08,639
Speaker 2: NASA was established on July twenty nine. Yeah, the International

152
00:08:08,639 --> 00:08:14,560
Geophysical Year. Yeah, established with NASA IGY, the Bunch of Satellites.

153
00:08:14,720 --> 00:08:18,639
IGY is also the first track on Donald Fagan's excellent

154
00:08:18,720 --> 00:08:23,279
The Nightfly, which is all about fifties fantasies about the future.

155
00:08:23,639 --> 00:08:28,519
Sure Explorer one was launched on January thirty first detected

156
00:08:28,560 --> 00:08:31,319
the Van Allen BELTZ. You know all these things. It's

157
00:08:31,360 --> 00:08:34,480
so awesome. I do Federal Aviation Act. If you want

158
00:08:34,519 --> 00:08:37,799
to just forget school. Just go have a cup of

159
00:08:37,799 --> 00:08:40,679
tea or glass whiskey with Richard. You don't need school.

160
00:08:40,799 --> 00:08:42,840
Speaker 3: Or if you've been in school and you want to

161
00:08:42,840 --> 00:08:45,240
feel like you've never been in school, do the.

162
00:08:45,159 --> 00:08:49,000
Speaker 2: Same, right, listen to a geek out.

163
00:08:50,240 --> 00:08:54,480
Speaker 1: The Federal Aviation Act was passed, which was later the

164
00:08:54,600 --> 00:09:00,279
FAA Federal Aviation Agency, giving it authority overall aspect of

165
00:09:00,320 --> 00:09:03,159
aviation in the US. Elvis was inducted into the Army

166
00:09:04,600 --> 00:09:09,360
on March twenty fourth, the B forty seven nuclear weapon

167
00:09:09,480 --> 00:09:13,000
loss incident. A B forty seven bomber accidentally dropped an

168
00:09:13,039 --> 00:09:15,559
atomic bomb on Mars Bluff, South Carolina.

169
00:09:15,759 --> 00:09:18,279
Speaker 2: Oops, well that's the one that went off, but we

170
00:09:18,519 --> 00:09:21,519
had no nuclear core. That same year they lost one

171
00:09:21,519 --> 00:09:24,600
out of a B forty seven and have never found it,

172
00:09:24,759 --> 00:09:26,559
Oh my god, somewhere.

173
00:09:27,000 --> 00:09:30,679
Speaker 1: Some other things, the first radio broadcast from Space, President

174
00:09:30,799 --> 00:09:33,440
Dwight D. Eisenhowers and a Christmas message from Space.

175
00:09:33,519 --> 00:09:35,279
Speaker 2: Yeah, first communication satellite too.

176
00:09:35,399 --> 00:09:38,919
Speaker 1: Yeah. Anything that you want to add in terms of

177
00:09:39,120 --> 00:09:41,759
computers or technology.

178
00:09:41,240 --> 00:09:43,039
Speaker 2: Well, let me do one non computer one, and I'll

179
00:09:43,039 --> 00:09:45,759
do a couple computer ones. On computer one And this

180
00:09:45,799 --> 00:09:48,720
is from my friend Mark is the first regular surve

181
00:09:48,759 --> 00:09:53,039
transatlantic service of the Boeing seven oh seven. They really

182
00:09:53,080 --> 00:09:56,679
beginning of the jet age. That the prototype flew in

183
00:09:56,720 --> 00:09:59,080
the end of fifty seven, but it was already in

184
00:09:59,120 --> 00:10:01,759
service in fifty eight eight pan am in the beginning

185
00:10:01,799 --> 00:10:03,279
of what they called the jet age. It wasn't the

186
00:10:03,279 --> 00:10:05,480
first jet air liner. There was ones before that, but

187
00:10:05,519 --> 00:10:08,559
at the seven o seven, and that form factor still

188
00:10:08,559 --> 00:10:11,559
flies today, that four engine rig that's the KC one

189
00:10:11,639 --> 00:10:15,399
thirty five. Like that plane's never going away, it seems,

190
00:10:15,720 --> 00:10:16,440
which is a good one.

191
00:10:16,480 --> 00:10:19,039
Speaker 1: It was also mentioned in the song jet air Liner

192
00:10:19,080 --> 00:10:19,799
by Steve.

193
00:10:19,639 --> 00:10:22,840
Speaker 2: Miller band down Rights. They get on the seven o seven,

194
00:10:22,919 --> 00:10:24,840
get on the seven oh seven. There's lots of variance

195
00:10:24,879 --> 00:10:26,399
of it. Two. You know, the original form of that

196
00:10:26,399 --> 00:10:28,759
our craft was quite narrow, is a two x two seating,

197
00:10:29,159 --> 00:10:31,879
and then they widened it to a two to one

198
00:10:31,960 --> 00:10:33,919
two seating, and then they widened it again into a

199
00:10:33,960 --> 00:10:40,879
three three seating. Programming wise, the remarkable extraordinary found. John

200
00:10:40,960 --> 00:10:45,200
McCarthy at MIT developed the LISP programming language in two

201
00:10:45,240 --> 00:10:47,240
fifty eight. It wouldn't get deployed for another couple of

202
00:10:47,360 --> 00:10:49,919
years because we barely had computers at that point. LISPS

203
00:10:49,960 --> 00:10:53,480
short for the list processing. But yeah, he had defined

204
00:10:53,519 --> 00:10:56,399
the language already. At that point, you barely had a

205
00:10:56,399 --> 00:10:59,279
computer functional Interestingly.

206
00:10:58,960 --> 00:11:04,080
Speaker 1: The functional language that was used a lot in was

207
00:11:04,120 --> 00:11:06,399
it used in AI at the time or what they

208
00:11:06,440 --> 00:11:06,919
called AI.

209
00:11:07,200 --> 00:11:09,279
Speaker 2: Yeah, the term AI had already been coined at that point.

210
00:11:09,399 --> 00:11:14,000
McCarthy or Minsky coined the term.

211
00:11:14,080 --> 00:11:16,440
Speaker 1: But I don't know what they meant by that back then.

212
00:11:16,559 --> 00:11:18,240
Was it machine learning kind of thing or.

213
00:11:18,559 --> 00:11:21,320
Speaker 2: No, it was just that was more decision tree modeling.

214
00:11:21,679 --> 00:11:25,320
What what Minsky got financing from the military for was

215
00:11:25,399 --> 00:11:28,720
to do resource allocation and management for the US military,

216
00:11:28,720 --> 00:11:30,840
which by the way, worked perfectly.

217
00:11:31,080 --> 00:11:33,519
Speaker 1: So expert systems that kind of thing.

218
00:11:33,679 --> 00:11:37,320
Speaker 2: No, just resource management, okay, like decision treat mesia management.

219
00:11:37,360 --> 00:11:39,360
How do you how do you move a battalion? What

220
00:11:39,399 --> 00:11:41,759
do you got to move first? Like what those pieces

221
00:11:41,759 --> 00:11:43,799
look like based on the aircraft you got to the ships?

222
00:11:43,840 --> 00:11:46,399
You're using that kind of thing. Okay, One more computer

223
00:11:46,480 --> 00:11:50,799
one the RC five oh one, which was one of

224
00:11:50,840 --> 00:11:53,799
the very first computers only nineteen fifty eight to use

225
00:11:54,080 --> 00:11:57,639
transistors instead of vacuum two hm. No, discrete, it's all

226
00:11:57,639 --> 00:12:00,360
discrete electronics at this point, right, we haven't got ICs yet,

227
00:12:00,799 --> 00:12:04,480
but we are beginning down the transistorization of computing. Wow.

228
00:12:04,600 --> 00:12:06,480
Speaker 1: You know, it just occurs to me when we have

229
00:12:07,440 --> 00:12:10,240
a show number that's the same year as the year

230
00:12:10,279 --> 00:12:12,759
we recorded in the world's gonna explode.

231
00:12:12,919 --> 00:12:14,679
Speaker 2: I know, I'm with you. It's I think we're doing

232
00:12:14,799 --> 00:12:16,240
two thousand and two is going to be a problem.

233
00:12:16,360 --> 00:12:21,559
Speaker 1: Yeah, all right, Well, let's introduce Mark Miller. He's been

234
00:12:21,559 --> 00:12:25,559
on the show many times. He is fondly remembered in

235
00:12:25,600 --> 00:12:30,200
dot Netrock's history, of course through Monday's hilarious bits on there,

236
00:12:30,759 --> 00:12:34,240
and also just in early dot net Rocks. He's been

237
00:12:34,279 --> 00:12:39,600
an innovator in many, many ways. So he's a multi

238
00:12:39,720 --> 00:12:43,600
year c Sharp Microsoft MVP and a leading expert on

239
00:12:43,799 --> 00:12:47,879
user interface design. He's a chief architect of the ide

240
00:12:48,080 --> 00:12:51,840
Tools division at Developer Express, and he streams live c

241
00:12:52,039 --> 00:12:57,519
Sharp coding and design on Twitch, dot tv, slash code rushed.

242
00:12:58,279 --> 00:13:01,000
Mark has been creating tools for software developers for over

243
00:13:01,039 --> 00:13:04,399
four decades. He was also the He was the guest

244
00:13:04,960 --> 00:13:08,240
on the first show that I was co host on

245
00:13:08,360 --> 00:13:09,039
show one on one.

246
00:13:09,320 --> 00:13:09,679
Speaker 3: Wow.

247
00:13:09,960 --> 00:13:11,679
Speaker 2: Really that's cool.

248
00:13:11,840 --> 00:13:15,039
Speaker 3: Yeah, I did not know that. I feel like I

249
00:13:15,120 --> 00:13:18,480
must have. I feel like after the show, Carl MSSA

250
00:13:18,519 --> 00:13:21,039
got a call for Richard. Richard's like, there's no way

251
00:13:21,080 --> 00:13:22,840
I'm doing this never again.

252
00:13:23,279 --> 00:13:24,639
Speaker 2: I think I think I got off that show and

253
00:13:24,679 --> 00:13:28,159
said only fifty shows. Yeah, that's right. I mean, how

254
00:13:28,200 --> 00:13:31,039
hard could it be? Fifty show fifty and.

255
00:13:30,960 --> 00:13:34,320
Speaker 1: Here we are the longest running dot net podcast ever

256
00:13:34,639 --> 00:13:38,960
and probably one of the longest running podcasts ever that's

257
00:13:39,000 --> 00:13:39,679
still going.

258
00:13:39,840 --> 00:13:41,399
Speaker 2: Yeah. Probably, Yeah, it's hard to know.

259
00:13:41,559 --> 00:13:43,200
Speaker 3: That's interesting. Yeah, that's right.

260
00:13:43,519 --> 00:13:45,759
Speaker 1: We are the og podcast for better or worse.

261
00:13:45,919 --> 00:13:48,960
Speaker 3: Congratulations, guys, I forget Why don't we switch it up.

262
00:13:48,960 --> 00:13:51,039
I'll interview both of you and we'll talk about that.

263
00:13:51,399 --> 00:13:54,600
Speaker 2: Hey, all right, I don't think dang.

264
00:13:54,840 --> 00:14:01,720
Speaker 1: Okay, So this morning, Mark Martin my time. You gave

265
00:14:01,759 --> 00:14:05,559
me a demo of your new code Rush tools that

266
00:14:05,720 --> 00:14:10,360
use AI and speech recognition, and yeah, wow, I was

267
00:14:10,440 --> 00:14:13,399
just blown away. So maybe you can tell everybody about

268
00:14:13,399 --> 00:14:14,960
this give us the elevator pitch.

269
00:14:15,120 --> 00:14:20,519
Speaker 3: Okay, sure. It's essentially it's kind of like as if

270
00:14:20,879 --> 00:14:22,919
AI was kind of like a suit of armor for

271
00:14:22,960 --> 00:14:27,440
you as a developer. It is unlike the agent mode

272
00:14:27,519 --> 00:14:30,080
of Copilot, where it kind of goes off in space.

273
00:14:30,120 --> 00:14:31,879
You kind of give it some boundaries and say here,

274
00:14:31,960 --> 00:14:33,480
this is the issue I want you to go after.

275
00:14:35,399 --> 00:14:38,519
The tools that we have in code Rush are really

276
00:14:38,879 --> 00:14:43,480
much more much closer to you as a developer. It's

277
00:14:43,600 --> 00:14:46,039
kind of like, you know, leveling up in a game

278
00:14:46,120 --> 00:14:50,600
or something along those lines. Your power and speed increase.

279
00:14:52,639 --> 00:14:56,039
The essence of the tooling is making changes to code,

280
00:14:57,240 --> 00:15:03,200
creating new code, and also doing essentially semantic searches through code.

281
00:15:03,559 --> 00:15:06,080
Those are the areas so that you can you can

282
00:15:06,639 --> 00:15:10,000
use the power of AI to essentially offload a lot

283
00:15:10,120 --> 00:15:14,240
of cognitive effort, right, and so anytime that I've got

284
00:15:14,240 --> 00:15:17,799
something that is tedious would otherwise be tedious to do,

285
00:15:19,279 --> 00:15:22,039
or or if i have something that maybe I'm not

286
00:15:22,080 --> 00:15:25,320
sure how to do right, both of these are great,

287
00:15:25,759 --> 00:15:30,759
great places for AI to come step in and and

288
00:15:30,759 --> 00:15:34,679
and the what makes them feel like a suit of

289
00:15:34,799 --> 00:15:40,799
armor is, I think is the is the ease of

290
00:15:40,919 --> 00:15:44,559
use the user interface. Right. By by going after this

291
00:15:44,720 --> 00:15:47,960
in my usual approach right to doing creating any kind

292
00:15:48,000 --> 00:15:54,720
of tooling, you know, looking for any kind of frictional force, right,

293
00:15:54,840 --> 00:15:58,480
any kind of bump and trying to smooth out every bump,

294
00:15:58,960 --> 00:16:05,320
we've gotten to this place where you can essentially do

295
00:16:05,360 --> 00:16:07,679
what they're calling, you know, vibe coding to some degree, right,

296
00:16:08,120 --> 00:16:10,840
but you can do it I as I need it,

297
00:16:10,960 --> 00:16:14,200
right when I need it, I can say okay, you know,

298
00:16:14,240 --> 00:16:17,320
as an example, I think if I showed Carl this morning,

299
00:16:17,360 --> 00:16:19,879
I said something like, let's create a new class called

300
00:16:20,039 --> 00:16:23,600
customer with a first name, last name, an email address,

301
00:16:23,639 --> 00:16:27,080
a street address, and a birth date. And I can

302
00:16:27,120 --> 00:16:28,320
just do that. I don't even have to say the

303
00:16:28,399 --> 00:16:30,080
names of the types. I can just say here's what

304
00:16:30,120 --> 00:16:34,080
I want to do. And if I want to specify things,

305
00:16:34,120 --> 00:16:36,519
I can. I can go into more detail. But if

306
00:16:36,559 --> 00:16:39,000
I don't, and I often don't, and this is what

307
00:16:39,200 --> 00:16:42,639
really lowers the cognitive load. Right as I'm using the tooling,

308
00:16:42,639 --> 00:16:45,559
I say, hey can we fix this, or hey can

309
00:16:45,600 --> 00:16:48,799
you add the method that's missing? Right can I? And

310
00:16:48,840 --> 00:16:52,879
I love talking in clues to AI because it often

311
00:16:52,960 --> 00:16:55,720
figures it out and puts in the thing that I need,

312
00:16:55,759 --> 00:16:58,840
whatever it is, and then I can just go from there.

313
00:16:58,879 --> 00:17:00,440
I can start writing the code or doing what I

314
00:17:00,480 --> 00:17:00,919
need to do.

315
00:17:01,039 --> 00:17:04,359
Speaker 2: You know, almost exactly one hundred shows ago eighteen fifty

316
00:17:04,599 --> 00:17:06,960
we were talking to you about open AI. This is

317
00:17:07,000 --> 00:17:10,160
in twenty twenty three, and you hinted at this whole

318
00:17:10,200 --> 00:17:12,920
idea of Hey, I talk about my code when I

319
00:17:13,000 --> 00:17:16,720
code anyway. Yeah, Like, why wouldn't I be saying it.

320
00:17:16,880 --> 00:17:19,000
Wouldn't it be nice if it was listening? Like this

321
00:17:19,759 --> 00:17:21,640
sounds like you just built what you were talking about.

322
00:17:21,799 --> 00:17:23,799
Speaker 1: Yeah, this is when we were upstairs at the guard

323
00:17:23,920 --> 00:17:26,559
you and me Mark sitting across from each other in

324
00:17:26,599 --> 00:17:29,960
the attic there where we had the booths, but in

325
00:17:29,960 --> 00:17:33,039
twenty twenty three. But I think the I wanted to

326
00:17:33,079 --> 00:17:35,839
say that. The one of the first impressions that I

327
00:17:35,920 --> 00:17:39,440
got was how out of the way the speech thing

328
00:17:39,640 --> 00:17:41,920
was like, I'm always nervous that if I hit the

329
00:17:41,920 --> 00:17:44,119
wrong key and then it starts listening and it's going

330
00:17:44,200 --> 00:17:47,039
to create a bunch of garbage. But you've got it

331
00:17:47,160 --> 00:17:49,880
so that the right control key by default you tap

332
00:17:49,960 --> 00:17:52,960
it once and then you hold it down and speak right.

333
00:17:53,039 --> 00:17:55,200
It's not like you can just hold down control because

334
00:17:55,200 --> 00:17:57,279
you know what, sometimes you need it as a control key.

335
00:17:57,680 --> 00:18:00,160
You want to hold down control and you see or

336
00:18:00,240 --> 00:18:03,000
V and so I really appreciate the fact that you

337
00:18:03,039 --> 00:18:08,400
came up with like an action that's deliberate that you

338
00:18:08,440 --> 00:18:12,279
would not do otherwise. Yeah, as opposed to like, you know,

339
00:18:12,319 --> 00:18:15,599
the agent that just when you type a few characters,

340
00:18:15,599 --> 00:18:18,480
says hey, how about this in a page of grade

341
00:18:18,519 --> 00:18:19,319
out code?

342
00:18:19,480 --> 00:18:22,960
Speaker 3: You know, yeah, no, I think we have solved a

343
00:18:23,039 --> 00:18:27,440
lot of problems that would otherwise be blocking forces to

344
00:18:27,559 --> 00:18:30,599
making this vision come true. Right, and you know the

345
00:18:30,880 --> 00:18:33,680
the you know what you just said about the keyboard.

346
00:18:33,839 --> 00:18:36,720
You know, I've been using this, this this feature has

347
00:18:36,759 --> 00:18:39,039
been in development. I've been using it actively for probably

348
00:18:39,039 --> 00:18:41,200
at least seven months. I want to say. Yeah, and

349
00:18:41,240 --> 00:18:46,480
so I've forgotten how kind of unique that solution is. Yeah,

350
00:18:46,519 --> 00:18:50,119
And it wasn't until you just mentioned that. I was like, oh, right, yeah,

351
00:18:50,279 --> 00:18:53,000
we've made this. There's a couple of things that happen, right,

352
00:18:53,039 --> 00:18:57,039
But basically we said, look, there's on programmer keyboards there's

353
00:18:57,039 --> 00:18:59,440
no push to talk button, right, yeah, weird. So we

354
00:18:59,519 --> 00:19:02,279
have to with something and we can't make it be

355
00:19:02,359 --> 00:19:04,319
something where you have to reach the mouse, and we

356
00:19:04,359 --> 00:19:06,119
can't make it for something where you have to hold

357
00:19:06,119 --> 00:19:09,079
down the control and yet another key. We can't. It's

358
00:19:09,160 --> 00:19:11,200
it's got to be effortless to get in.

359
00:19:11,359 --> 00:19:13,279
Speaker 1: And so we I thought it was a brilliant solution.

360
00:19:13,400 --> 00:19:16,319
Speaker 3: Well thanks, yeah, no, And and so that's that's part

361
00:19:16,359 --> 00:19:19,240
of what we're doing is we're making things effortless, right,

362
00:19:19,319 --> 00:19:23,160
And there's actually about four different kind of cross section

363
00:19:23,319 --> 00:19:27,119
criterias for success that I think we've done really well

364
00:19:27,160 --> 00:19:30,519
in that we've kind of leap frog other existing technology,

365
00:19:30,559 --> 00:19:32,920
and one of them is ease of use. On the

366
00:19:32,960 --> 00:19:37,279
ease of use side of things, it is effortless and

367
00:19:37,319 --> 00:19:40,240
it is also fast. Yes, right when you when you

368
00:19:40,319 --> 00:19:43,400
say I want to do this, and then you release

369
00:19:43,440 --> 00:19:46,920
the control key because you're done talking. On average, our

370
00:19:47,240 --> 00:19:52,039
our voice to text conversion times is less than a

371
00:19:52,039 --> 00:19:54,640
half a second, so within a half a second of

372
00:19:54,680 --> 00:19:58,160
that release, we know what you're asking for, and at

373
00:19:58,160 --> 00:20:01,519
that point we throw it up to open end. Right,

374
00:20:01,559 --> 00:20:04,480
and we also include with that a lot of context

375
00:20:05,079 --> 00:20:10,319
and a lot of detail that opening eye can use

376
00:20:10,359 --> 00:20:11,400
to figure out what you mean.

377
00:20:11,599 --> 00:20:15,160
Speaker 1: Let's talk about context, okay, sure, Yeah. So one of

378
00:20:15,200 --> 00:20:17,400
the things I like about chat GPT and I pay

379
00:20:17,440 --> 00:20:21,039
for the premium version, is that it has it remembers

380
00:20:21,079 --> 00:20:25,640
a lot about you know, it knows that I primarily

381
00:20:25,680 --> 00:20:28,559
work in Blazer. It knows, so therefore when I say

382
00:20:28,599 --> 00:20:30,799
I got this new application and I got this file here,

383
00:20:30,799 --> 00:20:33,880
it knows it's a Blazer app. Nless I tell it otherwise. Yeah,

384
00:20:33,920 --> 00:20:37,359
so it has a history and a lot of these agents,

385
00:20:37,519 --> 00:20:41,079
and I know the Microsoft Copilot agent does not have

386
00:20:41,160 --> 00:20:45,039
this memory, and I think you said that Code Rush

387
00:20:45,079 --> 00:20:50,079
doesn't either. But it does understand the context of your application, right.

388
00:20:50,039 --> 00:20:54,519
Speaker 3: Yeah, yes, it does, so just briefly, no history yet,

389
00:20:54,599 --> 00:20:58,920
it's stateless right now, right, But we're leaning in a direction.

390
00:20:58,960 --> 00:21:05,119
We're considering a move towards a essentially a summarized history

391
00:21:05,920 --> 00:21:08,799
in case you want to reference something you've done before.

392
00:21:08,559 --> 00:21:10,759
Speaker 1: But that takes more tokens and costs more money and

393
00:21:10,839 --> 00:21:12,839
blah blah, so they have to be an option, right.

394
00:21:13,079 --> 00:21:16,319
Speaker 3: Well, yeah, well that's why I'm saying summarized. In other words,

395
00:21:16,400 --> 00:21:19,240
brief really a brief history, but so that we can

396
00:21:19,279 --> 00:21:22,640
get context. So let's just I just want to say

397
00:21:22,680 --> 00:21:26,400
that this version that's coming out effectively, I think tomorrow

398
00:21:26,440 --> 00:21:28,880
from our recording date, so should already be out by

399
00:21:28,880 --> 00:21:33,079
the time you're there from the Code Rush. This version

400
00:21:33,440 --> 00:21:36,160
is what I call one point zero, but there is

401
00:21:36,240 --> 00:21:40,400
already a strongly visualized two point zero version of this

402
00:21:40,960 --> 00:21:43,759
that we are going to commence work on essentially tomorrow

403
00:21:44,279 --> 00:21:47,039
that is going to take things to a whole new

404
00:21:47,119 --> 00:21:49,039
level of what I think is you know, if you

405
00:21:49,079 --> 00:21:51,000
want to call it the mind blowing scale, we're going

406
00:21:51,039 --> 00:21:53,960
to go from this version I call this a five,

407
00:21:54,000 --> 00:21:55,799
and we're going to go to a ten. Yeah, you know,

408
00:21:55,839 --> 00:21:58,279
we're going to get to this killer level and we're

409
00:21:58,279 --> 00:22:01,440
going to solve this. But so briefly, the history right now,

410
00:22:01,440 --> 00:22:05,920
it's stateless, yeah okay, but with regards to context, the

411
00:22:06,000 --> 00:22:12,359
context is rich. We send, for example, a summary of

412
00:22:12,440 --> 00:22:14,400
what's going on with the project, what your new get

413
00:22:14,440 --> 00:22:18,400
packages are, that sort of thing. We send the current file,

414
00:22:18,440 --> 00:22:20,599
we send code behind or the designer if you're in

415
00:22:20,599 --> 00:22:23,440
one of those two files, right. You can also do

416
00:22:23,519 --> 00:22:27,519
things like say, if you mentioned the word clipboard, there's

417
00:22:27,640 --> 00:22:31,279
a something called triggered prompts, and it detects for that

418
00:22:31,359 --> 00:22:34,519
word click clipboard and then adds an additional prompt that

419
00:22:34,559 --> 00:22:36,480
sets out and says the contents so my clipboard are

420
00:22:36,839 --> 00:22:37,839
and shows what they are.

421
00:22:37,960 --> 00:22:41,160
Speaker 1: And I like that because it's contextual, like a system prompt.

422
00:22:41,640 --> 00:22:46,880
Even in GitHub Copilot is copilot, dash instructions, dot MD,

423
00:22:47,039 --> 00:22:48,839
and I think you put in a dot GitHub folder

424
00:22:48,839 --> 00:22:51,759
if my memory serves and it's general, it gets sent

425
00:22:51,839 --> 00:22:56,799
with every single you know, user yeah, but I like

426
00:22:56,960 --> 00:22:59,599
the way that you have broken these out into contextuals

427
00:22:59,599 --> 00:23:00,759
based on keywords and things.

428
00:23:00,880 --> 00:23:02,799
Speaker 3: Yeah, and no, we did have by the way, we

429
00:23:02,960 --> 00:23:05,640
worked on a feature that allowed me to like hold

430
00:23:05,720 --> 00:23:07,960
down the alt key and say the name of a

431
00:23:08,000 --> 00:23:11,880
class and then release it. But we are not documenting that.

432
00:23:12,240 --> 00:23:17,039
We're essentially not gonna We're not going forward with that feature.

433
00:23:17,440 --> 00:23:20,440
We're instead going forward with a you can talk about

434
00:23:20,480 --> 00:23:23,720
any class you want and we'll figure it out. That's

435
00:23:23,759 --> 00:23:26,319
not now, that'll be in version two. Nice, So version

436
00:23:26,400 --> 00:23:31,880
in version two you'll be able to effortlessly, AI will

437
00:23:31,880 --> 00:23:35,400
be able to infer what you mean, what you're talking about,

438
00:23:35,680 --> 00:23:39,519
which will impact the context that we submit to AI.

439
00:23:40,160 --> 00:23:43,559
So so we're going to solve all this in the

440
00:23:43,599 --> 00:23:45,960
two point zero I guess I shouldn't be talking about

441
00:23:45,960 --> 00:23:48,119
this so much, but but what we do now is

442
00:23:48,160 --> 00:23:50,960
a relatively rich context. So if I want to work

443
00:23:51,000 --> 00:23:52,920
with another file and I want to work with it

444
00:23:52,960 --> 00:23:56,599
in this file, like say, for example, I'm a Zambal

445
00:23:56,680 --> 00:23:58,640
designer and I want to create a data grid and

446
00:23:58,680 --> 00:24:02,200
I want to do data binding on a particular control class,

447
00:24:02,559 --> 00:24:05,519
I can copy that class to the clipboard and then say, hey,

448
00:24:05,519 --> 00:24:07,839
I want to create a data grid here, and I

449
00:24:07,880 --> 00:24:12,640
wanted to have instances of this customer class, and I

450
00:24:12,720 --> 00:24:15,759
want in the code behind for you to create fifty

451
00:24:17,000 --> 00:24:20,920
sample records that have realistic looking data sample data so

452
00:24:20,960 --> 00:24:22,519
I can try this out and work on the UI.

453
00:24:22,599 --> 00:24:23,519
And then that's my problem.

454
00:24:23,599 --> 00:24:26,480
Speaker 1: I saw this. I saw this myself, that you did that.

455
00:24:26,640 --> 00:24:30,359
And I want to talk about the speed too, because

456
00:24:30,759 --> 00:24:34,440
in the demo that I did and blazer Train, I

457
00:24:34,519 --> 00:24:37,400
basically created these long prompts. I could create a one

458
00:24:37,480 --> 00:24:40,319
prompt to create a data manager for every model and

459
00:24:40,359 --> 00:24:43,000
the models folder, which there was like twelve or thirteen, right.

460
00:24:43,000 --> 00:24:45,880
I did it against north Wind, and I said, create

461
00:24:45,920 --> 00:24:48,039
a data manager, and I want creud methods for each

462
00:24:48,079 --> 00:24:51,000
one of these using ado dot net objects and blah

463
00:24:51,039 --> 00:24:56,279
blah blah. Trycatch and here's some return class types. Right, success,

464
00:24:56,359 --> 00:24:59,279
failure the data and then error messages. That kind of

465
00:24:59,279 --> 00:25:03,440
simple thing. Yeah, and you it basically took like fifteen

466
00:25:03,519 --> 00:25:06,839
minutes for it to do that and come back and say, yeah,

467
00:25:06,880 --> 00:25:10,440
here's your you know, here's the here's the change set

468
00:25:10,480 --> 00:25:12,240
that I'm going to check in or that that you

469
00:25:12,279 --> 00:25:16,359
can check out. But I like the way that code

470
00:25:16,440 --> 00:25:18,359
rush works because if I was going to do that,

471
00:25:18,480 --> 00:25:20,920
I would create the data manage your class skeleton, or

472
00:25:20,920 --> 00:25:23,160
I would tell it to and then I would say, hey,

473
00:25:23,240 --> 00:25:27,400
let's create cred methods for the album or the artist

474
00:25:27,559 --> 00:25:31,480
or the customer or whatever, and just inspect those because

475
00:25:31,519 --> 00:25:34,079
that would take like no time at all for code

476
00:25:34,160 --> 00:25:36,839
Rush to do. I have a feeling, yeah, and then

477
00:25:37,000 --> 00:25:39,920
and then from there I would tweak that and say, okay,

478
00:25:39,960 --> 00:25:43,240
now let's duplicate this for all of the other models. Sure,

479
00:25:43,319 --> 00:25:44,920
which is something I wouldn't have had a chance to

480
00:25:44,920 --> 00:25:47,519
do if I because I used a big prompt like that.

481
00:25:47,720 --> 00:25:48,160
Speaker 2: Right. Yeah.

482
00:25:48,160 --> 00:25:50,240
Speaker 3: I actually saw an example today where I was in

483
00:25:50,319 --> 00:25:53,759
one class that had implemented I property notified change. I

484
00:25:53,799 --> 00:25:56,519
asked for a new class, just saying here's the properties

485
00:25:56,559 --> 00:25:59,440
I need, and it because I started in a class

486
00:26:00,160 --> 00:26:02,839
had this style it built it followed the same style

487
00:26:02,880 --> 00:26:04,720
in the second class, which is interesting.

488
00:26:04,759 --> 00:26:05,119
Speaker 2: Nice.

489
00:26:05,240 --> 00:26:09,039
Speaker 3: But with regards to speed, we have totally solved the

490
00:26:09,079 --> 00:26:12,799
speed problem, like really really solved it well. If you

491
00:26:12,880 --> 00:26:18,960
compare the code rush aigen feature against leading competing AI tools,

492
00:26:19,440 --> 00:26:22,160
it can be up to ten or one hundred times

493
00:26:22,200 --> 00:26:25,480
faster than the other tools, depending on what you're doing

494
00:26:25,480 --> 00:26:27,839
and what's going on. It is and at the very

495
00:26:28,039 --> 00:26:31,640
least it is a little bit faster, right, it's about

496
00:26:31,640 --> 00:26:34,200
five percent faster if anything.

497
00:26:33,799 --> 00:26:37,759
Speaker 1: Else, so five to one hundred times faster, five percent

498
00:26:37,799 --> 00:26:38,480
to one hundred times.

499
00:26:38,559 --> 00:26:41,319
Speaker 3: No, it's like five to ten thousand percent faster. It

500
00:26:41,599 --> 00:26:43,920
depends on what you're looking at and what you're doing.

501
00:26:44,119 --> 00:26:47,200
But in some cases, and basically what the I guess

502
00:26:47,200 --> 00:26:50,319
the secret the big reveal there is the leading tools

503
00:26:50,319 --> 00:26:54,480
that are out there have not addressed performance in terms

504
00:26:54,559 --> 00:27:02,039
of the integration of AI results with code. They've not.

505
00:27:02,720 --> 00:27:04,640
It seems pretty clear to me at this point that

506
00:27:04,680 --> 00:27:08,400
in the current versions that I'm looking at, they that

507
00:27:08,559 --> 00:27:10,680
is not a concern. That's not something that looked at

508
00:27:10,920 --> 00:27:13,079
or not even something that they've conceived of that they

509
00:27:13,160 --> 00:27:16,559
could actually do faster. Wow, And that is that's you know,

510
00:27:16,559 --> 00:27:18,759
when I was talking about these different criteria, these different

511
00:27:18,759 --> 00:27:21,319
cross sections for how you evaluate something.

512
00:27:21,440 --> 00:27:24,640
Speaker 1: Speed is one of those Yes, yeah.

513
00:27:24,440 --> 00:27:27,160
Speaker 3: And from and why And I'll give everybody the big

514
00:27:27,200 --> 00:27:30,119
secret here. I'll tell you what the secret, sauce is.

515
00:27:30,160 --> 00:27:32,440
How we're able to do it is that we make

516
00:27:32,519 --> 00:27:35,240
it so that when AI comes back, it doesn't have

517
00:27:35,319 --> 00:27:38,200
to be flowery. It doesn't have to give me the

518
00:27:38,240 --> 00:27:41,480
whole class. It can just give me the changes. And

519
00:27:41,519 --> 00:27:44,880
because it's just giving me the changes, I'm sending back

520
00:27:44,920 --> 00:27:49,680
fewer tokens, which means it's cheaper, it's faster, and it

521
00:27:49,680 --> 00:27:51,519
has a lower environmental impact.

522
00:27:52,160 --> 00:27:54,640
Speaker 1: Because your code rush, you know exactly where the code

523
00:27:54,640 --> 00:27:57,640
should go when it comes back. Yeah, so you do

524
00:27:57,759 --> 00:27:58,359
that part of it.

525
00:27:58,480 --> 00:27:59,480
Speaker 3: Yeah, we do all that part.

526
00:27:59,559 --> 00:28:01,799
Speaker 1: So, yeah, you do everything from visual studio.

527
00:28:02,039 --> 00:28:05,839
Speaker 3: Yeah. So the agent technology that's inside code rush is

528
00:28:05,960 --> 00:28:09,440
essentially an expert at taking the response back from AI

529
00:28:10,039 --> 00:28:14,559
and immediately folding it back in the But the speed

530
00:28:14,559 --> 00:28:19,160
benefits are really all gained in conversation with AI. That's

531
00:28:19,200 --> 00:28:21,440
where they are. And nobody's doing this yet because you

532
00:28:21,440 --> 00:28:22,640
can tell because they're so slow.

533
00:28:22,920 --> 00:28:25,440
Speaker 2: Yeah, just what are you truly changing the workflow? You're

534
00:28:25,480 --> 00:28:26,960
just speeding up my existing workflow.

535
00:28:27,039 --> 00:28:29,039
Speaker 3: Yeah, I'm speeding up your existing workflow.

536
00:28:28,720 --> 00:28:30,440
Speaker 2: Yeah, which is what you've always done.

537
00:28:30,519 --> 00:28:32,440
Speaker 3: I'm changing it in a way and that now you

538
00:28:32,480 --> 00:28:35,599
can ask more effortlessly and get the answer and see

539
00:28:35,599 --> 00:28:39,039
the results more quickly. And so because that offer is

540
00:28:39,079 --> 00:28:43,000
now available, you lean into that offer more frequently. I

541
00:28:43,039 --> 00:28:46,200
think and so there's kind of this natural change where

542
00:28:46,200 --> 00:28:48,319
you're like, oh, they this tool is pretty cool. Let

543
00:28:48,319 --> 00:28:50,400
me try this. I'm going to slash, you know, try

544
00:28:50,440 --> 00:28:52,359
to slash away at this problem.

545
00:28:52,480 --> 00:28:54,480
Speaker 2: Right, But this also seems like not an all in

546
00:28:54,759 --> 00:28:58,240
like do everything through Agentic that you're still doing your

547
00:28:58,279 --> 00:29:01,480
own coding. There some hints from these tools.

548
00:29:01,880 --> 00:29:03,799
Speaker 3: Yes, yeah, it's very much in that space.

549
00:29:03,920 --> 00:29:04,160
Speaker 2: Yeah.

550
00:29:04,200 --> 00:29:07,680
Speaker 3: Like, often I'm like just writing code normally, and then

551
00:29:07,720 --> 00:29:09,720
i might be in a place where I'm like, okay, wait,

552
00:29:09,880 --> 00:29:12,400
I don't know how to do this. This involves some

553
00:29:12,519 --> 00:29:16,000
new framework or new new thing I've never touched before,

554
00:29:16,480 --> 00:29:19,000
and I just ask, right, and I just get it

555
00:29:19,039 --> 00:29:21,240
and I take a look at it. And often I'm

556
00:29:21,279 --> 00:29:23,480
delighted because I'm learning at the same time when I

557
00:29:23,480 --> 00:29:26,680
see it come in. Sometimes I ask for something that's

558
00:29:26,720 --> 00:29:29,240
like a tedious thing, and I'm delighted because I see

559
00:29:29,720 --> 00:29:32,480
a new way of doing it that I didn't know before,

560
00:29:32,880 --> 00:29:35,920
for example, which is also kind of a cool learning experience.

561
00:29:36,119 --> 00:29:39,200
Speaker 2: Yeah. Yeah, but I also could see, like with the

562
00:29:39,240 --> 00:29:44,400
Agenic thing, there's sort of scut work coding that you

563
00:29:44,440 --> 00:29:46,400
could do, but it's easier just to hand it to

564
00:29:46,400 --> 00:29:47,279
the tool. Let it generate.

565
00:29:47,559 --> 00:29:49,319
Speaker 1: Yeah, hey, this sounds like a good place to take

566
00:29:49,319 --> 00:29:51,160
a break. So we'll be right back after these very

567
00:29:51,160 --> 00:29:53,279
important messages. And as a reminder, if you don't want

568
00:29:53,279 --> 00:29:56,240
to hear these messages, you can opt for an ad

569
00:29:56,279 --> 00:30:00,200
free feed by becoming a patron. Got a patreon, dot

570
00:30:00,319 --> 00:30:05,039
dot nerocks dot com. We'll be right back. You know,

571
00:30:05,200 --> 00:30:08,200
dot net six has officially reached the end of support,

572
00:30:08,279 --> 00:30:11,240
and now is the time to upgrade. Dot Net eight

573
00:30:11,359 --> 00:30:15,400
is well supported on aws. Learn more at aws dot

574
00:30:15,440 --> 00:30:22,799
Amazon dot com, slash dot net. All right, we're back.

575
00:30:23,119 --> 00:30:25,960
It's dot net rocks. I'm Carl Franklin. That's Richard Campbell, hey,

576
00:30:26,079 --> 00:30:30,200
and that's Mark Mellers Mela, Mark Miller. All right, all right,

577
00:30:30,279 --> 00:30:37,000
so I have another question. Is you support what project

578
00:30:37,000 --> 00:30:39,920
types now and what project types will you be supporting

579
00:30:39,920 --> 00:30:40,400
in the future.

580
00:30:40,519 --> 00:30:44,440
Speaker 3: Okay, so that's a great question. It's our In terms

581
00:30:44,440 --> 00:30:47,759
of project types, it's basically, if you can hold onto

582
00:30:47,839 --> 00:30:51,519
c sharp, we support that project type. So we support

583
00:30:52,480 --> 00:30:55,880
c sharp, and we support right now is examal and

584
00:30:55,960 --> 00:30:58,640
so all the various flavors of that. Right so that

585
00:30:59,359 --> 00:31:04,720
if you're working or just WPF or whatever way you

586
00:31:04,759 --> 00:31:08,200
can work in that conver that that combination. If you're

587
00:31:08,240 --> 00:31:11,440
working in other UI frameworks that are not supported, but

588
00:31:11,559 --> 00:31:14,240
you're still working in c sharp, we've got to cover

589
00:31:14,359 --> 00:31:15,200
on the c sharp.

590
00:31:15,039 --> 00:31:16,680
Speaker 1: Side of it, right, But for now, you wouldn't be

591
00:31:16,720 --> 00:31:18,720
able to say, hey, build me a form in Blazer

592
00:31:18,759 --> 00:31:21,079
that calls into these methods.

593
00:31:20,720 --> 00:31:23,640
Speaker 3: Right, No, we cannot do that. Now. Now we're we

594
00:31:23,720 --> 00:31:26,599
are close again, and the two version of this, the

595
00:31:26,640 --> 00:31:28,480
two version, a couple of things are coming into A

596
00:31:28,519 --> 00:31:31,640
one is Blazer support will be coming great. And a

597
00:31:31,720 --> 00:31:34,200
second thing that we have there's a current limitation is

598
00:31:34,200 --> 00:31:36,720
the only way we can create new files right now

599
00:31:37,000 --> 00:31:38,599
is by creating a new class.

600
00:31:38,880 --> 00:31:39,240
Speaker 2: Okay.

601
00:31:39,359 --> 00:31:42,160
Speaker 3: So in other words, there's no way for us to

602
00:31:42,160 --> 00:31:44,599
have a conversation with AI where a AI comes back

603
00:31:44,640 --> 00:31:46,799
and says, here's a new dot Razor file and here's

604
00:31:46,799 --> 00:31:50,359
a new Dot Sammle file that doesn't that's currently not happening.

605
00:31:50,799 --> 00:31:52,880
It's not hard to get there. But we wanted to ship,

606
00:31:52,920 --> 00:31:56,000
and so we're shipping what we have now. Okay makes sense?

607
00:31:56,240 --> 00:32:02,359
Speaker 1: Yeah, I wrote an agent myself in WPF that used

608
00:32:02,359 --> 00:32:05,640
the open AI and I got the response back and

609
00:32:05,720 --> 00:32:08,559
parsed out all the comments. So that I just got

610
00:32:08,559 --> 00:32:12,160
the code and then I could tell it to you know,

611
00:32:12,319 --> 00:32:15,799
write code files. And it does, but I have to

612
00:32:15,920 --> 00:32:21,559
use I basically inject into the thing that does that,

613
00:32:22,359 --> 00:32:26,200
compile it to Roslin and inject in system io and

614
00:32:26,279 --> 00:32:30,359
things like that, so it can actually write files. But yeah,

615
00:32:30,440 --> 00:32:33,240
it takes the result that comes back, compiles it with

616
00:32:33,359 --> 00:32:37,160
Roslin after you inspect it, of course, and that can

617
00:32:37,279 --> 00:32:40,119
also create files and things. Yeah, but it was a

618
00:32:40,160 --> 00:32:43,480
fun exercise, but it's nothing compared to what the actual

619
00:32:43,599 --> 00:32:44,319
real tools do.

620
00:32:44,519 --> 00:32:44,759
Speaker 2: Yeah.

621
00:32:44,799 --> 00:32:47,759
Speaker 3: So when we're talking about that, right, the inspection, right,

622
00:32:47,880 --> 00:32:52,119
and this idea of user interface, right, one of the

623
00:32:52,119 --> 00:32:55,279
things that happens. I think in a lot of places,

624
00:32:55,720 --> 00:32:59,240
a lot of tooling will give you that inspection phase

625
00:32:59,559 --> 00:33:03,680
in it beforehand in another window. And our approach instead

626
00:33:03,759 --> 00:33:06,880
is let's make the code changes, inject them everywhere, but

627
00:33:07,000 --> 00:33:10,480
give you a really high quality tool for navigating among

628
00:33:10,759 --> 00:33:14,119
all those changes, navigating through all those changes. And I

629
00:33:14,200 --> 00:33:17,400
think that the latter approach is certainly better for.

630
00:33:17,279 --> 00:33:19,319
Speaker 1: This this feeling.

631
00:33:19,079 --> 00:33:21,200
Speaker 3: Of I'm going to I'm going to go after this,

632
00:33:21,319 --> 00:33:24,720
I'm speaking with intensing what I want, so why not

633
00:33:24,880 --> 00:33:26,960
just give it to you faster by putting it right

634
00:33:26,960 --> 00:33:28,920
there in the code. Right, If you think about it,

635
00:33:28,920 --> 00:33:30,559
if I have to go to another window and I'm

636
00:33:30,559 --> 00:33:32,680
looking at code, sometimes I'm looking at code in that

637
00:33:32,720 --> 00:33:35,319
other window and talking about other tools. I'm looking at code.

638
00:33:35,599 --> 00:33:39,799
That is where a small change is among a giant

639
00:33:40,480 --> 00:33:43,559
reproduction of all the code I had, right, and I

640
00:33:43,599 --> 00:33:46,279
have to scroll up and down, visually scan it, then

641
00:33:46,359 --> 00:33:48,799
copy it, maybe copy a feel and go paste it in.

642
00:33:49,119 --> 00:33:51,319
Maybe it's in sections and I have to go copy

643
00:33:51,359 --> 00:33:53,559
one and paste it in, copy another, paste it in.

644
00:33:53,839 --> 00:33:55,599
Or maybe there's a button I can click and it

645
00:33:55,640 --> 00:33:57,200
puts it in. But still I got to click and

646
00:33:57,240 --> 00:33:59,160
wait and then go to the other one, click and

647
00:33:59,200 --> 00:34:01,839
wait and do that. And there's this whole thing where

648
00:34:01,880 --> 00:34:04,559
you're not in the editor, right. And and what I'm

649
00:34:04,559 --> 00:34:06,920
trying to do here is we're you know, with all

650
00:34:06,960 --> 00:34:08,840
of the tooling that we're trying to, you know, create

651
00:34:09,199 --> 00:34:11,599
is make it so that look, we are not leaving

652
00:34:11,639 --> 00:34:14,679
the editor, right the editors where we stay. The editor

653
00:34:14,800 --> 00:34:17,719
is our world. That's the world we you know, we

654
00:34:17,840 --> 00:34:21,119
slash and build in you know, we create, and we

655
00:34:21,199 --> 00:34:23,599
go after the tasks and the challenges there in the editor.

656
00:34:23,679 --> 00:34:26,519
So there's just no way, we're leaving that space. And

657
00:34:26,559 --> 00:34:30,119
as a result, it's more effortless, the cognitive load is lower,

658
00:34:30,679 --> 00:34:32,280
and as and the other things.

659
00:34:32,280 --> 00:34:32,719
Speaker 1: You have this.

660
00:34:33,159 --> 00:34:36,239
Speaker 3: Oh, I just I wanted something that was tedious and

661
00:34:36,280 --> 00:34:38,559
I and now I have it. Well, I'm ready to

662
00:34:38,679 --> 00:34:40,880
you know, I'm still refreshed. I'm ready to keep going.

663
00:34:41,159 --> 00:34:42,679
Speaker 2: Yeah right, yeah.

664
00:34:42,760 --> 00:34:44,639
Speaker 1: So one of the problems that I have with the

665
00:34:44,679 --> 00:34:51,159
open AI for code and even the co pilot, the

666
00:34:51,199 --> 00:34:56,639
getthub copilot coding agent, is that it's nondeterministic. So I

667
00:34:56,679 --> 00:35:00,079
give if I gave it the same prompt twice the

668
00:35:00,079 --> 00:35:03,239
second time, I may come back with you know, I

669
00:35:03,280 --> 00:35:05,880
had this problem with it creating a data manager. It

670
00:35:05,960 --> 00:35:09,079
decided to break that out into three partial classes, which

671
00:35:09,119 --> 00:35:12,599
wouldn't be bad except that one of two of the

672
00:35:12,800 --> 00:35:15,960
partial classes had the same method in it, and you know,

673
00:35:16,159 --> 00:35:19,320
I had to specifically tell it, don't use partial classes,

674
00:35:19,320 --> 00:35:22,079
put in everything in one class, and don't have any

675
00:35:22,159 --> 00:35:24,400
duplicate methods. I had to tell it that.

676
00:35:24,480 --> 00:35:27,440
Speaker 3: Yeah, yeah, you know, yeah, yeah, I was just gonna say, well,

677
00:35:27,559 --> 00:35:29,760
when you first said it's non deterministic, I'm like, welcome

678
00:35:29,800 --> 00:35:33,360
to AI. And then as you were talking, I was thinking, well,

679
00:35:33,440 --> 00:35:36,760
you can kind of control it, corral it in a bit, right,

680
00:35:36,800 --> 00:35:40,119
you could do that. I actually find that one of

681
00:35:40,159 --> 00:35:43,199
the things that's useful is if I see like this

682
00:35:43,320 --> 00:35:47,480
kind of variance and it goes against my style, I

683
00:35:47,559 --> 00:35:49,440
kind of put in like these what we call the

684
00:35:50,199 --> 00:35:53,639
system kind of system proplems add ons to the prompt, right, right,

685
00:35:53,679 --> 00:35:55,800
so that no matter what it'll say, hey, I always

686
00:35:55,960 --> 00:35:59,119
like to use the latest fluent assertions or something like

687
00:35:59,159 --> 00:36:00,000
that in my test case.

688
00:36:00,360 --> 00:36:03,480
Speaker 2: Yes, yes, right, I guess what I'm saying is.

689
00:36:03,360 --> 00:36:06,280
Speaker 3: I just those are those are ways that you can

690
00:36:06,400 --> 00:36:09,280
kind of get to there's you know, it's it's still

691
00:36:09,320 --> 00:36:12,599
not deterministic, but you're getting closer, right, You're getting.

692
00:36:12,599 --> 00:36:16,199
Speaker 1: Yeah, getting closer. Yeah, you're tweaking it. I found that

693
00:36:16,239 --> 00:36:21,559
the coding agent like to downgrade to from dot net

694
00:36:21,679 --> 00:36:23,199
nine to dot net eight constantly.

695
00:36:23,239 --> 00:36:25,320
Speaker 2: Yes, yes, I've seen that before too.

696
00:36:25,599 --> 00:36:28,199
Speaker 1: It's in my system prompt and it's in my user prompt,

697
00:36:28,199 --> 00:36:30,119
and then it still doesn't and I say, do not

698
00:36:30,800 --> 00:36:34,320
downgrade you know, oh okay, oh yeah, yeah.

699
00:36:34,320 --> 00:36:37,320
Speaker 3: So this is really interesting. So one of the things

700
00:36:37,320 --> 00:36:40,920
I've discovered when you're working with working with code that's

701
00:36:40,960 --> 00:36:47,079
being generated off of sources that have changed over time. Right,

702
00:36:47,159 --> 00:36:50,639
classic example is end unit test cases. Right. They used

703
00:36:50,679 --> 00:36:53,480
to be able to say a cert dot is true,

704
00:36:54,000 --> 00:36:57,519
and now they essentially broke that. And now you've got

705
00:36:57,519 --> 00:37:01,280
to say, now the code you often wanted to be

706
00:37:01,320 --> 00:37:05,800
a cert dot that. Right, So if you have essentially

707
00:37:05,800 --> 00:37:08,239
breaking changes or code, that is the way you do

708
00:37:08,320 --> 00:37:11,159
it has changed over time. And AI is saying, well,

709
00:37:11,159 --> 00:37:14,880
I'm scanning everything for the answer, right, then you're gonna

710
00:37:14,960 --> 00:37:19,320
you're gonna get this kind of variance more often. And

711
00:37:19,480 --> 00:37:22,239
the the more either edge case it is, in other words,

712
00:37:22,280 --> 00:37:25,079
the fewer examples there are, or the more that they've

713
00:37:25,119 --> 00:37:30,679
broken it over time, right, the more this variance occurs. Right,

714
00:37:30,719 --> 00:37:33,440
And you really, you really, you really start to need

715
00:37:33,480 --> 00:37:38,199
to corral things in with these very explicit pieces. But

716
00:37:38,239 --> 00:37:41,920
what's interesting is that, like one of the things that

717
00:37:41,920 --> 00:37:43,920
we had to do to build this right, Essentially, one

718
00:37:43,920 --> 00:37:46,760
of the things that our agent does is our agent

719
00:37:47,039 --> 00:37:51,760
allows for variance to come back from AI and it

720
00:37:51,840 --> 00:37:54,880
gets it back in the right place. So so we've

721
00:37:54,880 --> 00:37:58,239
got like a ton of code that and test cases

722
00:37:58,599 --> 00:38:05,039
that are all based around this idea of defense against hallucinations. Right, sure,

723
00:38:05,760 --> 00:38:10,719
and so when a hallucination comes like it's we as

724
00:38:10,719 --> 00:38:12,880
soon as we spot it, it's like gold to us,

725
00:38:13,000 --> 00:38:16,519
right yeah, we're like you grab it and we have.

726
00:38:17,239 --> 00:38:19,519
One of the things that's really cool about our implementation

727
00:38:19,719 --> 00:38:23,119
is that for every interaction you do, you do there's

728
00:38:23,119 --> 00:38:24,800
a log file that's created.

729
00:38:25,000 --> 00:38:26,800
Speaker 2: Yes, I saw these amazing.

730
00:38:27,000 --> 00:38:29,079
Speaker 3: So a couple of things that are beneficial about this

731
00:38:29,119 --> 00:38:32,360
one is that log file is beneficial if you're ever

732
00:38:32,400 --> 00:38:39,360
going to exploit the the ind nification against copyright which

733
00:38:39,400 --> 00:38:43,320
is offered by AI tooling right writ shout GBT has

734
00:38:43,320 --> 00:38:44,840
something along the lines.

735
00:38:44,719 --> 00:38:47,199
Speaker 1: Because you have a log for the prompt, you have

736
00:38:47,239 --> 00:38:50,280
a log for the return, yes, and then you have

737
00:38:50,400 --> 00:38:53,239
other logs, but they're individual logs yes.

738
00:38:53,280 --> 00:38:55,880
Speaker 3: And therefore, so for each request you make, there are

739
00:38:55,960 --> 00:38:59,599
essentially four logs that are generated and and that gives

740
00:38:59,599 --> 00:39:03,840
you a fleet verifiable audit trail and audit auditible trail

741
00:39:04,199 --> 00:39:07,719
in terms of what how I have used ai UH

742
00:39:07,760 --> 00:39:12,159
in this application and how I've integrated the One of

743
00:39:12,159 --> 00:39:15,480
those four files that we create has a dot test extension,

744
00:39:15,880 --> 00:39:19,280
and that dot test extension is a test case that

745
00:39:19,360 --> 00:39:21,800
if you had problems or something didn't work the way

746
00:39:21,840 --> 00:39:25,320
you were expecting you contact support as it Support might

747
00:39:25,360 --> 00:39:27,360
ask for the test case. You could send it, and

748
00:39:27,400 --> 00:39:31,440
that test case would allow us to reproduce that scenario.

749
00:39:32,000 --> 00:39:36,159
And that's how we've grabbed onto these hallucinations so so

750
00:39:36,559 --> 00:39:39,320
fast and quickly. Right when we when we see a problem,

751
00:39:39,360 --> 00:39:41,880
it's gold because we grab that test case and we

752
00:39:41,920 --> 00:39:44,280
go put it in and then we start looking at it.

753
00:39:44,320 --> 00:39:46,920
How do we you know, what's what? We look at it?

754
00:39:46,920 --> 00:39:50,920
We analyze what are the chances that hallucination happens again? Right?

755
00:39:50,960 --> 00:39:54,400
How do we what defensive code can we add? And

756
00:39:54,440 --> 00:39:58,760
what's interesting is we have a very specific spec that

757
00:39:58,840 --> 00:40:03,079
we deliver open A but we have a very wide

758
00:40:03,159 --> 00:40:06,400
tolerance for what open AI can come back with. Right.

759
00:40:07,079 --> 00:40:10,320
What we tolerate is would be in normal scenarios would

760
00:40:10,320 --> 00:40:12,800
because I think a lot of people would almost consider

761
00:40:12,840 --> 00:40:18,079
that's ridiculous in terms of how much variance or or

762
00:40:18,440 --> 00:40:21,519
you know from the spec you're allowing for, right, you know,

763
00:40:21,599 --> 00:40:25,480
but we were basically allowing for open eye to respond

764
00:40:25,599 --> 00:40:28,920
back with things that are almost completely wrong and then

765
00:40:28,960 --> 00:40:29,679
we fix them.

766
00:40:29,760 --> 00:40:32,519
Speaker 1: So there is a temperature setting right when you when

767
00:40:32,559 --> 00:40:35,559
you issue an API command.

768
00:40:35,800 --> 00:40:38,400
Speaker 3: Yes, we're not touching that or playing with that at all.

769
00:40:38,440 --> 00:40:40,519
Speaker 2: You're using the default. So what is the default?

770
00:40:40,559 --> 00:40:44,280
Speaker 1: Like a very low temperature, so low tolerance for hallucinations,

771
00:40:44,320 --> 00:40:44,840
like zero.

772
00:40:45,079 --> 00:40:47,239
Speaker 3: Yeah, I understanding is that I don't know if it's

773
00:40:47,320 --> 00:40:49,000
zero or not, but I'm understanding it's pretty low.

774
00:40:49,079 --> 00:40:49,719
Speaker 2: It's pretty low.

775
00:40:49,800 --> 00:40:52,400
Speaker 3: Yeah, yeah, yeah, and it might be even lower when

776
00:40:52,440 --> 00:40:53,960
you're doing code related requests.

777
00:40:54,320 --> 00:40:56,199
Speaker 2: I imagine it should be. I'm also thinking about what

778
00:40:56,280 --> 00:40:59,800
Carl talked about with the system MD, like shouldn't have

779
00:40:59,800 --> 00:41:01,960
be this be stuff that's basically a part of every

780
00:41:01,960 --> 00:41:06,880
prompt every time, like resist hallucination, make sure it's accurate.

781
00:41:07,159 --> 00:41:09,519
I keep reading about folks doing agenda GAI, where it's like,

782
00:41:10,079 --> 00:41:13,800
make sure you do every step. You know, you cannot

783
00:41:13,840 --> 00:41:16,360
proceed to the next thing without showing proof of this.

784
00:41:17,079 --> 00:41:20,440
Building more testing into each step so that it actually

785
00:41:20,880 --> 00:41:22,239
shows that the test passed.

786
00:41:22,719 --> 00:41:24,960
Speaker 1: What I think I hear Mark saying is that we're

787
00:41:25,000 --> 00:41:29,800
foregoing most of that in lieu of taking the stuff

788
00:41:29,800 --> 00:41:33,159
that comes back from it and using our own smarts

789
00:41:33,199 --> 00:41:35,679
to discern what is real and what's not.

790
00:41:35,960 --> 00:41:38,920
Speaker 3: Yeah. And also we're doing things a step at a time,

791
00:41:38,960 --> 00:41:44,679
and each step is directed as a developer directed action right,

792
00:41:44,719 --> 00:41:46,960
So the developer might say I need some test cases.

793
00:41:47,320 --> 00:41:49,159
And then the developer might say, okay, I want to

794
00:41:50,320 --> 00:41:52,760
All these test cases have got hard coded numbers inside

795
00:41:52,760 --> 00:41:55,039
of them, and I want to change that to be

796
00:41:55,400 --> 00:41:58,119
parameters to the test case and use the test case attribute.

797
00:41:58,480 --> 00:42:00,920
So convert all these test cases to me the more flexible,

798
00:42:01,039 --> 00:42:03,480
do that for me. And so that's the second step

799
00:42:03,559 --> 00:42:06,599
or whatever. And so the developers are doing these steps

800
00:42:06,679 --> 00:42:09,639
one at a time in our model, and so the

801
00:42:09,719 --> 00:42:14,519
developer essentially approves after each one. Right now. One of

802
00:42:14,559 --> 00:42:16,559
the piece is the things you mentioned there that I

803
00:42:16,599 --> 00:42:19,960
really like that we do not have yet, but I

804
00:42:20,000 --> 00:42:22,079
think some form of this is likely to come in

805
00:42:22,079 --> 00:42:26,639
the two point zero and that is the ability to

806
00:42:26,760 --> 00:42:31,280
validate or verify by looking at, for example, compiler errors

807
00:42:31,320 --> 00:42:34,360
after a build like before and after a build. Right,

808
00:42:34,679 --> 00:42:37,719
compiler always gets to say before and after a change,

809
00:42:37,760 --> 00:42:40,840
I mean not a build. Yeah, So I think that's interesting.

810
00:42:41,559 --> 00:42:45,440
That's a that's a really interesting piece. Giving giving that,

811
00:42:45,679 --> 00:42:49,000
including that as part of context, and make it triggerable.

812
00:42:49,239 --> 00:42:51,199
So if I use the word error, or I say

813
00:42:51,199 --> 00:42:55,039
the word fix, can you fix this something along those lines,

814
00:42:55,239 --> 00:42:56,880
it will say, well, what's going on.

815
00:42:56,880 --> 00:42:58,840
Speaker 1: In that list of triggered prompts that you showed me

816
00:42:58,880 --> 00:43:01,039
where you have like clipboard and then a prompt that

817
00:43:01,280 --> 00:43:05,000
has is there one? Can you set just a general

818
00:43:05,039 --> 00:43:07,960
system prompt in there that goes with every single request?

819
00:43:08,039 --> 00:43:10,840
Speaker 3: Yes, each one of those prompts has a regular expression

820
00:43:11,320 --> 00:43:14,639
that triggers it, and the regular expression essentially searching that text,

821
00:43:15,159 --> 00:43:17,280
that speech to text translation that came back.

822
00:43:17,320 --> 00:43:19,280
Speaker 1: So you get just to a wild card everything.

823
00:43:19,360 --> 00:43:22,679
Speaker 3: Yeah, you dude, dot star for the for the regular

824
00:43:22,719 --> 00:43:25,599
expression to match, and it'll match everything. But even with that,

825
00:43:25,679 --> 00:43:29,480
you can specify an additional code rush context, which could

826
00:43:29,519 --> 00:43:31,920
say something like that, make this happen only in see

827
00:43:31,920 --> 00:43:35,559
sharp files. Yes, we'll make this happen only when i'm uh,

828
00:43:35,599 --> 00:43:38,400
when there's a selection, or only when I'm debugging. Right,

829
00:43:38,480 --> 00:43:42,400
So you can set different contexts, rich control over that.

830
00:43:42,519 --> 00:43:44,320
Speaker 2: I love that. I love both, and that all.

831
00:43:44,199 --> 00:43:47,000
Speaker 3: Happens automatically, so you don't need to say any of

832
00:43:47,039 --> 00:43:48,079
those things. Right.

833
00:43:48,199 --> 00:43:48,840
Speaker 2: I like both.

834
00:43:48,880 --> 00:43:51,280
Speaker 1: I like having a general system prompt, and I also

835
00:43:51,400 --> 00:43:55,199
like having a context based triggered prompt. Yeah yeah, yeah,

836
00:43:55,559 --> 00:43:59,559
that's very very smart. Wow, I don't know where to go?

837
00:43:59,599 --> 00:44:01,880
Where else where else can we go besides Austin here.

838
00:44:02,239 --> 00:44:05,360
I mean, I'm blown away, right. You know, there is

839
00:44:05,400 --> 00:44:09,000
one thing that became a parent when we were talking

840
00:44:09,000 --> 00:44:11,440
about this, is that the way that I did it

841
00:44:11,559 --> 00:44:15,440
in my Blazer train thing was to create a big prompt,

842
00:44:15,480 --> 00:44:18,920
a big giant prompt, right, and then you know, like

843
00:44:19,079 --> 00:44:21,480
creating a data manager for example, that's got you know,

844
00:44:22,039 --> 00:44:26,159
fifty sixty methods. You know, we got cred methods for

845
00:44:26,519 --> 00:44:28,719
idio dot net for each of these models, let's say,

846
00:44:29,320 --> 00:44:32,119
and it takes you know, fifteen minutes, and then I

847
00:44:32,159 --> 00:44:35,320
can check it out and one at a time tweak things.

848
00:44:35,519 --> 00:44:35,719
Speaker 2: Right.

849
00:44:36,679 --> 00:44:41,280
Speaker 1: Well, that's a different way to approach. And if it

850
00:44:41,320 --> 00:44:43,599
doesn't work out, you can just blow the issue away

851
00:44:43,599 --> 00:44:48,519
and start again, right, Yeah, close the issue. But that's

852
00:44:48,559 --> 00:44:50,880
a different approach than what you're doing. What you're doing is,

853
00:44:50,920 --> 00:44:53,440
like you said, very close to the code, right, it's

854
00:44:53,519 --> 00:44:57,440
in the code. You're probably not doing big things like that.

855
00:44:57,639 --> 00:45:02,639
You might say, you know, do some data binding over

856
00:45:02,679 --> 00:45:07,320
this particular model or something like that in WPF and

857
00:45:07,400 --> 00:45:10,000
later in Blazer, but you would probably do them one

858
00:45:10,039 --> 00:45:14,599
at a time and in a more controlled way. It's

859
00:45:14,719 --> 00:45:17,719
kind of what I'm thinking. But it's two different ways

860
00:45:17,760 --> 00:45:18,280
to approach you.

861
00:45:18,320 --> 00:45:22,000
Speaker 3: Well, well, I do like I I kind of approach

862
00:45:22,079 --> 00:45:24,440
by groups. So like for data binding, for example, I

863
00:45:24,440 --> 00:45:26,559
would say, well, like, I want to I want you

864
00:45:27,000 --> 00:45:28,960
I've got a class on the clipboard. I want to

865
00:45:28,960 --> 00:45:29,719
do data binding.

866
00:45:29,800 --> 00:45:29,920
Speaker 1: All.

867
00:45:29,960 --> 00:45:32,559
Speaker 3: I want you to find all the controls on the

868
00:45:32,559 --> 00:45:37,199
form already and bind them to the appropriate properties in

869
00:45:37,239 --> 00:45:40,159
this class. So I'll do that. Or I'm like say, hey,

870
00:45:40,199 --> 00:45:41,960
I want you to take all the buttons on this

871
00:45:42,119 --> 00:45:44,679
form that don't have a style, and I want you

872
00:45:44,719 --> 00:45:46,880
to add a new style to that, and I want

873
00:45:46,920 --> 00:45:49,440
you to set the default font for that new style

874
00:45:49,480 --> 00:45:52,599
to be twenty four. So I will kind of group

875
00:45:52,679 --> 00:45:53,760
things together.

876
00:45:53,599 --> 00:45:55,840
Speaker 2: And I'll digestible pieces, yes, and.

877
00:45:55,800 --> 00:45:59,039
Speaker 3: I'll do those all at once check the results. Sometimes

878
00:45:59,039 --> 00:46:01,599
it's a run to check those results and stepping through

879
00:46:01,639 --> 00:46:04,760
the code maybe, and sometimes it's visually scanning the code

880
00:46:04,760 --> 00:46:05,920
and seeing what's going on.

881
00:46:05,880 --> 00:46:08,039
Speaker 1: And so what happens if it does something that you

882
00:46:08,119 --> 00:46:08,960
don't like?

883
00:46:09,400 --> 00:46:11,719
Speaker 3: I mean, well, you've got so that's a great question.

884
00:46:11,800 --> 00:46:13,800
I love that if you ask, because this is this

885
00:46:13,880 --> 00:46:14,679
is actually.

886
00:46:14,320 --> 00:46:17,880
Speaker 4: Another Hey have we met? This is my freaking job, man,

887
00:46:18,159 --> 00:46:20,719
This is I don't know that you should have a

888
00:46:20,760 --> 00:46:24,639
podcast or something. This guy's good.

889
00:46:26,719 --> 00:46:29,280
Speaker 3: So so yeah, this is a This is actually great

890
00:46:29,400 --> 00:46:33,000
because again this is a great point of differentiation. If

891
00:46:33,000 --> 00:46:36,280
you look at other tooling, other tooling makes changes in

892
00:46:36,360 --> 00:46:41,599
multiple places and requires multiple undos right to do that,

893
00:46:42,039 --> 00:46:45,480
whereas the code Rush aigen does everything, wraps everything up

894
00:46:45,480 --> 00:46:49,159
in a single undue unit, so you can undo, right,

895
00:46:49,239 --> 00:46:52,639
go back, or go forward again. And when you go forward,

896
00:46:52,679 --> 00:46:57,400
that navigator I talked about that really high level you know,

897
00:46:57,840 --> 00:47:01,039
ability to look around, to go from changed to change,

898
00:47:01,039 --> 00:47:03,320
and to see the differences. That comes back up on

899
00:47:03,360 --> 00:47:06,400
a redo. So if you undoing then redo, you can

900
00:47:06,440 --> 00:47:09,760
get that navigator back up and scan the differences inside

901
00:47:09,800 --> 00:47:10,400
if you need.

902
00:47:10,280 --> 00:47:12,960
Speaker 2: To do that. Yeah, that's cool, so so.

903
00:47:13,000 --> 00:47:16,519
Speaker 3: And it's fast, right. The main way time is waiting

904
00:47:16,519 --> 00:47:19,440
for AI to give you that composition that responds back.

905
00:47:19,800 --> 00:47:22,840
That's your main once you do that, for code Rush

906
00:47:22,920 --> 00:47:26,679
to make many changes through many files is generally less

907
00:47:26,679 --> 00:47:28,800
than a second. It doesn't, it doesn't take that long.

908
00:47:28,920 --> 00:47:31,519
Speaker 2: So I'm also thinking in terms of how much experience

909
00:47:31,519 --> 00:47:33,639
you need as a software developer to keep able to

910
00:47:33,679 --> 00:47:34,960
use these tools successfully.

911
00:47:35,119 --> 00:47:38,719
Speaker 3: Well, you cannot, I think you cannot be a brand

912
00:47:38,760 --> 00:47:39,519
new developer.

913
00:47:39,760 --> 00:47:42,559
Speaker 2: Yeah, I agree, Right, you can't, like you don't know

914
00:47:42,599 --> 00:47:44,519
when the tools misbehaving.

915
00:47:44,559 --> 00:47:47,280
Speaker 3: Well, you could, you can get I haven't seen scenarios

916
00:47:47,320 --> 00:47:50,760
where you ask for something and there's just not a

917
00:47:50,800 --> 00:47:52,519
lot of content out there in terms of what you're

918
00:47:52,559 --> 00:47:54,920
asking for, and so what you get is something that

919
00:47:55,000 --> 00:47:57,599
maybe doesn't work, or maybe it's on a you know,

920
00:47:57,679 --> 00:48:00,280
on a framework that's been changing over time, So you

921
00:48:00,320 --> 00:48:02,400
get old code that doesn't work or something like that.

922
00:48:02,679 --> 00:48:06,559
And if you don't know anything about that, you don't

923
00:48:06,559 --> 00:48:07,800
know how to solve it. You're stuck.

924
00:48:08,119 --> 00:48:10,159
Speaker 1: Here's a great example, and I brought this up in

925
00:48:10,239 --> 00:48:13,559
a previous show. Mark you'll like this. Yeah, tell the

926
00:48:13,599 --> 00:48:20,639
AI to create a collection class that is thread safe. Now,

927
00:48:20,960 --> 00:48:24,519
if you didn't know, there's already a thread safe collection

928
00:48:24,920 --> 00:48:28,639
in dot net, right, it's going off and it's not

929
00:48:28,679 --> 00:48:31,760
going to know that, and it's going off and creating right. Right,

930
00:48:31,840 --> 00:48:34,159
you didn't say, hey, is there a thread safe collection

931
00:48:34,239 --> 00:48:36,119
in dot net? You just said, create me a thread

932
00:48:36,159 --> 00:48:40,559
safe collection object, right, a junior divisse.

933
00:48:40,599 --> 00:48:41,559
Speaker 3: It's going to do what you were saying.

934
00:48:41,599 --> 00:48:42,280
Speaker 2: Yeah, it's going to do.

935
00:48:42,280 --> 00:48:45,320
Speaker 1: Exactly what you say. And now you're committed to that

936
00:48:45,400 --> 00:48:48,679
thing and you use that everywhere and oops, there's a

937
00:48:48,719 --> 00:48:51,760
problem with it, right because it's not debugged and tested

938
00:48:51,800 --> 00:48:52,719
and all that or whatever.

939
00:48:52,920 --> 00:48:55,719
Speaker 3: Yeah, yeah, I think that I think you have to

940
00:48:55,760 --> 00:48:58,559
be you know, I think you have to be just

941
00:48:58,719 --> 00:49:00,800
kind of if you're going to if the code you're

942
00:49:00,800 --> 00:49:02,880
going to generate and the things you're going to build

943
00:49:03,039 --> 00:49:09,719
are are kind of, you know, within the norm whatever

944
00:49:09,760 --> 00:49:12,360
that is of development in other words, the things of

945
00:49:12,400 --> 00:49:15,960
which we have a lot of content that AI has studied,

946
00:49:16,679 --> 00:49:18,599
then I think that your user level needs to be

947
00:49:18,679 --> 00:49:22,440
maybe below you know, intermediah. You can be. You don't

948
00:49:22,480 --> 00:49:25,159
have to, you can be somewhere between beginner and intermedia

949
00:49:25,239 --> 00:49:27,400
and you can benefit And there are some ways where

950
00:49:27,400 --> 00:49:30,639
you can benefit really hugely from this as a beginner,

951
00:49:30,880 --> 00:49:32,760
when you say I want a new class that does this,

952
00:49:32,760 --> 00:49:35,199
this and this, and then you've got it and you're done.

953
00:49:35,480 --> 00:49:38,519
There's it's so much easier. And and right now we're

954
00:49:38,559 --> 00:49:41,519
only supporting c sharp, but when we start supporting other languages,

955
00:49:41,960 --> 00:49:46,039
the ability to now code in another language becomes transferable

956
00:49:46,079 --> 00:49:49,960
because I'm still using the exact same spoken English right

957
00:49:49,960 --> 00:49:50,920
to interact with it.

958
00:49:50,960 --> 00:49:53,360
Speaker 1: But getting back to my getting back to my thing,

959
00:49:54,119 --> 00:49:58,880
my example of the thread safe collection. Yes, you probably is.

960
00:49:59,000 --> 00:50:01,559
It's a good idea, even for more advanced developers to

961
00:50:01,679 --> 00:50:04,960
first have a consultation with it about what the best

962
00:50:04,960 --> 00:50:07,719
way to go ahead implementing such a feature would be.

963
00:50:08,000 --> 00:50:10,760
Speaker 3: Right, yeah, no, I agree. And that's where this this

964
00:50:10,800 --> 00:50:13,840
feature is not really a consultation feature. Yeah, you can

965
00:50:14,039 --> 00:50:16,320
ask it questions and it'll come back then and the

966
00:50:16,400 --> 00:50:19,559
navigator and give you the answer. But it's not interactive.

967
00:50:19,599 --> 00:50:22,360
Speaker 1: But at chat GPT would be good for that, right.

968
00:50:22,320 --> 00:50:25,000
Speaker 3: Yes, I will switch over to chat GPT for that

969
00:50:25,119 --> 00:50:27,079
kind of a style of dialogue.

970
00:50:26,679 --> 00:50:28,079
Speaker 2: For that kind of consultation.

971
00:50:28,239 --> 00:50:31,199
Speaker 3: Yeah, yes, yeah, I'll do that in chat GPT. I

972
00:50:31,400 --> 00:50:34,760
use Copilot for other things as well. Copilot's great, great

973
00:50:34,760 --> 00:50:36,440
at like hey, take a look at this error or

974
00:50:36,599 --> 00:50:39,840
something along those lines. Sometimes Copilot's great for just these

975
00:50:39,920 --> 00:50:42,480
kinds of questions. Because it's with code rush, you can

976
00:50:42,519 --> 00:50:47,840
actually talk to copilot using voice. Yeah so, and I

977
00:50:47,840 --> 00:50:49,519
didn't tell you this this morning, but if you hold

978
00:50:49,519 --> 00:50:52,000
down the left control key, just hold it down and

979
00:50:52,039 --> 00:50:55,320
start your your prompt with hey co pilot, oh, and

980
00:50:55,360 --> 00:50:58,519
then ask the question. It will open up the copilot

981
00:50:58,519 --> 00:51:01,639
window fill in the prompt with your question and all

982
00:51:01,679 --> 00:51:03,320
you have to do is just you know, hit enter,

983
00:51:03,480 --> 00:51:04,519
okay and send it up.

984
00:51:04,599 --> 00:51:04,840
Speaker 2: Wow.

985
00:51:04,920 --> 00:51:08,920
Speaker 1: So I think we're in agreement in that we're and

986
00:51:09,320 --> 00:51:11,760
I brought this up in our talk with Scott Hunter

987
00:51:11,960 --> 00:51:14,000
and also offline with Hunter, and.

988
00:51:14,559 --> 00:51:15,559
Speaker 2: That the.

989
00:51:17,480 --> 00:51:21,440
Speaker 1: As a developer, there's just as much value on your

990
00:51:21,519 --> 00:51:25,440
creativity and imagination now as there is on your ability

991
00:51:25,519 --> 00:51:27,480
to write code and the things that you remember how

992
00:51:27,480 --> 00:51:30,440
to do, maybe even more like you have to be

993
00:51:30,559 --> 00:51:36,360
able to imagine things and in order to create them.

994
00:51:36,679 --> 00:51:40,000
Whereas you know, for the last fifty years of my career,

995
00:51:40,199 --> 00:51:42,360
it was always like, oh, I need to do this, Well,

996
00:51:42,360 --> 00:51:44,480
how do I do that? Oh, st break it down

997
00:51:44,519 --> 00:51:47,440
into steps, go research those steps, figure out how to

998
00:51:47,440 --> 00:51:50,360
write the code. And now it's like, you.

999
00:51:50,320 --> 00:51:52,280
Speaker 3: Know, and no one to consult with on that. By

1000
00:51:52,320 --> 00:51:53,440
the way, you're right.

1001
00:51:53,360 --> 00:51:54,199
Speaker 2: No one to consult with.

1002
00:51:54,280 --> 00:51:57,320
Speaker 1: Yeah, and now it's big picture think all right, so

1003
00:51:57,320 --> 00:52:00,480
start with chat, GPT or whatever, and you know, consult

1004
00:52:00,559 --> 00:52:02,440
on the architecture. What are the ways that I can

1005
00:52:02,480 --> 00:52:06,599
go about doing this and open up your imagination? Like

1006
00:52:06,639 --> 00:52:09,400
you you might as well just try it because you

1007
00:52:09,400 --> 00:52:10,480
can always blow it away.

1008
00:52:10,800 --> 00:52:13,159
Speaker 2: I almost wondering if you just need an architect. Now,

1009
00:52:13,159 --> 00:52:15,480
that's just the architect can use the tools to get

1010
00:52:15,480 --> 00:52:16,599
a lot of the code written.

1011
00:52:16,840 --> 00:52:22,960
Speaker 3: Yeah, it's it's you know, for for this journey. One

1012
00:52:23,000 --> 00:52:26,519
of the steps along this journey was I realized we

1013
00:52:26,559 --> 00:52:33,280
needed a great way to show differences inside the code, right,

1014
00:52:33,800 --> 00:52:37,039
And I checked out what tooling that we had already

1015
00:52:37,199 --> 00:52:41,440
and and we didn't. We didn't have what we needed

1016
00:52:41,840 --> 00:52:45,719
essentially that was already built in. So I started that process,

1017
00:52:45,760 --> 00:52:48,599
and I and I think I started a discussion with

1018
00:52:48,639 --> 00:52:52,440
job GPT and and and to just kind of understand

1019
00:52:52,599 --> 00:52:57,360
how the technology works, and ultimately I ended up with

1020
00:52:57,400 --> 00:53:03,559
an engine that does essentially the same thing. But there's

1021
00:53:03,599 --> 00:53:07,119
two variations of the engine. One variation works with lines

1022
00:53:07,400 --> 00:53:10,119
and the other works with characters. And so we use

1023
00:53:10,320 --> 00:53:13,599
the line engine at the high level to see what's changed,

1024
00:53:13,800 --> 00:53:16,880
and then if a line has differences, then we feed

1025
00:53:16,920 --> 00:53:19,840
that to the character engine right to see what is changed, right.

1026
00:53:19,760 --> 00:53:21,920
Speaker 1: What's the actual difference in this line to that line?

1027
00:53:22,039 --> 00:53:26,000
Speaker 3: Right? And I also use the tool to help build

1028
00:53:26,119 --> 00:53:30,360
the visualizer as well. And the visualizer is super interesting

1029
00:53:30,440 --> 00:53:34,559
because there's no built in difference visualizer that's out there,

1030
00:53:34,920 --> 00:53:37,800
and so we were like okay, or I was like, okay,

1031
00:53:37,880 --> 00:53:43,679
let's try I think the rich textbox or whatever I

1032
00:53:43,719 --> 00:53:47,400
think is called WPF, and I start to do that

1033
00:53:47,519 --> 00:53:49,199
and look at that, and we start to make progress,

1034
00:53:49,239 --> 00:53:52,760
and then we realize that, okay, well it's great, except

1035
00:53:52,760 --> 00:53:55,679
for the ends of the lines don't look great because

1036
00:53:56,039 --> 00:54:00,400
the lines end at different you know, you know is

1037
00:54:00,440 --> 00:54:03,280
and the background highlighting goes only to that end of

1038
00:54:03,280 --> 00:54:03,679
the line.

1039
00:54:03,719 --> 00:54:06,079
Speaker 1: Are you talking about the get difference visualizer.

1040
00:54:06,119 --> 00:54:09,320
Speaker 3: I'm talking about the one that's built into Aigen's navigator,

1041
00:54:09,400 --> 00:54:12,320
the Coat Rush navigator, the one that we built from scratch.

1042
00:54:12,400 --> 00:54:14,760
Speaker 2: Yeah, the one that's in Visual Studio is pretty good.

1043
00:54:14,880 --> 00:54:17,280
Speaker 1: I mean, if you make a change to a file

1044
00:54:17,320 --> 00:54:20,159
and then you double click it, you see the original

1045
00:54:20,159 --> 00:54:22,079
on the right and the new one on the left.

1046
00:54:21,840 --> 00:54:25,920
Speaker 3: And yeah, okay, so anyway, there is uh that's I'm

1047
00:54:25,920 --> 00:54:28,679
not saying. I have I have some problems with it.

1048
00:54:28,760 --> 00:54:31,559
I don't like a number of things of it, and

1049
00:54:31,639 --> 00:54:34,559
so I implemented something different. Yeah, it's basically what I

1050
00:54:34,639 --> 00:54:38,480
ended up doing. And at any rate, we got the

1051
00:54:38,519 --> 00:54:40,800
highlighting right, but the ends of the lines wasn't working.

1052
00:54:40,840 --> 00:54:43,159
And I'm like, well, how do I get this to work?

1053
00:54:43,800 --> 00:54:48,199
And that was the question essentially asked, and the answer is,

1054
00:54:48,239 --> 00:54:50,840
you can't do it with the rich textbox, but you

1055
00:54:50,920 --> 00:54:53,239
can do these adorners where you throw them in there.

1056
00:54:53,440 --> 00:54:55,760
So then I'm like, okay, wait, I can put adorners

1057
00:54:55,760 --> 00:54:58,920
out on the ends here and line them up. Yeah, okay,

1058
00:54:59,000 --> 00:55:01,400
let's do that. But now I scroll, they don't scroll.

1059
00:55:02,000 --> 00:55:03,800
And then so now my new question is how do

1060
00:55:03,840 --> 00:55:06,199
I get the adorers to scroll? Let's make them scroll

1061
00:55:06,239 --> 00:55:08,960
and work. And this whole thing is this inertive process

1062
00:55:09,039 --> 00:55:11,880
where I am doing this a piece at a time,

1063
00:55:11,920 --> 00:55:16,079
but finally get it so that it's essentially solid. Right

1064
00:55:16,119 --> 00:55:18,599
that you've got this, I'm using the rich text I'm

1065
00:55:18,599 --> 00:55:22,039
not doing my own custom control, using existing rich text

1066
00:55:22,039 --> 00:55:26,679
box and getting and making it behave as if it's

1067
00:55:26,719 --> 00:55:29,719
a difference view. And that's done largely through the help

1068
00:55:29,719 --> 00:55:33,480
of AI assisting and making changes interactively as I go through.

1069
00:55:33,719 --> 00:55:35,840
Speaker 2: It's very cool, yeah, so cool.

1070
00:55:36,000 --> 00:55:38,679
Speaker 3: Yeah, But you know your question about what level do

1071
00:55:38,679 --> 00:55:42,159
you have to be? I think at least intermediate in general,

1072
00:55:42,239 --> 00:55:44,800
and then the further off the beaten path you go,

1073
00:55:45,199 --> 00:55:47,039
the more of an expert you kind of need to

1074
00:55:47,079 --> 00:55:50,159
be or the more of a debugger, you know, kind

1075
00:55:50,199 --> 00:55:52,719
of let's figure this out kind of person that you

1076
00:55:52,800 --> 00:55:53,320
need to be.

1077
00:55:53,559 --> 00:55:56,440
Speaker 1: You need to know what questions to ask, right, That's

1078
00:55:56,679 --> 00:55:57,920
that's what it all comes down to.

1079
00:55:58,199 --> 00:56:01,159
Speaker 3: Yeah, yeah, what to ask for You're right, Yeah, you do.

1080
00:56:01,239 --> 00:56:03,119
Even if you're working with something you've done. You know,

1081
00:56:03,119 --> 00:56:05,239
if you're working with a new framework, right, if I'm

1082
00:56:05,239 --> 00:56:07,679
working with a control set, what do they call their

1083
00:56:07,719 --> 00:56:11,360
grid control or what do they call their their toolbar control? Right? Right,

1084
00:56:11,400 --> 00:56:13,440
If you know what that's called, then you can ask the.

1085
00:56:13,480 --> 00:56:17,239
Speaker 1: Question and hopeful you'll do research first. That's the whole idea.

1086
00:56:17,480 --> 00:56:20,679
The less the less familiar you are with what you're

1087
00:56:20,679 --> 00:56:22,280
going to end up with, the more research you have

1088
00:56:22,320 --> 00:56:24,840
to do up front, however, to know how to ask

1089
00:56:24,880 --> 00:56:25,519
the questions.

1090
00:56:25,800 --> 00:56:30,480
Speaker 3: However, Carl, I'm today, I'm in this code and I'm

1091
00:56:30,559 --> 00:56:33,559
like saying, hey, I'm seeing that a whole bunch of

1092
00:56:33,559 --> 00:56:37,920
these methods are passing in the it's an on notified

1093
00:56:37,960 --> 00:56:41,960
property change. Yeah, thing I hear, And I'm like, and

1094
00:56:42,320 --> 00:56:44,719
my prompt goes like this, I say, hey, I'm noticing

1095
00:56:44,760 --> 00:56:47,719
all of these calls to property change are passing in

1096
00:56:47,800 --> 00:56:51,639
the name of the property, But isn't there some way

1097
00:56:51,880 --> 00:56:54,880
to check from the call stack what that method calling

1098
00:56:54,920 --> 00:56:58,039
method is? And that's all I said. And so in

1099
00:56:58,039 --> 00:57:00,639
other words, you could know kind of genly about it

1100
00:57:00,679 --> 00:57:02,559
and speak about it. And then it goes in and

1101
00:57:02,639 --> 00:57:06,920
it ends. It puts in I think member calling name attribute.

1102
00:57:06,360 --> 00:57:08,280
Speaker 2: Member calling name yeah, on.

1103
00:57:08,360 --> 00:57:11,920
Speaker 3: The parameter definition, and it does that, and it's great,

1104
00:57:11,960 --> 00:57:14,199
and I'm like, oh, but wait, you left all of

1105
00:57:14,239 --> 00:57:17,559
the calls with their arguments. They don't need those arguments anymore,

1106
00:57:17,639 --> 00:57:20,719
that's right, yeah, And then it fixes that and so

1107
00:57:20,920 --> 00:57:23,719
that instead of me doing any of those things manually,

1108
00:57:24,199 --> 00:57:28,239
it's just you know, speak, wait a few seconds, and

1109
00:57:28,280 --> 00:57:31,239
then speak and wait a few seconds. And that's a

1110
00:57:31,280 --> 00:57:31,880
different flaw.

1111
00:57:32,000 --> 00:57:34,639
Speaker 1: You also have to have some pain, right like if

1112
00:57:34,840 --> 00:57:39,360
I've had pain in the past with making base classes

1113
00:57:39,400 --> 00:57:42,719
for models, for example, which I do not do anymore

1114
00:57:42,800 --> 00:57:45,639
because you get into all sorts of problems with that,

1115
00:57:45,880 --> 00:57:49,639
right then you know, you could easily take that in

1116
00:57:49,679 --> 00:57:51,800
a direction where it would say, well, let me just

1117
00:57:51,840 --> 00:57:53,679
make a base class for you that does all the

1118
00:57:53,679 --> 00:57:56,280
notified property change and blah blah blah, and now you

1119
00:57:56,320 --> 00:57:58,639
can just create models that are in that space class

1120
00:57:58,639 --> 00:58:01,320
and right, Yeah, you know what I mean, And you

1121
00:58:01,719 --> 00:58:04,800
wouldn't have the experience to say, no, I really don't want.

1122
00:58:04,639 --> 00:58:07,360
Speaker 3: To do that, right right, No, I get that, I

1123
00:58:07,400 --> 00:58:10,400
get it. Yeah, But you know, you can make things

1124
00:58:10,440 --> 00:58:11,920
work a lot of different ways. I can have the

1125
00:58:11,920 --> 00:58:14,079
same set of test cases and they can all pass

1126
00:58:14,480 --> 00:58:18,159
regardless of which frameworks. And sometimes I don't understand the

1127
00:58:18,199 --> 00:58:20,280
problem with the framework until it's time to go to

1128
00:58:20,360 --> 00:58:23,039
version two, right, right, right, and then I realized, Okay,

1129
00:58:23,320 --> 00:58:26,400
that was a mistake. I got to really really make

1130
00:58:26,480 --> 00:58:30,719
this architecture great, right, And that is like that's something

1131
00:58:30,719 --> 00:58:32,519
that you don't see with what we've done here, but

1132
00:58:32,599 --> 00:58:36,280
we have actually made this architecture really good. We stopped

1133
00:58:36,320 --> 00:58:39,079
we were moving towards bringing Blazer support in this one

1134
00:58:39,119 --> 00:58:42,400
oh release, and we stopped it to focus on the architecture.

1135
00:58:42,679 --> 00:58:45,840
And as a result, I'm like way more confident about

1136
00:58:45,840 --> 00:58:48,519
our ability to go in and support Blazer in other

1137
00:58:48,639 --> 00:58:54,000
languages because of the changes that we made to simplify

1138
00:58:54,519 --> 00:58:56,480
and decouple the architecture behind this.

1139
00:58:57,000 --> 00:58:57,559
Speaker 2: It's awesome.

1140
00:58:57,679 --> 00:58:58,679
Speaker 3: So feel good about that.

1141
00:58:59,239 --> 00:59:00,159
Speaker 2: So where can we get this?

1142
00:59:00,480 --> 00:59:03,960
Speaker 3: So? Okay, go to def express dot com slash code

1143
00:59:04,039 --> 00:59:09,400
Rush and you can get you can download a copy

1144
00:59:09,440 --> 00:59:12,920
codeer is for free. Code Rush is free. There's no

1145
00:59:13,039 --> 00:59:16,800
charge for this. However, you're gonna have to supply an

1146
00:59:16,800 --> 00:59:20,679
open Ai API key, an open Ai API key, and

1147
00:59:20,760 --> 00:59:22,840
you're gonna need to supply if you want in voice,

1148
00:59:22,840 --> 00:59:26,920
you're gonna need to supply an Azure Cognitive Services speech key.

1149
00:59:26,840 --> 00:59:29,559
Speaker 1: Which is free for.

1150
00:59:29,039 --> 00:59:31,199
Speaker 3: It's essentially you can get a free tier that gives

1151
00:59:31,239 --> 00:59:33,880
you I think up to five dollars a month, and

1152
00:59:34,159 --> 00:59:36,239
I use maybe three dollars a month in all my

1153
00:59:36,280 --> 00:59:39,679
months of my daily use of the product, so you're

1154
00:59:39,679 --> 00:59:42,599
probably not gonna pay anything for that. And Azure Speech

1155
00:59:42,639 --> 00:59:46,800
Cognitive Services is excellent. I just I cannot, I cannot

1156
00:59:47,000 --> 00:59:48,840
tell you how good this service is.

1157
00:59:48,920 --> 00:59:50,199
Speaker 2: It's really good.

1158
00:59:50,719 --> 00:59:53,719
Speaker 3: It's it is way more accurate than anything I've seen

1159
00:59:53,719 --> 00:59:56,360
built on a machine running off of a machine. And

1160
00:59:56,440 --> 00:59:59,480
it's fast. It's like generally we get times of processing

1161
00:59:59,480 --> 01:00:01,639
times of a about from the time you stopped talking,

1162
01:00:01,960 --> 01:00:04,880
we get a response back that's about four hundred milliseconds.

1163
01:00:04,960 --> 01:00:10,239
Speaker 1: That's amazing, Mark, congratulations, and I'm really blown away. And

1164
01:00:10,280 --> 01:00:12,239
it's always good to talk to you. I always learn

1165
01:00:12,360 --> 01:00:14,719
things and what can I say? Thanks again?

1166
01:00:14,800 --> 01:00:17,039
Speaker 5: Thanks, guys, all right, and we'll talk to you later

1167
01:00:17,519 --> 01:00:40,800
on dot net Bros. Dot Net Rocks is brought to

1168
01:00:40,800 --> 01:00:44,559
you by Franklin's Net and produced by Pop Studios, a

1169
01:00:44,719 --> 01:00:49,119
full service audio, video and post production facilities located physically

1170
01:00:49,159 --> 01:00:51,920
in New London, Connecticut, and of course in the cloud

1171
01:00:52,519 --> 01:00:55,440
online at pwop dot com.

1172
01:00:55,639 --> 01:00:57,800
Speaker 1: Visit our website at d O T N E t

1173
01:00:58,039 --> 01:01:02,039
R O c k S dot com, RSS feeds, downloads,

1174
01:01:02,199 --> 01:01:05,880
mobile apps, comments, and access to the full archives going

1175
01:01:05,920 --> 01:01:09,320
back to show number one, recorded in September two thousand

1176
01:01:09,320 --> 01:01:12,000
and two. And make sure you check out our sponsors.

1177
01:01:12,119 --> 01:01:14,960
They keep us in business. Now, go write some code,

1178
01:01:15,480 --> 01:01:16,280
see you next time.

1179
01:01:17,159 --> 01:01:26,199
Speaker 2: You got JAD Middle Vans And then I'm

