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:07.879
<v Speaker 1>no ads? Easy? Become a patron for just five dollars

3
00:00:07.919 --> 00:00:10.800
<v Speaker 1>a month. You get access to a private RSS feed

4
00:00:10.839 --> 00:00:14.240
<v Speaker 1>where all the shows have no ads. Twenty dollars a month.

5
00:00:14.279 --> 00:00:16.879
<v Speaker 1>We'll get you that and a special dot net Rocks

6
00:00:16.960 --> 00:00:21.000
<v Speaker 1>patron mug. Sign up now at Patreon dot dot NetRocks

7
00:00:21.120 --> 00:00:37.719
<v Speaker 1>dot com. Welcome back. It's dot neir Rocks. I'm Carl

8
00:00:37.719 --> 00:00:40.159
<v Speaker 1>Franklin and I'm Richard Campbell. And what was that voice?

9
00:00:40.399 --> 00:00:43.240
<v Speaker 1>I don't know, trying to make it interesting for the people.

10
00:00:43.399 --> 00:00:45.840
<v Speaker 1>You know, Okay, I believe you. I don't know. I

11
00:00:45.880 --> 00:00:48.759
<v Speaker 1>got nothing. You got some Rocky lockez here for the

12
00:00:48.840 --> 00:00:51.920
<v Speaker 1>five hundred and forty ninth time on dot net rocks.

13
00:00:51.960 --> 00:00:53.799
<v Speaker 2>Yeah. No, I was going to do account and then

14
00:00:53.799 --> 00:00:55.880
<v Speaker 2>I gotan out of fingers and toe, so I stopped.

15
00:00:57.960 --> 00:01:02.200
<v Speaker 1>It's episode nineteen, one hundred and seventy three. So let's

16
00:01:02.240 --> 00:01:05.000
<v Speaker 1>talk about what happened in that year. Oh boy, Yeah,

17
00:01:05.040 --> 00:01:08.920
<v Speaker 1>it's not good news. A few things, so Roe v Wade, Yes, right,

18
00:01:09.000 --> 00:01:12.200
<v Speaker 1>I guess that's good news. Lennon Johnson went to that

19
00:01:12.920 --> 00:01:14.959
<v Speaker 1>big Cadillac in the sky.

20
00:01:15.319 --> 00:01:17.280
<v Speaker 2>Though he wasn't president at that point anyway.

21
00:01:17.200 --> 00:01:21.680
<v Speaker 1>Yeah, former president. Yeah. The Paris Peace Accords for Vietnam

22
00:01:21.719 --> 00:01:25.760
<v Speaker 1>in the end of the Vietnam War. Yeah, some social movements,

23
00:01:25.879 --> 00:01:30.040
<v Speaker 1>Occupation of Wounded Knee. Members of the American Indian Movement

24
00:01:30.159 --> 00:01:33.200
<v Speaker 1>occupied Wounded Knee South Dakota to protest against the US

25
00:01:33.280 --> 00:01:37.920
<v Speaker 1>government's treatment of Native Americans. The first p Flag Meeting

26
00:01:38.000 --> 00:01:42.879
<v Speaker 1>PFLAG first formal meeting of parents of Gays took place

27
00:01:42.879 --> 00:01:47.560
<v Speaker 1>on a March eleventh, making a significant moment in LGBTQ

28
00:01:47.760 --> 00:01:53.439
<v Speaker 1>plus advocacy. Let's see Super Bowl seven. On January fourteenth,

29
00:01:53.519 --> 00:01:57.400
<v Speaker 1>Miami Dolphins completed a perfect season by defeating the Washington Redskins,

30
00:01:57.799 --> 00:02:02.000
<v Speaker 1>becoming the first NFL team to achieve this feet But also,

31
00:02:03.040 --> 00:02:05.200
<v Speaker 1>did you know that this is the year that hip

32
00:02:05.200 --> 00:02:08.879
<v Speaker 1>hop started no in the Bronx in New York City,

33
00:02:10.120 --> 00:02:16.719
<v Speaker 1>laying the foundation. The oil crisis began in nineteen seventy three,

34
00:02:17.680 --> 00:02:20.840
<v Speaker 1>the first oil crisis anyway, October, leading to a significant

35
00:02:20.840 --> 00:02:23.840
<v Speaker 1>increase in oil prices and economic challenges in the US.

36
00:02:24.479 --> 00:02:27.120
<v Speaker 1>I think Jerry Lee Lewis made a notable appearance at

37
00:02:27.120 --> 00:02:30.960
<v Speaker 1>the Grand Ole Opry on January twenty, marking his transition

38
00:02:31.080 --> 00:02:35.199
<v Speaker 1>to country music. And there's a whole bunch of other things.

39
00:02:35.199 --> 00:02:37.719
<v Speaker 1>But Richard, what's going on in science and tech?

40
00:02:37.960 --> 00:02:40.159
<v Speaker 2>Wait, there's a couple of important ones. How about the

41
00:02:40.439 --> 00:02:45.240
<v Speaker 2>how about the yam Kapur War? How about Nixon resigning? Yeah,

42
00:02:45.319 --> 00:02:50.360
<v Speaker 2>and Ford becoming president? Like this is the culmination of Watergate.

43
00:02:50.520 --> 00:02:53.719
<v Speaker 1>So we were six, but I actually do remember seeing

44
00:02:53.800 --> 00:02:57.159
<v Speaker 1>Nixon on our black and white TV goings there you go.

45
00:02:57.360 --> 00:02:58.879
<v Speaker 1>I actually remember that. I'm like, who's that?

46
00:02:59.360 --> 00:02:59.520
<v Speaker 3>You know?

47
00:03:00.000 --> 00:03:00.800
<v Speaker 1>That's our present guy.

48
00:03:00.840 --> 00:03:03.400
<v Speaker 2>He isn't president anymore, and you and you had to

49
00:03:03.439 --> 00:03:05.919
<v Speaker 2>make someone president who'd never been elected anything because Spiro

50
00:03:06.039 --> 00:03:07.960
<v Speaker 2>Agnew had resigned earlier the same year.

51
00:03:08.159 --> 00:03:11.960
<v Speaker 1>Yeah, it's you know, there's nothing fishy or funny or

52
00:03:12.639 --> 00:03:16.479
<v Speaker 1>corrupt or anything about us politics, is it. Everything's fine,

53
00:03:16.520 --> 00:03:18.280
<v Speaker 1>everything's fine, Everything is awesome.

54
00:03:18.599 --> 00:03:21.319
<v Speaker 2>Should we start with should we go to space? Side? Now?

55
00:03:21.560 --> 00:03:22.800
<v Speaker 1>Yeah, let's go to space.

56
00:03:22.599 --> 00:03:26.280
<v Speaker 2>Okay, because Paulo seventeen. Paul seventeen was last year, and

57
00:03:26.319 --> 00:03:29.159
<v Speaker 2>it was the last of the Apollo missions to the Moon.

58
00:03:29.639 --> 00:03:31.680
<v Speaker 2>But it wasn't the end of Apollo yet. This was

59
00:03:31.719 --> 00:03:34.520
<v Speaker 2>the year the sky Lab launched, where they took the

60
00:03:34.520 --> 00:03:36.680
<v Speaker 2>third stage of the Saturn five and turned it into

61
00:03:36.800 --> 00:03:39.240
<v Speaker 2>an extremely large space station, the only one that the

62
00:03:39.280 --> 00:03:41.960
<v Speaker 2>Americans have ever built from scratch. Everything else has been

63
00:03:42.400 --> 00:03:46.759
<v Speaker 2>Russian based since then. It was only used for about

64
00:03:46.800 --> 00:03:50.000
<v Speaker 2>a year. There was three missions to it Skylab two, three,

65
00:03:50.080 --> 00:03:53.479
<v Speaker 2>and four, and then it was never occupied again. It

66
00:03:53.520 --> 00:03:55.759
<v Speaker 2>was only supposed to last one hundred and forty hundred

67
00:03:55.800 --> 00:03:58.599
<v Speaker 2>fifty days, and it went longer than that, and then

68
00:03:58.680 --> 00:04:00.319
<v Speaker 2>they were not sure what to do with it. You know,

69
00:04:00.360 --> 00:04:03.960
<v Speaker 2>making long duration stuff in space is very difficulty. Arguably,

70
00:04:04.080 --> 00:04:06.439
<v Speaker 2>of the three missions that went to the number four

71
00:04:06.520 --> 00:04:08.360
<v Speaker 2>was the most famous. It was also the longest. It

72
00:04:08.400 --> 00:04:10.960
<v Speaker 2>was this eighty four day mission, but about six weeks

73
00:04:11.000 --> 00:04:13.919
<v Speaker 2>in there was kind of a revolt on board. You know,

74
00:04:14.000 --> 00:04:18.120
<v Speaker 2>normally these Apollo missions were pretty short, less than two

75
00:04:18.160 --> 00:04:21.199
<v Speaker 2>weeks total, and so you were scheduled in fifty minute increments.

76
00:04:21.240 --> 00:04:25.959
<v Speaker 2>Everything was planned. But six weeks into that kind of intensity,

77
00:04:26.480 --> 00:04:28.720
<v Speaker 2>the crew was kind of like, hey, you know, we're

78
00:04:28.720 --> 00:04:31.160
<v Speaker 2>falling behind schedule. We're all pretty tired, Like can we

79
00:04:31.279 --> 00:04:35.639
<v Speaker 2>dial this down? And one orbit they didn't turn the

80
00:04:35.720 --> 00:04:37.439
<v Speaker 2>radio on for a whole orbit.

81
00:04:37.480 --> 00:04:40.480
<v Speaker 1>Now I bet it was the food Richard, but.

82
00:04:40.519 --> 00:04:42.439
<v Speaker 2>They didn't complain the food was planned, and it was

83
00:04:42.480 --> 00:04:44.519
<v Speaker 2>a flight that went over Thanksgiving.

84
00:04:44.560 --> 00:04:44.959
<v Speaker 1>There you go.

85
00:04:45.199 --> 00:04:50.079
<v Speaker 2>But I think it was actually the beginning of the

86
00:04:50.120 --> 00:04:52.439
<v Speaker 2>tuning of what is it long duration space flight really

87
00:04:52.439 --> 00:04:54.160
<v Speaker 2>going to look like and how you treat people, and so,

88
00:04:54.759 --> 00:04:56.519
<v Speaker 2>you know, one would argue this was the first of

89
00:04:56.600 --> 00:05:00.240
<v Speaker 2>the sort of sensitivity trainings that ever happened involving.

90
00:05:00.680 --> 00:05:04.519
<v Speaker 1>Yeah, are not, M two are not? M two are not?

91
00:05:05.000 --> 00:05:07.759
<v Speaker 2>And in seventy four they returned and those three never

92
00:05:07.759 --> 00:05:11.560
<v Speaker 2>flew again, and oddly enough, and nobody ever went to

93
00:05:11.800 --> 00:05:14.800
<v Speaker 2>Skylab again. There were a couple of proposed missions to

94
00:05:14.839 --> 00:05:16.439
<v Speaker 2>go back to it to reboot it. There was the

95
00:05:16.480 --> 00:05:20.000
<v Speaker 2>Apollo Soyu's missions we'll talk about in seventy five. But

96
00:05:20.120 --> 00:05:23.720
<v Speaker 2>ultimately the Skylab was lost in nineteen seventy nine and

97
00:05:23.720 --> 00:05:26.439
<v Speaker 2>then uncontrolled re entry. It was supposed to be saved

98
00:05:26.480 --> 00:05:28.720
<v Speaker 2>by the Space Shuttle because they'd run out of Apollos

99
00:05:28.720 --> 00:05:31.000
<v Speaker 2>at that point anyway, but the Shuttle didn't actually fly

100
00:05:31.120 --> 00:05:33.279
<v Speaker 2>until eighty one, so missed it.

101
00:05:33.360 --> 00:05:33.519
<v Speaker 1>Now.

102
00:05:33.560 --> 00:05:35.639
<v Speaker 2>Part of that was because there was a solar maximum,

103
00:05:35.680 --> 00:05:39.959
<v Speaker 2>so the atmosphere was actually larger than expected and caused

104
00:05:40.000 --> 00:05:42.759
<v Speaker 2>Skylab to re enter faster than known at the time,

105
00:05:42.879 --> 00:05:46.600
<v Speaker 2>we were still learning things about how the solsystem actually works.

106
00:05:46.759 --> 00:05:48.920
<v Speaker 1>Man, I can't wait to talk about the Space Shuttle.

107
00:05:49.480 --> 00:05:51.240
<v Speaker 1>Oh God, I hear you have a few things to

108
00:05:51.279 --> 00:05:51.959
<v Speaker 1>say about that.

109
00:05:52.040 --> 00:05:54.360
<v Speaker 2>May have heard a few of them, just a few.

110
00:05:55.800 --> 00:05:57.759
<v Speaker 2>The only other space one I'll mention is they returned

111
00:05:57.759 --> 00:05:59.759
<v Speaker 2>to flight for sous so I used twelve and back

112
00:05:59.800 --> 00:06:03.000
<v Speaker 2>in seventy one the SOYUS eleven tragedy after as they

113
00:06:03.079 --> 00:06:05.800
<v Speaker 2>visited Salute one they had a depressurization and the crew

114
00:06:05.879 --> 00:06:08.920
<v Speaker 2>was lost on re entry, and so twelve was their

115
00:06:08.959 --> 00:06:11.040
<v Speaker 2>return to flight after two years. They were supposed to

116
00:06:11.040 --> 00:06:13.079
<v Speaker 2>dock with Salut two, except for that part where SALU

117
00:06:13.120 --> 00:06:16.639
<v Speaker 2>two wasn't there because it had failed also, so they

118
00:06:16.720 --> 00:06:18.720
<v Speaker 2>only spent forty eight hours in orbit, tested a bunch

119
00:06:18.759 --> 00:06:20.759
<v Speaker 2>of new safety equipment in gear, and then re entered

120
00:06:21.279 --> 00:06:23.839
<v Speaker 2>all right over to some other tech. This is the

121
00:06:23.959 --> 00:06:28.759
<v Speaker 2>year of the first cellular phone call. Wow, Martin Cooper

122
00:06:29.160 --> 00:06:32.120
<v Speaker 2>Motorola in New York City demonstrating a device called the

123
00:06:32.240 --> 00:06:36.000
<v Speaker 2>DINA TACK standing for Dynamic Adaptive Total Area coverage because

124
00:06:36.000 --> 00:06:38.759
<v Speaker 2>it was the cell concept being able to move node

125
00:06:38.759 --> 00:06:41.800
<v Speaker 2>to node automatically as the phone moved around, so the

126
00:06:41.800 --> 00:06:45.160
<v Speaker 2>Diyne attack weighed about four pounds two kilos, pretty heavy,

