WEBVTT

1
00:00:01.080 --> 00:00:03.000
<v Speaker 1>How'd you like to listen to dot net rocks with

2
00:00:03.040 --> 00:00:03.799
<v Speaker 1>no ads?

3
00:00:04.440 --> 00:00:04.799
<v Speaker 2>Easy?

4
00:00:05.360 --> 00:00:08.560
<v Speaker 1>Become a patron For just five dollars a month you

5
00:00:08.599 --> 00:00:11.320
<v Speaker 1>get access to a private RSS feed where all the

6
00:00:11.359 --> 00:00:14.599
<v Speaker 1>shows have no ads. Twenty dollars a month will get

7
00:00:14.599 --> 00:00:17.679
<v Speaker 1>you that and a special dot net Rocks patron mug.

8
00:00:18.160 --> 00:00:34.000
<v Speaker 1>Sign up now at Patreon dot dot NetRocks dot com.

9
00:00:34.240 --> 00:00:38.000
<v Speaker 1>Hey guess what it's dot net rocks insane heat.

10
00:00:37.719 --> 00:00:38.600
<v Speaker 2>Version in.

11
00:00:40.039 --> 00:00:42.079
<v Speaker 1>A little warm where you are, brother, one hundred and

12
00:00:42.119 --> 00:00:43.320
<v Speaker 1>two degrees fahrenheit today.

13
00:00:43.439 --> 00:00:46.159
<v Speaker 2>That's no funny. That's dangerous being you'll be careful, it

14
00:00:46.280 --> 00:00:50.399
<v Speaker 2>is dangerous. Thank God for air conditioning. Yeah, no kidding, Yeah.

15
00:00:50.359 --> 00:00:53.240
<v Speaker 1>Told, I've told neighbors who don't have it feel free

16
00:00:53.240 --> 00:00:54.280
<v Speaker 1>to come over and cool off.

17
00:00:54.399 --> 00:00:57.920
<v Speaker 2>Yeah no, that's smart. Just get an hour cooling down? Right? Yeah?

18
00:00:58.000 --> 00:01:00.399
<v Speaker 1>Hey, Mark Miller's here. We're gonna have a lot of uh,

19
00:01:00.960 --> 00:01:02.920
<v Speaker 1>some really good stuff that he's got to talk to

20
00:01:03.000 --> 00:01:05.400
<v Speaker 1>us about. But you know, we're all we all seem

21
00:01:05.480 --> 00:01:11.359
<v Speaker 1>to be on the agentic Ai bandwagon, or at least

22
00:01:11.359 --> 00:01:14.640
<v Speaker 1>topic today because that's where my better know a framework

23
00:01:14.799 --> 00:01:15.760
<v Speaker 1>is so oh.

24
00:01:15.719 --> 00:01:25.680
<v Speaker 2>Roll the crazy music. All right, man, tell me all

25
00:01:25.680 --> 00:01:29.200
<v Speaker 2>about your agentic AI coding experience.

26
00:01:29.680 --> 00:01:32.200
<v Speaker 1>Yeah, all right, all right, Well, I haven't done a

27
00:01:32.200 --> 00:01:34.359
<v Speaker 1>Blazer train in a while, and I figured this was

28
00:01:34.439 --> 00:01:38.519
<v Speaker 1>the best time. So, you know, Build, we saw all

29
00:01:38.560 --> 00:01:42.280
<v Speaker 1>sorts of stuff about the new features for developers that

30
00:01:42.359 --> 00:01:44.840
<v Speaker 1>Microsoft is bringing out, right.

31
00:01:44.799 --> 00:01:51.760
<v Speaker 2>Hunter seth w O'Brian, you know, was don't stop.

32
00:01:51.560 --> 00:01:54.400
<v Speaker 1>And even the keynote kind of wet our appetite a

33
00:01:54.400 --> 00:01:57.040
<v Speaker 1>little bit. But you know, our friends talk to us

34
00:01:57.079 --> 00:02:01.040
<v Speaker 1>in terms of developers, which is great, and we all agree.

35
00:02:01.200 --> 00:02:05.799
<v Speaker 1>I think that AI is a very real and helpful

36
00:02:05.879 --> 00:02:10.719
<v Speaker 1>and safe thing for developers to use. You know, we

37
00:02:10.840 --> 00:02:13.639
<v Speaker 1>have to be careful about safety, but for the most part,

38
00:02:14.039 --> 00:02:17.159
<v Speaker 1>the tools that I've been using have been pretty good.

39
00:02:17.240 --> 00:02:20.120
<v Speaker 1>So I came home from Build and I immediately started

40
00:02:20.120 --> 00:02:23.840
<v Speaker 1>messing around with this stuff. And I started working with

41
00:02:23.960 --> 00:02:28.360
<v Speaker 1>the agent mode in visual Studio and that didn't work

42
00:02:28.400 --> 00:02:31.879
<v Speaker 1>out so well, only because it kind of got hung

43
00:02:31.960 --> 00:02:34.919
<v Speaker 1>up on files, couldn't access files that it had written

44
00:02:34.960 --> 00:02:36.879
<v Speaker 1>and all that kind of stuff, But it did it

45
00:02:36.960 --> 00:02:42.199
<v Speaker 1>was able to generate some good stuff anyway. Then I'm

46
00:02:42.360 --> 00:02:47.039
<v Speaker 1>at devsum in Stockholm. I met the rooftop bar the

47
00:02:47.039 --> 00:02:49.840
<v Speaker 1>hotel and Hunter is there and I'm just kind of

48
00:02:49.840 --> 00:02:53.000
<v Speaker 1>picking his brain and he's like, oh no, you got

49
00:02:53.120 --> 00:02:59.199
<v Speaker 1>to use the copilot GitHub copilot coding agent in GitHub, right,

50
00:02:59.319 --> 00:03:01.199
<v Speaker 1>that's what it's all. AB I just did this demo.

51
00:03:01.400 --> 00:03:03.639
<v Speaker 2>That's where the action is. Yeah. Right.

52
00:03:03.960 --> 00:03:06.319
<v Speaker 1>So I was like, Okay, here we go. I went

53
00:03:06.360 --> 00:03:08.919
<v Speaker 1>home and I started playing with that, and I agree

54
00:03:08.960 --> 00:03:12.560
<v Speaker 1>with Scott this is this is really really good. And

55
00:03:12.639 --> 00:03:15.639
<v Speaker 1>so the whole idea is that the co pilot is

56
00:03:17.120 --> 00:03:20.879
<v Speaker 1>a partner on your in the repos that you give

57
00:03:20.879 --> 00:03:24.400
<v Speaker 1>it access to, and you can assign issues to it

58
00:03:25.280 --> 00:03:28.039
<v Speaker 1>and it will go out and figure out those issues,

59
00:03:28.080 --> 00:03:30.520
<v Speaker 1>and you can view the logs and view the session

60
00:03:30.599 --> 00:03:34.400
<v Speaker 1>and see what it's doing. And then first it creates

61
00:03:35.280 --> 00:03:37.840
<v Speaker 1>a sort of a draft poll request, and then it

62
00:03:37.879 --> 00:03:42.240
<v Speaker 1>creates commits, and you can view those commits you know,

63
00:03:42.280 --> 00:03:45.120
<v Speaker 1>in visual studio, and test them out, and if it

64
00:03:45.199 --> 00:03:47.719
<v Speaker 1>didn't do something you liked, you can just add a

65
00:03:47.759 --> 00:03:51.240
<v Speaker 1>comment and it'll go off and fix it. So I

66
00:03:51.400 --> 00:03:53.639
<v Speaker 1>and then of course when you're done, you can merge

67
00:03:53.680 --> 00:03:57.120
<v Speaker 1>the poll request. So I thought this was just absolutely brilliant.

68
00:03:57.159 --> 00:03:59.080
<v Speaker 1>So I did a Blazer train about it. Episode one

69
00:03:59.159 --> 00:04:03.960
<v Speaker 1>oh seven, get ub Copilot Coding Agent and we'll have

70
00:04:04.000 --> 00:04:07.120
<v Speaker 1>a link to that. And also the first thing I

71
00:04:07.120 --> 00:04:12.479
<v Speaker 1>did was I documented my experiences using it to create

72
00:04:12.560 --> 00:04:17.720
<v Speaker 1>a whole Blazer server forms over data application using the

73
00:04:17.759 --> 00:04:20.800
<v Speaker 1>north Wind database. Cool, and I use SQL like because

74
00:04:21.399 --> 00:04:25.439
<v Speaker 1>you know, not everybody uses Windows. Yeah, and the video

75
00:04:25.519 --> 00:04:28.079
<v Speaker 1>the one I did in the video kind of I

76
00:04:28.160 --> 00:04:29.920
<v Speaker 1>kind of got stuck in the code at the end,

77
00:04:30.519 --> 00:04:33.160
<v Speaker 1>but if you look at the results that i'd have

78
00:04:33.319 --> 00:04:36.480
<v Speaker 1>in the actual repo that we'll have a link to. Also,

79
00:04:36.680 --> 00:04:39.800
<v Speaker 1>it was much better and didn't take you know, many

80
00:04:39.879 --> 00:04:41.800
<v Speaker 1>iterations to fix the bugs and stuff.

81
00:04:41.839 --> 00:04:44.720
<v Speaker 2>But I do like that those fighting through moments, so

82
00:04:44.759 --> 00:04:47.279
<v Speaker 2>I think are really useful teaching moments too. It's like

83
00:04:47.399 --> 00:04:49.639
<v Speaker 2>when the software is not behaving the way you want,

84
00:04:50.120 --> 00:04:52.800
<v Speaker 2>how do you push on it to get to get results?

85
00:04:52.920 --> 00:04:57.600
<v Speaker 1>Absolutely, and along the way, I learned about the system

86
00:04:57.680 --> 00:05:00.680
<v Speaker 1>prompt MD file that you can put in your repo

87
00:05:01.279 --> 00:05:03.879
<v Speaker 1>where you tell it sort of all the general stuff

88
00:05:03.920 --> 00:05:06.079
<v Speaker 1>and how you want things to be organized in the

89
00:05:06.120 --> 00:05:07.800
<v Speaker 1>things that the coding standards and.

90
00:05:07.800 --> 00:05:08.480
<v Speaker 2>All that stuff.

91
00:05:08.560 --> 00:05:11.319
<v Speaker 1>Yeah, overall was really good. And so there's a third part.

92
00:05:11.560 --> 00:05:16.279
<v Speaker 1>I've created a four hour webinar called a Survey of

93
00:05:16.399 --> 00:05:19.839
<v Speaker 1>AI Tools for Dot net Development, which goes beyond just

94
00:05:19.959 --> 00:05:23.040
<v Speaker 1>the Microsoft tools but looks at the best of breed

95
00:05:23.560 --> 00:05:30.720
<v Speaker 1>and AI tools across all platforms and services. So that's

96
00:05:30.800 --> 00:05:33.639
<v Speaker 1>like a survey of these things. It'll include GitHub and

97
00:05:33.680 --> 00:05:36.040
<v Speaker 1>all of that stuff. And guess what, it's even going

98
00:05:36.079 --> 00:05:39.120
<v Speaker 1>to include code Rush, which I learned about today from Mark.

99
00:05:39.560 --> 00:05:42.959
<v Speaker 1>He's going to be talking about that. But that link

100
00:05:43.160 --> 00:05:47.160
<v Speaker 1>is in the show notes as well, and also linked

101
00:05:47.240 --> 00:05:50.439
<v Speaker 1>in the repo, which is in the show notes. So

102
00:05:51.120 --> 00:05:53.879
<v Speaker 1>that's all the stuff that I have. Richard, who's talking.

103
00:05:53.639 --> 00:05:55.800
<v Speaker 2>To us today, grabbed a common top of Show nineteen

104
00:05:55.920 --> 00:05:58.120
<v Speaker 2>fifty four, the one we did I had to build

105
00:05:58.160 --> 00:06:00.519
<v Speaker 2>with w O'Brien where we talked about the play right MCP,

106
00:06:00.959 --> 00:06:03.519
<v Speaker 2>which definitely one of those moments where like, oh man,

107
00:06:04.160 --> 00:06:07.480
<v Speaker 2>we can get up to stuff with this. Yeah. Yeah,

108
00:06:07.519 --> 00:06:09.839
<v Speaker 2>and John MacArthur had this great comedy said, listening to

109
00:06:09.879 --> 00:06:12.000
<v Speaker 2>this and talk about copilot, I love using it for

110
00:06:12.160 --> 00:06:14.879
<v Speaker 2>my get comments. It does such a good job of them,

111
00:06:14.920 --> 00:06:17.720
<v Speaker 2>and it's forcing me to get better. Oh no, upon

112
00:06:17.959 --> 00:06:22.839
<v Speaker 2>help me, help me no better by checking in more often,

113
00:06:22.879 --> 00:06:25.560
<v Speaker 2>because I don't want lots of unrelated changes grouped together.

114
00:06:25.639 --> 00:06:29.040
<v Speaker 2>See yeah, Because the tool actually remembers everything you did

115
00:06:29.480 --> 00:06:31.160
<v Speaker 2>and spits it all back to you, so you have

116
00:06:31.199 --> 00:06:33.920
<v Speaker 2>to be more organized and unlike when my handwritten comment

117
00:06:34.040 --> 00:06:40.040
<v Speaker 2>was fixed stuff and things. Yeah, yeah, seriously, the generated

118
00:06:40.040 --> 00:06:42.959
<v Speaker 2>comments are brilliant. Yeah, I gotta say, John, like, there's

119
00:06:43.040 --> 00:06:45.279
<v Speaker 2>more that can be done with these tools, Like I

120
00:06:45.319 --> 00:06:48.240
<v Speaker 2>appreciate your sentiment and certainly I like those parts too.

121
00:06:48.279 --> 00:06:51.759
<v Speaker 2>But keep going down the path and we're just getting started. Yeah,

122
00:06:51.800 --> 00:06:54.240
<v Speaker 2>it's early days, isn't it. Yeah, and John, thank you

123
00:06:54.319 --> 00:06:55.920
<v Speaker 2>so much. Your comment and copy of music code By

124
00:06:56.040 --> 00:06:57.120
<v Speaker 2>is on its way to you. And if you'd like

125
00:06:57.120 --> 00:06:58.759
<v Speaker 2>a copy of music codbe I write a comment on

126
00:06:58.759 --> 00:07:01.319
<v Speaker 2>the website at dot netrock com or on the facebooks

127
00:07:01.319 --> 00:07:03.000
<v Speaker 2>we publish every show there. Any of you comment there

128
00:07:03.519 --> 00:07:05.000
<v Speaker 2>and I read it on the show, we'll send you

129
00:07:05.040 --> 00:07:05.680
<v Speaker 2>copy music. O.

130
00:07:05.920 --> 00:07:08.879
<v Speaker 1>I just sold another flak collection of music to code By.

131
00:07:08.879 --> 00:07:10.639
<v Speaker 1>We're up to twenty two tracks now and you can

132
00:07:10.639 --> 00:07:13.680
<v Speaker 1>get them an MP three flak and wave music to

133
00:07:13.720 --> 00:07:16.160
<v Speaker 1>code by dot net. All right, before we bring on

134
00:07:16.199 --> 00:07:18.800
<v Speaker 1>mister Miller, let's talk about nineteen fifty eight, because that's

135
00:07:18.800 --> 00:07:19.759
<v Speaker 1>our show number.

136
00:07:19.600 --> 00:07:22.319
<v Speaker 2>Ninety fifty eight, A very good year in some respects.

137
00:07:22.360 --> 00:07:22.920
<v Speaker 2>I mean, you know.

138
00:07:23.439 --> 00:07:26.000
<v Speaker 1>Oh yeah, So where do you want to go with it? Well,

139
00:07:26.079 --> 00:07:30.480
<v Speaker 1>let's talk about international developments. The European Economic Community was formed,

140
00:07:30.519 --> 00:07:34.199
<v Speaker 1>which is precursor to the EU. Precursor to EU. The

141
00:07:34.279 --> 00:07:39.639
<v Speaker 1>West Indies Federation was formed, the Soviet American Exchange Agreement.

142
00:07:40.000 --> 00:07:44.959
<v Speaker 1>Can you imagine? Yeah, Brazil won the World Cup, defeated

143
00:07:44.959 --> 00:07:47.879
<v Speaker 1>Sweden five to two to win their first World Cup title.

144
00:07:48.319 --> 00:07:51.240
<v Speaker 1>The first undersea voyage to the North Pole by the

145
00:07:51.360 --> 00:07:54.279
<v Speaker 1>USS Nautilus. Hey, I know about that submarine.