127
00:06:45.480 --> 00:06:47.879
<v Speaker 2>and his very first call was to his rival Joe

128
00:06:47.879 --> 00:06:49.839
<v Speaker 2>Engel over at and T. He told him, tell him

129
00:06:49.839 --> 00:06:51.480
<v Speaker 2>he got it working, and it would be a few

130
00:06:51.560 --> 00:06:52.439
<v Speaker 2>years before the dash.

131
00:06:52.279 --> 00:06:57.839
<v Speaker 1>Lists might have sounded something like this, Nina, something like that,

132
00:06:57.879 --> 00:06:58.639
<v Speaker 1>sucket mother.

133
00:07:00.040 --> 00:07:05.319
<v Speaker 2>Let's talk about three PCs introduced in nineteen seventy three.

134
00:07:06.079 --> 00:07:10.519
<v Speaker 2>The first is the Xerox Alto from Xerox Park, the

135
00:07:10.639 --> 00:07:15.439
<v Speaker 2>very first Guey based computer ever. And adjacent to that,

136
00:07:15.600 --> 00:07:19.160
<v Speaker 2>also at Xerox Park, was the introduction of the concept

137
00:07:19.199 --> 00:07:22.480
<v Speaker 2>of ethernet by Robert Metcalf as part of his PhD dissertation.

138
00:07:23.240 --> 00:07:26.399
<v Speaker 2>Although he wouldn't the wouldn't actually he basically wrote about

139
00:07:26.439 --> 00:07:28.199
<v Speaker 2>in his dissertation in seventy three, they would follow the

140
00:07:28.240 --> 00:07:31.040
<v Speaker 2>patent at seventy five do the first test in seventy six,

141
00:07:31.759 --> 00:07:34.079
<v Speaker 2>becomes commercial nineteen eighty and becomes an noun triple ease

142
00:07:34.079 --> 00:07:36.360
<v Speaker 2>Standard EIGHTOHO two dot three in nineteen eighty three.

143
00:07:36.920 --> 00:07:37.279
<v Speaker 1>Wow.

144
00:07:37.480 --> 00:07:41.480
<v Speaker 2>Second computer is the IBM fifty one hundred, the special

145
00:07:41.560 --> 00:07:47.720
<v Speaker 2>apl Machine portable or scamp, led by one doctor Paul Friedel,

146
00:07:48.040 --> 00:07:50.199
<v Speaker 2>part of him. It's the fifty one hundred said, this

147
00:07:50.319 --> 00:07:53.079
<v Speaker 2>makes it the precursor to the fifty one fifty also

148
00:07:53.199 --> 00:07:57.120
<v Speaker 2>known as the IBMPC, and it ran apl on a

149
00:07:57.160 --> 00:08:00.680
<v Speaker 2>custom platform, and it was considered a luggable so fold

150
00:08:00.680 --> 00:08:03.560
<v Speaker 2>out keyboard on the bottom little screen, but you know,

151
00:08:03.600 --> 00:08:07.279
<v Speaker 2>good thirty forty pounds, so not exactly easy to carry around.

152
00:08:07.720 --> 00:08:10.680
<v Speaker 2>And last, but not Nie, the mccralle. This is one

153
00:08:10.759 --> 00:08:13.120
<v Speaker 2>of the first computers built on the Intel eight zero

154
00:08:13.360 --> 00:08:17.399
<v Speaker 2>zero eight, so the second CPU built by Intel. The

155
00:08:17.439 --> 00:08:19.759
<v Speaker 2>company is R two E. It's a French company. The

156
00:08:20.000 --> 00:08:24.920
<v Speaker 2>founder is Thai Trum, who's also designer of the mccrall computer,

157
00:08:25.079 --> 00:08:27.959
<v Speaker 2>but his software for the machine is being built by

158
00:08:28.000 --> 00:08:31.800
<v Speaker 2>one Philip Kahn Wow, aka the guy who would go

159
00:08:31.839 --> 00:08:34.519
<v Speaker 2>on to found Borland about ten years later. That's what

160
00:08:34.559 --> 00:08:39.639
<v Speaker 2>I got, and that was Leno's boss. Yeah at one time,

161
00:08:39.720 --> 00:08:42.720
<v Speaker 2>back in the day. Yeah, and Andrews too. I think, Yeah,

162
00:08:42.759 --> 00:08:45.679
<v Speaker 2>there's a lot of things happening computers in nineteen seventy three.

163
00:08:45.879 --> 00:08:49.919
<v Speaker 1>Yeah, this is this is like an unfolding drama that's

164
00:08:50.000 --> 00:08:52.960
<v Speaker 1>going on here. And it's really getting exciting around here.

165
00:08:53.039 --> 00:08:55.840
<v Speaker 1>I mean there was the sixties were great, but man,

166
00:08:56.000 --> 00:08:57.720
<v Speaker 1>it's just gonna get nuts.

167
00:08:57.919 --> 00:09:01.039
<v Speaker 2>We're inching towards the PC wor old bit by bed

168
00:09:01.639 --> 00:09:03.960
<v Speaker 2>and I look at I know where this how where

169
00:09:04.000 --> 00:09:04.559
<v Speaker 2>this goes?

170
00:09:04.679 --> 00:09:05.200
<v Speaker 1>As you do?

171
00:09:05.279 --> 00:09:05.799
<v Speaker 2>You know?

172
00:09:06.120 --> 00:09:08.919
<v Speaker 1>Yeah? So these are the stories I'm pulling, like, these

173
00:09:08.919 --> 00:09:09.720
<v Speaker 1>are great stories.

174
00:09:09.759 --> 00:09:12.399
<v Speaker 2>I only just learned about scam like that that there

175
00:09:12.440 --> 00:09:14.399
<v Speaker 2>was a precursor of fifty one fifty was the fifty

176
00:09:14.440 --> 00:09:15.879
<v Speaker 2>one hundred and.

177
00:09:16.159 --> 00:09:18.240
<v Speaker 1>But once we get to the next computer, I have

178
00:09:18.279 --> 00:09:21.320
<v Speaker 1>a story that will blow your mind. But I bet okay,

179
00:09:21.679 --> 00:09:25.399
<v Speaker 1>let's do better. No framework roll music awesome?

180
00:09:33.039 --> 00:09:33.919
<v Speaker 2>Alight, man? What do you got?

181
00:09:34.360 --> 00:09:38.919
<v Speaker 1>This is a trending GitHub repo. It's from the repository

182
00:09:39.200 --> 00:09:43.519
<v Speaker 1>of Joseph Nemick. That's j O S E F N

183
00:09:43.720 --> 00:09:46.919
<v Speaker 1>E M E C. And it's play Night p L

184
00:09:47.000 --> 00:09:49.879
<v Speaker 1>A I N I T E. You guys are like this.

185
00:09:50.279 --> 00:09:51.000
<v Speaker 2>What's a play Night?

186
00:09:51.399 --> 00:09:55.679
<v Speaker 1>It's an open source video game library manager and launcher

187
00:09:56.120 --> 00:10:02.720
<v Speaker 1>with support for third party libraries like Steam, Epic, EA, app, Battle,

188
00:10:02.799 --> 00:10:07.039
<v Speaker 1>dot Net, and others. It includes game emulation support, providing

189
00:10:07.120 --> 00:10:10.519
<v Speaker 1>one unified in for interface for your games.

190
00:10:11.240 --> 00:10:12.480
<v Speaker 2>M Okay, is this.

191
00:10:13.039 --> 00:10:14.840
<v Speaker 1>Something that's of interest to you? Because I don't really

192
00:10:14.840 --> 00:10:16.039
<v Speaker 1>play video games?

193
00:10:16.159 --> 00:10:16.399
<v Speaker 2>Yeah?

194
00:10:16.559 --> 00:10:17.879
<v Speaker 1>You know, but I know you guys do.

195
00:10:18.080 --> 00:10:22.360
<v Speaker 2>Steam is kind of the dominant game host, right, that's

196
00:10:22.440 --> 00:10:25.360
<v Speaker 2>Gabe Newell Dalf And then you know, almost every game

197
00:10:25.399 --> 00:10:26.840
<v Speaker 2>is inside a Steam and most people are like, if

198
00:10:26.879 --> 00:10:28.159
<v Speaker 2>it is no Steel, I'm not buying it.

199
00:10:28.600 --> 00:10:28.799
<v Speaker 1>Yeah.

200
00:10:29.080 --> 00:10:32.960
<v Speaker 2>Famously, Epic are the Fortnite guys, and so they didn't

201
00:10:33.000 --> 00:10:34.600
<v Speaker 2>want to be in Steam. They wanted they try to

202
00:10:34.600 --> 00:10:36.799
<v Speaker 2>set up their own system. There's a few games over there,

203
00:10:36.840 --> 00:10:42.240
<v Speaker 2>and then Battlenet is Blizzard, and EA app is of

204
00:10:42.240 --> 00:10:45.799
<v Speaker 2>course Electronic Cards now a privately owned company taken off

205
00:10:45.840 --> 00:10:49.360
<v Speaker 2>the market and owned by a Saudi conglomerate.

206
00:10:49.399 --> 00:10:53.759
<v Speaker 1>I don't know that's an upbring interesting Rocky. You play games, right.

207
00:10:54.480 --> 00:10:57.159
<v Speaker 3>Yes I do, but I can't argue with what Richard

208
00:10:57.240 --> 00:11:00.080
<v Speaker 3>just said. It's basically everything's on Steam.

209
00:11:00.360 --> 00:11:03.679
<v Speaker 1>Right, Yeah, so what about EA app or all those

210
00:11:03.720 --> 00:11:06.240
<v Speaker 1>other things like are well just insignificant now?

211
00:11:06.399 --> 00:11:10.159
<v Speaker 2>Yeah, comparatively, that's Electronic Arts attempt at having a studio,

212
00:11:10.240 --> 00:11:12.360
<v Speaker 2>but you can generally get any EA game office team.

213
00:11:12.360 --> 00:11:15.840
<v Speaker 1>Any Okay, Well, you know that I thought it would

214
00:11:15.879 --> 00:11:17.840
<v Speaker 1>surprise you guys with something you think was cool. But

215
00:11:17.919 --> 00:11:22.720
<v Speaker 1>I guess.

216
00:11:20.879 --> 00:11:23.000
<v Speaker 2>If I actually had a bunch of stuff in Epic

217
00:11:23.159 --> 00:11:25.320
<v Speaker 2>like if I was a Fortnite fan. Yeah, you know,

218
00:11:25.440 --> 00:11:27.279
<v Speaker 2>it doesn't make sense for me to have some kind

219
00:11:27.279 --> 00:11:28.399
<v Speaker 2>of common console for this.

220
00:11:29.000 --> 00:11:31.039
<v Speaker 1>It's an interesting idea. Well, I figured there must be

221
00:11:31.120 --> 00:11:33.799
<v Speaker 1>a reason why it's trending, So yeah, maybe there's something

222
00:11:33.840 --> 00:11:37.360
<v Speaker 1>we don't know. Okay, well that's what I got. Richard,

223
00:11:37.399 --> 00:11:38.080
<v Speaker 1>who's talking to.

224
00:11:38.120 --> 00:11:41.080
<v Speaker 2>Us, grabbed a comment off a show eighteen eighty six,

225
00:11:41.200 --> 00:11:43.159
<v Speaker 2>the one we did with one Rocky Lockout. Maybe you

226
00:11:43.240 --> 00:11:46.960
<v Speaker 2>heard of them. Back in February twenty four. Talking about

227
00:11:46.960 --> 00:11:50.399
<v Speaker 2>CSLA eight, we got one comment. This is from Casa

228
00:11:50.480 --> 00:11:53.759
<v Speaker 2>Jan who said, I love the lighthearted nature of these

229
00:11:53.759 --> 00:11:56.200
<v Speaker 2>podcasts and I don't want that aspect to change. But

230
00:11:56.279 --> 00:11:58.759
<v Speaker 2>having said that, sometimes it's all too common to have

231
00:11:59.120 --> 00:12:01.960
<v Speaker 2>handwaving in the episode of something critical that makes the

232
00:12:01.960 --> 00:12:04.039
<v Speaker 2>rest of this episode difficult to listen to. And I'll

233
00:12:04.120 --> 00:12:06.960
<v Speaker 2>use this episode as example. Although it's not an isolated incident,

234
00:12:07.440 --> 00:12:09.679
<v Speaker 2>by the time the house got around to talking about CSLA,

235
00:12:09.759 --> 00:12:12.559
<v Speaker 2>I think they forgot that. The guests never explained what

236
00:12:12.600 --> 00:12:14.759
<v Speaker 2>it was, not even a five second below.

237
00:12:14.960 --> 00:12:18.279
<v Speaker 1>H That's that's my fault. I probably fell asleep on

238
00:12:18.320 --> 00:12:21.320
<v Speaker 1>the job because you know, with us is on nine

239
00:12:21.360 --> 00:12:24.799
<v Speaker 1>and we've covered every single version since one.

240
00:12:25.159 --> 00:12:27.639
<v Speaker 2>Probably, well, I suspect we're going to talk about it

241
00:12:27.679 --> 00:12:30.159
<v Speaker 2>again today, so I probably we will want to bring

242
00:12:30.159 --> 00:12:32.919
<v Speaker 2>that up. But yeah, we better tell them what it is.

243
00:12:32.960 --> 00:12:36.279
<v Speaker 2>And Cassa, thanks for your comment and a reminder that

244
00:12:36.399 --> 00:12:39.120
<v Speaker 2>not everybody's listened to every episode, and let's face it,

245
00:12:39.159 --> 00:12:42.080
<v Speaker 2>at nineteen hundred and seventy three episodes, you probably shouldn't.

246
00:12:42.960 --> 00:12:44.320
<v Speaker 1>No, I wouldn't.

247
00:12:44.600 --> 00:12:47.879
<v Speaker 2>That's a lot of shows. But a copy of music

248
00:12:47.919 --> 00:12:49.639
<v Speaker 2>Cobe is on his way to you. And if you'd

249
00:12:49.639 --> 00:12:51.120
<v Speaker 2>like a copy of music Cobe, I write a comment

250
00:12:51.159 --> 00:12:52.840
<v Speaker 2>on the website at dot at rocks dot com or

251
00:12:52.879 --> 00:12:54.679
<v Speaker 2>on the facebooks. We publish every show there, and if

252
00:12:54.679 --> 00:12:56.039
<v Speaker 2>you comment there and I read it on the show,

253
00:12:56.399 --> 00:12:57.840
<v Speaker 2>we'll send you copy of music coe By.

254
00:12:58.039 --> 00:13:00.440
<v Speaker 1>And that's music to Code by at music to code

255
00:13:00.440 --> 00:13:03.799
<v Speaker 1>by dot net. They're twenty five minute tracks of instrumental