146
00:07:54.399 --> 00:07:56.040
<v Speaker 2>Yeah, that's that's your part of the world.

147
00:07:56.120 --> 00:07:56.279
<v Speaker 3>Yeah.

148
00:07:56.319 --> 00:07:59.480
<v Speaker 1>It was built in my hometown. Yeah, and I'm sure

149
00:07:59.759 --> 00:08:02.199
<v Speaker 1>my father probably had something to do with that because

150
00:08:02.240 --> 00:08:05.040
<v Speaker 1>he was in planning, probably in the United States.

151
00:08:05.199 --> 00:08:08.639
<v Speaker 2>NASA was established on July twenty nine. Yeah, the International

152
00:08:08.639 --> 00:08:14.560
<v Speaker 2>Geophysical Year. Yeah, established with NASA IGY, the Bunch of Satellites.

153
00:08:14.720 --> 00:08:18.639
<v Speaker 2>IGY is also the first track on Donald Fagan's excellent

154
00:08:18.720 --> 00:08:23.279
<v Speaker 2>The Nightfly, which is all about fifties fantasies about the future.

155
00:08:23.639 --> 00:08:28.519
<v Speaker 2>Sure Explorer one was launched on January thirty first detected

156
00:08:28.560 --> 00:08:31.319
<v Speaker 2>the Van Allen BELTZ. You know all these things. It's

157
00:08:31.360 --> 00:08:34.480
<v Speaker 2>so awesome. I do Federal Aviation Act. If you want

158
00:08:34.519 --> 00:08:37.799
<v Speaker 2>to just forget school. Just go have a cup of

159
00:08:37.799 --> 00:08:40.679
<v Speaker 2>tea or glass whiskey with Richard. You don't need school.

160
00:08:40.799 --> 00:08:42.840
<v Speaker 3>Or if you've been in school and you want to

161
00:08:42.840 --> 00:08:45.240
<v Speaker 3>feel like you've never been in school, do the.

162
00:08:45.159 --> 00:08:49.000
<v Speaker 2>Same, right, listen to a geek out.

163
00:08:50.240 --> 00:08:54.480
<v Speaker 1>The Federal Aviation Act was passed, which was later the

164
00:08:54.600 --> 00:09:00.279
<v Speaker 1>FAA Federal Aviation Agency, giving it authority overall aspect of

165
00:09:00.320 --> 00:09:03.159
<v Speaker 1>aviation in the US. Elvis was inducted into the Army

166
00:09:04.600 --> 00:09:09.360
<v Speaker 1>on March twenty fourth, the B forty seven nuclear weapon

167
00:09:09.480 --> 00:09:13.000
<v Speaker 1>loss incident. A B forty seven bomber accidentally dropped an

168
00:09:13.039 --> 00:09:15.559
<v Speaker 1>atomic bomb on Mars Bluff, South Carolina.

169
00:09:15.759 --> 00:09:18.279
<v Speaker 2>Oops, well that's the one that went off, but we

170
00:09:18.519 --> 00:09:21.519
<v Speaker 2>had no nuclear core. That same year they lost one

171
00:09:21.519 --> 00:09:24.600
<v Speaker 2>out of a B forty seven and have never found it,

172
00:09:24.759 --> 00:09:26.559
<v Speaker 2>Oh my god, somewhere.

173
00:09:27.000 --> 00:09:30.679
<v Speaker 1>Some other things, the first radio broadcast from Space, President

174
00:09:30.799 --> 00:09:33.440
<v Speaker 1>Dwight D. Eisenhowers and a Christmas message from Space.

175
00:09:33.519 --> 00:09:35.279
<v Speaker 2>Yeah, first communication satellite too.

176
00:09:35.399 --> 00:09:38.919
<v Speaker 1>Yeah. Anything that you want to add in terms of

177
00:09:39.120 --> 00:09:41.759
<v Speaker 1>computers or technology.

178
00:09:41.240 --> 00:09:43.039
<v Speaker 2>Well, let me do one non computer one, and I'll

179
00:09:43.039 --> 00:09:45.759
<v Speaker 2>do a couple computer ones. On computer one And this

180
00:09:45.799 --> 00:09:48.720
<v Speaker 2>is from my friend Mark is the first regular surve

181
00:09:48.759 --> 00:09:53.039
<v Speaker 2>transatlantic service of the Boeing seven oh seven. They really

182
00:09:53.080 --> 00:09:56.679
<v Speaker 2>beginning of the jet age. That the prototype flew in

183
00:09:56.720 --> 00:09:59.080
<v Speaker 2>the end of fifty seven, but it was already in

184
00:09:59.120 --> 00:10:01.759
<v Speaker 2>service in fifty eight eight pan am in the beginning

185
00:10:01.799 --> 00:10:03.279
<v Speaker 2>of what they called the jet age. It wasn't the

186
00:10:03.279 --> 00:10:05.480
<v Speaker 2>first jet air liner. There was ones before that, but

187
00:10:05.519 --> 00:10:08.559
<v Speaker 2>at the seven o seven, and that form factor still

188
00:10:08.559 --> 00:10:11.559
<v Speaker 2>flies today, that four engine rig that's the KC one

189
00:10:11.639 --> 00:10:15.399
<v Speaker 2>thirty five. Like that plane's never going away, it seems,

190
00:10:15.720 --> 00:10:16.440
<v Speaker 2>which is a good one.

191
00:10:16.480 --> 00:10:19.039
<v Speaker 1>It was also mentioned in the song jet air Liner

192
00:10:19.080 --> 00:10:19.799
<v Speaker 1>by Steve.

193
00:10:19.639 --> 00:10:22.840
<v Speaker 2>Miller band down Rights. They get on the seven o seven,

194
00:10:22.919 --> 00:10:24.840
<v Speaker 2>get on the seven oh seven. There's lots of variance

195
00:10:24.879 --> 00:10:26.399
<v Speaker 2>of it. Two. You know, the original form of that

196
00:10:26.399 --> 00:10:28.759
<v Speaker 2>our craft was quite narrow, is a two x two seating,

197
00:10:29.159 --> 00:10:31.879
<v Speaker 2>and then they widened it to a two to one

198
00:10:31.960 --> 00:10:33.919
<v Speaker 2>two seating, and then they widened it again into a

199
00:10:33.960 --> 00:10:40.879
<v Speaker 2>three three seating. Programming wise, the remarkable extraordinary found. John

200
00:10:40.960 --> 00:10:45.200
<v Speaker 2>McCarthy at MIT developed the LISP programming language in two

201
00:10:45.240 --> 00:10:47.240
<v Speaker 2>fifty eight. It wouldn't get deployed for another couple of

202
00:10:47.360 --> 00:10:49.919
<v Speaker 2>years because we barely had computers at that point. LISPS

203
00:10:49.960 --> 00:10:53.480
<v Speaker 2>short for the list processing. But yeah, he had defined

204
00:10:53.519 --> 00:10:56.399
<v Speaker 2>the language already. At that point, you barely had a

205
00:10:56.399 --> 00:10:59.279
<v Speaker 2>computer functional Interestingly.

206
00:10:58.960 --> 00:11:04.080
<v Speaker 1>The functional language that was used a lot in was

207
00:11:04.120 --> 00:11:06.399
<v Speaker 1>it used in AI at the time or what they

208
00:11:06.440 --> 00:11:06.919
<v Speaker 1>called AI.

209
00:11:07.200 --> 00:11:09.279
<v Speaker 2>Yeah, the term AI had already been coined at that point.

210
00:11:09.399 --> 00:11:14.000
<v Speaker 2>McCarthy or Minsky coined the term.

211
00:11:14.080 --> 00:11:16.440
<v Speaker 1>But I don't know what they meant by that back then.

212
00:11:16.559 --> 00:11:18.240
<v Speaker 1>Was it machine learning kind of thing or.

213
00:11:18.559 --> 00:11:21.320
<v Speaker 2>No, it was just that was more decision tree modeling.

214
00:11:21.679 --> 00:11:25.320
<v Speaker 2>What what Minsky got financing from the military for was

215
00:11:25.399 --> 00:11:28.720
<v Speaker 2>to do resource allocation and management for the US military,

216
00:11:28.720 --> 00:11:30.840
<v Speaker 2>which by the way, worked perfectly.

217
00:11:31.080 --> 00:11:33.519
<v Speaker 1>So expert systems that kind of thing.

218
00:11:33.679 --> 00:11:37.320
<v Speaker 2>No, just resource management, okay, like decision treat mesia management.

219
00:11:37.360 --> 00:11:39.360
<v Speaker 2>How do you how do you move a battalion? What

220
00:11:39.399 --> 00:11:41.759
<v Speaker 2>do you got to move first? Like what those pieces

221
00:11:41.759 --> 00:11:43.799
<v Speaker 2>look like based on the aircraft you got to the ships?

222
00:11:43.840 --> 00:11:46.399
<v Speaker 2>You're using that kind of thing. Okay, One more computer

223
00:11:46.480 --> 00:11:50.799
<v Speaker 2>one the RC five oh one, which was one of

224
00:11:50.840 --> 00:11:53.799
<v Speaker 2>the very first computers only nineteen fifty eight to use

225
00:11:54.080 --> 00:11:57.639
<v Speaker 2>transistors instead of vacuum two hm. No, discrete, it's all

226
00:11:57.639 --> 00:12:00.360
<v Speaker 2>discrete electronics at this point, right, we haven't got ICs yet,

227
00:12:00.799 --> 00:12:04.480
<v Speaker 2>but we are beginning down the transistorization of computing. Wow.

228
00:12:04.600 --> 00:12:06.480
<v Speaker 1>You know, it just occurs to me when we have

229
00:12:07.440 --> 00:12:10.240
<v Speaker 1>a show number that's the same year as the year

230
00:12:10.279 --> 00:12:12.759
<v Speaker 1>we recorded in the world's gonna explode.

231
00:12:12.919 --> 00:12:14.679
<v Speaker 2>I know, I'm with you. It's I think we're doing

232
00:12:14.799 --> 00:12:16.240
<v Speaker 2>two thousand and two is going to be a problem.

233
00:12:16.360 --> 00:12:21.559
<v Speaker 1>Yeah, all right, Well, let's introduce Mark Miller. He's been

234
00:12:21.559 --> 00:12:25.559
<v Speaker 1>on the show many times. He is fondly remembered in

235
00:12:25.600 --> 00:12:30.200
<v Speaker 1>dot Netrock's history, of course through Monday's hilarious bits on there,

236
00:12:30.759 --> 00:12:34.240
<v Speaker 1>and also just in early dot net Rocks. He's been

237
00:12:34.279 --> 00:12:39.600
<v Speaker 1>an innovator in many, many ways. So he's a multi

238
00:12:39.720 --> 00:12:43.600
<v Speaker 1>year c Sharp Microsoft MVP and a leading expert on

239
00:12:43.799 --> 00:12:47.879
<v Speaker 1>user interface design. He's a chief architect of the ide

240
00:12:48.080 --> 00:12:51.840
<v Speaker 1>Tools division at Developer Express, and he streams live c

241
00:12:52.039 --> 00:12:57.519
<v Speaker 1>Sharp coding and design on Twitch, dot tv, slash code rushed.

242
00:12:58.279 --> 00:13:01.000
<v Speaker 1>Mark has been creating tools for software developers for over

243
00:13:01.039 --> 00:13:04.399
<v Speaker 1>four decades. He was also the He was the guest

244
00:13:04.960 --> 00:13:08.240
<v Speaker 1>on the first show that I was co host on

245
00:13:08.360 --> 00:13:09.039
<v Speaker 1>show one on one.

246
00:13:09.320 --> 00:13:09.679
<v Speaker 3>Wow.

247
00:13:09.960 --> 00:13:11.679
<v Speaker 2>Really that's cool.

248
00:13:11.840 --> 00:13:15.039
<v Speaker 3>Yeah, I did not know that. I feel like I

249
00:13:15.120 --> 00:13:18.480
<v Speaker 3>must have. I feel like after the show, Carl MSSA

250
00:13:18.519 --> 00:13:21.039
<v Speaker 3>got a call for Richard. Richard's like, there's no way

251
00:13:21.080 --> 00:13:22.840
<v Speaker 3>I'm doing this never again.

252
00:13:23.279 --> 00:13:24.639
<v Speaker 2>I think I think I got off that show and

253
00:13:24.679 --> 00:13:28.159
<v Speaker 2>said only fifty shows. Yeah, that's right. I mean, how

254
00:13:28.200 --> 00:13:31.039
<v Speaker 2>hard could it be? Fifty show fifty and.

255
00:13:30.960 --> 00:13:34.320
<v Speaker 1>Here we are the longest running dot net podcast ever

256
00:13:34.639 --> 00:13:38.960
<v Speaker 1>and probably one of the longest running podcasts ever that's

257
00:13:39.000 --> 00:13:39.679
<v Speaker 1>still going.

258
00:13:39.840 --> 00:13:41.399
<v Speaker 2>Yeah. Probably, Yeah, it's hard to know.

259
00:13:41.559 --> 00:13:43.200
<v Speaker 3>That's interesting. Yeah, that's right.

260
00:13:43.519 --> 00:13:45.759
<v Speaker 1>We are the og podcast for better or worse.

261
00:13:45.919 --> 00:13:48.960
<v Speaker 3>Congratulations, guys, I forget Why don't we switch it up.

262
00:13:48.960 --> 00:13:51.039
<v Speaker 3>I'll interview both of you and we'll talk about that.

263
00:13:51.399 --> 00:13:54.600
<v Speaker 2>Hey, all right, I don't think dang.

264
00:13:54.840 --> 00:14:01.720
<v Speaker 1>Okay, So this morning, Mark Martin my time. You gave

265
00:14:01.759 --> 00:14:05.559
<v Speaker 1>me a demo of your new code Rush tools that

266
00:14:05.720 --> 00:14:10.360
<v Speaker 1>use AI and speech recognition, and yeah, wow, I was

267
00:14:10.440 --> 00:14:13.399
<v Speaker 1>just blown away. So maybe you can tell everybody about

268
00:14:13.399 --> 00:14:14.960
<v Speaker 1>this give us the elevator pitch.

269
00:14:15.120 --> 00:14:20.519
<v Speaker 3>Okay, sure. It's essentially it's kind of like as if

270
00:14:20.879 --> 00:14:22.919
<v Speaker 3>AI was kind of like a suit of armor for

271
00:14:22.960 --> 00:14:27.440
<v Speaker 3>you as a developer. It is unlike the agent mode

272
00:14:27.519 --> 00:14:30.080
<v Speaker 3>of Copilot, where it kind of goes off in space.

273
00:14:30.120 --> 00:14:31.879
<v Speaker 3>You kind of give it some boundaries and say here,

274
00:14:31.960 --> 00:14:33.480
<v Speaker 3>this is the issue I want you to go after.

275
00:14:35.399 --> 00:14:38.519
<v Speaker 3>The tools that we have in code Rush are really

276
00:14:38.879 --> 00:14:43.480
<v Speaker 3>much more much closer to you as a developer. It's

277
00:14:43.600 --> 00:14:46.039
<v Speaker 3>kind of like, you know, leveling up in a game

278
00:14:46.120 --> 00:14:50.600
<v Speaker 3>or something along those lines. Your power and speed increase.

279
00:14:52.639 --> 00:14:56.039
<v Speaker 3>The essence of the tooling is making changes to code,

280
00:14:57.240 --> 00:15:03.200
<v Speaker 3>creating new code, and also doing essentially semantic searches through code.

281
00:15:03.559 --> 00:15:06.080
<v Speaker 3>Those are the areas so that you can you can

282
00:15:06.639 --> 00:15:10.000
<v Speaker 3>use the power of AI to essentially offload a lot

283
00:15:10.120 --> 00:15:14.240
<v Speaker 3>of cognitive effort, right, and so anytime that I've got

284
00:15:14.240 --> 00:15:17.799
<v Speaker 3>something that is tedious would otherwise be tedious to do,

285
00:15:19.279 --> 00:15:22.039
<v Speaker 3>or or if i have something that maybe I'm not

286
00:15:22.080 --> 00:15:25.320
<v Speaker 3>sure how to do right, both of these are great,

287
00:15:25.759 --> 00:15:30.759
<v Speaker 3>great places for AI to come step in and and

288
00:15:30.759 --> 00:15:34.679
<v Speaker 3>and the what makes them feel like a suit of

289
00:15:34.799 --> 00:15:40.799
<v Speaker 3>armor is, I think is the is the ease of

290
00:15:40.919 --> 00:15:44.559
<v Speaker 3>use the user interface. Right. By by going after this

291
00:15:44.720 --> 00:15:47.960
<v Speaker 3>in my usual approach right to doing creating any kind

292
00:15:48.000 --> 00:15:54.720
<v Speaker 3>of tooling, you know, looking for any kind of frictional force, right,

293
00:15:54.840 --> 00:15:58.480
<v Speaker 3>any kind of bump and trying to smooth out every bump,

294
00:15:58.960 --> 00:16:05.320
<v Speaker 3>we've gotten to this place where you can essentially do

295
00:16:05.360 --> 00:16:07.679
<v Speaker 3>what they're calling, you know, vibe coding to some degree, right,

296
00:16:08.120 --> 00:16:10.840
<v Speaker 3>but you can do it I as I need it,

297
00:16:10.960 --> 00:16:14.200
<v Speaker 3>right when I need it, I can say okay, you know,

298
00:16:14.240 --> 00:16:17.320
<v Speaker 3>as an example, I think if I showed Carl this morning,

299
00:16:17.360 --> 00:16:19.879
<v Speaker 3>I said something like, let's create a new class called

300
00:16:20.039 --> 00:16:23.600
<v Speaker 3>customer with a first name, last name, an email address,

301
00:16:23.639 --> 00:16:27.080
<v Speaker 3>a street address, and a birth date. And I can

302
00:16:27.120 --> 00:16:28.320
<v Speaker 3>just do that. I don't even have to say the

303
00:16:28.399 --> 00:16:30.080
<v Speaker 3>names of the types. I can just say here's what

304
00:16:30.120 --> 00:16:34.080
<v Speaker 3>I want to do. And if I want to specify things,

305
00:16:34.120 --> 00:16:36.519
<v Speaker 3>I can. I can go into more detail. But if

306
00:16:36.559 --> 00:16:39.000
<v Speaker 3>I don't, and I often don't, and this is what

307
00:16:39.200 --> 00:16:42.639
<v Speaker 3>really lowers the cognitive load. Right as I'm using the tooling,

308
00:16:42.639 --> 00:16:45.559
<v Speaker 3>I say, hey can we fix this, or hey can

309
00:16:45.600 --> 00:16:48.799
<v Speaker 3>you add the method that's missing? Right can I? And

310
00:16:48.840 --> 00:16:52.879
<v Speaker 3>I love talking in clues to AI because it often

311
00:16:52.960 --> 00:16:55.720
<v Speaker 3>figures it out and puts in the thing that I need,

312
00:16:55.759 --> 00:16:58.840
<v Speaker 3>whatever it is, and then I can just go from there.

313
00:16:58.879 --> 00:17:00.440
<v Speaker 3>I can start writing the code or doing what I

314
00:17:00.480 --> 00:17:00.919
<v Speaker 3>need to do.

315
00:17:01.039 --> 00:17:04.359
<v Speaker 2>You know, almost exactly one hundred shows ago eighteen fifty

316
00:17:04.599 --> 00:17:06.960
<v Speaker 2>we were talking to you about open AI. This is

317
00:17:07.000 --> 00:17:10.160
<v Speaker 2>in twenty twenty three, and you hinted at this whole

318
00:17:10.200 --> 00:17:12.920
<v Speaker 2>idea of Hey, I talk about my code when I

319
00:17:13.000 --> 00:17:16.720
<v Speaker 2>code anyway. Yeah, Like, why wouldn't I be saying it.

320
00:17:16.880 --> 00:17:19.000
<v Speaker 2>Wouldn't it be nice if it was listening? Like this

321
00:17:19.759 --> 00:17:21.640
<v Speaker 2>sounds like you just built what you were talking about.

322
00:17:21.799 --> 00:17:23.799
<v Speaker 1>Yeah, this is when we were upstairs at the guard

323
00:17:23.920 --> 00:17:26.559
<v Speaker 1>you and me Mark sitting across from each other in

324
00:17:26.599 --> 00:17:29.960
<v Speaker 1>the attic there where we had the booths, but in

325
00:17:29.960 --> 00:17:33.039
<v Speaker 1>twenty twenty three. But I think the I wanted to

326
00:17:33.079 --> 00:17:35.839
<v Speaker 1>say that. The one of the first impressions that I

327
00:17:35.920 --> 00:17:39.440
<v Speaker 1>got was how out of the way the speech thing

328
00:17:39.640 --> 00:17:41.920
<v Speaker 1>was like, I'm always nervous that if I hit the

329
00:17:41.920 --> 00:17:44.119
<v Speaker 1>wrong key and then it starts listening and it's going

330
00:17:44.200 --> 00:17:47.039
<v Speaker 1>to create a bunch of garbage. But you've got it

331
00:17:47.160 --> 00:17:49.880
<v Speaker 1>so that the right control key by default you tap

332
00:17:49.960 --> 00:17:52.960
<v Speaker 1>it once and then you hold it down and speak right.

333
00:17:53.039 --> 00:17:55.200
<v Speaker 1>It's not like you can just hold down control because

334
00:17:55.200 --> 00:17:57.279
<v Speaker 1>you know what, sometimes you need it as a control key.

335
00:17:57.680 --> 00:18:00.160
<v Speaker 1>You want to hold down control and you see or

336
00:18:00.240 --> 00:18:03.000
<v Speaker 1>V and so I really appreciate the fact that you

337
00:18:03.039 --> 00:18:08.400
<v Speaker 1>came up with like an action that's deliberate that you

338
00:18:08.440 --> 00:18:12.279
<v Speaker 1>would not do otherwise. Yeah, as opposed to like, you know,

339
00:18:12.319 --> 00:18:15.599
<v Speaker 1>the agent that just when you type a few characters,

340
00:18:15.599 --> 00:18:18.480
<v Speaker 1>says hey, how about this in a page of grade

341
00:18:18.519 --> 00:18:19.319
<v Speaker 1>out code?

342
00:18:19.480 --> 00:18:22.960
<v Speaker 3>You know, yeah, no, I think we have solved a

343
00:18:23.039 --> 00:18:27.440
<v Speaker 3>lot of problems that would otherwise be blocking forces to

344
00:18:27.559 --> 00:18:30.599
<v Speaker 3>making this vision come true. Right, and you know the

345
00:18:30.880 --> 00:18:33.680
<v Speaker 3>the you know what you just said about the keyboard.

346
00:18:33.839 --> 00:18:36.720
<v Speaker 3>You know, I've been using this, this this feature has

347
00:18:36.759 --> 00:18:39.039
<v Speaker 3>been in development. I've been using it actively for probably

348
00:18:39.039 --> 00:18:41.200
<v Speaker 3>at least seven months. I want to say. Yeah, and

349
00:18:41.240 --> 00:18:46.480
<v Speaker 3>so I've forgotten how kind of unique that solution is. Yeah,

350
00:18:46.519 --> 00:18:50.119
<v Speaker 3>And it wasn't until you just mentioned that. I was like, oh, right, yeah,

351
00:18:50.279 --> 00:18:53.000
<v Speaker 3>we've made this. There's a couple of things that happen, right,

352
00:18:53.039 --> 00:18:57.039
<v Speaker 3>But basically we said, look, there's on programmer keyboards there's

353
00:18:57.039 --> 00:18:59.440
<v Speaker 3>no push to talk button, right, yeah, weird. So we

354
00:18:59.519 --> 00:19:02.279
<v Speaker 3>have to with something and we can't make it be

355
00:19:02.359 --> 00:19:04.319
<v Speaker 3>something where you have to reach the mouse, and we

356
00:19:04.359 --> 00:19:06.119
<v Speaker 3>can't make it for something where you have to hold

357
00:19:06.119 --> 00:19:09.079
<v Speaker 3>down the control and yet another key. We can't. It's

358
00:19:09.160 --> 00:19:11.200
<v Speaker 3>it's got to be effortless to get in.

359
00:19:11.359 --> 00:19:13.279
<v Speaker 1>And so we I thought it was a brilliant solution.

360
00:19:13.400 --> 00:19:16.319
<v Speaker 3>Well thanks, yeah, no, And and so that's that's part

361
00:19:16.359 --> 00:19:19.240
<v Speaker 3>of what we're doing is we're making things effortless, right,

362
00:19:19.319 --> 00:19:23.160
<v Speaker 3>And there's actually about four different kind of cross section

363
00:19:23.319 --> 00:19:27.119
<v Speaker 3>criterias for success that I think we've done really well

364
00:19:27.160 --> 00:19:30.519
<v Speaker 3>in that we've kind of leap frog other existing technology,

365
00:19:30.559 --> 00:19:32.920
<v Speaker 3>and one of them is ease of use. On the

366
00:19:32.960 --> 00:19:37.279
<v Speaker 3>ease of use side of things, it is effortless and

367
00:19:37.319 --> 00:19:40.240
<v Speaker 3>it is also fast. Yes, right when you when you

368
00:19:40.319 --> 00:19:43.400
<v Speaker 3>say I want to do this, and then you release

369
00:19:43.440 --> 00:19:46.920
<v Speaker 3>the control key because you're done talking. On average, our

370
00:19:47.240 --> 00:19:52.039
<v Speaker 3>our voice to text conversion times is less than a

371
00:19:52.039 --> 00:19:54.640
<v Speaker 3>half a second, so within a half a second of

372
00:19:54.680 --> 00:19:58.160
<v Speaker 3>that release, we know what you're asking for, and at

373
00:19:58.160 --> 00:20:01.519
<v Speaker 3>that point we throw it up to open end. Right,

374
00:20:01.559 --> 00:20:04.480
<v Speaker 3>and we also include with that a lot of context

375
00:20:05.079 --> 00:20:10.319
<v Speaker 3>and a lot of detail that opening eye can use

376
00:20:10.359 --> 00:20:11.400
<v Speaker 3>to figure out what you mean.

377
00:20:11.599 --> 00:20:15.160
<v Speaker 1>Let's talk about context, okay, sure, Yeah. So one of

378
00:20:15.200 --> 00:20:17.400
<v Speaker 1>the things I like about chat GPT and I pay

379
00:20:17.440 --> 00:20:21.039
<v Speaker 1>for the premium version, is that it has it remembers

380
00:20:21.079 --> 00:20:25.640
<v Speaker 1>a lot about you know, it knows that I primarily

381
00:20:25.680 --> 00:20:28.559
<v Speaker 1>work in Blazer. It knows, so therefore when I say

382
00:20:28.599 --> 00:20:30.799
<v Speaker 1>I got this new application and I got this file here,

383
00:20:30.799 --> 00:20:33.880
<v Speaker 1>it knows it's a Blazer app. Nless I tell it otherwise. Yeah,

384
00:20:33.920 --> 00:20:37.359
<v Speaker 1>so it has a history and a lot of these agents,

385
00:20:37.519 --> 00:20:41.079
<v Speaker 1>and I know the Microsoft Copilot agent does not have

386
00:20:41.160 --> 00:20:45.039
<v Speaker 1>this memory, and I think you said that Code Rush

387
00:20:45.079 --> 00:20:50.079
<v Speaker 1>doesn't either. But it does understand the context of your application, right.

388
00:20:50.039 --> 00:20:54.519
<v Speaker 3>Yeah, yes, it does, so just briefly, no history yet,

389
00:20:54.599 --> 00:20:58.920
<v Speaker 3>it's stateless right now, right, But we're leaning in a direction.

390
00:20:58.960 --> 00:21:05.119
<v Speaker 3>We're considering a move towards a essentially a summarized history

391
00:21:05.920 --> 00:21:08.799
<v Speaker 3>in case you want to reference something you've done before.

392
00:21:08.559 --> 00:21:10.759
<v Speaker 1>But that takes more tokens and costs more money and

393
00:21:10.839 --> 00:21:12.839
<v Speaker 1>blah blah, so they have to be an option, right.

394
00:21:13.079 --> 00:21:16.319
<v Speaker 3>Well, yeah, well that's why I'm saying summarized. In other words,

395
00:21:16.400 --> 00:21:19.240
<v Speaker 3>brief really a brief history, but so that we can

396
00:21:19.279 --> 00:21:22.640
<v Speaker 3>get context. So let's just I just want to say

397
00:21:22.680 --> 00:21:26.400
<v Speaker 3>that this version that's coming out effectively, I think tomorrow

398
00:21:26.440 --> 00:21:28.880
<v Speaker 3>from our recording date, so should already be out by

399
00:21:28.880 --> 00:21:33.079
<v Speaker 3>the time you're there from the Code Rush. This version

400
00:21:33.440 --> 00:21:36.160
<v Speaker 3>is what I call one point zero, but there is

401
00:21:36.240 --> 00:21:40.400
<v Speaker 3>already a strongly visualized two point zero version of this

402
00:21:40.960 --> 00:21:43.759
<v Speaker 3>that we are going to commence work on essentially tomorrow

403
00:21:44.279 --> 00:21:47.039
<v Speaker 3>that is going to take things to a whole new

404
00:21:47.119 --> 00:21:49.039
<v Speaker 3>level of what I think is you know, if you

405
00:21:49.079 --> 00:21:51.000
<v Speaker 3>want to call it the mind blowing scale, we're going

406
00:21:51.039 --> 00:21:53.960
<v Speaker 3>to go from this version I call this a five,

407
00:21:54.000 --> 00:21:55.799
<v Speaker 3>and we're going to go to a ten. Yeah, you know,

408
00:21:55.839 --> 00:21:58.279
<v Speaker 3>we're going to get to this killer level and we're

409
00:21:58.279 --> 00:22:01.440
<v Speaker 3>going to solve this. But so briefly, the history right now,

410
00:22:01.440 --> 00:22:05.920
<v Speaker 3>it's stateless, yeah okay, but with regards to context, the

411
00:22:06.000 --> 00:22:12.359
<v Speaker 3>context is rich. We send, for example, a summary of

412
00:22:12.440 --> 00:22:14.400
<v Speaker 3>what's going on with the project, what your new get

413
00:22:14.440 --> 00:22:18.400
<v Speaker 3>packages are, that sort of thing. We send the current file,

414
00:22:18.440 --> 00:22:20.599
<v Speaker 3>we send code behind or the designer if you're in

415
00:22:20.599 --> 00:22:23.440
<v Speaker 3>one of those two files, right. You can also do

416
00:22:23.519 --> 00:22:27.519
<v Speaker 3>things like say, if you mentioned the word clipboard, there's

417
00:22:27.640 --> 00:22:31.279
<v Speaker 3>a something called triggered prompts, and it detects for that

418
00:22:31.359 --> 00:22:34.519
<v Speaker 3>word click clipboard and then adds an additional prompt that

419
00:22:34.559 --> 00:22:36.480
<v Speaker 3>sets out and says the contents so my clipboard are

420
00:22:36.839 --> 00:22:37.839
<v Speaker 3>and shows what they are.

421
00:22:37.960 --> 00:22:41.160
<v Speaker 1>And I like that because it's contextual, like a system prompt.

422
00:22:41.640 --> 00:22:46.880
<v Speaker 1>Even in GitHub Copilot is copilot, dash instructions, dot MD,

423
00:22:47.039 --> 00:22:48.839
<v Speaker 1>and I think you put in a dot GitHub folder

424
00:22:48.839 --> 00:22:51.759
<v Speaker 1>if my memory serves and it's general, it gets sent

425
00:22:51.839 --> 00:22:56.799
<v Speaker 1>with every single you know, user yeah, but I like

426
00:22:56.960 --> 00:22:59.599
<v Speaker 1>the way that you have broken these out into contextuals

427
00:22:59.599 --> 00:23:00.759
<v Speaker 1>based on keywords and things.

428
00:23:00.880 --> 00:23:02.799
<v Speaker 3>Yeah, and no, we did have by the way, we

429
00:23:02.960 --> 00:23:05.640
<v Speaker 3>worked on a feature that allowed me to like hold

430
00:23:05.720 --> 00:23:07.960
<v Speaker 3>down the alt key and say the name of a

431
00:23:08.000 --> 00:23:11.880
<v Speaker 3>class and then release it. But we are not documenting that.

432
00:23:12.240 --> 00:23:17.039
<v Speaker 3>We're essentially not gonna We're not going forward with that feature.

433
00:23:17.440 --> 00:23:20.440
<v Speaker 3>We're instead going forward with a you can talk about

434
00:23:20.480 --> 00:23:23.720
<v Speaker 3>any class you want and we'll figure it out. That's

435
00:23:23.759 --> 00:23:26.319
<v Speaker 3>not now, that'll be in version two. Nice, So version

436
00:23:26.400 --> 00:23:31.880
<v Speaker 3>in version two you'll be able to effortlessly, AI will

437
00:23:31.880 --> 00:23:35.400
<v Speaker 3>be able to infer what you mean, what you're talking about,

438
00:23:35.680 --> 00:23:39.519
<v Speaker 3>which will impact the context that we submit to AI.