256
00:13:03.840 --> 00:13:08.279
<v Speaker 1>music that are neither too boring or two jarring. They're

257
00:13:08.279 --> 00:13:11.679
<v Speaker 1>perfect for getting you into a state of flow and

258
00:13:11.759 --> 00:13:14.919
<v Speaker 1>keeping you there. Twenty two tracks, MP three wave and

259
00:13:15.039 --> 00:13:19.480
<v Speaker 1>flak format Music to Code by dot Net. All right, Rocky,

260
00:13:19.600 --> 00:13:22.600
<v Speaker 1>I mean, do we read his do we even read

261
00:13:22.679 --> 00:13:23.600
<v Speaker 1>his bio?

262
00:13:24.159 --> 00:13:25.360
<v Speaker 2>We must blessed.

263
00:13:25.399 --> 00:13:27.559
<v Speaker 1>We'll get an email from somebody who's like, who is

264
00:13:27.600 --> 00:13:31.279
<v Speaker 1>this guy? Right? This guy, but he's been on so

265
00:13:31.360 --> 00:13:33.960
<v Speaker 1>many dot net rock shows from the very early days,

266
00:13:34.000 --> 00:13:37.759
<v Speaker 1>but he is. Are you retired now? Are you still

267
00:13:37.879 --> 00:13:39.639
<v Speaker 1>chief software architect at Merrymurr.

268
00:13:40.399 --> 00:13:44.759
<v Speaker 3>I'm not retired. I can call myself semi retired, but yes,

269
00:13:44.840 --> 00:13:45.240
<v Speaker 3>I am a.

270
00:13:45.279 --> 00:13:48.679
<v Speaker 1>Chief But Merrimur is your company, right, Marmur.

271
00:13:48.399 --> 00:13:50.879
<v Speaker 3>Is my company. And then I also am a VP

272
00:13:51.000 --> 00:13:54.000
<v Speaker 3>at ZBA and so I do some cool stuff there

273
00:13:54.039 --> 00:13:54.440
<v Speaker 3>as well.

274
00:13:55.000 --> 00:13:58.799
<v Speaker 1>And you're a Microsoft Regional director and an MVP and

275
00:13:59.519 --> 00:14:04.840
<v Speaker 1>ably the earliest dot net author there was, certainly for

276
00:14:04.960 --> 00:14:07.360
<v Speaker 1>VB dot net. You did. You and Billie Hollis did

277
00:14:07.360 --> 00:14:12.480
<v Speaker 1>the first book on VB dot net during the beta

278
00:14:13.320 --> 00:14:14.039
<v Speaker 1>of dot net.

279
00:14:14.320 --> 00:14:16.480
<v Speaker 3>Yes, wrote that book in six weeks.

280
00:14:16.759 --> 00:14:20.440
<v Speaker 1>That was at And you're the author of c s

281
00:14:20.679 --> 00:14:24.120
<v Speaker 1>l A dot Net Rocky. What is c s l

282
00:14:24.159 --> 00:14:24.960
<v Speaker 1>A dot Net.

283
00:14:26.360 --> 00:14:27.879
<v Speaker 3>I'm glad you asked, Carl.

284
00:14:28.519 --> 00:14:29.840
<v Speaker 1>No, it just came to me.

285
00:14:30.600 --> 00:14:36.159
<v Speaker 3>Yeah. It turns out that the we for forever, it seems,

286
00:14:36.159 --> 00:14:41.480
<v Speaker 3>we've had these fantastic frameworks for building user experiences, Blazer

287
00:14:41.559 --> 00:14:44.519
<v Speaker 3>being you know, the latest and best so far. In

288
00:14:44.519 --> 00:14:48.480
<v Speaker 3>my opinion, and uh, and we've had all sorts of

289
00:14:48.639 --> 00:14:53.000
<v Speaker 3>frameworks for talking to databases and od b C and

290
00:14:53.399 --> 00:14:54.159
<v Speaker 3>entity framework.

291
00:14:55.000 --> 00:14:55.360
<v Speaker 1>Uh.

292
00:14:55.759 --> 00:14:59.240
<v Speaker 3>And then you know, you get these situations where you're writing,

293
00:14:59.519 --> 00:15:03.440
<v Speaker 3>let's say, real application that has business logic, where does

294
00:15:03.480 --> 00:15:07.480
<v Speaker 3>the business logic go? That that's the question, right, And

295
00:15:08.399 --> 00:15:10.039
<v Speaker 3>so you put it in the UI, but you're not

296
00:15:10.039 --> 00:15:11.679
<v Speaker 3>supposed to put it in the UI. You put it

297
00:15:11.720 --> 00:15:13.879
<v Speaker 3>in the database. But oh my god, who wants to

298
00:15:13.879 --> 00:15:14.759
<v Speaker 3>put it in the database?

299
00:15:14.799 --> 00:15:16.000
<v Speaker 1>Really? How much?

300
00:15:16.399 --> 00:15:17.279
<v Speaker 2>Well did you want to write?

301
00:15:17.600 --> 00:15:17.840
<v Speaker 3>Yeah?

302
00:15:17.960 --> 00:15:18.200
<v Speaker 1>Right?

303
00:15:18.840 --> 00:15:22.039
<v Speaker 3>And so that's that is what CSLA is all about,

304
00:15:22.279 --> 00:15:25.720
<v Speaker 3>is being a home for business logic from trying to

305
00:15:25.720 --> 00:15:29.559
<v Speaker 3>elevate business logic to the same level of structure and

306
00:15:29.600 --> 00:15:33.159
<v Speaker 3>repeatability and maintainability that you get with these other frameworks

307
00:15:33.159 --> 00:15:35.080
<v Speaker 3>for the UI or data access.

308
00:15:35.799 --> 00:15:38.879
<v Speaker 1>Right. So first there was two tier, which is UI

309
00:15:39.240 --> 00:15:43.200
<v Speaker 1>and database, right, And there was three tier, which is

310
00:15:43.399 --> 00:15:46.039
<v Speaker 1>UI and something in the middle that has some business

311
00:15:46.080 --> 00:15:50.639
<v Speaker 1>logic and that makes calls to your database. And then

312
00:15:50.720 --> 00:15:53.039
<v Speaker 1>there was just n tier, which is well, you might

313
00:15:53.120 --> 00:15:57.720
<v Speaker 1>have multiple middle tiers and you know you have like

314
00:15:57.799 --> 00:16:01.960
<v Speaker 1>a one point a business service that has pure business logic,

315
00:16:02.519 --> 00:16:07.000
<v Speaker 1>and then managers for your data access. And then I've

316
00:16:07.039 --> 00:16:11.360
<v Speaker 1>even seen people, do you know, three tiers in the

317
00:16:11.399 --> 00:16:16.080
<v Speaker 1>middle just for abstraction purposes, And I don't know. I

318
00:16:16.600 --> 00:16:18.559
<v Speaker 1>think we went a little nuts with the tiers. But

319
00:16:19.360 --> 00:16:22.200
<v Speaker 1>now am I wrong?

320
00:16:22.480 --> 00:16:26.279
<v Speaker 3>Oh no, you're right, you're right. And here's where I

321
00:16:26.320 --> 00:16:31.639
<v Speaker 3>always distinguished because CSLA supports the idea of tiers, which

322
00:16:31.639 --> 00:16:37.159
<v Speaker 3>are all these multiple machines connected by networks. But what

323
00:16:37.440 --> 00:16:41.039
<v Speaker 3>is really important is the concept of layering and separation

324
00:16:41.120 --> 00:16:43.039
<v Speaker 3>of concern right, and.

325
00:16:43.039 --> 00:16:46.240
<v Speaker 1>So logical tiers versus physical tiers.

326
00:16:46.279 --> 00:16:49.039
<v Speaker 3>There you go. Yeah, So even if all your software

327
00:16:49.799 --> 00:16:53.000
<v Speaker 3>is we're running on one computer, like on a mobile phone.

328
00:16:53.039 --> 00:16:56.320
<v Speaker 3>You got your UI layer and you got your business

329
00:16:56.399 --> 00:16:58.600
<v Speaker 3>layer and your data access layer and it's all running

330
00:16:58.639 --> 00:17:02.080
<v Speaker 3>on the phone. That doesn't mean you should throw away

331
00:17:02.919 --> 00:17:06.240
<v Speaker 3>separation of concerns. You should still layer your software to

332
00:17:06.319 --> 00:17:10.079
<v Speaker 3>keep it organized in a way that is maintainable over time.

333
00:17:10.519 --> 00:17:13.359
<v Speaker 1>Right. And you know we're spoiled, you and I at

334
00:17:13.440 --> 00:17:17.079
<v Speaker 1>least because after using Blazer, you know, we took this

335
00:17:17.240 --> 00:17:20.400
<v Speaker 1>idea of MVVM and it's like, well, why do we

336
00:17:20.440 --> 00:17:25.200
<v Speaker 1>need this anymore? I mean, you know, the Blazer UI

337
00:17:25.240 --> 00:17:30.519
<v Speaker 1>framework is so split already, and so easy to separate

338
00:17:30.799 --> 00:17:36.680
<v Speaker 1>logic from UI code, that it seems like overkill to

339
00:17:36.799 --> 00:17:39.400
<v Speaker 1>make a view model in twenty twenty five.

340
00:17:39.759 --> 00:17:44.000
<v Speaker 3>Well, I agree, because of course I am a strong

341
00:17:44.079 --> 00:17:48.519
<v Speaker 3>proponent of using CSLA, and CSLA suggests that when you

342
00:17:48.559 --> 00:17:51.759
<v Speaker 3>create domain objects, that you create them in the shape

343
00:17:51.880 --> 00:17:56.680
<v Speaker 3>needed by the user scenario, and the UI is created

344
00:17:56.799 --> 00:17:59.440
<v Speaker 3>in the shape needed by the user scenario. And so

345
00:18:00.839 --> 00:18:03.480
<v Speaker 3>if you're using these things right, you're creating your UI

346
00:18:03.599 --> 00:18:06.680
<v Speaker 3>with blazers say, and then underneath it you create your

347
00:18:06.680 --> 00:18:11.680
<v Speaker 3>domain object that is serving the same end goal. And

348
00:18:11.960 --> 00:18:13.799
<v Speaker 3>then you do have to have some sort of mapping

349
00:18:13.880 --> 00:18:17.319
<v Speaker 3>layer to talk to the database because the data, usually

350
00:18:17.440 --> 00:18:20.000
<v Speaker 3>the data is in a relational structure that is not

351
00:18:20.200 --> 00:18:22.000
<v Speaker 3>designed to support the user scenario.

352
00:18:22.480 --> 00:18:26.079
<v Speaker 1>And that's fine, yeah, especially if you throw you know,

353
00:18:26.119 --> 00:18:28.720
<v Speaker 1>an API in the mix and you've got a web

354
00:18:28.759 --> 00:18:32.839
<v Speaker 1>assembly application and now you've got DTOs to deal with,

355
00:18:33.079 --> 00:18:36.440
<v Speaker 1>and yep, it gets more complex from there.

356
00:18:36.640 --> 00:18:40.039
<v Speaker 3>You know. What's interesting though, is that I not that

357
00:18:40.119 --> 00:18:47.000
<v Speaker 3>long ago, was writing a WPF sample for CSLA, and

358
00:18:47.039 --> 00:18:50.519
<v Speaker 3>I thought, you know, could I use dependency injection in

359
00:18:50.839 --> 00:18:55.440
<v Speaker 3>WPF like blazer does. And it turns out the answers yes,

360
00:18:56.559 --> 00:19:01.160
<v Speaker 3>and If you do that, your WPF looks you're The

361
00:19:01.160 --> 00:19:05.000
<v Speaker 3>way you build the app is substantially different. It's actually

362
00:19:05.160 --> 00:19:07.400
<v Speaker 3>almost identical to the way you do it in Blazer.

363
00:19:08.880 --> 00:19:11.160
<v Speaker 3>And yet again, you don't really feel the need for

364
00:19:11.240 --> 00:19:16.279
<v Speaker 3>m VVM anymore because the just the way that modern

365
00:19:16.319 --> 00:19:20.039
<v Speaker 3>dot net works, like the way they've built it for well,

366
00:19:20.079 --> 00:19:22.920
<v Speaker 3>the way they built Blazer. If you echo that, you

367
00:19:23.000 --> 00:19:25.640
<v Speaker 3>get all the same benefits. And I don't know why

368
00:19:25.640 --> 00:19:29.279
<v Speaker 3>you would do WPF anymore, but yeah.

369
00:19:29.000 --> 00:19:32.119
<v Speaker 1>Yeah, well you know it's true. If I'm gonna do

370
00:19:32.200 --> 00:19:35.440
<v Speaker 1>w PF, I'm probably gonna do a hybrid right Blazer

371
00:19:35.440 --> 00:19:36.160
<v Speaker 1>code stand exam.

372
00:19:36.359 --> 00:19:40.200
<v Speaker 2>But that's you know, Rocky Billy becoming for you right now.

373
00:19:40.559 --> 00:19:43.880
<v Speaker 1>You know, Billy Billy's coming around, isn't he? I think

374
00:19:43.880 --> 00:19:48.759
<v Speaker 1>he is. He's like, he's pretty cool like it.

375
00:19:49.440 --> 00:19:52.319
<v Speaker 3>I can sense a future episode where somebody has written

376
00:19:52.319 --> 00:19:55.279
<v Speaker 3>in saying, why did Rocky you know slam w PF

377
00:19:55.440 --> 00:19:55.720
<v Speaker 3>like that.

378
00:19:55.759 --> 00:19:59.599
<v Speaker 1>Yeah, don't learn about it stand in line, my friend.

379
00:19:59.640 --> 00:20:02.799
<v Speaker 2>Well, and the same time, I've heard, you know, through

380
00:20:02.799 --> 00:20:06.119
<v Speaker 2>the grape frind internally like WPF getting more focus right

381
00:20:06.200 --> 00:20:09.519
<v Speaker 2>that that they with the win UI sort of peeling

382
00:20:09.559 --> 00:20:11.799
<v Speaker 2>away like this is going to be the Windows way

383
00:20:11.839 --> 00:20:13.720
<v Speaker 2>going forward. I just haven't seen a lot of love,

384
00:20:13.880 --> 00:20:15.880
<v Speaker 2>like how many folks are actually working on this and

385
00:20:15.960 --> 00:20:17.359
<v Speaker 2>where is the real progress being made?

386
00:20:17.440 --> 00:20:19.160
<v Speaker 1>How many folks are building Windows apps?

387
00:20:19.319 --> 00:20:21.519
<v Speaker 3>Yeah, well that's the real question, isn't it.

388
00:20:21.599 --> 00:20:23.119
<v Speaker 1>Yeah? Yeah, who?