439
00:23:40.160 --> 00:23:43.559
<v Speaker 3>So so we're going to solve all this in the

440
00:23:43.599 --> 00:23:45.960
<v Speaker 3>two point zero I guess I shouldn't be talking about

441
00:23:45.960 --> 00:23:48.119
<v Speaker 3>this so much, but but what we do now is

442
00:23:48.160 --> 00:23:50.960
<v Speaker 3>a relatively rich context. So if I want to work

443
00:23:51.000 --> 00:23:52.920
<v Speaker 3>with another file and I want to work with it

444
00:23:52.960 --> 00:23:56.599
<v Speaker 3>in this file, like say, for example, I'm a Zambal

445
00:23:56.680 --> 00:23:58.640
<v Speaker 3>designer and I want to create a data grid and

446
00:23:58.680 --> 00:24:02.200
<v Speaker 3>I want to do data binding on a particular control class,

447
00:24:02.559 --> 00:24:05.519
<v Speaker 3>I can copy that class to the clipboard and then say, hey,

448
00:24:05.519 --> 00:24:07.839
<v Speaker 3>I want to create a data grid here, and I

449
00:24:07.880 --> 00:24:12.640
<v Speaker 3>wanted to have instances of this customer class, and I

450
00:24:12.720 --> 00:24:15.759
<v Speaker 3>want in the code behind for you to create fifty

451
00:24:17.000 --> 00:24:20.920
<v Speaker 3>sample records that have realistic looking data sample data so

452
00:24:20.960 --> 00:24:22.519
<v Speaker 3>I can try this out and work on the UI.

453
00:24:22.599 --> 00:24:23.519
<v Speaker 3>And then that's my problem.

454
00:24:23.599 --> 00:24:26.480
<v Speaker 1>I saw this. I saw this myself, that you did that.

455
00:24:26.640 --> 00:24:30.359
<v Speaker 1>And I want to talk about the speed too, because

456
00:24:30.759 --> 00:24:34.440
<v Speaker 1>in the demo that I did and blazer Train, I

457
00:24:34.519 --> 00:24:37.400
<v Speaker 1>basically created these long prompts. I could create a one

458
00:24:37.480 --> 00:24:40.319
<v Speaker 1>prompt to create a data manager for every model and

459
00:24:40.359 --> 00:24:43.000
<v Speaker 1>the models folder, which there was like twelve or thirteen, right.

460
00:24:43.000 --> 00:24:45.880
<v Speaker 1>I did it against north Wind, and I said, create

461
00:24:45.920 --> 00:24:48.039
<v Speaker 1>a data manager, and I want creud methods for each

462
00:24:48.079 --> 00:24:51.000
<v Speaker 1>one of these using ado dot net objects and blah

463
00:24:51.039 --> 00:24:56.279
<v Speaker 1>blah blah. Trycatch and here's some return class types. Right, success,

464
00:24:56.359 --> 00:24:59.279
<v Speaker 1>failure the data and then error messages. That kind of

465
00:24:59.279 --> 00:25:03.440
<v Speaker 1>simple thing. Yeah, and you it basically took like fifteen

466
00:25:03.519 --> 00:25:06.839
<v Speaker 1>minutes for it to do that and come back and say, yeah,

467
00:25:06.880 --> 00:25:10.440
<v Speaker 1>here's your you know, here's the here's the change set

468
00:25:10.480 --> 00:25:12.240
<v Speaker 1>that I'm going to check in or that that you

469
00:25:12.279 --> 00:25:16.359
<v Speaker 1>can check out. But I like the way that code

470
00:25:16.440 --> 00:25:18.359
<v Speaker 1>rush works because if I was going to do that,

471
00:25:18.480 --> 00:25:20.920
<v Speaker 1>I would create the data manage your class skeleton, or

472
00:25:20.920 --> 00:25:23.160
<v Speaker 1>I would tell it to and then I would say, hey,

473
00:25:23.240 --> 00:25:27.400
<v Speaker 1>let's create cred methods for the album or the artist

474
00:25:27.559 --> 00:25:31.480
<v Speaker 1>or the customer or whatever, and just inspect those because

475
00:25:31.519 --> 00:25:34.079
<v Speaker 1>that would take like no time at all for code

476
00:25:34.160 --> 00:25:36.839
<v Speaker 1>Rush to do. I have a feeling, yeah, and then

477
00:25:37.000 --> 00:25:39.920
<v Speaker 1>and then from there I would tweak that and say, okay,

478
00:25:39.960 --> 00:25:43.240
<v Speaker 1>now let's duplicate this for all of the other models. Sure,

479
00:25:43.319 --> 00:25:44.920
<v Speaker 1>which is something I wouldn't have had a chance to

480
00:25:44.920 --> 00:25:47.519
<v Speaker 1>do if I because I used a big prompt like that.

481
00:25:47.720 --> 00:25:48.160
<v Speaker 2>Right. Yeah.

482
00:25:48.160 --> 00:25:50.240
<v Speaker 3>I actually saw an example today where I was in

483
00:25:50.319 --> 00:25:53.759
<v Speaker 3>one class that had implemented I property notified change. I

484
00:25:53.799 --> 00:25:56.519
<v Speaker 3>asked for a new class, just saying here's the properties

485
00:25:56.559 --> 00:25:59.440
<v Speaker 3>I need, and it because I started in a class

486
00:26:00.160 --> 00:26:02.839
<v Speaker 3>had this style it built it followed the same style

487
00:26:02.880 --> 00:26:04.720
<v Speaker 3>in the second class, which is interesting.

488
00:26:04.759 --> 00:26:05.119
<v Speaker 2>Nice.

489
00:26:05.240 --> 00:26:09.039
<v Speaker 3>But with regards to speed, we have totally solved the

490
00:26:09.079 --> 00:26:12.799
<v Speaker 3>speed problem, like really really solved it well. If you

491
00:26:12.880 --> 00:26:18.960
<v Speaker 3>compare the code rush aigen feature against leading competing AI tools,

492
00:26:19.440 --> 00:26:22.160
<v Speaker 3>it can be up to ten or one hundred times

493
00:26:22.200 --> 00:26:25.480
<v Speaker 3>faster than the other tools, depending on what you're doing

494
00:26:25.480 --> 00:26:27.839
<v Speaker 3>and what's going on. It is and at the very

495
00:26:28.039 --> 00:26:31.640
<v Speaker 3>least it is a little bit faster, right, it's about

496
00:26:31.640 --> 00:26:34.200
<v Speaker 3>five percent faster if anything.

497
00:26:33.799 --> 00:26:37.759
<v Speaker 1>Else, so five to one hundred times faster, five percent

498
00:26:37.799 --> 00:26:38.480
<v Speaker 1>to one hundred times.

499
00:26:38.559 --> 00:26:41.319
<v Speaker 3>No, it's like five to ten thousand percent faster. It

500
00:26:41.599 --> 00:26:43.920
<v Speaker 3>depends on what you're looking at and what you're doing.

501
00:26:44.119 --> 00:26:47.200
<v Speaker 3>But in some cases, and basically what the I guess

502
00:26:47.200 --> 00:26:50.319
<v Speaker 3>the secret the big reveal there is the leading tools

503
00:26:50.319 --> 00:26:54.480
<v Speaker 3>that are out there have not addressed performance in terms

504
00:26:54.559 --> 00:27:02.039
<v Speaker 3>of the integration of AI results with code. They've not.

505
00:27:02.720 --> 00:27:04.640
<v Speaker 3>It seems pretty clear to me at this point that

506
00:27:04.680 --> 00:27:08.400
<v Speaker 3>in the current versions that I'm looking at, they that

507
00:27:08.559 --> 00:27:10.680
<v Speaker 3>is not a concern. That's not something that looked at

508
00:27:10.920 --> 00:27:13.079
<v Speaker 3>or not even something that they've conceived of that they

509
00:27:13.160 --> 00:27:16.559
<v Speaker 3>could actually do faster. Wow, And that is that's you know,

510
00:27:16.559 --> 00:27:18.759
<v Speaker 3>when I was talking about these different criteria, these different

511
00:27:18.759 --> 00:27:21.319
<v Speaker 3>cross sections for how you evaluate something.

512
00:27:21.440 --> 00:27:24.640
<v Speaker 1>Speed is one of those Yes, yeah.

513
00:27:24.440 --> 00:27:27.160
<v Speaker 3>And from and why And I'll give everybody the big

514
00:27:27.200 --> 00:27:30.119
<v Speaker 3>secret here. I'll tell you what the secret, sauce is.

515
00:27:30.160 --> 00:27:32.440
<v Speaker 3>How we're able to do it is that we make

516
00:27:32.519 --> 00:27:35.240
<v Speaker 3>it so that when AI comes back, it doesn't have

517
00:27:35.319 --> 00:27:38.200
<v Speaker 3>to be flowery. It doesn't have to give me the

518
00:27:38.240 --> 00:27:41.480
<v Speaker 3>whole class. It can just give me the changes. And

519
00:27:41.519 --> 00:27:44.880
<v Speaker 3>because it's just giving me the changes, I'm sending back

520
00:27:44.920 --> 00:27:49.680
<v Speaker 3>fewer tokens, which means it's cheaper, it's faster, and it

521
00:27:49.680 --> 00:27:51.519
<v Speaker 3>has a lower environmental impact.

522
00:27:52.160 --> 00:27:54.640
<v Speaker 1>Because your code rush, you know exactly where the code

523
00:27:54.640 --> 00:27:57.640
<v Speaker 1>should go when it comes back. Yeah, so you do

524
00:27:57.759 --> 00:27:58.359
<v Speaker 1>that part of it.

525
00:27:58.480 --> 00:27:59.480
<v Speaker 3>Yeah, we do all that part.

526
00:27:59.559 --> 00:28:01.799
<v Speaker 1>So, yeah, you do everything from visual studio.

527
00:28:02.039 --> 00:28:05.839
<v Speaker 3>Yeah. So the agent technology that's inside code rush is

528
00:28:05.960 --> 00:28:09.440
<v Speaker 3>essentially an expert at taking the response back from AI

529
00:28:10.039 --> 00:28:14.559
<v Speaker 3>and immediately folding it back in the But the speed

530
00:28:14.559 --> 00:28:19.160
<v Speaker 3>benefits are really all gained in conversation with AI. That's

531
00:28:19.200 --> 00:28:21.440
<v Speaker 3>where they are. And nobody's doing this yet because you

532
00:28:21.440 --> 00:28:22.640
<v Speaker 3>can tell because they're so slow.

533
00:28:22.920 --> 00:28:25.440
<v Speaker 2>Yeah, just what are you truly changing the workflow? You're

534
00:28:25.480 --> 00:28:26.960
<v Speaker 2>just speeding up my existing workflow.

535
00:28:27.039 --> 00:28:29.039
<v Speaker 3>Yeah, I'm speeding up your existing workflow.

536
00:28:28.720 --> 00:28:30.440
<v Speaker 2>Yeah, which is what you've always done.

537
00:28:30.519 --> 00:28:32.440
<v Speaker 3>I'm changing it in a way and that now you

538
00:28:32.480 --> 00:28:35.599
<v Speaker 3>can ask more effortlessly and get the answer and see

539
00:28:35.599 --> 00:28:39.039
<v Speaker 3>the results more quickly. And so because that offer is

540
00:28:39.079 --> 00:28:43.000
<v Speaker 3>now available, you lean into that offer more frequently. I

541
00:28:43.039 --> 00:28:46.200
<v Speaker 3>think and so there's kind of this natural change where

542
00:28:46.200 --> 00:28:48.319
<v Speaker 3>you're like, oh, they this tool is pretty cool. Let

543
00:28:48.319 --> 00:28:50.400
<v Speaker 3>me try this. I'm going to slash, you know, try

544
00:28:50.440 --> 00:28:52.359
<v Speaker 3>to slash away at this problem.

545
00:28:52.480 --> 00:28:54.480
<v Speaker 2>Right, But this also seems like not an all in

546
00:28:54.759 --> 00:28:58.240
<v Speaker 2>like do everything through Agentic that you're still doing your

547
00:28:58.279 --> 00:29:01.480
<v Speaker 2>own coding. There some hints from these tools.

548
00:29:01.880 --> 00:29:03.799
<v Speaker 3>Yes, yeah, it's very much in that space.

549
00:29:03.920 --> 00:29:04.160
<v Speaker 2>Yeah.

550
00:29:04.200 --> 00:29:07.680
<v Speaker 3>Like, often I'm like just writing code normally, and then

551
00:29:07.720 --> 00:29:09.720
<v Speaker 3>i might be in a place where I'm like, okay, wait,

552
00:29:09.880 --> 00:29:12.400
<v Speaker 3>I don't know how to do this. This involves some

553
00:29:12.519 --> 00:29:16.000
<v Speaker 3>new framework or new new thing I've never touched before,

554
00:29:16.480 --> 00:29:19.000
<v Speaker 3>and I just ask, right, and I just get it

555
00:29:19.039 --> 00:29:21.240
<v Speaker 3>and I take a look at it. And often I'm

556
00:29:21.279 --> 00:29:23.480
<v Speaker 3>delighted because I'm learning at the same time when I

557
00:29:23.480 --> 00:29:26.680
<v Speaker 3>see it come in. Sometimes I ask for something that's

558
00:29:26.720 --> 00:29:29.240
<v Speaker 3>like a tedious thing, and I'm delighted because I see

559
00:29:29.720 --> 00:29:32.480
<v Speaker 3>a new way of doing it that I didn't know before,

560
00:29:32.880 --> 00:29:35.920
<v Speaker 3>for example, which is also kind of a cool learning experience.

561
00:29:36.119 --> 00:29:39.200
<v Speaker 2>Yeah. Yeah, but I also could see, like with the

562
00:29:39.240 --> 00:29:44.400
<v Speaker 2>Agenic thing, there's sort of scut work coding that you

563
00:29:44.440 --> 00:29:46.400
<v Speaker 2>could do, but it's easier just to hand it to

564
00:29:46.400 --> 00:29:47.279
<v Speaker 2>the tool. Let it generate.

565
00:29:47.559 --> 00:29:49.319
<v Speaker 1>Yeah, hey, this sounds like a good place to take

566
00:29:49.319 --> 00:29:51.160
<v Speaker 1>a break. So we'll be right back after these very

567
00:29:51.160 --> 00:29:53.279
<v Speaker 1>important messages. And as a reminder, if you don't want

568
00:29:53.279 --> 00:29:56.240
<v Speaker 1>to hear these messages, you can opt for an ad

569
00:29:56.279 --> 00:30:00.200
<v Speaker 1>free feed by becoming a patron. Got a patreon, dot

570
00:30:00.319 --> 00:30:05.039
<v Speaker 1>dot nerocks dot com. We'll be right back. You know,

571
00:30:05.200 --> 00:30:08.200
<v Speaker 1>dot net six has officially reached the end of support,

572
00:30:08.279 --> 00:30:11.240
<v Speaker 1>and now is the time to upgrade. Dot Net eight

573
00:30:11.359 --> 00:30:15.400
<v Speaker 1>is well supported on aws. Learn more at aws dot

574
00:30:15.440 --> 00:30:22.799
<v Speaker 1>Amazon dot com, slash dot net. All right, we're back.

575
00:30:23.119 --> 00:30:25.960
<v Speaker 1>It's dot net rocks. I'm Carl Franklin. That's Richard Campbell, hey,

576
00:30:26.079 --> 00:30:30.200
<v Speaker 1>and that's Mark Mellers Mela, Mark Miller. All right, all right,

577
00:30:30.279 --> 00:30:37.000
<v Speaker 1>so I have another question. Is you support what project

578
00:30:37.000 --> 00:30:39.920
<v Speaker 1>types now and what project types will you be supporting

579
00:30:39.920 --> 00:30:40.400
<v Speaker 1>in the future.

580
00:30:40.519 --> 00:30:44.440
<v Speaker 3>Okay, so that's a great question. It's our In terms

581
00:30:44.440 --> 00:30:47.759
<v Speaker 3>of project types, it's basically, if you can hold onto

582
00:30:47.839 --> 00:30:51.519
<v Speaker 3>c sharp, we support that project type. So we support

583
00:30:52.480 --> 00:30:55.880
<v Speaker 3>c sharp, and we support right now is examal and

584
00:30:55.960 --> 00:30:58.640
<v Speaker 3>so all the various flavors of that. Right so that

585
00:30:59.359 --> 00:31:04.720
<v Speaker 3>if you're working or just WPF or whatever way you

586
00:31:04.759 --> 00:31:08.200
<v Speaker 3>can work in that conver that that combination. If you're