389
00:20:23.480 --> 00:20:26.079
<v Speaker 3>And it's not zero though, because I talked to people

390
00:20:26.400 --> 00:20:31.759
<v Speaker 3>at conferences, different events, and I'll talk about you know,

391
00:20:31.920 --> 00:20:34.440
<v Speaker 3>why you should or shouldn't consider using Blazer and some

392
00:20:34.480 --> 00:20:38.519
<v Speaker 3>of the pros and cons, and almost always there's one

393
00:20:38.599 --> 00:20:41.319
<v Speaker 3>or two people that are like, oh, well, we only

394
00:20:41.359 --> 00:20:45.519
<v Speaker 3>do Windows. We only plan to do Windows because all

395
00:20:45.559 --> 00:20:47.920
<v Speaker 3>of our users are on Windows, and why why would

396
00:20:48.000 --> 00:20:50.519
<v Speaker 3>we care about all this other stuff? And I mean

397
00:20:50.519 --> 00:20:53.640
<v Speaker 3>it's a teeny minority, but you know.

398
00:20:53.759 --> 00:20:56.240
<v Speaker 2>Nah phones, tablets, who needs that?

399
00:20:58.839 --> 00:21:01.240
<v Speaker 1>So to answer the question out a CSLA dot net,

400
00:21:01.279 --> 00:21:03.319
<v Speaker 1>we kind of went backwards a little bit. But going

401
00:21:03.359 --> 00:21:06.400
<v Speaker 1>back into history. You wrote this in the age of

402
00:21:06.799 --> 00:21:13.039
<v Speaker 1>Windows applications, where you had stateful data objects, business objects,

403
00:21:13.160 --> 00:21:16.839
<v Speaker 1>and they were all stateful right on the web. You know,

404
00:21:16.920 --> 00:21:20.400
<v Speaker 1>state is something that is created and constructed, but in

405
00:21:20.480 --> 00:21:24.359
<v Speaker 1>Windows everything is right there in the app. And I

406
00:21:24.359 --> 00:21:30.119
<v Speaker 1>remember you having multiple layers of undo, right, you had

407
00:21:30.240 --> 00:21:35.519
<v Speaker 1>persistence and all sorts of features that if you were

408
00:21:35.519 --> 00:21:38.799
<v Speaker 1>going to code them yourself would just be kind of

409
00:21:38.799 --> 00:21:40.960
<v Speaker 1>a nightmare. And then on top of that, they were

410
00:21:41.039 --> 00:21:46.440
<v Speaker 1>really really useful features. So looking in twenty twenty five,

411
00:21:48.720 --> 00:21:52.480
<v Speaker 1>would people be looking to use CSLA dot net with

412
00:21:52.680 --> 00:21:57.400
<v Speaker 1>say a greenfield Blazer application, or you really just supporting

413
00:21:59.200 --> 00:22:03.000
<v Speaker 1>your existing users to bring them into the you know,

414
00:22:03.079 --> 00:22:04.839
<v Speaker 1>twenty first century or both?

415
00:22:05.079 --> 00:22:09.559
<v Speaker 3>I probably both. I would really like to think. Well,

416
00:22:09.640 --> 00:22:11.640
<v Speaker 3>and and I do know that a lot of the

417
00:22:11.640 --> 00:22:16.240
<v Speaker 3>CSLA user base are using and shifting the blazer cool

418
00:22:17.119 --> 00:22:20.319
<v Speaker 3>and it turns and it's because it's largely what you

419
00:22:20.519 --> 00:22:25.599
<v Speaker 3>said in that the UH CSLA is really good if

420
00:22:25.640 --> 00:22:30.039
<v Speaker 3>you have a dot net and stateful client, right, and

421
00:22:30.480 --> 00:22:35.559
<v Speaker 3>so WPF, Windows Forms, Windows phonesilver Light, all those technologies

422
00:22:35.599 --> 00:22:36.319
<v Speaker 3>throughout the years.

423
00:22:37.000 --> 00:22:39.799
<v Speaker 1>Well, if you don't know what that is, just just skipping,

424
00:22:40.039 --> 00:22:42.359
<v Speaker 1>don't just ignore it.

425
00:22:42.680 --> 00:22:47.640
<v Speaker 3>In episode two thousand and ten, you'll you'll get an

426
00:22:47.640 --> 00:22:53.720
<v Speaker 3>earful two thousand I'm just looking looking into your guys's future.

427
00:22:55.440 --> 00:22:59.440
<v Speaker 1>That's just too close, Like you're going to burn through this.

428
00:23:00.079 --> 00:23:06.240
<v Speaker 3>Uh. But you know, Blazer is a stateful UI technology too,

429
00:23:07.680 --> 00:23:09.880
<v Speaker 3>with or without web assembly, I mean either way, it

430
00:23:10.319 --> 00:23:15.880
<v Speaker 3>is inherently stateful and it has an even better data

431
00:23:15.920 --> 00:23:21.880
<v Speaker 3>binding story than did and so those two things combined

432
00:23:22.160 --> 00:23:26.559
<v Speaker 3>are what really makes c s l A at its peak.

433
00:23:27.400 --> 00:23:31.559
<v Speaker 3>And so yeah, I definitely am in a spot where

434
00:23:31.559 --> 00:23:35.440
<v Speaker 3>we continue to support c s l A all, you know,

435
00:23:36.519 --> 00:23:40.559
<v Speaker 3>for all the old UI technologies, and sometimes I really

436
00:23:40.599 --> 00:23:43.160
<v Speaker 3>wish we could get rid of let's say, Windows Forms

437
00:23:43.240 --> 00:23:44.799
<v Speaker 3>or Windows forms.

438
00:23:47.160 --> 00:23:49.160
<v Speaker 1>Or Windows Form or.

439
00:23:49.119 --> 00:23:55.559
<v Speaker 3>Maybe Windows Yeah, but that's just not realistic. But all

440
00:23:55.720 --> 00:23:58.720
<v Speaker 3>all the focus for the last several years has been

441
00:23:58.880 --> 00:24:02.759
<v Speaker 3>entirely on, uh, this first class experience for Blazer, because

442
00:24:03.519 --> 00:24:08.000
<v Speaker 3>because Blazer is so nice and combined with CSLA, it's

443
00:24:08.119 --> 00:24:09.559
<v Speaker 3>just I think phenomenal.

444
00:24:09.839 --> 00:24:12.559
<v Speaker 1>So let me guess because I have not seen c

445
00:24:12.799 --> 00:24:16.920
<v Speaker 1>s LA dot net nine for Blazer, but I can

446
00:24:17.000 --> 00:24:19.119
<v Speaker 1>probably guess of some of the things that you put

447
00:24:19.119 --> 00:24:26.599
<v Speaker 1>in there just for Blazer, like maybe some navigation breadcrumbs,

448
00:24:26.759 --> 00:24:32.680
<v Speaker 1>back buttons, support, navigation stack, that kind of thing. Is

449
00:24:32.720 --> 00:24:33.400
<v Speaker 1>that in there?

450
00:24:33.960 --> 00:24:37.240
<v Speaker 3>That is not because that's all well, that's all UI

451
00:24:37.440 --> 00:24:38.119
<v Speaker 3>level stuff.

452
00:24:38.319 --> 00:24:42.839
<v Speaker 1>Yeah yeah, but no, but it's also navigation, which is

453
00:24:42.880 --> 00:24:46.119
<v Speaker 1>something that you did in Windows Forms, didn't you.

454
00:24:46.160 --> 00:24:49.920
<v Speaker 3>No, no, no, no. C s l A is always trying.

455
00:24:50.000 --> 00:24:51.440
<v Speaker 1>All right, Hang on a second, I got to put

456
00:24:51.440 --> 00:24:56.519
<v Speaker 1>down the crack pipe. Let me just tat down over there. Okay,

457
00:24:56.519 --> 00:25:00.440
<v Speaker 1>I'm sorry, what were we saying saying? Wow?

458
00:25:01.079 --> 00:25:04.279
<v Speaker 3>I mean the where c s l A helps the

459
00:25:04.400 --> 00:25:08.759
<v Speaker 3>UI is that that the c s l A rules

460
00:25:08.799 --> 00:25:15.400
<v Speaker 3>engine is more powerful than just validation, and so it

461
00:25:15.480 --> 00:25:21.319
<v Speaker 3>not only has validation errors, but also warnings and informational results.

462
00:25:22.160 --> 00:25:27.599
<v Speaker 3>And then there's a whole subsystem for authorization about what

463
00:25:27.599 --> 00:25:32.200
<v Speaker 3>what users can and can't interact with different types of

464
00:25:32.480 --> 00:25:34.599
<v Speaker 3>domain object and even all the way down to the

465
00:25:34.640 --> 00:25:38.440
<v Speaker 3>property level. And so there there are helpers for all

466
00:25:38.480 --> 00:25:44.960
<v Speaker 3>the UI frameworks to elevate those concepts to be first class,

467
00:25:45.160 --> 00:25:48.920
<v Speaker 3>you know, bindable or easily accessible, so that you can

468
00:25:49.880 --> 00:25:51.759
<v Speaker 3>make your UI so that parts of the U I

469
00:25:51.799 --> 00:25:54.720
<v Speaker 3>appear and disappear if the user can or can't see

470
00:25:54.759 --> 00:25:58.720
<v Speaker 3>a thing or something like that. And of course Blazer

471
00:25:58.759 --> 00:26:01.359
<v Speaker 3>does all that too. Yeah, And so that's where a

472
00:26:01.400 --> 00:26:06.000
<v Speaker 3>lot of the work is is integrating. So c SLA,

473
00:26:06.160 --> 00:26:11.759
<v Speaker 3>for example, exposes a set of pre built dynamic authorization policies,

474
00:26:12.480 --> 00:26:18.160
<v Speaker 3>and of course Blazer supports policies through the authorized authorized

475
00:26:18.240 --> 00:26:21.000
<v Speaker 3>view and all the other cool stuff they've got, and

476
00:26:21.039 --> 00:26:23.680
<v Speaker 3>so those two things combined together, so you can just say,

477
00:26:23.759 --> 00:26:27.839
<v Speaker 3>oh this, you know, like like can the user see

478
00:26:27.920 --> 00:26:31.160
<v Speaker 3>or not see the employee salary?

479
00:26:31.319 --> 00:26:31.519
<v Speaker 1>Right?

480
00:26:32.559 --> 00:26:36.359
<v Speaker 3>Yeah, you can just tell Blazer to use this policy.

481
00:26:36.480 --> 00:26:39.720
<v Speaker 3>And the policy doesn't do anything. It just looks at

482
00:26:39.720 --> 00:26:43.319
<v Speaker 3>the business rules that are in the rule engine, and

483
00:26:44.279 --> 00:26:46.720
<v Speaker 3>the UI turns turns on or off at part of

484
00:26:46.759 --> 00:26:50.359
<v Speaker 3>the with the user sees. So it's really neat stuff.

485
00:26:50.640 --> 00:26:54.640
<v Speaker 1>I was using an app today that i'm working on

486
00:26:54.799 --> 00:26:58.839
<v Speaker 1>for but with a team for a customer, and uh,

487
00:26:59.720 --> 00:27:03.519
<v Speaker 1>how a problem with something? And one of the guys said, yeah,

488
00:27:03.640 --> 00:27:05.480
<v Speaker 1>take a look in this part of the app that

489
00:27:05.519 --> 00:27:08.119
<v Speaker 1>he's been working on, and so I go there and

490
00:27:08.160 --> 00:27:12.160
<v Speaker 1>I get a blank screen and it's because I don't

491
00:27:12.279 --> 00:27:16.240
<v Speaker 1>have the authorization to see that, like that bit didn't

492
00:27:16.240 --> 00:27:18.640
<v Speaker 1>get flipped or whatever. But there was no message that

493
00:27:18.799 --> 00:27:22.680
<v Speaker 1>said I'm sorry, you don't know, please wait or nothing,

494
00:27:22.880 --> 00:27:26.200
<v Speaker 1>just like boom blank, I got nothing.

495
00:27:27.160 --> 00:27:30.839
<v Speaker 3>How well, and I'm teaching and you might do this too,

496
00:27:30.880 --> 00:27:34.880
<v Speaker 3>and you're teaching about the authorization stuff. In Blazer. There's

497
00:27:35.000 --> 00:27:39.920
<v Speaker 3>the heavy hammer, which is the authorized attribute. Right just

498
00:27:40.000 --> 00:27:43.799
<v Speaker 3>as y'all can't even get to this page, no, I'm

499
00:27:43.839 --> 00:27:45.799
<v Speaker 3>like that that is rarely useful.

500
00:27:46.960 --> 00:27:48.720
<v Speaker 1>It routes you to the login screen.

501
00:27:48.880 --> 00:27:53.200
<v Speaker 3>Yeah yeah, well or yeah or wherever. Yeah, but in

502
00:27:53.240 --> 00:27:54.880
<v Speaker 3>real life, I mean, how useful is that?

503
00:27:55.559 --> 00:27:56.440
<v Speaker 1>You know that.

504
00:27:58.039 --> 00:28:01.359
<v Speaker 3>You probably actually to your point when user to see something,

505
00:28:01.480 --> 00:28:04.319
<v Speaker 3>say someday you don't have access to them.

506
00:28:04.279 --> 00:28:07.160
<v Speaker 1>You want a sorry page, right, Richard? Sorry?

507
00:28:07.759 --> 00:28:08.680
<v Speaker 2>Yeah?

508
00:28:08.759 --> 00:28:11.599
<v Speaker 1>What is one of the three error messages? Right? Yeah?

509
00:28:11.759 --> 00:28:13.039
<v Speaker 2>Three perfect air images?

510
00:28:13.119 --> 00:28:13.400
<v Speaker 1>Is what?

511
00:28:13.519 --> 00:28:13.720
<v Speaker 3>How?

512
00:28:13.759 --> 00:28:14.599
<v Speaker 1>And sorry? Right?

513
00:28:14.640 --> 00:28:18.160
<v Speaker 2>You pretty much covered everything at that point that's not

514
00:28:18.240 --> 00:28:21.640
<v Speaker 2>happening for you. Oh that's fair. Should we take a break.

515
00:28:21.440 --> 00:28:24.319
<v Speaker 1>Yeah, let's do that. Wow, it's really only it's already

516
00:28:24.319 --> 00:28:27.400
<v Speaker 1>been almost half an hour, so yeah, let's take a

517
00:28:27.400 --> 00:28:29.319
<v Speaker 1>break and we'll be right back with more from Rocky

518
00:28:29.359 --> 00:28:33.880
<v Speaker 1>Lockcap to these very important messages. Did you know you

519
00:28:33.880 --> 00:28:37.759
<v Speaker 1>can easily migrate asp net web apps to Windows containers