587
00:31:08.240 --> 00:31:11.440
<v Speaker 3>working in other UI frameworks that are not supported, but

588
00:31:11.559 --> 00:31:14.240
<v Speaker 3>you're still working in c sharp, we've got to cover

589
00:31:14.359 --> 00:31:15.200
<v Speaker 3>on the c sharp.

590
00:31:15.039 --> 00:31:16.680
<v Speaker 1>Side of it, right, But for now, you wouldn't be

591
00:31:16.720 --> 00:31:18.720
<v Speaker 1>able to say, hey, build me a form in Blazer

592
00:31:18.759 --> 00:31:21.079
<v Speaker 1>that calls into these methods.

593
00:31:20.720 --> 00:31:23.640
<v Speaker 3>Right, No, we cannot do that. Now. Now we're we

594
00:31:23.720 --> 00:31:26.599
<v Speaker 3>are close again, and the two version of this, the

595
00:31:26.640 --> 00:31:28.480
<v Speaker 3>two version, a couple of things are coming into A

596
00:31:28.519 --> 00:31:31.640
<v Speaker 3>one is Blazer support will be coming great. And a

597
00:31:31.720 --> 00:31:34.200
<v Speaker 3>second thing that we have there's a current limitation is

598
00:31:34.200 --> 00:31:36.720
<v Speaker 3>the only way we can create new files right now

599
00:31:37.000 --> 00:31:38.599
<v Speaker 3>is by creating a new class.

600
00:31:38.880 --> 00:31:39.240
<v Speaker 2>Okay.

601
00:31:39.359 --> 00:31:42.160
<v Speaker 3>So in other words, there's no way for us to

602
00:31:42.160 --> 00:31:44.599
<v Speaker 3>have a conversation with AI where a AI comes back

603
00:31:44.640 --> 00:31:46.799
<v Speaker 3>and says, here's a new dot Razor file and here's

604
00:31:46.799 --> 00:31:50.359
<v Speaker 3>a new Dot Sammle file that doesn't that's currently not happening.

605
00:31:50.799 --> 00:31:52.880
<v Speaker 3>It's not hard to get there. But we wanted to ship,

606
00:31:52.920 --> 00:31:56.000
<v Speaker 3>and so we're shipping what we have now. Okay makes sense?

607
00:31:56.240 --> 00:32:02.359
<v Speaker 1>Yeah, I wrote an agent myself in WPF that used

608
00:32:02.359 --> 00:32:05.640
<v Speaker 1>the open AI and I got the response back and

609
00:32:05.720 --> 00:32:08.559
<v Speaker 1>parsed out all the comments. So that I just got

610
00:32:08.559 --> 00:32:12.160
<v Speaker 1>the code and then I could tell it to you know,

611
00:32:12.319 --> 00:32:15.799
<v Speaker 1>write code files. And it does, but I have to

612
00:32:15.920 --> 00:32:21.559
<v Speaker 1>use I basically inject into the thing that does that,

613
00:32:22.359 --> 00:32:26.200
<v Speaker 1>compile it to Roslin and inject in system io and

614
00:32:26.279 --> 00:32:30.359
<v Speaker 1>things like that, so it can actually write files. But yeah,

615
00:32:30.440 --> 00:32:33.240
<v Speaker 1>it takes the result that comes back, compiles it with

616
00:32:33.359 --> 00:32:37.160
<v Speaker 1>Roslin after you inspect it, of course, and that can

617
00:32:37.279 --> 00:32:40.119
<v Speaker 1>also create files and things. Yeah, but it was a

618
00:32:40.160 --> 00:32:43.480
<v Speaker 1>fun exercise, but it's nothing compared to what the actual

619
00:32:43.599 --> 00:32:44.319
<v Speaker 1>real tools do.

620
00:32:44.519 --> 00:32:44.759
<v Speaker 2>Yeah.

621
00:32:44.799 --> 00:32:47.759
<v Speaker 3>So when we're talking about that, right, the inspection, right,

622
00:32:47.880 --> 00:32:52.119
<v Speaker 3>and this idea of user interface, right, one of the

623
00:32:52.119 --> 00:32:55.279
<v Speaker 3>things that happens. I think in a lot of places,

624
00:32:55.720 --> 00:32:59.240
<v Speaker 3>a lot of tooling will give you that inspection phase

625
00:32:59.559 --> 00:33:03.680
<v Speaker 3>in it beforehand in another window. And our approach instead

626
00:33:03.759 --> 00:33:06.880
<v Speaker 3>is let's make the code changes, inject them everywhere, but

627
00:33:07.000 --> 00:33:10.480
<v Speaker 3>give you a really high quality tool for navigating among

628
00:33:10.759 --> 00:33:14.119
<v Speaker 3>all those changes, navigating through all those changes. And I

629
00:33:14.200 --> 00:33:17.400
<v Speaker 3>think that the latter approach is certainly better for.

630
00:33:17.279 --> 00:33:19.319
<v Speaker 1>This this feeling.

631
00:33:19.079 --> 00:33:21.200
<v Speaker 3>Of I'm going to I'm going to go after this,

632
00:33:21.319 --> 00:33:24.720
<v Speaker 3>I'm speaking with intensing what I want, so why not

633
00:33:24.880 --> 00:33:26.960
<v Speaker 3>just give it to you faster by putting it right

634
00:33:26.960 --> 00:33:28.920
<v Speaker 3>there in the code. Right, If you think about it,

635
00:33:28.920 --> 00:33:30.559
<v Speaker 3>if I have to go to another window and I'm

636
00:33:30.559 --> 00:33:32.680
<v Speaker 3>looking at code, sometimes I'm looking at code in that

637
00:33:32.720 --> 00:33:35.319
<v Speaker 3>other window and talking about other tools. I'm looking at code.

638
00:33:35.599 --> 00:33:39.799
<v Speaker 3>That is where a small change is among a giant

639
00:33:40.480 --> 00:33:43.559
<v Speaker 3>reproduction of all the code I had, right, and I

640
00:33:43.599 --> 00:33:46.279
<v Speaker 3>have to scroll up and down, visually scan it, then

641
00:33:46.359 --> 00:33:48.799
<v Speaker 3>copy it, maybe copy a feel and go paste it in.

642
00:33:49.119 --> 00:33:51.319
<v Speaker 3>Maybe it's in sections and I have to go copy

643
00:33:51.359 --> 00:33:53.559
<v Speaker 3>one and paste it in, copy another, paste it in.

644
00:33:53.839 --> 00:33:55.599
<v Speaker 3>Or maybe there's a button I can click and it

645
00:33:55.640 --> 00:33:57.200
<v Speaker 3>puts it in. But still I got to click and

646
00:33:57.240 --> 00:33:59.160
<v Speaker 3>wait and then go to the other one, click and

647
00:33:59.200 --> 00:34:01.839
<v Speaker 3>wait and do that. And there's this whole thing where

648
00:34:01.880 --> 00:34:04.559
<v Speaker 3>you're not in the editor, right. And and what I'm

649
00:34:04.559 --> 00:34:06.920
<v Speaker 3>trying to do here is we're you know, with all

650
00:34:06.960 --> 00:34:08.840
<v Speaker 3>of the tooling that we're trying to, you know, create

651
00:34:09.199 --> 00:34:11.599
<v Speaker 3>is make it so that look, we are not leaving

652
00:34:11.639 --> 00:34:14.679
<v Speaker 3>the editor, right the editors where we stay. The editor

653
00:34:14.800 --> 00:34:17.719
<v Speaker 3>is our world. That's the world we you know, we

654
00:34:17.840 --> 00:34:21.119
<v Speaker 3>slash and build in you know, we create, and we

655
00:34:21.199 --> 00:34:23.599
<v Speaker 3>go after the tasks and the challenges there in the editor.

656
00:34:23.679 --> 00:34:26.519
<v Speaker 3>So there's just no way, we're leaving that space. And

657
00:34:26.559 --> 00:34:30.119
<v Speaker 3>as a result, it's more effortless, the cognitive load is lower,

658
00:34:30.679 --> 00:34:32.280
<v Speaker 3>and as and the other things.

659
00:34:32.280 --> 00:34:32.719
<v Speaker 1>You have this.

660
00:34:33.159 --> 00:34:36.239
<v Speaker 3>Oh, I just I wanted something that was tedious and

661
00:34:36.280 --> 00:34:38.559
<v Speaker 3>I and now I have it. Well, I'm ready to

662
00:34:38.679 --> 00:34:40.880
<v Speaker 3>you know, I'm still refreshed. I'm ready to keep going.

663
00:34:41.159 --> 00:34:42.679
<v Speaker 2>Yeah right, yeah.

664
00:34:42.760 --> 00:34:44.639
<v Speaker 1>So one of the problems that I have with the

665
00:34:44.679 --> 00:34:51.159
<v Speaker 1>open AI for code and even the co pilot, the

666
00:34:51.199 --> 00:34:56.639
<v Speaker 1>getthub copilot coding agent, is that it's nondeterministic. So I

667
00:34:56.679 --> 00:35:00.079
<v Speaker 1>give if I gave it the same prompt twice the

668
00:35:00.079 --> 00:35:03.239
<v Speaker 1>second time, I may come back with you know, I

669
00:35:03.280 --> 00:35:05.880
<v Speaker 1>had this problem with it creating a data manager. It

670
00:35:05.960 --> 00:35:09.079
<v Speaker 1>decided to break that out into three partial classes, which

671
00:35:09.119 --> 00:35:12.599
<v Speaker 1>wouldn't be bad except that one of two of the

672
00:35:12.800 --> 00:35:15.960
<v Speaker 1>partial classes had the same method in it, and you know,

673
00:35:16.159 --> 00:35:19.320
<v Speaker 1>I had to specifically tell it, don't use partial classes,

674
00:35:19.320 --> 00:35:22.079
<v Speaker 1>put in everything in one class, and don't have any

675
00:35:22.159 --> 00:35:24.400
<v Speaker 1>duplicate methods. I had to tell it that.

676
00:35:24.480 --> 00:35:27.440
<v Speaker 3>Yeah, yeah, you know, yeah, yeah, I was just gonna say, well,

677
00:35:27.559 --> 00:35:29.760
<v Speaker 3>when you first said it's non deterministic, I'm like, welcome

678
00:35:29.800 --> 00:35:33.360
<v Speaker 3>to AI. And then as you were talking, I was thinking, well,

679
00:35:33.440 --> 00:35:36.760
<v Speaker 3>you can kind of control it, corral it in a bit, right,

680
00:35:36.800 --> 00:35:40.119
<v Speaker 3>you could do that. I actually find that one of

681
00:35:40.159 --> 00:35:43.199
<v Speaker 3>the things that's useful is if I see like this

682
00:35:43.320 --> 00:35:47.480
<v Speaker 3>kind of variance and it goes against my style, I

683
00:35:47.559 --> 00:35:49.440
<v Speaker 3>kind of put in like these what we call the

684
00:35:50.199 --> 00:35:53.639
<v Speaker 3>system kind of system proplems add ons to the prompt, right, right,

685
00:35:53.679 --> 00:35:55.800
<v Speaker 3>so that no matter what it'll say, hey, I always

686
00:35:55.960 --> 00:35:59.119
<v Speaker 3>like to use the latest fluent assertions or something like

687
00:35:59.159 --> 00:36:00.000
<v Speaker 3>that in my test case.

688
00:36:00.360 --> 00:36:03.480
<v Speaker 2>Yes, yes, right, I guess what I'm saying is.

689
00:36:03.360 --> 00:36:06.280
<v Speaker 3>I just those are those are ways that you can

690
00:36:06.400 --> 00:36:09.280
<v Speaker 3>kind of get to there's you know, it's it's still

691
00:36:09.320 --> 00:36:12.599
<v Speaker 3>not deterministic, but you're getting closer, right, You're getting.

692
00:36:12.599 --> 00:36:16.199
<v Speaker 1>Yeah, getting closer. Yeah, you're tweaking it. I found that

693
00:36:16.239 --> 00:36:21.559
<v Speaker 1>the coding agent like to downgrade to from dot net

694
00:36:21.679 --> 00:36:23.199
<v Speaker 1>nine to dot net eight constantly.

695
00:36:23.239 --> 00:36:25.320
<v Speaker 2>Yes, yes, I've seen that before too.

696
00:36:25.599 --> 00:36:28.199
<v Speaker 1>It's in my system prompt and it's in my user prompt,

697
00:36:28.199 --> 00:36:30.119
<v Speaker 1>and then it still doesn't and I say, do not

698
00:36:30.800 --> 00:36:34.320
<v Speaker 1>downgrade you know, oh okay, oh yeah, yeah.

699
00:36:34.320 --> 00:36:37.320
<v Speaker 3>So this is really interesting. So one of the things

700
00:36:37.320 --> 00:36:40.920
<v Speaker 3>I've discovered when you're working with working with code that's

701
00:36:40.960 --> 00:36:47.079
<v Speaker 3>being generated off of sources that have changed over time. Right,

702
00:36:47.159 --> 00:36:50.639
<v Speaker 3>classic example is end unit test cases. Right. They used

703
00:36:50.679 --> 00:36:53.480
<v Speaker 3>to be able to say a cert dot is true,

704
00:36:54.000 --> 00:36:57.519
<v Speaker 3>and now they essentially broke that. And now you've got

705
00:36:57.519 --> 00:37:01.280
<v Speaker 3>to say, now the code you often wanted to be

706
00:37:01.320 --> 00:37:05.800
<v Speaker 3>a cert dot that. Right, So if you have essentially

707
00:37:05.800 --> 00:37:08.239
<v Speaker 3>breaking changes or code, that is the way you do

708
00:37:08.320 --> 00:37:11.159
<v Speaker 3>it has changed over time. And AI is saying, well,

709
00:37:11.159 --> 00:37:14.880
<v Speaker 3>I'm scanning everything for the answer, right, then you're gonna

710
00:37:14.960 --> 00:37:19.320
<v Speaker 3>you're gonna get this kind of variance more often. And

711
00:37:19.480 --> 00:37:22.239
<v Speaker 3>the the more either edge case it is, in other words,

712
00:37:22.280 --> 00:37:25.079
<v Speaker 3>the fewer examples there are, or the more that they've

713
00:37:25.119 --> 00:37:30.679
<v Speaker 3>broken it over time, right, the more this variance occurs. Right,

714
00:37:30.719 --> 00:37:33.440
<v Speaker 3>And you really, you really, you really start to need

715
00:37:33.480 --> 00:37:38.199
<v Speaker 3>to corral things in with these very explicit pieces. But

716
00:37:38.239 --> 00:37:41.920
<v Speaker 3>what's interesting is that, like one of the things that

717
00:37:41.920 --> 00:37:43.920
<v Speaker 3>we had to do to build this right, Essentially, one

718
00:37:43.920 --> 00:37:46.760
<v Speaker 3>of the things that our agent does is our agent

719
00:37:47.039 --> 00:37:51.760
<v Speaker 3>allows for variance to come back from AI and it

720
00:37:51.840 --> 00:37:54.880
<v Speaker 3>gets it back in the right place. So so we've

721
00:37:54.880 --> 00:37:58.239
<v Speaker 3>got like a ton of code that and test cases

722
00:37:58.599 --> 00:38:05.039
<v Speaker 3>that are all based around this idea of defense against hallucinations. Right, sure,

723
00:38:05.760 --> 00:38:10.719
<v Speaker 3>and so when a hallucination comes like it's we as

724
00:38:10.719 --> 00:38:12.880
<v Speaker 3>soon as we spot it, it's like gold to us,

725
00:38:13.000 --> 00:38:16.519
<v Speaker 3>right yeah, we're like you grab it and we have.

726
00:38:17.239 --> 00:38:19.519
<v Speaker 3>One of the things that's really cool about our implementation

727
00:38:19.719 --> 00:38:23.119
<v Speaker 3>is that for every interaction you do, you do there's

728
00:38:23.119 --> 00:38:24.800
<v Speaker 3>a log file that's created.

729
00:38:25.000 --> 00:38:26.800
<v Speaker 2>Yes, I saw these amazing.

730
00:38:27.000 --> 00:38:29.079
<v Speaker 3>So a couple of things that are beneficial about this

731
00:38:29.119 --> 00:38:32.360
<v Speaker 3>one is that log file is beneficial if you're ever

732
00:38:32.400 --> 00:38:39.360
<v Speaker 3>going to exploit the the ind nification against copyright which

733
00:38:39.400 --> 00:38:43.320
<v Speaker 3>is offered by AI tooling right writ shout GBT has

734
00:38:43.320 --> 00:38:44.840
<v Speaker 3>something along the lines.

735
00:38:44.719 --> 00:38:47.199
<v Speaker 1>Because you have a log for the prompt, you have

736
00:38:47.239 --> 00:38:50.280
<v Speaker 1>a log for the return, yes, and then you have

737
00:38:50.400 --> 00:38:53.239
<v Speaker 1>other logs, but they're individual logs yes.

738
00:38:53.280 --> 00:38:55.880
<v Speaker 3>And therefore, so for each request you make, there are

739
00:38:55.960 --> 00:38:59.599
<v Speaker 3>essentially four logs that are generated and and that gives

740
00:38:59.599 --> 00:39:03.840
<v Speaker 3>you a fleet verifiable audit trail and audit auditible trail

741
00:39:04.199 --> 00:39:07.719
<v Speaker 3>in terms of what how I have used ai UH

742
00:39:07.760 --> 00:39:12.159
<v Speaker 3>in this application and how I've integrated the One of

743
00:39:12.159 --> 00:39:15.480
<v Speaker 3>those four files that we create has a dot test extension,

744
00:39:15.880 --> 00:39:19.280
<v Speaker 3>and that dot test extension is a test case that

745
00:39:19.360 --> 00:39:21.800
<v Speaker 3>if you had problems or something didn't work the way

746
00:39:21.840 --> 00:39:25.320
<v Speaker 3>you were expecting you contact support as it Support might

747
00:39:25.360 --> 00:39:27.360
<v Speaker 3>ask for the test case. You could send it, and

748
00:39:27.400 --> 00:39:31.440
<v Speaker 3>that test case would allow us to reproduce that scenario.

749
00:39:32.000 --> 00:39:36.159
<v Speaker 3>And that's how we've grabbed onto these hallucinations so so

750
00:39:36.559 --> 00:39:39.320
<v Speaker 3>fast and quickly. Right when we when we see a problem,

751
00:39:39.360 --> 00:39:41.880
<v Speaker 3>it's gold because we grab that test case and we

752
00:39:41.920 --> 00:39:44.280
<v Speaker 3>go put it in and then we start looking at it.

753
00:39:44.320 --> 00:39:46.920
<v Speaker 3>How do we you know, what's what? We look at it?

754
00:39:46.920 --> 00:39:50.920
<v Speaker 3>We analyze what are the chances that hallucination happens again? Right?

755
00:39:50.960 --> 00:39:54.400
<v Speaker 3>How do we what defensive code can we add? And

756
00:39:54.440 --> 00:39:58.760
<v Speaker 3>what's interesting is we have a very specific spec that

757
00:39:58.840 --> 00:40:03.079
<v Speaker 3>we deliver open A but we have a very wide

758
00:40:03.159 --> 00:40:06.400
<v Speaker 3>tolerance for what open AI can come back with. Right.

759
00:40:07.079 --> 00:40:10.320
<v Speaker 3>What we tolerate is would be in normal scenarios would

760
00:40:10.320 --> 00:40:12.800
<v Speaker 3>because I think a lot of people would almost consider

761
00:40:12.840 --> 00:40:18.079
<v Speaker 3>that's ridiculous in terms of how much variance or or

762
00:40:18.440 --> 00:40:21.519
<v Speaker 3>you know from the spec you're allowing for, right, you know,

763
00:40:21.599 --> 00:40:25.480
<v Speaker 3>but we were basically allowing for open eye to respond

764
00:40:25.599 --> 00:40:28.920
<v Speaker 3>back with things that are almost completely wrong and then

765
00:40:28.960 --> 00:40:29.679
<v Speaker 3>we fix them.

766
00:40:29.760 --> 00:40:32.519
<v Speaker 1>So there is a temperature setting right when you when

767
00:40:32.559 --> 00:40:35.559
<v Speaker 1>you issue an API command.

768
00:40:35.800 --> 00:40:38.400
<v Speaker 3>Yes, we're not touching that or playing with that at all.

769
00:40:38.440 --> 00:40:40.519
<v Speaker 2>You're using the default. So what is the default?

770
00:40:40.559 --> 00:40:44.280
<v Speaker 1>Like a very low temperature, so low tolerance for hallucinations,

771
00:40:44.320 --> 00:40:44.840
<v Speaker 1>like zero.

772
00:40:45.079 --> 00:40:47.239
<v Speaker 3>Yeah, I understanding is that I don't know if it's

773
00:40:47.320 --> 00:40:49.000
<v Speaker 3>zero or not, but I'm understanding it's pretty low.

774
00:40:49.079 --> 00:40:49.719
<v Speaker 2>It's pretty low.

775
00:40:49.800 --> 00:40:52.400
<v Speaker 3>Yeah, yeah, yeah, and it might be even lower when

776
00:40:52.440 --> 00:40:53.960
<v Speaker 3>you're doing code related requests.

777
00:40:54.320 --> 00:40:56.199
<v Speaker 2>I imagine it should be. I'm also thinking about what

778
00:40:56.280 --> 00:40:59.800
<v Speaker 2>Carl talked about with the system MD, like shouldn't have

779
00:40:59.800 --> 00:41:01.960
<v Speaker 2>be this be stuff that's basically a part of every

780
00:41:01.960 --> 00:41:06.880
<v Speaker 2>prompt every time, like resist hallucination, make sure it's accurate.

781
00:41:07.159 --> 00:41:09.519
<v Speaker 2>I keep reading about folks doing agenda GAI, where it's like,

782
00:41:10.079 --> 00:41:13.800
<v Speaker 2>make sure you do every step. You know, you cannot

783
00:41:13.840 --> 00:41:16.360
<v Speaker 2>proceed to the next thing without showing proof of this.

784
00:41:17.079 --> 00:41:20.440
<v Speaker 2>Building more testing into each step so that it actually

785
00:41:20.880 --> 00:41:22.239
<v Speaker 2>shows that the test passed.

786
00:41:22.719 --> 00:41:24.960
<v Speaker 1>What I think I hear Mark saying is that we're

787
00:41:25.000 --> 00:41:29.800
<v Speaker 1>foregoing most of that in lieu of taking the stuff

788
00:41:29.800 --> 00:41:33.159
<v Speaker 1>that comes back from it and using our own smarts

789
00:41:33.199 --> 00:41:35.679
<v Speaker 1>to discern what is real and what's not.

790
00:41:35.960 --> 00:41:38.920
<v Speaker 3>Yeah. And also we're doing things a step at a time,

791
00:41:38.960 --> 00:41:44.679
<v Speaker 3>and each step is directed as a developer directed action right,

792
00:41:44.719 --> 00:41:46.960
<v Speaker 3>So the developer might say I need some test cases.

793
00:41:47.320 --> 00:41:49.159
<v Speaker 3>And then the developer might say, okay, I want to

794
00:41:50.320 --> 00:41:52.760
<v Speaker 3>All these test cases have got hard coded numbers inside

795
00:41:52.760 --> 00:41:55.039
<v Speaker 3>of them, and I want to change that to be

796
00:41:55.400 --> 00:41:58.119
<v Speaker 3>parameters to the test case and use the test case attribute.

797
00:41:58.480 --> 00:42:00.920
<v Speaker 3>So convert all these test cases to me the more flexible,

798
00:42:01.039 --> 00:42:03.480
<v Speaker 3>do that for me. And so that's the second step

799
00:42:03.559 --> 00:42:06.599
<v Speaker 3>or whatever. And so the developers are doing these steps

800
00:42:06.679 --> 00:42:09.639
<v Speaker 3>one at a time in our model, and so the

801
00:42:09.719 --> 00:42:14.519
<v Speaker 3>developer essentially approves after each one. Right now. One of

802
00:42:14.559 --> 00:42:16.559
<v Speaker 3>the piece is the things you mentioned there that I

803
00:42:16.599 --> 00:42:19.960
<v Speaker 3>really like that we do not have yet, but I

804
00:42:20.000 --> 00:42:22.079
<v Speaker 3>think some form of this is likely to come in

805
00:42:22.079 --> 00:42:26.639
<v Speaker 3>the two point zero and that is the ability to

806
00:42:26.760 --> 00:42:31.280
<v Speaker 3>validate or verify by looking at, for example, compiler errors

807
00:42:31.320 --> 00:42:34.360
<v Speaker 3>after a build like before and after a build. Right,

808
00:42:34.679 --> 00:42:37.719
<v Speaker 3>compiler always gets to say before and after a change,

809
00:42:37.760 --> 00:42:40.840
<v Speaker 3>I mean not a build. Yeah, So I think that's interesting.

810
00:42:41.559 --> 00:42:45.440
<v Speaker 3>That's a that's a really interesting piece. Giving giving that,

811
00:42:45.679 --> 00:42:49.000
<v Speaker 3>including that as part of context, and make it triggerable.

812
00:42:49.239 --> 00:42:51.199
<v Speaker 3>So if I use the word error, or I say

813
00:42:51.199 --> 00:42:55.039
<v Speaker 3>the word fix, can you fix this something along those lines,

814
00:42:55.239 --> 00:42:56.880
<v Speaker 3>it will say, well, what's going on.

815
00:42:56.880 --> 00:42:58.840
<v Speaker 1>In that list of triggered prompts that you showed me

816
00:42:58.880 --> 00:43:01.039
<v Speaker 1>where you have like clipboard and then a prompt that

817
00:43:01.280 --> 00:43:05.000
<v Speaker 1>has is there one? Can you set just a general

818
00:43:05.039 --> 00:43:07.960
<v Speaker 1>system prompt in there that goes with every single request?

819
00:43:08.039 --> 00:43:10.840
<v Speaker 3>Yes, each one of those prompts has a regular expression

820
00:43:11.320 --> 00:43:14.639
<v Speaker 3>that triggers it, and the regular expression essentially searching that text,

821
00:43:15.159 --> 00:43:17.280
<v Speaker 3>that speech to text translation that came back.

822
00:43:17.320 --> 00:43:19.280
<v Speaker 1>So you get just to a wild card everything.

823
00:43:19.360 --> 00:43:22.679
<v Speaker 3>Yeah, you dude, dot star for the for the regular

824
00:43:22.719 --> 00:43:25.599
<v Speaker 3>expression to match, and it'll match everything. But even with that,

825
00:43:25.679 --> 00:43:29.480
<v Speaker 3>you can specify an additional code rush context, which could

826
00:43:29.519 --> 00:43:31.920
<v Speaker 3>say something like that, make this happen only in see

827
00:43:31.920 --> 00:43:35.559
<v Speaker 3>sharp files. Yes, we'll make this happen only when i'm uh,

828
00:43:35.599 --> 00:43:38.400
<v Speaker 3>when there's a selection, or only when I'm debugging. Right,

829
00:43:38.480 --> 00:43:42.400
<v Speaker 3>So you can set different contexts, rich control over that.

830
00:43:42.519 --> 00:43:44.320
<v Speaker 2>I love that. I love both, and that all.

831
00:43:44.199 --> 00:43:47.000
<v Speaker 3>Happens automatically, so you don't need to say any of

832
00:43:47.039 --> 00:43:48.079
<v Speaker 3>those things. Right.

833
00:43:48.199 --> 00:43:48.840
<v Speaker 2>I like both.

834
00:43:48.880 --> 00:43:51.280
<v Speaker 1>I like having a general system prompt, and I also

835
00:43:51.400 --> 00:43:55.199
<v Speaker 1>like having a context based triggered prompt. Yeah yeah, yeah,

836
00:43:55.559 --> 00:43:59.559
<v Speaker 1>that's very very smart. Wow, I don't know where to go?

837
00:43:59.599 --> 00:44:01.880
<v Speaker 1>Where else where else can we go besides Austin here.

838
00:44:02.239 --> 00:44:05.360
<v Speaker 1>I mean, I'm blown away, right. You know, there is

839
00:44:05.400 --> 00:44:09.000
<v Speaker 1>one thing that became a parent when we were talking

840
00:44:09.000 --> 00:44:11.440
<v Speaker 1>about this, is that the way that I did it

841
00:44:11.559 --> 00:44:15.440
<v Speaker 1>in my Blazer train thing was to create a big prompt,

842
00:44:15.480 --> 00:44:18.920
<v Speaker 1>a big giant prompt, right, and then you know, like

843
00:44:19.079 --> 00:44:21.480
<v Speaker 1>creating a data manager for example, that's got you know,

844
00:44:22.039 --> 00:44:26.159
<v Speaker 1>fifty sixty methods. You know, we got cred methods for

845
00:44:26.519 --> 00:44:28.719
<v Speaker 1>idio dot net for each of these models, let's say,

846
00:44:29.320 --> 00:44:32.119
<v Speaker 1>and it takes you know, fifteen minutes, and then I

847
00:44:32.159 --> 00:44:35.320
<v Speaker 1>can check it out and one at a time tweak things.

848
00:44:35.519 --> 00:44:35.719
<v Speaker 2>Right.

849
00:44:36.679 --> 00:44:41.280
<v Speaker 1>Well, that's a different way to approach. And if it

850
00:44:41.320 --> 00:44:43.599
<v Speaker 1>doesn't work out, you can just blow the issue away

851
00:44:43.599 --> 00:44:48.519
<v Speaker 1>and start again, right, Yeah, close the issue. But that's

852
00:44:48.559 --> 00:44:50.880
<v Speaker 1>a different approach than what you're doing. What you're doing is,

853
00:44:50.920 --> 00:44:53.440
<v Speaker 1>like you said, very close to the code, right, it's

854
00:44:53.519 --> 00:44:57.440
<v Speaker 1>in the code. You're probably not doing big things like that.

855
00:44:57.639 --> 00:45:02.639
<v Speaker 1>You might say, you know, do some data binding over

856
00:45:02.679 --> 00:45:07.320
<v Speaker 1>this particular model or something like that in WPF and

857
00:45:07.400 --> 00:45:10.000
<v Speaker 1>later in Blazer, but you would probably do them one

858
00:45:10.039 --> 00:45:14.599
<v Speaker 1>at a time and in a more controlled way. It's

859
00:45:14.719 --> 00:45:17.719
<v Speaker 1>kind of what I'm thinking. But it's two different ways

860
00:45:17.760 --> 00:45:18.280
<v Speaker 1>to approach you.

861
00:45:18.320 --> 00:45:22.000
<v Speaker 3>Well, well, I do like I I kind of approach

862
00:45:22.079 --> 00:45:24.440
<v Speaker 3>by groups. So like for data binding, for example, I

863
00:45:24.440 --> 00:45:26.559
<v Speaker 3>would say, well, like, I want to I want you

864
00:45:27.000 --> 00:45:28.960
<v Speaker 3>I've got a class on the clipboard. I want to

865
00:45:28.960 --> 00:45:29.719
<v Speaker 3>do data binding.

866
00:45:29.800 --> 00:45:29.920
<v Speaker 1>All.

867
00:45:29.960 --> 00:45:32.559
<v Speaker 3>I want you to find all the controls on the

868
00:45:32.559 --> 00:45:37.199
<v Speaker 3>form already and bind them to the appropriate properties in

869
00:45:37.239 --> 00:45:40.159
<v Speaker 3>this class. So I'll do that. Or I'm like say, hey,

870
00:45:40.199 --> 00:45:41.960
<v Speaker 3>I want you to take all the buttons on this

871
00:45:42.119 --> 00:45:44.679
<v Speaker 3>form that don't have a style, and I want you

872
00:45:44.719 --> 00:45:46.880
<v Speaker 3>to add a new style to that, and I want

873
00:45:46.920 --> 00:45:49.440
<v Speaker 3>you to set the default font for that new style

874
00:45:49.480 --> 00:45:52.599
<v Speaker 3>to be twenty four. So I will kind of group

875
00:45:52.679 --> 00:45:53.760
<v Speaker 3>things together.

876
00:45:53.599 --> 00:45:55.840
<v Speaker 2>And I'll digestible pieces, yes, and.

877
00:45:55.800 --> 00:45:59.039
<v Speaker 3>I'll do those all at once check the results. Sometimes

878
00:45:59.039 --> 00:46:01.599
<v Speaker 3>it's a run to check those results and stepping through

879
00:46:01.639 --> 00:46:04.760
<v Speaker 3>the code maybe, and sometimes it's visually scanning the code

880
00:46:04.760 --> 00:46:05.920
<v Speaker 3>and seeing what's going on.

881
00:46:05.880 --> 00:46:08.039
<v Speaker 1>And so what happens if it does something that you

882
00:46:08.119 --> 00:46:08.960
<v Speaker 1>don't like?

883
00:46:09.400 --> 00:46:11.719
<v Speaker 3>I mean, well, you've got so that's a great question.

884
00:46:11.800 --> 00:46:13.800
<v Speaker 3>I love that if you ask, because this is this

885
00:46:13.880 --> 00:46:14.679
<v Speaker 3>is actually.