520
00:28:37.839 --> 00:28:42.599
<v Speaker 1>on AWS. Use the app to container tool to containerize

521
00:28:42.640 --> 00:28:47.240
<v Speaker 1>your iis websites and deploy to AWS managed container services

522
00:28:47.720 --> 00:28:51.400
<v Speaker 1>with or without Kubernetes. Find out more about app to

523
00:28:51.440 --> 00:28:56.000
<v Speaker 1>container at AWS dot Amazon dot com, slash, dot net,

524
00:28:56.200 --> 00:29:03.160
<v Speaker 1>slash modernize, And we're back. It's dot net rock So

525
00:29:03.200 --> 00:29:06.240
<v Speaker 1>I'm Carl Franklin. That's Richie Campbell. Hey, that's our friend

526
00:29:06.359 --> 00:29:10.319
<v Speaker 1>Rock for the LUCA. Hello. Hello, and yeah talking to

527
00:29:10.319 --> 00:29:13.880
<v Speaker 1>c s l A dot nine, you said most of

528
00:29:13.920 --> 00:29:16.880
<v Speaker 1>the focuses on Blazer in this version.

529
00:29:17.200 --> 00:29:22.400
<v Speaker 3>Yeah, Well two things in nine Blazer Blazer, Blazer.

530
00:29:22.319 --> 00:29:25.880
<v Speaker 1>And did I mention Blazer?

531
00:29:26.240 --> 00:29:27.559
<v Speaker 2>Oh and also Blazer.

532
00:29:29.440 --> 00:29:33.759
<v Speaker 3>And then the other thing is and there's a cool

533
00:29:33.799 --> 00:29:37.200
<v Speaker 3>story behind this, but the there's a bunch of code

534
00:29:37.240 --> 00:29:41.960
<v Speaker 3>generation that was introduced in nine that are really I

535
00:29:41.960 --> 00:29:47.240
<v Speaker 3>think come to maturity in ten, so very soon, because

536
00:29:47.279 --> 00:29:50.799
<v Speaker 3>we're very much working on ten to come up with

537
00:29:50.880 --> 00:29:57.079
<v Speaker 3>dot net ten. Yeah, and the code generation radically reduces

538
00:29:57.119 --> 00:29:59.039
<v Speaker 3>the amount of code that you have to write in

539
00:29:59.079 --> 00:30:05.920
<v Speaker 3>a typical business class. And the story behind this is

540
00:30:05.960 --> 00:30:12.000
<v Speaker 3>that there's a company or organization group that's using CSLA

541
00:30:12.079 --> 00:30:16.079
<v Speaker 3>to write some software. And I had never encountered this before,

542
00:30:16.079 --> 00:30:18.519
<v Speaker 3>but it's a very cool thing. So what they did

543
00:30:19.440 --> 00:30:24.079
<v Speaker 3>is they didn't want to give money directly to like

544
00:30:24.480 --> 00:30:28.240
<v Speaker 3>to CSLA, to me or whatever. They wanted to fund

545
00:30:28.319 --> 00:30:34.759
<v Speaker 3>people to develop though against the CSLA backlog, and so

546
00:30:34.839 --> 00:30:38.359
<v Speaker 3>they set up, Yeah, they went on a job board

547
00:30:38.839 --> 00:30:43.400
<v Speaker 3>and literally set up a contract that anybody who wanted

548
00:30:43.440 --> 00:30:47.279
<v Speaker 3>to apparently could go sign up for the contract, follow

549
00:30:47.640 --> 00:30:51.319
<v Speaker 3>some set of guidelines, and become a CSLA contributor, and

550
00:30:51.359 --> 00:30:56.640
<v Speaker 3>then they would get compensated. And I was not party

551
00:30:56.680 --> 00:31:00.559
<v Speaker 3>to any of this. This was all wow to me.

552
00:31:00.640 --> 00:31:02.960
<v Speaker 3>I thought it was some sort of scam originally, like

553
00:31:02.960 --> 00:31:04.720
<v Speaker 3>people are coming to be going, hey, how do I

554
00:31:04.759 --> 00:31:08.319
<v Speaker 3>get this work? And I'm like, what are you talking about? Work?

555
00:31:10.839 --> 00:31:13.680
<v Speaker 2>But I see the see I see the difference in

556
00:31:13.680 --> 00:31:16.119
<v Speaker 2>the shape of your release in nine, because normally you've

557
00:31:16.160 --> 00:31:19.839
<v Speaker 2>got I don't know, eight to ten twelve items in

558
00:31:19.880 --> 00:31:24.000
<v Speaker 2>a given release, and then nine is like sixty.

559
00:31:24.119 --> 00:31:26.400
<v Speaker 3>Oh it was. It was well, yeah, because we had

560
00:31:26.640 --> 00:31:29.079
<v Speaker 3>I think four or five people that stepped up and

561
00:31:29.119 --> 00:31:32.759
<v Speaker 3>did stuff, and a couple of people did a lot

562
00:31:32.920 --> 00:31:35.880
<v Speaker 3>of stuff, including this one guy from Brazil that wrote

563
00:31:36.240 --> 00:31:42.759
<v Speaker 3>all these code generators to do a whole bunch of

564
00:31:42.759 --> 00:31:46.839
<v Speaker 3>cool stuff. Wow, And probably the biggest one and the

565
00:31:46.839 --> 00:31:51.559
<v Speaker 3>one that we're we didn't it's there in nine and

566
00:31:52.039 --> 00:31:56.839
<v Speaker 3>technically it works, but I think it'll be robust in ten.

567
00:31:57.119 --> 00:32:00.519
<v Speaker 3>Is the way I look at it. That, Yeah, it

568
00:32:00.599 --> 00:32:03.960
<v Speaker 3>generates partial classes, so that most of what you would

569
00:32:04.000 --> 00:32:08.279
<v Speaker 3>have written in a CSLA business class, it just writes

570
00:32:08.319 --> 00:32:10.440
<v Speaker 3>for you and you never see it, right, because it's

571
00:32:10.440 --> 00:32:16.559
<v Speaker 3>in one of those dot G files. And yeah, very

572
00:32:16.640 --> 00:32:18.680
<v Speaker 3>very cool. Yeah, very exciting.

573
00:32:18.720 --> 00:32:20.920
<v Speaker 2>And in nine to one two, which is a little

574
00:32:20.920 --> 00:32:23.079
<v Speaker 2>more recent, which is this past June, you still got

575
00:32:23.079 --> 00:32:25.279
<v Speaker 2>a huge number of changes in there. Although it seems

576
00:32:25.319 --> 00:32:27.599
<v Speaker 2>like fewer people, it does seem like it kicked off

577
00:32:27.599 --> 00:32:28.160
<v Speaker 2>a momentum.

578
00:32:28.279 --> 00:32:31.599
<v Speaker 3>Yeah, the contract dropped off, so the people looking to

579
00:32:31.640 --> 00:32:33.920
<v Speaker 3>do this just for the money went away, but then

580
00:32:33.960 --> 00:32:37.759
<v Speaker 3>a couple of people stayed and then so with all

581
00:32:37.759 --> 00:32:42.599
<v Speaker 3>the momentum, other people joined in. Yeah. So yeah, that's

582
00:32:42.640 --> 00:32:45.559
<v Speaker 3>been fantastic and there's been.

583
00:32:46.519 --> 00:32:49.640
<v Speaker 1>So these guys are managing the pull requests and approving

584
00:32:49.680 --> 00:32:51.720
<v Speaker 1>them and if they got approved then they would pay

585
00:32:51.759 --> 00:32:53.640
<v Speaker 1>for them. Or how did that work? Do you know?

586
00:32:55.359 --> 00:33:02.480
<v Speaker 3>Well I was approving the poll requests or another really

587
00:33:02.559 --> 00:33:08.039
<v Speaker 3>valuable contributor named Stephan from Germany has become a you know,

588
00:33:08.079 --> 00:33:12.319
<v Speaker 3>it has that level of trust and but yeah, so

589
00:33:12.880 --> 00:33:16.680
<v Speaker 3>this company apparently was paying out based on the prs

590
00:33:16.759 --> 00:33:21.079
<v Speaker 3>being accepted, not by them but by me basically.

591
00:33:20.960 --> 00:33:23.119
<v Speaker 2>Okay, and did you ever speak to them?

592
00:33:23.319 --> 00:33:26.880
<v Speaker 3>Well, eventually I did get an email contact with them

593
00:33:27.079 --> 00:33:29.160
<v Speaker 3>and they're like, oh, yeah, we're holding this big piece

594
00:33:29.160 --> 00:33:31.640
<v Speaker 3>of software. CSLA is at the center of it. We

595
00:33:31.799 --> 00:33:34.839
<v Speaker 3>felt the need for, you know, to make sure CSLA

596
00:33:35.079 --> 00:33:39.160
<v Speaker 3>was moving fast and knocked down the backlog some and

597
00:33:39.200 --> 00:33:42.000
<v Speaker 3>so we just thought we would help. Well that's wow,

598
00:33:42.000 --> 00:33:44.680
<v Speaker 3>that's great, Wow, fantastic, right, How cool is that?

599
00:33:45.279 --> 00:33:48.839
<v Speaker 1>What a great success story for an open source project

600
00:33:48.839 --> 00:33:51.960
<v Speaker 1>that began? G's when when was it when it started?

601
00:33:52.599 --> 00:33:53.359
<v Speaker 3>Ninety six?

602
00:33:53.759 --> 00:33:54.079
<v Speaker 1>Wow?

603
00:33:55.079 --> 00:33:56.119
<v Speaker 3>Nineteen ninety six.

604
00:33:56.720 --> 00:33:59.319
<v Speaker 2>Now, I mean, were you really even open source? Then?

605
00:34:00.039 --> 00:34:02.160
<v Speaker 2>Source doesn't mean the same thing in nineteen ninety six.

606
00:34:02.680 --> 00:34:04.799
<v Speaker 3>No, it was a freeware at that point.

607
00:34:04.880 --> 00:34:05.960
<v Speaker 1>I was just a party of book.

608
00:34:06.400 --> 00:34:10.079
<v Speaker 3>Yeah, yeah, yeah, and it was yeah, it was. The

609
00:34:10.159 --> 00:34:13.199
<v Speaker 3>term open source did exist at that point, but you know,

610
00:34:13.760 --> 00:34:16.320
<v Speaker 3>it was it was nascent, i would say, compared to

611
00:34:16.320 --> 00:34:20.800
<v Speaker 3>it is today. And freeware and sharewear were pretty common terms,

612
00:34:20.840 --> 00:34:23.920
<v Speaker 3>and so it was. It was released as freeware that

613
00:34:24.000 --> 00:34:25.039
<v Speaker 3>you could get.

614
00:34:25.039 --> 00:34:28.559
<v Speaker 1>Right is the internet by the book the software.

615
00:34:28.800 --> 00:34:31.559
<v Speaker 3>The Yeah, the Internet didn't really exist either, so the

616
00:34:31.599 --> 00:34:33.559
<v Speaker 3>only way to get to software was the CD in

617
00:34:33.599 --> 00:34:34.440
<v Speaker 3>the back of the book.

618
00:34:34.599 --> 00:34:34.800
<v Speaker 2>Yeah.

619
00:34:34.960 --> 00:34:35.320
<v Speaker 1>Sure.

620
00:34:35.880 --> 00:34:38.559
<v Speaker 2>And even you know, when I think about really old

621
00:34:39.639 --> 00:34:42.480
<v Speaker 2>source control solutions, you know, open source solutions, I think

622
00:34:42.480 --> 00:34:44.440
<v Speaker 2>I like something like source forge. But even that's like

623
00:34:44.880 --> 00:34:46.320
<v Speaker 2>ninety nine, two thousand.

624
00:34:46.519 --> 00:34:49.199
<v Speaker 3>Like, no, my my source control back then was having

625
00:34:49.280 --> 00:34:53.159
<v Speaker 3>backups on different folders or on a CD or something.

626
00:34:53.199 --> 00:34:57.239
<v Speaker 3>It was excellent, it was at some point, but I

627
00:34:57.239 --> 00:34:59.320
<v Speaker 3>think it might not have been until I started doing

628
00:34:59.360 --> 00:35:03.599
<v Speaker 3>dot net. I don't remember. I started using uh, what

629
00:35:03.760 --> 00:35:08.960
<v Speaker 3>was it called, not subversion, the CVS, the predecessor to subversion, Yeah,

630
00:35:09.239 --> 00:35:11.079
<v Speaker 3>concurrent versioning system.

631
00:35:11.400 --> 00:35:11.760
<v Speaker 1>Yeah.

632
00:35:11.840 --> 00:35:14.400
<v Speaker 3>And uh and I even set up my own server,

633
00:35:15.440 --> 00:35:17.440
<v Speaker 3>I think for that for sure, I did because I

634
00:35:17.480 --> 00:35:21.920
<v Speaker 3>switched to subversion and I had my own server, and

635
00:35:21.920 --> 00:35:24.719
<v Speaker 3>that's what source forage I think originally started out being

636
00:35:24.760 --> 00:35:31.719
<v Speaker 3>a subversion serversion. And then when GET came out, I

637
00:35:31.760 --> 00:35:33.800
<v Speaker 3>didn't jump on it right away, even though a couple

638
00:35:33.800 --> 00:35:35.639
<v Speaker 3>of colleagues were like, oh no, you got to eat

639
00:35:35.639 --> 00:35:37.960
<v Speaker 3>It's so much better, and I'm like, yeah, this is working.

640
00:35:37.960 --> 00:35:38.440
<v Speaker 3>Why would I.

641
00:35:38.639 --> 00:35:42.400
<v Speaker 2>Yeah, And by better, I mean more hostile, like it

642
00:35:42.440 --> 00:35:42.679
<v Speaker 2>was not.

643
00:35:43.960 --> 00:35:45.840
<v Speaker 1>It was not a friendly tool.

644
00:35:45.760 --> 00:35:46.840
<v Speaker 3>No, not at all.

645
00:35:47.519 --> 00:35:50.840
<v Speaker 1>If you if you're a Unix monk, you could probably

646
00:35:51.079 --> 00:35:53.800
<v Speaker 1>pick it up easier than that's Windows guys.

647
00:35:54.159 --> 00:35:58.599
<v Speaker 3>And yeah, the tooling got better and somebody one one

648
00:35:58.599 --> 00:36:00.119
<v Speaker 3>of the people I worked with at the time, and

649
00:36:00.239 --> 00:36:03.639
<v Speaker 3>eventually was like, here, I will port your entire history

650
00:36:03.719 --> 00:36:08.800
<v Speaker 3>into GET just to get you there, because it's.

651
00:36:08.199 --> 00:36:10.000
<v Speaker 2>I want, I want you to do this that badly.