886
00:46:14.320 --> 00:46:17.880
<v Speaker 4>Another Hey have we met? This is my freaking job, man,

887
00:46:18.159 --> 00:46:20.719
<v Speaker 4>This is I don't know that you should have a

888
00:46:20.760 --> 00:46:24.639
<v Speaker 4>podcast or something. This guy's good.

889
00:46:26.719 --> 00:46:29.280
<v Speaker 3>So so yeah, this is a This is actually great

890
00:46:29.400 --> 00:46:33.000
<v Speaker 3>because again this is a great point of differentiation. If

891
00:46:33.000 --> 00:46:36.280
<v Speaker 3>you look at other tooling, other tooling makes changes in

892
00:46:36.360 --> 00:46:41.599
<v Speaker 3>multiple places and requires multiple undos right to do that,

893
00:46:42.039 --> 00:46:45.480
<v Speaker 3>whereas the code Rush aigen does everything, wraps everything up

894
00:46:45.480 --> 00:46:49.159
<v Speaker 3>in a single undue unit, so you can undo, right,

895
00:46:49.239 --> 00:46:52.639
<v Speaker 3>go back, or go forward again. And when you go forward,

896
00:46:52.679 --> 00:46:57.400
<v Speaker 3>that navigator I talked about that really high level you know,

897
00:46:57.840 --> 00:47:01.039
<v Speaker 3>ability to look around, to go from changed to change,

898
00:47:01.039 --> 00:47:03.320
<v Speaker 3>and to see the differences. That comes back up on

899
00:47:03.360 --> 00:47:06.400
<v Speaker 3>a redo. So if you undoing then redo, you can

900
00:47:06.440 --> 00:47:09.760
<v Speaker 3>get that navigator back up and scan the differences inside

901
00:47:09.800 --> 00:47:10.400
<v Speaker 3>if you need.

902
00:47:10.280 --> 00:47:12.960
<v Speaker 2>To do that. Yeah, that's cool, so so.

903
00:47:13.000 --> 00:47:16.519
<v Speaker 3>And it's fast, right. The main way time is waiting

904
00:47:16.519 --> 00:47:19.440
<v Speaker 3>for AI to give you that composition that responds back.

905
00:47:19.800 --> 00:47:22.840
<v Speaker 3>That's your main once you do that, for code Rush

906
00:47:22.920 --> 00:47:26.679
<v Speaker 3>to make many changes through many files is generally less

907
00:47:26.679 --> 00:47:28.800
<v Speaker 3>than a second. It doesn't, it doesn't take that long.

908
00:47:28.920 --> 00:47:31.519
<v Speaker 2>So I'm also thinking in terms of how much experience

909
00:47:31.519 --> 00:47:33.639
<v Speaker 2>you need as a software developer to keep able to

910
00:47:33.679 --> 00:47:34.960
<v Speaker 2>use these tools successfully.

911
00:47:35.119 --> 00:47:38.719
<v Speaker 3>Well, you cannot, I think you cannot be a brand

912
00:47:38.760 --> 00:47:39.519
<v Speaker 3>new developer.

913
00:47:39.760 --> 00:47:42.559
<v Speaker 2>Yeah, I agree, Right, you can't, like you don't know

914
00:47:42.599 --> 00:47:44.519
<v Speaker 2>when the tools misbehaving.

915
00:47:44.559 --> 00:47:47.280
<v Speaker 3>Well, you could, you can get I haven't seen scenarios

916
00:47:47.320 --> 00:47:50.760
<v Speaker 3>where you ask for something and there's just not a

917
00:47:50.800 --> 00:47:52.519
<v Speaker 3>lot of content out there in terms of what you're

918
00:47:52.559 --> 00:47:54.920
<v Speaker 3>asking for, and so what you get is something that

919
00:47:55.000 --> 00:47:57.599
<v Speaker 3>maybe doesn't work, or maybe it's on a you know,

920
00:47:57.679 --> 00:48:00.280
<v Speaker 3>on a framework that's been changing over time, So you

921
00:48:00.320 --> 00:48:02.400
<v Speaker 3>get old code that doesn't work or something like that.

922
00:48:02.679 --> 00:48:06.559
<v Speaker 3>And if you don't know anything about that, you don't

923
00:48:06.559 --> 00:48:07.800
<v Speaker 3>know how to solve it. You're stuck.

924
00:48:08.119 --> 00:48:10.159
<v Speaker 1>Here's a great example, and I brought this up in

925
00:48:10.239 --> 00:48:13.559
<v Speaker 1>a previous show. Mark you'll like this. Yeah, tell the

926
00:48:13.599 --> 00:48:20.639
<v Speaker 1>AI to create a collection class that is thread safe. Now,

927
00:48:20.960 --> 00:48:24.519
<v Speaker 1>if you didn't know, there's already a thread safe collection

928
00:48:24.920 --> 00:48:28.639
<v Speaker 1>in dot net, right, it's going off and it's not

929
00:48:28.679 --> 00:48:31.760
<v Speaker 1>going to know that, and it's going off and creating right. Right,

930
00:48:31.840 --> 00:48:34.159
<v Speaker 1>you didn't say, hey, is there a thread safe collection

931
00:48:34.239 --> 00:48:36.119
<v Speaker 1>in dot net? You just said, create me a thread

932
00:48:36.159 --> 00:48:40.559
<v Speaker 1>safe collection object, right, a junior divisse.

933
00:48:40.599 --> 00:48:41.559
<v Speaker 3>It's going to do what you were saying.

934
00:48:41.599 --> 00:48:42.280
<v Speaker 2>Yeah, it's going to do.

935
00:48:42.280 --> 00:48:45.320
<v Speaker 1>Exactly what you say. And now you're committed to that

936
00:48:45.400 --> 00:48:48.679
<v Speaker 1>thing and you use that everywhere and oops, there's a

937
00:48:48.719 --> 00:48:51.760
<v Speaker 1>problem with it, right because it's not debugged and tested

938
00:48:51.800 --> 00:48:52.719
<v Speaker 1>and all that or whatever.

939
00:48:52.920 --> 00:48:55.719
<v Speaker 3>Yeah, yeah, I think that I think you have to

940
00:48:55.760 --> 00:48:58.559
<v Speaker 3>be you know, I think you have to be just

941
00:48:58.719 --> 00:49:00.800
<v Speaker 3>kind of if you're going to if the code you're

942
00:49:00.800 --> 00:49:02.880
<v Speaker 3>going to generate and the things you're going to build

943
00:49:03.039 --> 00:49:09.719
<v Speaker 3>are are kind of, you know, within the norm whatever

944
00:49:09.760 --> 00:49:12.360
<v Speaker 3>that is of development in other words, the things of

945
00:49:12.400 --> 00:49:15.960
<v Speaker 3>which we have a lot of content that AI has studied,

946
00:49:16.679 --> 00:49:18.599
<v Speaker 3>then I think that your user level needs to be

947
00:49:18.679 --> 00:49:22.440
<v Speaker 3>maybe below you know, intermediah. You can be. You don't

948
00:49:22.480 --> 00:49:25.159
<v Speaker 3>have to, you can be somewhere between beginner and intermedia

949
00:49:25.239 --> 00:49:27.400
<v Speaker 3>and you can benefit And there are some ways where

950
00:49:27.400 --> 00:49:30.639
<v Speaker 3>you can benefit really hugely from this as a beginner,

951
00:49:30.880 --> 00:49:32.760
<v Speaker 3>when you say I want a new class that does this,

952
00:49:32.760 --> 00:49:35.199
<v Speaker 3>this and this, and then you've got it and you're done.

953
00:49:35.480 --> 00:49:38.519
<v Speaker 3>There's it's so much easier. And and right now we're

954
00:49:38.559 --> 00:49:41.519
<v Speaker 3>only supporting c sharp, but when we start supporting other languages,

955
00:49:41.960 --> 00:49:46.039
<v Speaker 3>the ability to now code in another language becomes transferable

956
00:49:46.079 --> 00:49:49.960
<v Speaker 3>because I'm still using the exact same spoken English right

957
00:49:49.960 --> 00:49:50.920
<v Speaker 3>to interact with it.

958
00:49:50.960 --> 00:49:53.360
<v Speaker 1>But getting back to my getting back to my thing,

959
00:49:54.119 --> 00:49:58.880
<v Speaker 1>my example of the thread safe collection. Yes, you probably is.

960
00:49:59.000 --> 00:50:01.559
<v Speaker 1>It's a good idea, even for more advanced developers to

961
00:50:01.679 --> 00:50:04.960
<v Speaker 1>first have a consultation with it about what the best

962
00:50:04.960 --> 00:50:07.719
<v Speaker 1>way to go ahead implementing such a feature would be.

963
00:50:08.000 --> 00:50:10.760
<v Speaker 3>Right, yeah, no, I agree. And that's where this this

964
00:50:10.800 --> 00:50:13.840
<v Speaker 3>feature is not really a consultation feature. Yeah, you can

965
00:50:14.039 --> 00:50:16.320
<v Speaker 3>ask it questions and it'll come back then and the

966
00:50:16.400 --> 00:50:19.559
<v Speaker 3>navigator and give you the answer. But it's not interactive.

967
00:50:19.599 --> 00:50:22.360
<v Speaker 1>But at chat GPT would be good for that, right.

968
00:50:22.320 --> 00:50:25.000
<v Speaker 3>Yes, I will switch over to chat GPT for that

969
00:50:25.119 --> 00:50:27.079
<v Speaker 3>kind of a style of dialogue.

970
00:50:26.679 --> 00:50:28.079
<v Speaker 2>For that kind of consultation.

971
00:50:28.239 --> 00:50:31.199
<v Speaker 3>Yeah, yes, yeah, I'll do that in chat GPT. I

972
00:50:31.400 --> 00:50:34.760
<v Speaker 3>use Copilot for other things as well. Copilot's great, great

973
00:50:34.760 --> 00:50:36.440
<v Speaker 3>at like hey, take a look at this error or

974
00:50:36.599 --> 00:50:39.840
<v Speaker 3>something along those lines. Sometimes Copilot's great for just these

975
00:50:39.920 --> 00:50:42.480
<v Speaker 3>kinds of questions. Because it's with code rush, you can

976
00:50:42.519 --> 00:50:47.840
<v Speaker 3>actually talk to copilot using voice. Yeah so, and I

977
00:50:47.840 --> 00:50:49.519
<v Speaker 3>didn't tell you this this morning, but if you hold

978
00:50:49.519 --> 00:50:52.000
<v Speaker 3>down the left control key, just hold it down and

979
00:50:52.039 --> 00:50:55.320
<v Speaker 3>start your your prompt with hey co pilot, oh, and

980
00:50:55.360 --> 00:50:58.519
<v Speaker 3>then ask the question. It will open up the copilot

981
00:50:58.519 --> 00:51:01.639
<v Speaker 3>window fill in the prompt with your question and all

982
00:51:01.679 --> 00:51:03.320
<v Speaker 3>you have to do is just you know, hit enter,

983
00:51:03.480 --> 00:51:04.519
<v Speaker 3>okay and send it up.

984
00:51:04.599 --> 00:51:04.840
<v Speaker 2>Wow.

985
00:51:04.920 --> 00:51:08.920
<v Speaker 1>So I think we're in agreement in that we're and

986
00:51:09.320 --> 00:51:11.760
<v Speaker 1>I brought this up in our talk with Scott Hunter

987
00:51:11.960 --> 00:51:14.000
<v Speaker 1>and also offline with Hunter, and.

988
00:51:14.559 --> 00:51:15.559
<v Speaker 2>That the.

989
00:51:17.480 --> 00:51:21.440
<v Speaker 1>As a developer, there's just as much value on your

990
00:51:21.519 --> 00:51:25.440
<v Speaker 1>creativity and imagination now as there is on your ability

991
00:51:25.519 --> 00:51:27.480
<v Speaker 1>to write code and the things that you remember how

992
00:51:27.480 --> 00:51:30.440
<v Speaker 1>to do, maybe even more like you have to be

993
00:51:30.559 --> 00:51:36.360
<v Speaker 1>able to imagine things and in order to create them.

994
00:51:36.679 --> 00:51:40.000
<v Speaker 1>Whereas you know, for the last fifty years of my career,

995
00:51:40.199 --> 00:51:42.360
<v Speaker 1>it was always like, oh, I need to do this, Well,

996
00:51:42.360 --> 00:51:44.480
<v Speaker 1>how do I do that? Oh, st break it down

997
00:51:44.519 --> 00:51:47.440
<v Speaker 1>into steps, go research those steps, figure out how to

998
00:51:47.440 --> 00:51:50.360
<v Speaker 1>write the code. And now it's like, you.

999
00:51:50.320 --> 00:51:52.280
<v Speaker 3>Know, and no one to consult with on that. By

1000
00:51:52.320 --> 00:51:53.440
<v Speaker 3>the way, you're right.

1001
00:51:53.360 --> 00:51:54.199
<v Speaker 2>No one to consult with.

1002
00:51:54.280 --> 00:51:57.320
<v Speaker 1>Yeah, and now it's big picture think all right, so

1003
00:51:57.320 --> 00:52:00.480
<v Speaker 1>start with chat, GPT or whatever, and you know, consult

1004
00:52:00.559 --> 00:52:02.440
<v Speaker 1>on the architecture. What are the ways that I can

1005
00:52:02.480 --> 00:52:06.599
<v Speaker 1>go about doing this and open up your imagination? Like

1006
00:52:06.639 --> 00:52:09.400
<v Speaker 1>you you might as well just try it because you

1007
00:52:09.400 --> 00:52:10.480
<v Speaker 1>can always blow it away.

1008
00:52:10.800 --> 00:52:13.159
<v Speaker 2>I almost wondering if you just need an architect. Now,

1009
00:52:13.159 --> 00:52:15.480
<v Speaker 2>that's just the architect can use the tools to get

1010
00:52:15.480 --> 00:52:16.599
<v Speaker 2>a lot of the code written.

1011
00:52:16.840 --> 00:52:22.960
<v Speaker 3>Yeah, it's it's you know, for for this journey. One

1012
00:52:23.000 --> 00:52:26.519
<v Speaker 3>of the steps along this journey was I realized we

1013
00:52:26.559 --> 00:52:33.280
<v Speaker 3>needed a great way to show differences inside the code, right,

1014
00:52:33.800 --> 00:52:37.039
<v Speaker 3>And I checked out what tooling that we had already

1015
00:52:37.199 --> 00:52:41.440
<v Speaker 3>and and we didn't. We didn't have what we needed

1016
00:52:41.840 --> 00:52:45.719
<v Speaker 3>essentially that was already built in. So I started that process,

1017
00:52:45.760 --> 00:52:48.599
<v Speaker 3>and I and I think I started a discussion with

1018
00:52:48.639 --> 00:52:52.440
<v Speaker 3>job GPT and and and to just kind of understand

1019
00:52:52.599 --> 00:52:57.360
<v Speaker 3>how the technology works, and ultimately I ended up with

1020
00:52:57.400 --> 00:53:03.559
<v Speaker 3>an engine that does essentially the same thing. But there's

1021
00:53:03.599 --> 00:53:07.119
<v Speaker 3>two variations of the engine. One variation works with lines

1022
00:53:07.400 --> 00:53:10.119
<v Speaker 3>and the other works with characters. And so we use

1023
00:53:10.320 --> 00:53:13.599
<v Speaker 3>the line engine at the high level to see what's changed,

1024
00:53:13.800 --> 00:53:16.880
<v Speaker 3>and then if a line has differences, then we feed

1025
00:53:16.920 --> 00:53:19.840
<v Speaker 3>that to the character engine right to see what is changed, right.

1026
00:53:19.760 --> 00:53:21.920
<v Speaker 1>What's the actual difference in this line to that line?

1027
00:53:22.039 --> 00:53:26.000
<v Speaker 3>Right? And I also use the tool to help build

1028
00:53:26.119 --> 00:53:30.360
<v Speaker 3>the visualizer as well. And the visualizer is super interesting

1029
00:53:30.440 --> 00:53:34.559
<v Speaker 3>because there's no built in difference visualizer that's out there,

1030
00:53:34.920 --> 00:53:37.800
<v Speaker 3>and so we were like okay, or I was like, okay,

1031
00:53:37.880 --> 00:53:43.679
<v Speaker 3>let's try I think the rich textbox or whatever I

1032
00:53:43.719 --> 00:53:47.400
<v Speaker 3>think is called WPF, and I start to do that

1033
00:53:47.519 --> 00:53:49.199
<v Speaker 3>and look at that, and we start to make progress,

1034
00:53:49.239 --> 00:53:52.760
<v Speaker 3>and then we realize that, okay, well it's great, except

1035
00:53:52.760 --> 00:53:55.679
<v Speaker 3>for the ends of the lines don't look great because

1036
00:53:56.039 --> 00:54:00.400
<v Speaker 3>the lines end at different you know, you know is

1037
00:54:00.440 --> 00:54:03.280
<v Speaker 3>and the background highlighting goes only to that end of

1038
00:54:03.280 --> 00:54:03.679
<v Speaker 3>the line.

1039
00:54:03.719 --> 00:54:06.079
<v Speaker 1>Are you talking about the get difference visualizer.

1040
00:54:06.119 --> 00:54:09.320
<v Speaker 3>I'm talking about the one that's built into Aigen's navigator,

1041
00:54:09.400 --> 00:54:12.320
<v Speaker 3>the Coat Rush navigator, the one that we built from scratch.

1042
00:54:12.400 --> 00:54:14.760
<v Speaker 2>Yeah, the one that's in Visual Studio is pretty good.

1043
00:54:14.880 --> 00:54:17.280
<v Speaker 1>I mean, if you make a change to a file

1044
00:54:17.320 --> 00:54:20.159
<v Speaker 1>and then you double click it, you see the original

1045
00:54:20.159 --> 00:54:22.079
<v Speaker 1>on the right and the new one on the left.

1046
00:54:21.840 --> 00:54:25.920
<v Speaker 3>And yeah, okay, so anyway, there is uh that's I'm

1047
00:54:25.920 --> 00:54:28.679
<v Speaker 3>not saying. I have I have some problems with it.

1048
00:54:28.760 --> 00:54:31.559
<v Speaker 3>I don't like a number of things of it, and

1049
00:54:31.639 --> 00:54:34.559
<v Speaker 3>so I implemented something different. Yeah, it's basically what I

1050
00:54:34.639 --> 00:54:38.480
<v Speaker 3>ended up doing. And at any rate, we got the

1051
00:54:38.519 --> 00:54:40.800
<v Speaker 3>highlighting right, but the ends of the lines wasn't working.

1052
00:54:40.840 --> 00:54:43.159
<v Speaker 3>And I'm like, well, how do I get this to work?

1053
00:54:43.800 --> 00:54:48.199
<v Speaker 3>And that was the question essentially asked, and the answer is,

1054
00:54:48.239 --> 00:54:50.840
<v Speaker 3>you can't do it with the rich textbox, but you

1055
00:54:50.920 --> 00:54:53.239
<v Speaker 3>can do these adorners where you throw them in there.

1056
00:54:53.440 --> 00:54:55.760
<v Speaker 3>So then I'm like, okay, wait, I can put adorners

1057
00:54:55.760 --> 00:54:58.920
<v Speaker 3>out on the ends here and line them up. Yeah, okay,

1058
00:54:59.000 --> 00:55:01.400
<v Speaker 3>let's do that. But now I scroll, they don't scroll.

1059
00:55:02.000 --> 00:55:03.800
<v Speaker 3>And then so now my new question is how do

1060
00:55:03.840 --> 00:55:06.199
<v Speaker 3>I get the adorers to scroll? Let's make them scroll

1061
00:55:06.239 --> 00:55:08.960
<v Speaker 3>and work. And this whole thing is this inertive process

1062
00:55:09.039 --> 00:55:11.880
<v Speaker 3>where I am doing this a piece at a time,

1063
00:55:11.920 --> 00:55:16.079
<v Speaker 3>but finally get it so that it's essentially solid. Right

1064
00:55:16.119 --> 00:55:18.599
<v Speaker 3>that you've got this, I'm using the rich text I'm

1065
00:55:18.599 --> 00:55:22.039
<v Speaker 3>not doing my own custom control, using existing rich text

1066
00:55:22.039 --> 00:55:26.679
<v Speaker 3>box and getting and making it behave as if it's

1067
00:55:26.719 --> 00:55:29.719
<v Speaker 3>a difference view. And that's done largely through the help

1068
00:55:29.719 --> 00:55:33.480
<v Speaker 3>of AI assisting and making changes interactively as I go through.

1069
00:55:33.719 --> 00:55:35.840
<v Speaker 2>It's very cool, yeah, so cool.

1070
00:55:36.000 --> 00:55:38.679
<v Speaker 3>Yeah, But you know your question about what level do

1071
00:55:38.679 --> 00:55:42.159
<v Speaker 3>you have to be? I think at least intermediate in general,

1072
00:55:42.239 --> 00:55:44.800
<v Speaker 3>and then the further off the beaten path you go,

1073
00:55:45.199 --> 00:55:47.039
<v Speaker 3>the more of an expert you kind of need to

1074
00:55:47.079 --> 00:55:50.159
<v Speaker 3>be or the more of a debugger, you know, kind

1075
00:55:50.199 --> 00:55:52.719
<v Speaker 3>of let's figure this out kind of person that you

1076
00:55:52.800 --> 00:55:53.320
<v Speaker 3>need to be.

1077
00:55:53.559 --> 00:55:56.440
<v Speaker 1>You need to know what questions to ask, right, That's

1078
00:55:56.679 --> 00:55:57.920
<v Speaker 1>that's what it all comes down to.

1079
00:55:58.199 --> 00:56:01.159
<v Speaker 3>Yeah, yeah, what to ask for You're right, Yeah, you do.

1080
00:56:01.239 --> 00:56:03.119
<v Speaker 3>Even if you're working with something you've done. You know,

1081
00:56:03.119 --> 00:56:05.239
<v Speaker 3>if you're working with a new framework, right, if I'm

1082
00:56:05.239 --> 00:56:07.679
<v Speaker 3>working with a control set, what do they call their

1083
00:56:07.719 --> 00:56:11.360
<v Speaker 3>grid control or what do they call their their toolbar control? Right? Right,

1084
00:56:11.400 --> 00:56:13.440
<v Speaker 3>If you know what that's called, then you can ask the.

1085
00:56:13.480 --> 00:56:17.239
<v Speaker 1>Question and hopeful you'll do research first. That's the whole idea.

1086
00:56:17.480 --> 00:56:20.679
<v Speaker 1>The less the less familiar you are with what you're

1087
00:56:20.679 --> 00:56:22.280
<v Speaker 1>going to end up with, the more research you have

1088
00:56:22.320 --> 00:56:24.840
<v Speaker 1>to do up front, however, to know how to ask

1089
00:56:24.880 --> 00:56:25.519
<v Speaker 1>the questions.

1090
00:56:25.800 --> 00:56:30.480
<v Speaker 3>However, Carl, I'm today, I'm in this code and I'm

1091
00:56:30.559 --> 00:56:33.559
<v Speaker 3>like saying, hey, I'm seeing that a whole bunch of

1092
00:56:33.559 --> 00:56:37.920
<v Speaker 3>these methods are passing in the it's an on notified

1093
00:56:37.960 --> 00:56:41.960
<v Speaker 3>property change. Yeah, thing I hear, And I'm like, and

1094
00:56:42.320 --> 00:56:44.719
<v Speaker 3>my prompt goes like this, I say, hey, I'm noticing

1095
00:56:44.760 --> 00:56:47.719
<v Speaker 3>all of these calls to property change are passing in

1096
00:56:47.800 --> 00:56:51.639
<v Speaker 3>the name of the property, But isn't there some way

1097
00:56:51.880 --> 00:56:54.880
<v Speaker 3>to check from the call stack what that method calling

1098
00:56:54.920 --> 00:56:58.039
<v Speaker 3>method is? And that's all I said. And so in

1099
00:56:58.039 --> 00:57:00.639
<v Speaker 3>other words, you could know kind of genly about it

1100
00:57:00.679 --> 00:57:02.559
<v Speaker 3>and speak about it. And then it goes in and

1101
00:57:02.639 --> 00:57:06.920
<v Speaker 3>it ends. It puts in I think member calling name attribute.

1102
00:57:06.360 --> 00:57:08.280
<v Speaker 2>Member calling name yeah, on.

1103
00:57:08.360 --> 00:57:11.920
<v Speaker 3>The parameter definition, and it does that, and it's great,

1104
00:57:11.960 --> 00:57:14.199
<v Speaker 3>and I'm like, oh, but wait, you left all of

1105
00:57:14.239 --> 00:57:17.559
<v Speaker 3>the calls with their arguments. They don't need those arguments anymore,

1106
00:57:17.639 --> 00:57:20.719
<v Speaker 3>that's right, yeah, And then it fixes that and so

1107
00:57:20.920 --> 00:57:23.719
<v Speaker 3>that instead of me doing any of those things manually,

1108
00:57:24.199 --> 00:57:28.239
<v Speaker 3>it's just you know, speak, wait a few seconds, and

1109
00:57:28.280 --> 00:57:31.239
<v Speaker 3>then speak and wait a few seconds. And that's a

1110
00:57:31.280 --> 00:57:31.880
<v Speaker 3>different flaw.

1111
00:57:32.000 --> 00:57:34.639
<v Speaker 1>You also have to have some pain, right like if

1112
00:57:34.840 --> 00:57:39.360
<v Speaker 1>I've had pain in the past with making base classes

1113
00:57:39.400 --> 00:57:42.719
<v Speaker 1>for models, for example, which I do not do anymore

1114
00:57:42.800 --> 00:57:45.639
<v Speaker 1>because you get into all sorts of problems with that,

1115
00:57:45.880 --> 00:57:49.639
<v Speaker 1>right then you know, you could easily take that in

1116
00:57:49.679 --> 00:57:51.800
<v Speaker 1>a direction where it would say, well, let me just

1117
00:57:51.840 --> 00:57:53.679
<v Speaker 1>make a base class for you that does all the

1118
00:57:53.679 --> 00:57:56.280
<v Speaker 1>notified property change and blah blah blah, and now you

1119
00:57:56.320 --> 00:57:58.639
<v Speaker 1>can just create models that are in that space class

1120
00:57:58.639 --> 00:58:01.320
<v Speaker 1>and right, Yeah, you know what I mean, And you

1121
00:58:01.719 --> 00:58:04.800
<v Speaker 1>wouldn't have the experience to say, no, I really don't want.

1122
00:58:04.639 --> 00:58:07.360
<v Speaker 3>To do that, right right, No, I get that, I

1123
00:58:07.400 --> 00:58:10.400
<v Speaker 3>get it. Yeah, But you know, you can make things

1124
00:58:10.440 --> 00:58:11.920
<v Speaker 3>work a lot of different ways. I can have the

1125
00:58:11.920 --> 00:58:14.079
<v Speaker 3>same set of test cases and they can all pass

1126
00:58:14.480 --> 00:58:18.159
<v Speaker 3>regardless of which frameworks. And sometimes I don't understand the

1127
00:58:18.199 --> 00:58:20.280
<v Speaker 3>problem with the framework until it's time to go to

1128
00:58:20.360 --> 00:58:23.039
<v Speaker 3>version two, right, right, right, and then I realized, Okay,

1129
00:58:23.320 --> 00:58:26.400
<v Speaker 3>that was a mistake. I got to really really make

1130
00:58:26.480 --> 00:58:30.719
<v Speaker 3>this architecture great, right, And that is like that's something

1131
00:58:30.719 --> 00:58:32.519
<v Speaker 3>that you don't see with what we've done here, but

1132
00:58:32.599 --> 00:58:36.280
<v Speaker 3>we have actually made this architecture really good. We stopped

1133
00:58:36.320 --> 00:58:39.079
<v Speaker 3>we were moving towards bringing Blazer support in this one

1134
00:58:39.119 --> 00:58:42.400
<v Speaker 3>oh release, and we stopped it to focus on the architecture.

1135
00:58:42.679 --> 00:58:45.840
<v Speaker 3>And as a result, I'm like way more confident about

1136
00:58:45.840 --> 00:58:48.519
<v Speaker 3>our ability to go in and support Blazer in other

1137
00:58:48.639 --> 00:58:54.000
<v Speaker 3>languages because of the changes that we made to simplify

1138
00:58:54.519 --> 00:58:56.480
<v Speaker 3>and decouple the architecture behind this.

1139
00:58:57.000 --> 00:58:57.559
<v Speaker 2>It's awesome.

1140
00:58:57.679 --> 00:58:58.679
<v Speaker 3>So feel good about that.

1141
00:58:59.239 --> 00:59:00.159
<v Speaker 2>So where can we get this?

1142
00:59:00.480 --> 00:59:03.960
<v Speaker 3>So? Okay, go to def express dot com slash code

1143
00:59:04.039 --> 00:59:09.400
<v Speaker 3>Rush and you can get you can download a copy

1144
00:59:09.440 --> 00:59:12.920
<v Speaker 3>codeer is for free. Code Rush is free. There's no

1145
00:59:13.039 --> 00:59:16.800
<v Speaker 3>charge for this. However, you're gonna have to supply an

1146
00:59:16.800 --> 00:59:20.679
<v Speaker 3>open Ai API key, an open Ai API key, and

1147
00:59:20.760 --> 00:59:22.840
<v Speaker 3>you're gonna need to supply if you want in voice,

1148
00:59:22.840 --> 00:59:26.920
<v Speaker 3>you're gonna need to supply an Azure Cognitive Services speech key.

1149
00:59:26.840 --> 00:59:29.559
<v Speaker 1>Which is free for.

1150
00:59:29.039 --> 00:59:31.199
<v Speaker 3>It's essentially you can get a free tier that gives

1151
00:59:31.239 --> 00:59:33.880
<v Speaker 3>you I think up to five dollars a month, and

1152
00:59:34.159 --> 00:59:36.239
<v Speaker 3>I use maybe three dollars a month in all my

1153
00:59:36.280 --> 00:59:39.679
<v Speaker 3>months of my daily use of the product, so you're

1154
00:59:39.679 --> 00:59:42.599
<v Speaker 3>probably not gonna pay anything for that. And Azure Speech

1155
00:59:42.639 --> 00:59:46.800
<v Speaker 3>Cognitive Services is excellent. I just I cannot, I cannot

1156
00:59:47.000 --> 00:59:48.840
<v Speaker 3>tell you how good this service is.

1157
00:59:48.920 --> 00:59:50.199
<v Speaker 2>It's really good.

1158
00:59:50.719 --> 00:59:53.719
<v Speaker 3>It's it is way more accurate than anything I've seen

1159
00:59:53.719 --> 00:59:56.360
<v Speaker 3>built on a machine running off of a machine. And

1160
00:59:56.440 --> 00:59:59.480
<v Speaker 3>it's fast. It's like generally we get times of processing

1161
00:59:59.480 --> 01:00:01.639
<v Speaker 3>times of a about from the time you stopped talking,

1162
01:00:01.960 --> 01:00:04.880
<v Speaker 3>we get a response back that's about four hundred milliseconds.

1163
01:00:04.960 --> 01:00:10.239
<v Speaker 1>That's amazing, Mark, congratulations, and I'm really blown away. And

1164
01:00:10.280 --> 01:00:12.239
<v Speaker 1>it's always good to talk to you. I always learn

1165
01:00:12.360 --> 01:00:14.719
<v Speaker 1>things and what can I say? Thanks again?

1166
01:00:14.800 --> 01:00:17.039
<v Speaker 5>Thanks, guys, all right, and we'll talk to you later

1167
01:00:17.519 --> 01:00:40.800
<v Speaker 5>on dot net Bros. Dot Net Rocks is brought to

1168
01:00:40.800 --> 01:00:44.559
<v Speaker 5>you by Franklin's Net and produced by Pop Studios, a

1169
01:00:44.719 --> 01:00:49.119
<v Speaker 5>full service audio, video and post production facilities located physically

1170
01:00:49.159 --> 01:00:51.920
<v Speaker 5>in New London, Connecticut, and of course in the cloud

1171
01:00:52.519 --> 01:00:55.440
<v Speaker 5>online at pwop dot com.

1172
01:00:55.639 --> 01:00:57.800
<v Speaker 1>Visit our website at d O T N E t

1173
01:00:58.039 --> 01:01:02.039
<v Speaker 1>R O c k S dot com, RSS feeds, downloads,

1174
01:01:02.199 --> 01:01:05.880
<v Speaker 1>mobile apps, comments, and access to the full archives going

1175
01:01:05.920 --> 01:01:09.320
<v Speaker 1>back to show number one, recorded in September two thousand

1176
01:01:09.320 --> 01:01:12.000
<v Speaker 1>and two. And make sure you check out our sponsors.

1177
01:01:12.119 --> 01:01:14.960
<v Speaker 1>They keep us in business. Now, go write some code,

1178
01:01:15.480 --> 01:01:16.280
<v Speaker 1>see you next time.

1179
01:01:17.159 --> 01:01:26.199
<v Speaker 2>You got JAD Middle Vans And then I'm