652
00:36:10.079 --> 00:36:11.039
<v Speaker 2>I'm going to do the work.

653
00:36:10.920 --> 00:36:13.519
<v Speaker 3>For you exactly. It's embarrassing to know that you're not

654
00:36:13.639 --> 00:36:14.639
<v Speaker 3>using this thing.

655
00:36:14.960 --> 00:36:17.559
<v Speaker 1>Nice, awesome.

656
00:36:18.039 --> 00:36:22.280
<v Speaker 3>That was probably two thousand and three or something, I'm guessing.

657
00:36:23.639 --> 00:36:27.280
<v Speaker 2>Yeah, I was thinking of Tortoise SVN. I think that

658
00:36:27.480 --> 00:36:30.679
<v Speaker 2>was the last thing I used before switching to GET.

659
00:36:30.760 --> 00:36:34.800
<v Speaker 3>Yeah, I used Tortoise all It was awesome, absolutely.

660
00:36:34.360 --> 00:36:36.559
<v Speaker 2>Yeah, it was integrated with the Windows shell like it

661
00:36:36.599 --> 00:36:38.599
<v Speaker 2>was just I got used to using source control for

662
00:36:38.679 --> 00:36:42.320
<v Speaker 2>kind of everything, you know, and in the Tortoise world, yep.

663
00:36:42.760 --> 00:36:42.960
<v Speaker 1>Yeah.

664
00:36:43.519 --> 00:36:45.800
<v Speaker 2>And now it's all gethub all the time, for better

665
00:36:45.880 --> 00:36:46.679
<v Speaker 2>or worse. Yep.

666
00:36:46.880 --> 00:36:49.079
<v Speaker 3>Well, and once you wrap your head around it, yeah

667
00:36:49.119 --> 00:36:50.079
<v Speaker 3>it's probably for better.

668
00:36:50.239 --> 00:36:52.679
<v Speaker 2>But yeah, not that I want to hijack us into

669
00:36:52.719 --> 00:36:55.199
<v Speaker 2>an AI conversation, but I have to wonder, you know,

670
00:36:55.760 --> 00:36:58.119
<v Speaker 2>yes you do, how much maintenance you start doing with

671
00:36:58.199 --> 00:37:00.800
<v Speaker 2>c SLA, with some of the dev tools that are

672
00:37:02.159 --> 00:37:05.119
<v Speaker 2>using llms for this, because you've got such a mature

673
00:37:05.159 --> 00:37:08.719
<v Speaker 2>code base, like I could imagine an LM functioning really

674
00:37:08.760 --> 00:37:09.159
<v Speaker 2>well on.

675
00:37:09.159 --> 00:37:13.039
<v Speaker 3>It, it does and it doesn't. I have probably three

676
00:37:13.079 --> 00:37:18.199
<v Speaker 3>different angles to talk about that. Since you've hijacked the conversation.

677
00:37:18.239 --> 00:37:20.800
<v Speaker 1>Now you've done it, Richard, like what I've done, We're

678
00:37:20.800 --> 00:37:24.280
<v Speaker 1>going to get all kinds of ail and hate messages.

679
00:37:25.360 --> 00:37:33.480
<v Speaker 3>So one of the angles is maintaining csla's actual source

680
00:37:33.519 --> 00:37:38.960
<v Speaker 3>code using copilot agent mode or cursor or something like that,

681
00:37:40.039 --> 00:37:46.719
<v Speaker 3>and that works within limited bounds. And the reason I

682
00:37:46.760 --> 00:37:49.320
<v Speaker 3>say it that way is because the CSLA code base

683
00:37:49.400 --> 00:37:51.480
<v Speaker 3>is not only mature, but it's kind of big.

684
00:37:52.159 --> 00:37:54.599
<v Speaker 1>Yeah, and there's a lot of tokens.

685
00:37:54.880 --> 00:37:59.800
<v Speaker 3>It's a lot of tokens, and they frequently find that

686
00:37:59.840 --> 00:38:02.320
<v Speaker 3>I'll get part way through doing something with the AI

687
00:38:02.599 --> 00:38:07.760
<v Speaker 3>and the AI will go I can't function token the

688
00:38:07.800 --> 00:38:14.760
<v Speaker 3>contact bag. My head hurts. You're on your own, kid, give.

689
00:38:14.639 --> 00:38:15.559
<v Speaker 1>Me some time and all.

690
00:38:16.039 --> 00:38:19.559
<v Speaker 2>Yeah, just just like your cruise control or your full

691
00:38:19.599 --> 00:38:23.920
<v Speaker 2>cell trap and going bebep on you, dude, I'm out.

692
00:38:24.639 --> 00:38:26.199
<v Speaker 1>Please put your hands on the wheel.

693
00:38:27.119 --> 00:38:29.119
<v Speaker 3>So for for some things, it works, you know, if

694
00:38:29.280 --> 00:38:32.159
<v Speaker 3>if things of limited scope, I find that it actually

695
00:38:32.159 --> 00:38:36.440
<v Speaker 3>is pretty. But like one of the things I hoped

696
00:38:36.599 --> 00:38:38.800
<v Speaker 3>to do intend that I don't think is going to

697
00:38:38.840 --> 00:38:41.840
<v Speaker 3>happen because it's it's just no matter how you look

698
00:38:41.840 --> 00:38:44.840
<v Speaker 3>at it, it's a huge thing. And it's merging, merging

699
00:38:44.880 --> 00:38:50.079
<v Speaker 3>two of the biggest classes in the framework to into

700
00:38:50.119 --> 00:38:55.760
<v Speaker 3>something else. And uh for those that are C S

701
00:38:55.880 --> 00:38:59.480
<v Speaker 3>l A people, that's it's taking the business rules engine

702
00:38:59.519 --> 00:39:03.199
<v Speaker 3>from business Base and putting it into Business list Base,

703
00:39:03.480 --> 00:39:06.800
<v Speaker 3>so that you could have not only a collection, which

704
00:39:06.800 --> 00:39:09.480
<v Speaker 3>is what business list Base is, but it could also

705
00:39:09.719 --> 00:39:13.719
<v Speaker 3>directly have properties with all the power and capability of

706
00:39:14.000 --> 00:39:21.800
<v Speaker 3>a normal class that has properties. And I have doing

707
00:39:21.840 --> 00:39:25.400
<v Speaker 3>it by hand is daunting, and I'm like, oh no,

708
00:39:25.480 --> 00:39:29.280
<v Speaker 3>the LM will help me. And I have tried it

709
00:39:29.480 --> 00:39:32.920
<v Speaker 3>many times in many different ways, and thus far, every

710
00:39:33.000 --> 00:39:38.519
<v Speaker 3>time it has completely either started hallucinating or run out

711
00:39:38.519 --> 00:39:42.320
<v Speaker 3>of context space and give me an error. So I

712
00:39:42.360 --> 00:39:47.559
<v Speaker 3>do think that it shows that you know and I

713
00:39:47.639 --> 00:39:50.840
<v Speaker 3>use don't get me wrong. I use AI and copile

714
00:39:50.920 --> 00:39:54.840
<v Speaker 3>it agent mode for lots of stuff and cursor and

715
00:39:55.400 --> 00:39:59.559
<v Speaker 3>it's fantastic. But when confronted with something of this size

716
00:39:59.599 --> 00:40:02.719
<v Speaker 3>and compla, it clearly just falls flat.

717
00:40:03.280 --> 00:40:05.639
<v Speaker 1>You take a too big a bite too. I think

718
00:40:05.719 --> 00:40:09.840
<v Speaker 1>that's too large a skill. I've had that situation before,

719
00:40:09.920 --> 00:40:13.519
<v Speaker 1>where you know, I tell it to generate. I can't

720
00:40:13.519 --> 00:40:15.840
<v Speaker 1>remember what it was, a big enum that had like

721
00:40:15.840 --> 00:40:18.360
<v Speaker 1>a thousand different things on it something I can't remember

722
00:40:18.400 --> 00:40:21.440
<v Speaker 1>what it was, but it stopped out about half maybe

723
00:40:21.440 --> 00:40:23.519
<v Speaker 1>half third of the way down, and it was dot

724
00:40:23.559 --> 00:40:25.719
<v Speaker 1>dot dot. You do the rest. If something like that,

725
00:40:25.880 --> 00:40:30.199
<v Speaker 1>you put the rest here, it's like, okay, can you

726
00:40:30.239 --> 00:40:34.119
<v Speaker 1>give me values fifty through one hundred, Sure, no problem,

727
00:40:34.239 --> 00:40:37.039
<v Speaker 1>fifty ninety eight and then you do the rest.

728
00:40:37.079 --> 00:40:43.880
<v Speaker 2>It's like, come on, we're paging with an LLM now, yeah, yeah,

729
00:40:44.440 --> 00:40:46.280
<v Speaker 2>I mean it's interesting to see it hit limits like

730
00:40:46.320 --> 00:40:46.679
<v Speaker 2>that too.

731
00:40:46.960 --> 00:40:50.679
<v Speaker 3>So the second angle that I'll talk about is people

732
00:40:51.119 --> 00:40:56.800
<v Speaker 3>concluding myself, that are writing code that uses CSLA and

733
00:40:57.280 --> 00:41:01.360
<v Speaker 3>then copilot is pretty darn good because of course Copilot

734
00:41:02.480 --> 00:41:05.679
<v Speaker 3>was trained on I suppose it doesn't. It depends on

735
00:41:05.719 --> 00:41:10.000
<v Speaker 3>which model, but generally speaking, right, they're trained on open

736
00:41:10.000 --> 00:41:13.519
<v Speaker 3>source code. Well, CSLA is open source, and so it's like, yay,

737
00:41:13.639 --> 00:41:17.760
<v Speaker 3>I understand all this stuff, and there's tons of examples

738
00:41:17.760 --> 00:41:18.679
<v Speaker 3>out there in the world.

739
00:41:18.800 --> 00:41:19.280
<v Speaker 1>Whatnot.

740
00:41:20.320 --> 00:41:25.119
<v Speaker 3>The problem with it is that the same thing that

741
00:41:25.519 --> 00:41:28.880
<v Speaker 3>us as humans have If you google something, it's like, oh,

742
00:41:28.960 --> 00:41:31.559
<v Speaker 3>I found the answer. Ah, that was the answer from him.

743
00:41:31.559 --> 00:41:36.079
<v Speaker 3>Fifteen years ago or five years ago or and so.

744
00:41:36.679 --> 00:41:38.920
<v Speaker 2>The answer fifteen years ago is reflection.

745
00:41:41.519 --> 00:41:47.400
<v Speaker 3>Exactly. You know, the code patterns have changed, and even

746
00:41:47.679 --> 00:41:50.920
<v Speaker 3>with CSLA, we try really hard to do backward compatibility,

747
00:41:50.920 --> 00:41:53.760
<v Speaker 3>and so in some cases the code will even still work.

748
00:41:53.840 --> 00:41:56.639
<v Speaker 3>It's just like, man, I wouldn't do it that way now,

749
00:41:57.000 --> 00:41:57.239
<v Speaker 3>you know.

750
00:41:59.519 --> 00:42:02.920
<v Speaker 1>So back to CSLA, done that features. I noticed that

751
00:42:02.960 --> 00:42:05.760
<v Speaker 1>you're using gRPC for a few things. What are you

752
00:42:05.800 --> 00:42:06.960
<v Speaker 1>using that for? Well?

753
00:42:07.559 --> 00:42:14.199
<v Speaker 3>gRPC? So one capability of CSLA is to move object graphs,

754
00:42:15.440 --> 00:42:18.360
<v Speaker 3>generally speaking, between a server where it can talk to

755
00:42:18.400 --> 00:42:20.599
<v Speaker 3>the database and the client where it can talk to

756
00:42:20.639 --> 00:42:26.440
<v Speaker 3>the user. And over the years, CSLA has supported dot

757
00:42:26.519 --> 00:42:30.360
<v Speaker 3>net remoting and ASMX and WCF and.

758
00:42:32.239 --> 00:42:33.639
<v Speaker 1>You finally came to your senses.

759
00:42:34.239 --> 00:42:39.039
<v Speaker 3>Well, for a really long time, I would say for

760
00:42:39.119 --> 00:42:45.360
<v Speaker 3>twenty years, it's been extensible pluggable. Yeah, and so the

761
00:42:45.400 --> 00:42:51.760
<v Speaker 3>path the technology almost everybody uses is HTTP. But it

762
00:42:51.800 --> 00:42:55.639
<v Speaker 3>does support gRPC for people that want, you know, slightly

763
00:42:55.679 --> 00:42:59.000
<v Speaker 3>better performance or smaller payloads over the wire, that sort

764
00:42:59.000 --> 00:43:02.880
<v Speaker 3>of thing, significant better performance, yeah, right.

765
00:43:03.679 --> 00:43:06.719
<v Speaker 1>And what about dot net remoteing binary formatter?

766
00:43:09.119 --> 00:43:11.960
<v Speaker 2>Yeah, like that perform Back to two thousand.

767
00:43:11.679 --> 00:43:14.559
<v Speaker 1>And two, well, g RPC is kind of like that.

768
00:43:14.760 --> 00:43:19.519
<v Speaker 1>You know, it's a binary serializer. Yeah, it's very efficient,

769
00:43:20.639 --> 00:43:25.159
<v Speaker 1>and it's a stream of bites that gets hydrated and rehydrated.

770
00:43:25.000 --> 00:43:29.119
<v Speaker 3>But without some of the security issues that came along

771
00:43:29.159 --> 00:43:30.079
<v Speaker 3>with remote.

772
00:43:30.199 --> 00:43:31.159
<v Speaker 1>Oh yeah, pretty issues.

773
00:43:31.199 --> 00:43:37.639
<v Speaker 2>I can't imagine what you're talking about. Call my machine,

774
00:43:37.800 --> 00:43:38.519
<v Speaker 2>it'll be fine.

775
00:43:38.559 --> 00:43:41.360
<v Speaker 1>So that's cool. So imagine it's just like, uh, you

776
00:43:41.480 --> 00:43:43.440
<v Speaker 1>just say something like, hey, I want to move this

777
00:43:43.559 --> 00:43:45.199
<v Speaker 1>object over there. Just do that.

778
00:43:45.400 --> 00:43:49.679
<v Speaker 3>Yeah, right, and yeah, in fact, the current three protocols

779
00:43:49.679 --> 00:43:55.000
<v Speaker 3>that are maintained I guess, I mean HTTP is like

780
00:43:55.039 --> 00:43:58.400
<v Speaker 3>in the box because that's you know, then g r PC,

781
00:43:58.599 --> 00:44:01.559
<v Speaker 3>and then I've got a rabbit MQ one because I

782
00:44:01.639 --> 00:44:05.719
<v Speaker 3>thought it should that should be possible, and I wanted

783
00:44:05.760 --> 00:44:07.760
<v Speaker 3>to prove to myself that it was. I don't know

784
00:44:07.840 --> 00:44:11.400
<v Speaker 3>that anybody who's actually used it. But of course that's

785
00:44:11.480 --> 00:44:14.400
<v Speaker 3>kind of cool because it puts your outbound request on

786
00:44:14.440 --> 00:44:16.360
<v Speaker 3>a queue that could be picked up by any one

787
00:44:16.400 --> 00:44:18.119
<v Speaker 3>of a number of machines that are listening.

788
00:44:18.639 --> 00:44:21.239
<v Speaker 1>Yeah, process guaranteed delivery kind of thing.

789
00:44:21.440 --> 00:44:24.159
<v Speaker 3>Yeah, and then the response comes back on a return

790
00:44:24.239 --> 00:44:28.920
<v Speaker 3>queue and yeah, it works great. It's really nifty.

791
00:44:30.360 --> 00:44:30.880
<v Speaker 1>That's nice.

792
00:44:31.119 --> 00:44:36.199
<v Speaker 3>You want global scale and resiliency, that's certainly the a

793
00:44:36.400 --> 00:44:37.960
<v Speaker 3>technology worth exploring.

794
00:44:38.079 --> 00:44:41.679
<v Speaker 1>Right. Every time I'm doing a Blazer talk and we

795
00:44:41.800 --> 00:44:44.800
<v Speaker 1>come to the point where I'm showing signal R and

796
00:44:44.840 --> 00:44:47.400
<v Speaker 1>people are like, wow, that's amazing, I'm like, yeah, all right, Well,

797
00:44:47.400 --> 00:44:50.679
<v Speaker 1>before you get too excited, just know that if you're

798
00:44:50.760 --> 00:44:54.400
<v Speaker 1>not listening when a message comes in, it's gone. Yeah, Like,

799
00:44:54.719 --> 00:44:57.880
<v Speaker 1>this doesn't guaranteed delivery. Yeah, this doesn't take the place

800
00:44:57.880 --> 00:44:59.920
<v Speaker 1>of a queue or a bus or anything like that.

801
00:45:00.760 --> 00:45:03.400
<v Speaker 1>It's just you know, hey, if you happen to be listening,

802
00:45:03.599 --> 00:45:04.639
<v Speaker 1>here's a message for you.

803
00:45:05.119 --> 00:45:09.559
<v Speaker 3>Yeah. Yeah, I characterize it very much like a Blazer

804
00:45:09.639 --> 00:45:12.320
<v Speaker 3>turns the browser into a thirty two seventy terminal.

805
00:45:12.719 --> 00:45:13.360
<v Speaker 1>Yeah. Nice.

806
00:45:14.119 --> 00:45:16.440
<v Speaker 3>Not only people with gray hair understand that anymore.

807
00:45:16.480 --> 00:45:19.920
<v Speaker 2>But yeah, do you even know why that's funny?

808
00:45:20.239 --> 00:45:22.039
<v Speaker 1>Do you? Yeah? You probably haven't idea.

809
00:45:22.039 --> 00:45:24.519
<v Speaker 3>There's always that that group of people in the audience

810
00:45:24.559 --> 00:45:28.079
<v Speaker 3>that laugh and I do it for them, be.

811
00:45:28.119 --> 00:45:30.440
<v Speaker 1>Good, but thank goodness. Yeah, having a queue or a

812
00:45:30.440 --> 00:45:34.880
<v Speaker 1>bus is just a really great thing, especially when you

813
00:45:34.920 --> 00:45:38.639
<v Speaker 1>have network outages and you know you want to you

814
00:45:38.679 --> 00:45:40.960
<v Speaker 1>want to make sure that those things get delivered. Because

815
00:45:40.960 --> 00:45:41.880
<v Speaker 1>they're kind of important.

816
00:45:42.159 --> 00:45:43.519
<v Speaker 3>They certainly can be.

817
00:45:44.599 --> 00:45:47.679
<v Speaker 1>So what else? Uh, what else is in there that

818
00:45:48.039 --> 00:45:50.880
<v Speaker 1>we should talk about in not version nine?

819
00:45:51.360 --> 00:45:55.880
<v Speaker 3>Ah, let's see just so many things. That's this is long. Yeah,

820
00:45:56.679 --> 00:45:57.960
<v Speaker 3>the list is long.

821
00:45:58.039 --> 00:45:59.800
<v Speaker 1>I'm gonna Signon's a contributor.

822
00:46:00.000 --> 00:46:03.320
<v Speaker 3>I'm in crop well and and so there was a

823
00:46:03.320 --> 00:46:08.039
<v Speaker 3>whole bunch of that too. So although that's mostly invisible

824
00:46:08.760 --> 00:46:15.039
<v Speaker 3>is behind the scenes, there was this he did and

825
00:46:15.159 --> 00:46:17.480
<v Speaker 3>it just jumped in and said, you know what, let

826
00:46:17.519 --> 00:46:23.320
<v Speaker 3>me modernize your code base, and which is pretty amazing

827
00:46:23.360 --> 00:46:24.400
<v Speaker 3>when you think about.

828
00:46:24.119 --> 00:46:25.760
<v Speaker 1>It, and.

829
00:46:27.159 --> 00:46:30.480
<v Speaker 3>You know, so you get I guess technical debt right,

830
00:46:30.480 --> 00:46:32.840
<v Speaker 3>which I've I've had people do well, technical debt doesn't

831
00:46:32.880 --> 00:46:37.719
<v Speaker 3>really exist or whatever, But I don't know, don't don't

832
00:46:37.719 --> 00:46:41.679
<v Speaker 3>ask me, man, I've been I'm like, I kind of

833
00:46:41.719 --> 00:46:44.719
<v Speaker 3>I kind of think it does.

834
00:46:45.519 --> 00:46:45.639
<v Speaker 1>Uh.

835
00:46:46.920 --> 00:46:52.519
<v Speaker 3>And so it turns out though that if somebody were

836
00:46:52.559 --> 00:46:56.199
<v Speaker 3>to have and I think what Simon used was Rider,

837
00:46:56.239 --> 00:46:59.760
<v Speaker 3>because a whole lot of writer type stuff showed up

838
00:47:01.679 --> 00:47:09.320
<v Speaker 3>built you know, in the repo, but basically running tons

839
00:47:09.360 --> 00:47:13.599
<v Speaker 3>and tons of refactorings. In my philosophy, because this code

840
00:47:13.599 --> 00:47:18.039
<v Speaker 3>base is so big and so old, has always been

841
00:47:18.639 --> 00:47:22.679
<v Speaker 3>that when I go into a file and I have time,

842
00:47:22.719 --> 00:47:26.440
<v Speaker 3>I will modernize that file. But the idea of like

843
00:47:26.760 --> 00:47:34.480
<v Speaker 3>literally wholesale going through the whole framework, well, thankfully he

844
00:47:34.559 --> 00:47:37.440
<v Speaker 3>did that for me, I should say.

845
00:47:37.480 --> 00:47:41.360
<v Speaker 2>You know, it's like like a migration to get he's

846
00:47:41.400 --> 00:47:42.679
<v Speaker 2>an somebody else, is it?

847
00:47:42.800 --> 00:47:46.320
<v Speaker 3>Yeah, And so I mean hard to argue, right that

848
00:47:46.320 --> 00:47:53.039
<v Speaker 3>that's just phenomenal And we're actually getting a bunch of

849
00:47:53.079 --> 00:47:58.039
<v Speaker 3>that too in c s l A ten. Although this

850
00:47:58.159 --> 00:48:02.920
<v Speaker 3>is a breaking change and is something that Stefan has

851
00:48:02.960 --> 00:48:07.000
<v Speaker 3>been working on for months, which is adding in null

852
00:48:07.039 --> 00:48:11.760
<v Speaker 3>ability support. Oh my, and yeah, yeah that I mean

853
00:48:12.079 --> 00:48:15.719
<v Speaker 3>it touches almost everything, and it's kind of like acync

854
00:48:15.760 --> 00:48:19.679
<v Speaker 3>A weight or generics where once you start it affects

855
00:48:19.679 --> 00:48:21.719
<v Speaker 3>your code base from top to bottom.

856
00:48:21.840 --> 00:48:23.679
<v Speaker 1>Yeah, can't avoid it, right.

857
00:48:23.519 --> 00:48:27.440
<v Speaker 3>Yeah, right, So it's it's a huge amount of work

858
00:48:27.519 --> 00:48:29.960
<v Speaker 3>that that. So Simon did all this stuff in nine

859
00:48:30.039 --> 00:48:31.960
<v Speaker 3>and then Stefan did all this stuff in ten, and

860
00:48:33.239 --> 00:48:37.039
<v Speaker 3>life is going to be just almost infinitely better in

861
00:48:37.119 --> 00:48:40.880
<v Speaker 3>terms of being maintainable and taking advantage of modern sea

862
00:48:40.920 --> 00:48:44.360
<v Speaker 3>sharp features and that sort of thing, just working in

863
00:48:44.400 --> 00:48:45.239
<v Speaker 3>this code base.

864
00:48:46.039 --> 00:48:49.679
<v Speaker 1>Right, I hope you send him a pizza.

865
00:48:49.960 --> 00:48:51.920
<v Speaker 3>Yeah, he's in Australia. I guess I could, though I

866
00:48:51.920 --> 00:48:52.760
<v Speaker 3>could figure out a way you.

867
00:48:52.880 --> 00:48:54.400
<v Speaker 1>Have it delivered and you know, you'd have to wake

868
00:48:54.440 --> 00:48:56.159
<v Speaker 1>up in the middle of the night, deticate there in

869
00:48:56.199 --> 00:48:56.920
<v Speaker 1>the morning.

870
00:48:56.800 --> 00:48:59.920
<v Speaker 2>Something like that, and probably can order in advance. Probably

871
00:49:01.159 --> 00:49:03.440
<v Speaker 2>it's a question, is what's what's a good pizza in

872
00:49:03.440 --> 00:49:05.880
<v Speaker 2>Australia because they're you know, they put beats on their burgers.

873
00:49:05.880 --> 00:49:08.760
<v Speaker 1>You don't know what to do, that's true, they do. Yeah,

874
00:49:08.960 --> 00:49:10.280
<v Speaker 1>well you can't go wrong with shrimp.

875
00:49:10.440 --> 00:49:11.599
<v Speaker 3>Oh, I don't know.

876
00:49:11.960 --> 00:49:17.079
<v Speaker 2>Maybe it's all fun game till the allergies kick in.

877
00:49:18.159 --> 00:49:21.800
<v Speaker 1>Right, That's what I was thinking, shrimp scampy pizza. Okay.

878
00:49:22.280 --> 00:49:26.760
<v Speaker 3>So yeah. Another big thing along this line, and in

879
00:49:26.840 --> 00:49:33.840
<v Speaker 3>the geeky end of the world is AOT ahead of

880
00:49:33.840 --> 00:49:40.079
<v Speaker 3>time compilation stuff, right, which because csl A is like

881
00:49:40.400 --> 00:49:42.880
<v Speaker 3>UI Frameworks and that it does a lot of pretty

882
00:49:42.960 --> 00:49:47.159
<v Speaker 3>dynamic things, and so parts of c sl A can't

883
00:49:47.239 --> 00:49:52.599
<v Speaker 3>be AOT compiled. But in order to play well in

884
00:49:52.679 --> 00:49:58.119
<v Speaker 3>the AOT world, you're supposed to now document that through

885
00:49:58.119 --> 00:50:03.360
<v Speaker 3>attributes in your code, and so a whole bunches of

886
00:50:03.360 --> 00:50:08.239
<v Speaker 3>work went into attributing different types and parameters and we're

887
00:50:08.239 --> 00:50:11.119
<v Speaker 3>basically trying to tease out where where can we let

888
00:50:11.159 --> 00:50:16.599
<v Speaker 3>the aot uh you know compiler, uh actually compile stuff?

889
00:50:16.599 --> 00:50:17.920
<v Speaker 3>And where do we have to prevent it?

890
00:50:18.480 --> 00:50:20.920
<v Speaker 1>I wonder if I wonder if Simon is a robot.

891
00:50:21.760 --> 00:50:27.039
<v Speaker 3>I wonder, man that dude appears to drop in as

892
00:50:27.079 --> 00:50:29.519
<v Speaker 3>a hobby. I don't know. It's different open source projects

893
00:50:29.519 --> 00:50:32.039
<v Speaker 3>and just go here. Let me make your world better

894
00:50:34.239 --> 00:50:39.599
<v Speaker 3>if you look at it at Simon's history, uh commit history.

895
00:50:39.840 --> 00:50:41.360
<v Speaker 3>It's just amazing, man.

896
00:50:41.920 --> 00:50:43.840
<v Speaker 2>It's just it's just a green wall.

897
00:50:44.719 --> 00:50:47.920
<v Speaker 1>He's contributed to a few of my projects too. He's great. Yeah,

898
00:50:48.039 --> 00:50:50.960
<v Speaker 1>but uh that's crazy. What else can you tell us

899
00:50:51.000 --> 00:50:53.280
<v Speaker 1>here with? You know, seven minutes to go?

900
00:50:53.880 --> 00:50:57.480
<v Speaker 3>Oh the last the last AI thing that I have

901
00:50:57.559 --> 00:51:01.960
<v Speaker 3>been experimenting with. Carl's like, oh man, more AI, and

902
00:51:02.039 --> 00:51:03.599
<v Speaker 3>Richard's like yay more AI.

903
00:51:04.039 --> 00:51:07.079
<v Speaker 1>No, No, you know, I live and breathe it every day.

904
00:51:07.079 --> 00:51:09.360
<v Speaker 1>It's just that I know that some of our listeners,

905
00:51:09.760 --> 00:51:11.800
<v Speaker 1>you know, they like just switch it up once while.

906
00:51:13.119 --> 00:51:16.679
<v Speaker 3>But I tried building and did in fact build an

907
00:51:16.800 --> 00:51:21.719
<v Speaker 3>MCP server for CSLA. Oh cool, oh wow? And so

908
00:51:21.760 --> 00:51:25.760
<v Speaker 3>what does it do? Well? It returns It's kind of

909
00:51:25.760 --> 00:51:30.840
<v Speaker 3>like the Microsoft docs MCP server in that if the

910
00:51:31.519 --> 00:51:35.199
<v Speaker 3>lll M wants to find information about how to do

911
00:51:35.320 --> 00:51:39.639
<v Speaker 3>modern CSLA stuff, it can ask the it can do

912
00:51:39.679 --> 00:51:43.480
<v Speaker 3>a search. It's got two tools I guess they call them.

913
00:51:43.679 --> 00:51:47.199
<v Speaker 3>Tool Number one is search, so I can basically search

914
00:51:47.239 --> 00:51:49.639
<v Speaker 3>for how do I do a thing, and it'll get

915
00:51:49.679 --> 00:51:52.400
<v Speaker 3>back a list of scored results, which are just our

916
00:51:52.519 --> 00:51:57.880
<v Speaker 3>markdown documents, usually with code snippets, and then it can

917
00:51:58.280 --> 00:52:01.039
<v Speaker 3>fetch one of one or more of those code snippets

918
00:52:01.639 --> 00:52:04.480
<v Speaker 3>and then use them to do the right thing when

919
00:52:04.519 --> 00:52:09.159
<v Speaker 3>it's generating. And it works both in like ask mode

920
00:52:09.280 --> 00:52:13.039
<v Speaker 3>and agent mode. I guess you'd say, because it'll do

921
00:52:13.199 --> 00:52:17.079
<v Speaker 3>this to go find the information to explain to the

922
00:52:17.119 --> 00:52:19.599
<v Speaker 3>developer here's how you do it, or here's how it works.

923
00:52:20.280 --> 00:52:22.639
<v Speaker 3>But it'll also do it in agent mode, so that

924
00:52:22.679 --> 00:52:23.000
<v Speaker 3>if you.

925
00:52:22.960 --> 00:52:24.719
<v Speaker 1>Say, oh, it will actually change your code.

926
00:52:24.760 --> 00:52:29.360
<v Speaker 3>Yeah, go create this property or modernize this property, it'll go, oh, well,

927
00:52:29.360 --> 00:52:31.039
<v Speaker 3>how do I do that? And it'll go find the

928
00:52:31.079 --> 00:52:31.760
<v Speaker 3>current code.

929
00:52:31.960 --> 00:52:35.760
<v Speaker 1>And so what's involved in making an MCP server.

930
00:52:36.119 --> 00:52:40.159
<v Speaker 3>Well, it turns out that Microsoft and Anthropic work together

931
00:52:41.400 --> 00:52:43.480
<v Speaker 3>just over the last few months to create a new

932
00:52:43.480 --> 00:52:48.199
<v Speaker 3>GET package that makes it pretty darn easy to create

933
00:52:48.280 --> 00:52:56.719
<v Speaker 3>a MCP server in C sharp and you just attribute

934
00:52:56.760 --> 00:53:01.320
<v Speaker 3>some things and it does, magic happens, and everything is fine.

935
00:53:01.519 --> 00:53:03.760
<v Speaker 3>It happens well, because I was trying to do it

936
00:53:03.800 --> 00:53:07.760
<v Speaker 3>without and it was hard to get. The protocol is

937
00:53:07.840 --> 00:53:09.719
<v Speaker 3>just a pain, right, And so.

938
00:53:10.039 --> 00:53:13.639
<v Speaker 1>You're just exposing data points, aren't you, and search terms

939
00:53:13.719 --> 00:53:14.679
<v Speaker 1>or how what are you doing?

940
00:53:14.920 --> 00:53:18.079
<v Speaker 3>Yeah, but you have to conform to the right some

941
00:53:18.119 --> 00:53:22.039
<v Speaker 3>semantics for the calls on the endpoint and the right

942
00:53:22.119 --> 00:53:26.079
<v Speaker 3>Jason formats in and out. Okay, there's a whole bunch

943
00:53:26.199 --> 00:53:28.840
<v Speaker 3>to the protocol and basically they implemented it in this

944
00:53:28.880 --> 00:53:31.800
<v Speaker 3>new get package. So all you need to do is

945
00:53:31.840 --> 00:53:36.519
<v Speaker 3>implement a method that says search and then however it

946
00:53:36.559 --> 00:53:38.480
<v Speaker 3>is that you want to do the search, and whether

947
00:53:38.519 --> 00:53:43.039
<v Speaker 3>you're using vector searching, you know, like RAG type stuff

948
00:53:43.079 --> 00:53:47.679
<v Speaker 3>with vectors, I'm not. I'm actually just doing what a

949
00:53:47.719 --> 00:53:53.199
<v Speaker 3>mathematician would call a naive implementation, where I just literally

950
00:53:53.239 --> 00:53:57.000
<v Speaker 3>do full text searching against my you know what, have

951
00:53:57.039 --> 00:54:00.199
<v Speaker 3>I got like a dozen text files to say? You know,

952
00:54:00.280 --> 00:54:02.480
<v Speaker 3>do I do a lot of the words match? And

953
00:54:02.519 --> 00:54:05.119
<v Speaker 3>if they do, then this is a good match, you know.

954
00:54:06.840 --> 00:54:10.320
<v Speaker 3>And I tried the thing, by the way, and it

955
00:54:10.400 --> 00:54:13.320
<v Speaker 3>was not as good because the vector thing is trying

956
00:54:13.360 --> 00:54:17.320
<v Speaker 3>to get some sort of meaning out of my code samples,

957
00:54:17.760 --> 00:54:23.360
<v Speaker 3>and it works out better to just do for my scenario,

958
00:54:23.920 --> 00:54:27.039
<v Speaker 3>it works better to just do looking for keywords.

959
00:54:27.239 --> 00:54:29.159
<v Speaker 1>Well, clearly, Richard, we're going to have to have somebody

960
00:54:29.199 --> 00:54:32.000
<v Speaker 1>on who can tell us all about building all my radars.

961
00:54:32.039 --> 00:54:34.400
<v Speaker 1>But I don't want to make this put it all

962
00:54:34.400 --> 00:54:37.800
<v Speaker 1>on Rocky. But I'm so curious. Now, if I had

963
00:54:37.840 --> 00:54:41.960
<v Speaker 1>an application that had a lot of functionality that you know,

964
00:54:42.000 --> 00:54:44.440
<v Speaker 1>in building out all this UI to do stuff that

965
00:54:44.840 --> 00:54:49.239
<v Speaker 1>is ultimately functionality, right, whether it's all in an API

966
00:54:49.400 --> 00:54:54.079
<v Speaker 1>layer or whatever, I could build an MCP interface for

967
00:54:54.239 --> 00:54:58.920
<v Speaker 1>that and have it work like you would build a

968
00:54:59.119 --> 00:55:02.400
<v Speaker 1>UI am I off base with that.

969
00:55:02.760 --> 00:55:07.320
<v Speaker 3>Well, the consumer of your MCP server is the ll

970
00:55:07.440 --> 00:55:10.039
<v Speaker 3>M is an ll M, right, Yeah, So if you're

971
00:55:10.280 --> 00:55:14.079
<v Speaker 3>if you're asking like in this scenario, I'm like, hey, LLLM,

972
00:55:14.440 --> 00:55:17.519
<v Speaker 3>you know Cloud go out and you know Sonet, go

973
00:55:17.559 --> 00:55:21.760
<v Speaker 3>out and create a business class for customer with these properties.

974
00:55:22.320 --> 00:55:23.880
<v Speaker 3>And it'll be like, oh, I don't know how to

975
00:55:23.920 --> 00:55:25.159
<v Speaker 3>do that, or at least I don't know how to

976
00:55:25.159 --> 00:55:28.119
<v Speaker 3>do it correctly. I will look at your MCP server

977
00:55:28.280 --> 00:55:32.840
<v Speaker 3>have a small side conversation, you know, brush up, and

978
00:55:32.880 --> 00:55:34.920
<v Speaker 3>then it can turn around and go, oh okay, I

979
00:55:34.960 --> 00:55:36.719
<v Speaker 3>see how to do this, and then it will generate

980
00:55:36.760 --> 00:55:41.480
<v Speaker 3>all the code with Like I said, one of the

981
00:55:41.559 --> 00:55:44.360
<v Speaker 3>drawbacks if you don't do this is that it will

982
00:55:44.400 --> 00:55:47.599
<v Speaker 3>generate the code, but it's often using older techniques or whatever.

983
00:55:47.920 --> 00:55:49.840
<v Speaker 1>Well, in your case, I see, what it's doing is

984
00:55:49.880 --> 00:55:54.320
<v Speaker 1>finding code. But what if you have an application itself? Right?

985
00:55:54.920 --> 00:55:57.480
<v Speaker 1>What if I have an application that has an API

986
00:55:57.639 --> 00:56:01.280
<v Speaker 1>endpoint to create a customer and I want to tell

987
00:56:01.280 --> 00:56:05.239
<v Speaker 1>my LLLM hey on this application, go create a customer

988
00:56:05.280 --> 00:56:06.719
<v Speaker 1>with this name and that name and this name and

989
00:56:06.760 --> 00:56:08.519
<v Speaker 1>the other thing, and return back to the customer.

990
00:56:08.519 --> 00:56:12.880
<v Speaker 3>I D That's what MCP does. Yeah, among I mean you,

991
00:56:13.519 --> 00:56:17.880
<v Speaker 3>MCP can do a lot of things, right. It can information,

992
00:56:19.320 --> 00:56:22.360
<v Speaker 3>but it can also take action, right. And so when

993
00:56:22.880 --> 00:56:25.920
<v Speaker 3>when you're using copilot and agent mode, it's actually using

994
00:56:26.119 --> 00:56:30.480
<v Speaker 3>tons of MCP tools to create files and delete files

995
00:56:30.519 --> 00:56:33.400
<v Speaker 3>and do all the other stuff because that the AIS

996
00:56:33.519 --> 00:56:36.440
<v Speaker 3>can't do those things, so they use the mcps to

997
00:56:36.480 --> 00:56:36.760
<v Speaker 3>do that.

998
00:56:37.280 --> 00:56:37.599
<v Speaker 1>Got it?

999
00:56:38.360 --> 00:56:40.920
<v Speaker 3>And so yeah, you could absolutely create an MCP server

1000
00:56:41.079 --> 00:56:44.800
<v Speaker 3>that updates your database by adding a customer.

1001
00:56:44.480 --> 00:56:47.360
<v Speaker 1>And now, of course that has all sorts of security implications,

1002
00:56:47.360 --> 00:56:48.960
<v Speaker 1>but let's not get into that now.

1003
00:56:51.360 --> 00:56:53.880
<v Speaker 3>So, yeah, what I did is the super simplest thing, right,

1004
00:56:53.920 --> 00:56:57.800
<v Speaker 3>which is just all I'm doing is providing information to

1005
00:56:58.079 --> 00:57:03.440
<v Speaker 3>educate the But what I also think is now that

1006
00:57:03.480 --> 00:57:05.519
<v Speaker 3>I've now I understand how to do it and how

1007
00:57:05.559 --> 00:57:10.199
<v Speaker 3>easy it is, I can see where any organization that

1008
00:57:10.239 --> 00:57:13.800
<v Speaker 3>has their own coding standards or their own approach to

1009
00:57:14.440 --> 00:57:17.519
<v Speaker 3>implementing security I don't know, whatever it might be, their

1010
00:57:17.519 --> 00:57:22.960
<v Speaker 3>own UI standards could probably take my code as a

1011
00:57:23.000 --> 00:57:28.039
<v Speaker 3>base and go, ah, it's pretty easy to go create. Yeah,

1012
00:57:28.079 --> 00:57:30.119
<v Speaker 3>you know this thing that just documents that. So the

1013
00:57:30.159 --> 00:57:33.599
<v Speaker 3>AI is doing the right thing within my organization.

1014
00:57:33.800 --> 00:57:34.239
<v Speaker 1>Very cool.

1015
00:57:34.440 --> 00:57:36.360
<v Speaker 2>Yeah, it's a powerful topic, and it's certainly what I've

1016
00:57:36.400 --> 00:57:38.119
<v Speaker 2>been looking at to say, you know, how far we're

1017
00:57:38.119 --> 00:57:40.119
<v Speaker 2>going to go with this. I have a bunch of thoughts,

1018
00:57:40.159 --> 00:57:42.840
<v Speaker 2>but looking for the right guests, so we'll figure it out.

1019
00:57:42.880 --> 00:57:44.559
<v Speaker 1>I always have a bunch of thoughts when I talk

1020
00:57:44.639 --> 00:57:48.000
<v Speaker 1>to Rocky, for sure, even if it's at breakfast in

1021
00:57:48.239 --> 00:57:52.920
<v Speaker 1>Stockholm at six o'clock in the morning. The best thoughts

1022
00:57:53.360 --> 00:57:58.719
<v Speaker 1>before somebody goes to the airport you know. Yeah, all right, well, Rocky,

1023
00:57:58.719 --> 00:58:01.480
<v Speaker 1>it's always great to talk to you, and congrats on

1024
00:58:01.519 --> 00:58:05.079
<v Speaker 1>a new framework. When was it released, by the way, nine.

1025
00:58:05.360 --> 00:58:09.400
<v Speaker 3>Nine was released at the beginning of this year earlier.

1026
00:58:09.519 --> 00:58:13.639
<v Speaker 2>Yes, it was like February and in June.

1027
00:58:13.400 --> 00:58:17.280
<v Speaker 1>And then you'll have ten with in November, hopefully shortly after.

1028
00:58:17.800 --> 00:58:21.079
<v Speaker 3>Shortly after. Yeah, we'll have a We'll have a pre

1029
00:58:21.199 --> 00:58:22.559
<v Speaker 3>release in November for sure.

1030
00:58:22.880 --> 00:58:25.119
<v Speaker 1>Oh good, all right man. Well, it's good to talk

1031
00:58:25.119 --> 00:58:27.000
<v Speaker 1>to you again, and we will talk to you, dear

1032
00:58:27.039 --> 00:58:51.079
<v Speaker 1>listener next time on dot net rocks. Dot net Rocks

1033
00:58:51.159 --> 00:58:53.880
<v Speaker 1>is brought to you by Franklin's Net and produced by

1034
00:58:53.960 --> 00:58:57.960
<v Speaker 1>Pop Studios, a full service audio, video and post production

1035
00:58:58.079 --> 00:59:02.119
<v Speaker 1>facilities located physically New London, Connecticut, and of course in

1036
00:59:02.239 --> 00:59:07.320
<v Speaker 1>the cloud online at pwop dot com. Visit our website

1037
00:59:07.320 --> 00:59:09.119
<v Speaker 1>at d O T N E t R O c

1038
00:59:09.280 --> 00:59:14.400
<v Speaker 1>k S dot com for RSS feeds, downloads, mobile apps, comments,

1039
00:59:14.679 --> 00:59:17.199
<v Speaker 1>and access to the full archives going back to show

1040
00:59:17.320 --> 00:59:21.039
<v Speaker 1>number one, recorded in September two thousand and two. And

1041
00:59:21.159 --> 00:59:23.559
<v Speaker 1>make sure you check out our sponsors. They keep us

1042
00:59:23.559 --> 00:59:27.039
<v Speaker 1>in business. Now go write some code, see you next time.

1043
00:59:27.960 --> 00:59:31.880
<v Speaker 1>You got Jamtle Vans and
