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

2
00:00:03,040 --> 00:00:07,879
no ads? Easy? Become a patron for just five dollars

3
00:00:07,919 --> 00:00:10,800
a month. You get access to a private RSS feed

4
00:00:10,839 --> 00:00:14,240
where all the shows have no ads. Twenty dollars a month.

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

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

7
00:00:21,120 --> 00:00:37,719
dot com. Welcome back. It's dot neir Rocks. I'm Carl

8
00:00:37,719 --> 00:00:40,159
Franklin and I'm Richard Campbell. And what was that voice?

9
00:00:40,399 --> 00:00:43,240
I don't know, trying to make it interesting for the people.

10
00:00:43,399 --> 00:00:45,840
You know, Okay, I believe you. I don't know. I

11
00:00:45,880 --> 00:00:48,759
got nothing. You got some Rocky lockez here for the

12
00:00:48,840 --> 00:00:51,920
five hundred and forty ninth time on dot net rocks.

13
00:00:51,960 --> 00:00:53,799
Speaker 2: Yeah. No, I was going to do account and then

14
00:00:53,799 --> 00:00:55,880
I gotan out of fingers and toe, so I stopped.

15
00:00:57,960 --> 00:01:02,200
Speaker 1: It's episode nineteen, one hundred and seventy three. So let's

16
00:01:02,240 --> 00:01:05,000
talk about what happened in that year. Oh boy, Yeah,

17
00:01:05,040 --> 00:01:08,920
it's not good news. A few things, so Roe v Wade, Yes, right,

18
00:01:09,000 --> 00:01:12,200
I guess that's good news. Lennon Johnson went to that

19
00:01:12,920 --> 00:01:14,959
big Cadillac in the sky.

20
00:01:15,319 --> 00:01:17,280
Speaker 2: Though he wasn't president at that point anyway.

21
00:01:17,200 --> 00:01:21,680
Speaker 1: Yeah, former president. Yeah. The Paris Peace Accords for Vietnam

22
00:01:21,719 --> 00:01:25,760
in the end of the Vietnam War. Yeah, some social movements,

23
00:01:25,879 --> 00:01:30,040
Occupation of Wounded Knee. Members of the American Indian Movement

24
00:01:30,159 --> 00:01:33,200
occupied Wounded Knee South Dakota to protest against the US

25
00:01:33,280 --> 00:01:37,920
government's treatment of Native Americans. The first p Flag Meeting

26
00:01:38,000 --> 00:01:42,879
PFLAG first formal meeting of parents of Gays took place

27
00:01:42,879 --> 00:01:47,560
on a March eleventh, making a significant moment in LGBTQ

28
00:01:47,760 --> 00:01:53,439
plus advocacy. Let's see Super Bowl seven. On January fourteenth,

29
00:01:53,519 --> 00:01:57,400
Miami Dolphins completed a perfect season by defeating the Washington Redskins,

30
00:01:57,799 --> 00:02:02,000
becoming the first NFL team to achieve this feet But also,

31
00:02:03,040 --> 00:02:05,200
did you know that this is the year that hip

32
00:02:05,200 --> 00:02:08,879
hop started no in the Bronx in New York City,

33
00:02:10,120 --> 00:02:16,719
laying the foundation. The oil crisis began in nineteen seventy three,

34
00:02:17,680 --> 00:02:20,840
the first oil crisis anyway, October, leading to a significant

35
00:02:20,840 --> 00:02:23,840
increase in oil prices and economic challenges in the US.

36
00:02:24,479 --> 00:02:27,120
I think Jerry Lee Lewis made a notable appearance at

37
00:02:27,120 --> 00:02:30,960
the Grand Ole Opry on January twenty, marking his transition

38
00:02:31,080 --> 00:02:35,199
to country music. And there's a whole bunch of other things.

39
00:02:35,199 --> 00:02:37,719
But Richard, what's going on in science and tech?

40
00:02:37,960 --> 00:02:40,159
Speaker 2: Wait, there's a couple of important ones. How about the

41
00:02:40,439 --> 00:02:45,240
how about the yam Kapur War? How about Nixon resigning? Yeah,

42
00:02:45,319 --> 00:02:50,360
and Ford becoming president? Like this is the culmination of Watergate.

43
00:02:50,520 --> 00:02:53,719
Speaker 1: So we were six, but I actually do remember seeing

44
00:02:53,800 --> 00:02:57,159
Nixon on our black and white TV goings there you go.

45
00:02:57,360 --> 00:02:58,879
I actually remember that. I'm like, who's that?

46
00:02:59,360 --> 00:02:59,520
Speaker 3: You know?

47
00:03:00,000 --> 00:03:00,800
Speaker 1: That's our present guy.

48
00:03:00,840 --> 00:03:03,400
Speaker 2: He isn't president anymore, and you and you had to

49
00:03:03,439 --> 00:03:05,919
make someone president who'd never been elected anything because Spiro

50
00:03:06,039 --> 00:03:07,960
Agnew had resigned earlier the same year.

51
00:03:08,159 --> 00:03:11,960
Speaker 1: Yeah, it's you know, there's nothing fishy or funny or

52
00:03:12,639 --> 00:03:16,479
corrupt or anything about us politics, is it. Everything's fine,

53
00:03:16,520 --> 00:03:18,280
everything's fine, Everything is awesome.

54
00:03:18,599 --> 00:03:21,319
Speaker 2: Should we start with should we go to space? Side? Now?

55
00:03:21,560 --> 00:03:22,800
Speaker 1: Yeah, let's go to space.

56
00:03:22,599 --> 00:03:26,280
Speaker 2: Okay, because Paulo seventeen. Paul seventeen was last year, and

57
00:03:26,319 --> 00:03:29,159
it was the last of the Apollo missions to the Moon.

58
00:03:29,639 --> 00:03:31,680
But it wasn't the end of Apollo yet. This was

59
00:03:31,719 --> 00:03:34,520
the year the sky Lab launched, where they took the

60
00:03:34,520 --> 00:03:36,680
third stage of the Saturn five and turned it into

61
00:03:36,800 --> 00:03:39,240
an extremely large space station, the only one that the

62
00:03:39,280 --> 00:03:41,960
Americans have ever built from scratch. Everything else has been

63
00:03:42,400 --> 00:03:46,759
Russian based since then. It was only used for about

64
00:03:46,800 --> 00:03:50,000
a year. There was three missions to it Skylab two, three,

65
00:03:50,080 --> 00:03:53,479
and four, and then it was never occupied again. It

66
00:03:53,520 --> 00:03:55,759
was only supposed to last one hundred and forty hundred

67
00:03:55,800 --> 00:03:58,599
fifty days, and it went longer than that, and then

68
00:03:58,680 --> 00:04:00,319
they were not sure what to do with it. You know,

69
00:04:00,360 --> 00:04:03,960
making long duration stuff in space is very difficulty. Arguably,

70
00:04:04,080 --> 00:04:06,439
of the three missions that went to the number four

71
00:04:06,520 --> 00:04:08,360
was the most famous. It was also the longest. It

72
00:04:08,400 --> 00:04:10,960
was this eighty four day mission, but about six weeks

73
00:04:11,000 --> 00:04:13,919
in there was kind of a revolt on board. You know,

74
00:04:14,000 --> 00:04:18,120
normally these Apollo missions were pretty short, less than two

75
00:04:18,160 --> 00:04:21,199
weeks total, and so you were scheduled in fifty minute increments.

76
00:04:21,240 --> 00:04:25,959
Everything was planned. But six weeks into that kind of intensity,

77
00:04:26,480 --> 00:04:28,720
the crew was kind of like, hey, you know, we're

78
00:04:28,720 --> 00:04:31,160
falling behind schedule. We're all pretty tired, Like can we

79
00:04:31,279 --> 00:04:35,639
dial this down? And one orbit they didn't turn the

80
00:04:35,720 --> 00:04:37,439
radio on for a whole orbit.

81
00:04:37,480 --> 00:04:40,480
Speaker 1: Now I bet it was the food Richard, but.

82
00:04:40,519 --> 00:04:42,439
Speaker 2: They didn't complain the food was planned, and it was

83
00:04:42,480 --> 00:04:44,519
a flight that went over Thanksgiving.

84
00:04:44,560 --> 00:04:44,959
Speaker 1: There you go.

85
00:04:45,199 --> 00:04:50,079
Speaker 2: But I think it was actually the beginning of the

86
00:04:50,120 --> 00:04:52,439
tuning of what is it long duration space flight really

87
00:04:52,439 --> 00:04:54,160
going to look like and how you treat people, and so,

88
00:04:54,759 --> 00:04:56,519
you know, one would argue this was the first of

89
00:04:56,600 --> 00:05:00,240
the sort of sensitivity trainings that ever happened involving.

90
00:05:00,680 --> 00:05:04,519
Speaker 1: Yeah, are not, M two are not? M two are not?

91
00:05:05,000 --> 00:05:07,759
Speaker 2: And in seventy four they returned and those three never

92
00:05:07,759 --> 00:05:11,560
flew again, and oddly enough, and nobody ever went to

93
00:05:11,800 --> 00:05:14,800
Skylab again. There were a couple of proposed missions to

94
00:05:14,839 --> 00:05:16,439
go back to it to reboot it. There was the

95
00:05:16,480 --> 00:05:20,000
Apollo Soyu's missions we'll talk about in seventy five. But

96
00:05:20,120 --> 00:05:23,720
ultimately the Skylab was lost in nineteen seventy nine and

97
00:05:23,720 --> 00:05:26,439
then uncontrolled re entry. It was supposed to be saved

98
00:05:26,480 --> 00:05:28,720
by the Space Shuttle because they'd run out of Apollos

99
00:05:28,720 --> 00:05:31,000
at that point anyway, but the Shuttle didn't actually fly

100
00:05:31,120 --> 00:05:33,279
until eighty one, so missed it.

101
00:05:33,360 --> 00:05:33,519
Speaker 1: Now.

102
00:05:33,560 --> 00:05:35,639
Speaker 2: Part of that was because there was a solar maximum,

103
00:05:35,680 --> 00:05:39,959
so the atmosphere was actually larger than expected and caused

104
00:05:40,000 --> 00:05:42,759
Skylab to re enter faster than known at the time,

105
00:05:42,879 --> 00:05:46,600
we were still learning things about how the solsystem actually works.

106
00:05:46,759 --> 00:05:48,920
Speaker 1: Man, I can't wait to talk about the Space Shuttle.

107
00:05:49,480 --> 00:05:51,240
Oh God, I hear you have a few things to

108
00:05:51,279 --> 00:05:51,959
say about that.

109
00:05:52,040 --> 00:05:54,360
Speaker 2: May have heard a few of them, just a few.

110
00:05:55,800 --> 00:05:57,759
The only other space one I'll mention is they returned

111
00:05:57,759 --> 00:05:59,759
to flight for sous so I used twelve and back

112
00:05:59,800 --> 00:06:03,000
in seventy one the SOYUS eleven tragedy after as they

113
00:06:03,079 --> 00:06:05,800
visited Salute one they had a depressurization and the crew

114
00:06:05,879 --> 00:06:08,920
was lost on re entry, and so twelve was their

115
00:06:08,959 --> 00:06:11,040
return to flight after two years. They were supposed to

116
00:06:11,040 --> 00:06:13,079
dock with Salut two, except for that part where SALU

117
00:06:13,120 --> 00:06:16,639
two wasn't there because it had failed also, so they

118
00:06:16,720 --> 00:06:18,720
only spent forty eight hours in orbit, tested a bunch

119
00:06:18,759 --> 00:06:20,759
of new safety equipment in gear, and then re entered

120
00:06:21,279 --> 00:06:23,839
all right over to some other tech. This is the

121
00:06:23,959 --> 00:06:28,759
year of the first cellular phone call. Wow, Martin Cooper

122
00:06:29,160 --> 00:06:32,120
Motorola in New York City demonstrating a device called the

123
00:06:32,240 --> 00:06:36,000
DINA TACK standing for Dynamic Adaptive Total Area coverage because

124
00:06:36,000 --> 00:06:38,759
it was the cell concept being able to move node

125
00:06:38,759 --> 00:06:41,800
to node automatically as the phone moved around, so the

126
00:06:41,800 --> 00:06:45,160
Diyne attack weighed about four pounds two kilos, pretty heavy,

127
00:06:45,480 --> 00:06:47,879
and his very first call was to his rival Joe

128
00:06:47,879 --> 00:06:49,839
Engel over at and T. He told him, tell him

129
00:06:49,839 --> 00:06:51,480
he got it working, and it would be a few

130
00:06:51,560 --> 00:06:52,439
years before the dash.

131
00:06:52,279 --> 00:06:57,839
Speaker 1: Lists might have sounded something like this, Nina, something like that,

132
00:06:57,879 --> 00:06:58,639
sucket mother.

133
00:07:00,040 --> 00:07:05,319
Speaker 2: Let's talk about three PCs introduced in nineteen seventy three.

134
00:07:06,079 --> 00:07:10,519
The first is the Xerox Alto from Xerox Park, the

135
00:07:10,639 --> 00:07:15,439
very first Guey based computer ever. And adjacent to that,

136
00:07:15,600 --> 00:07:19,160
also at Xerox Park, was the introduction of the concept

137
00:07:19,199 --> 00:07:22,480
of ethernet by Robert Metcalf as part of his PhD dissertation.

138
00:07:23,240 --> 00:07:26,399
Although he wouldn't the wouldn't actually he basically wrote about

139
00:07:26,439 --> 00:07:28,199
in his dissertation in seventy three, they would follow the

140
00:07:28,240 --> 00:07:31,040
patent at seventy five do the first test in seventy six,

141
00:07:31,759 --> 00:07:34,079
becomes commercial nineteen eighty and becomes an noun triple ease

142
00:07:34,079 --> 00:07:36,360
Standard EIGHTOHO two dot three in nineteen eighty three.

143
00:07:36,920 --> 00:07:37,279
Speaker 1: Wow.

144
00:07:37,480 --> 00:07:41,480
Speaker 2: Second computer is the IBM fifty one hundred, the special

145
00:07:41,560 --> 00:07:47,720
apl Machine portable or scamp, led by one doctor Paul Friedel,

146
00:07:48,040 --> 00:07:50,199
part of him. It's the fifty one hundred said, this

147
00:07:50,319 --> 00:07:53,079
makes it the precursor to the fifty one fifty also

148
00:07:53,199 --> 00:07:57,120
known as the IBMPC, and it ran apl on a

149
00:07:57,160 --> 00:08:00,680
custom platform, and it was considered a luggable so fold

150
00:08:00,680 --> 00:08:03,560
out keyboard on the bottom little screen, but you know,

151
00:08:03,600 --> 00:08:07,279
good thirty forty pounds, so not exactly easy to carry around.

152
00:08:07,720 --> 00:08:10,680
And last, but not Nie, the mccralle. This is one

153
00:08:10,759 --> 00:08:13,120
of the first computers built on the Intel eight zero

154
00:08:13,360 --> 00:08:17,399
zero eight, so the second CPU built by Intel. The

155
00:08:17,439 --> 00:08:19,759
company is R two E. It's a French company. The

156
00:08:20,000 --> 00:08:24,920
founder is Thai Trum, who's also designer of the mccrall computer,

157
00:08:25,079 --> 00:08:27,959
but his software for the machine is being built by

158
00:08:28,000 --> 00:08:31,800
one Philip Kahn Wow, aka the guy who would go

159
00:08:31,839 --> 00:08:34,519
on to found Borland about ten years later. That's what

160
00:08:34,559 --> 00:08:39,639
I got, and that was Leno's boss. Yeah at one time,

161
00:08:39,720 --> 00:08:42,720
back in the day. Yeah, and Andrews too. I think, Yeah,

162
00:08:42,759 --> 00:08:45,679
there's a lot of things happening computers in nineteen seventy three.

163
00:08:45,879 --> 00:08:49,919
Speaker 1: Yeah, this is this is like an unfolding drama that's

164
00:08:50,000 --> 00:08:52,960
going on here. And it's really getting exciting around here.

165
00:08:53,039 --> 00:08:55,840
I mean there was the sixties were great, but man,

166
00:08:56,000 --> 00:08:57,720
it's just gonna get nuts.

167
00:08:57,919 --> 00:09:01,039
Speaker 2: We're inching towards the PC wor old bit by bed

168
00:09:01,639 --> 00:09:03,960
and I look at I know where this how where

169
00:09:04,000 --> 00:09:04,559
this goes?

170
00:09:04,679 --> 00:09:05,200
Speaker 1: As you do?

171
00:09:05,279 --> 00:09:05,799
Speaker 2: You know?

172
00:09:06,120 --> 00:09:08,919
Speaker 1: Yeah? So these are the stories I'm pulling, like, these

173
00:09:08,919 --> 00:09:09,720
are great stories.

174
00:09:09,759 --> 00:09:12,399
Speaker 2: I only just learned about scam like that that there

175
00:09:12,440 --> 00:09:14,399
was a precursor of fifty one fifty was the fifty

176
00:09:14,440 --> 00:09:15,879
one hundred and.

177
00:09:16,159 --> 00:09:18,240
Speaker 1: But once we get to the next computer, I have

178
00:09:18,279 --> 00:09:21,320
a story that will blow your mind. But I bet okay,

179
00:09:21,679 --> 00:09:25,399
let's do better. No framework roll music awesome?

180
00:09:33,039 --> 00:09:33,919
Speaker 2: Alight, man? What do you got?

181
00:09:34,360 --> 00:09:38,919
Speaker 1: This is a trending GitHub repo. It's from the repository

182
00:09:39,200 --> 00:09:43,519
of Joseph Nemick. That's j O S E F N

183
00:09:43,720 --> 00:09:46,919
E M E C. And it's play Night p L

184
00:09:47,000 --> 00:09:49,879
A I N I T E. You guys are like this.

185
00:09:50,279 --> 00:09:51,000
Speaker 2: What's a play Night?

186
00:09:51,399 --> 00:09:55,679
Speaker 1: It's an open source video game library manager and launcher

187
00:09:56,120 --> 00:10:02,720
with support for third party libraries like Steam, Epic, EA, app, Battle,

188
00:10:02,799 --> 00:10:07,039
dot Net, and others. It includes game emulation support, providing

189
00:10:07,120 --> 00:10:10,519
one unified in for interface for your games.

190
00:10:11,240 --> 00:10:12,480
Speaker 2: M Okay, is this.

191
00:10:13,039 --> 00:10:14,840
Speaker 1: Something that's of interest to you? Because I don't really

192
00:10:14,840 --> 00:10:16,039
play video games?

193
00:10:16,159 --> 00:10:16,399
Speaker 2: Yeah?

194
00:10:16,559 --> 00:10:17,879
Speaker 1: You know, but I know you guys do.

195
00:10:18,080 --> 00:10:22,360
Speaker 2: Steam is kind of the dominant game host, right, that's

196
00:10:22,440 --> 00:10:25,360
Gabe Newell Dalf And then you know, almost every game

197
00:10:25,399 --> 00:10:26,840
is inside a Steam and most people are like, if

198
00:10:26,879 --> 00:10:28,159
it is no Steel, I'm not buying it.

199
00:10:28,600 --> 00:10:28,799
Speaker 1: Yeah.

200
00:10:29,080 --> 00:10:32,960
Speaker 2: Famously, Epic are the Fortnite guys, and so they didn't

201
00:10:33,000 --> 00:10:34,600
want to be in Steam. They wanted they try to

202
00:10:34,600 --> 00:10:36,799
set up their own system. There's a few games over there,

203
00:10:36,840 --> 00:10:42,240
and then Battlenet is Blizzard, and EA app is of

204
00:10:42,240 --> 00:10:45,799
course Electronic Cards now a privately owned company taken off

205
00:10:45,840 --> 00:10:49,360
the market and owned by a Saudi conglomerate.

206
00:10:49,399 --> 00:10:53,759
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
Speaker 3: Yes I do, but I can't argue with what Richard

208
00:10:57,240 --> 00:11:00,080
just said. It's basically everything's on Steam.

209
00:11:00,360 --> 00:11:03,679
Speaker 1: Right, Yeah, so what about EA app or all those

210
00:11:03,720 --> 00:11:06,240
other things like are well just insignificant now?

211
00:11:06,399 --> 00:11:10,159
Speaker 2: Yeah, comparatively, that's Electronic Arts attempt at having a studio,

212
00:11:10,240 --> 00:11:12,360
but you can generally get any EA game office team.

213
00:11:12,360 --> 00:11:15,840
Speaker 1: Any Okay, Well, you know that I thought it would

214
00:11:15,879 --> 00:11:17,840
surprise you guys with something you think was cool. But

215
00:11:17,919 --> 00:11:22,720
I guess.

216
00:11:20,879 --> 00:11:23,000
Speaker 2: If I actually had a bunch of stuff in Epic

217
00:11:23,159 --> 00:11:25,320
like if I was a Fortnite fan. Yeah, you know,

218
00:11:25,440 --> 00:11:27,279
it doesn't make sense for me to have some kind

219
00:11:27,279 --> 00:11:28,399
of common console for this.

220
00:11:29,000 --> 00:11:31,039
Speaker 1: It's an interesting idea. Well, I figured there must be

221
00:11:31,120 --> 00:11:33,799
a reason why it's trending, So yeah, maybe there's something

222
00:11:33,840 --> 00:11:37,360
we don't know. Okay, well that's what I got. Richard,

223
00:11:37,399 --> 00:11:38,080
who's talking to.

224
00:11:38,120 --> 00:11:41,080
Speaker 2: Us, grabbed a comment off a show eighteen eighty six,

225
00:11:41,200 --> 00:11:43,159
the one we did with one Rocky Lockout. Maybe you

226
00:11:43,240 --> 00:11:46,960
heard of them. Back in February twenty four. Talking about

227
00:11:46,960 --> 00:11:50,399
CSLA eight, we got one comment. This is from Casa

228
00:11:50,480 --> 00:11:53,759
Jan who said, I love the lighthearted nature of these

229
00:11:53,759 --> 00:11:56,200
podcasts and I don't want that aspect to change. But

230
00:11:56,279 --> 00:11:58,759
having said that, sometimes it's all too common to have

231
00:11:59,120 --> 00:12:01,960
handwaving in the episode of something critical that makes the

232
00:12:01,960 --> 00:12:04,039
rest of this episode difficult to listen to. And I'll

233
00:12:04,120 --> 00:12:06,960
use this episode as example. Although it's not an isolated incident,

234
00:12:07,440 --> 00:12:09,679
by the time the house got around to talking about CSLA,

235
00:12:09,759 --> 00:12:12,559
I think they forgot that. The guests never explained what

236
00:12:12,600 --> 00:12:14,759
it was, not even a five second below.

237
00:12:14,960 --> 00:12:18,279
Speaker 1: H That's that's my fault. I probably fell asleep on

238
00:12:18,320 --> 00:12:21,320
the job because you know, with us is on nine

239
00:12:21,360 --> 00:12:24,799
and we've covered every single version since one.

240
00:12:25,159 --> 00:12:27,639
Speaker 2: Probably, well, I suspect we're going to talk about it

241
00:12:27,679 --> 00:12:30,159
again today, so I probably we will want to bring

242
00:12:30,159 --> 00:12:32,919
that up. But yeah, we better tell them what it is.

243
00:12:32,960 --> 00:12:36,279
And Cassa, thanks for your comment and a reminder that

244
00:12:36,399 --> 00:12:39,120
not everybody's listened to every episode, and let's face it,

245
00:12:39,159 --> 00:12:42,080
at nineteen hundred and seventy three episodes, you probably shouldn't.

246
00:12:42,960 --> 00:12:44,320
Speaker 1: No, I wouldn't.

247
00:12:44,600 --> 00:12:47,879
Speaker 2: That's a lot of shows. But a copy of music

248
00:12:47,919 --> 00:12:49,639
Cobe is on his way to you. And if you'd

249
00:12:49,639 --> 00:12:51,120
like a copy of music Cobe, I write a comment

250
00:12:51,159 --> 00:12:52,840
on the website at dot at rocks dot com or

251
00:12:52,879 --> 00:12:54,679
on the facebooks. We publish every show there, and if

252
00:12:54,679 --> 00:12:56,039
you comment there and I read it on the show,

253
00:12:56,399 --> 00:12:57,840
we'll send you copy of music coe By.

254
00:12:58,039 --> 00:13:00,440
Speaker 1: And that's music to Code by at music to code

255
00:13:00,440 --> 00:13:03,799
by dot net. They're twenty five minute tracks of instrumental

256
00:13:03,840 --> 00:13:08,279
music that are neither too boring or two jarring. They're

257
00:13:08,279 --> 00:13:11,679
perfect for getting you into a state of flow and

258
00:13:11,759 --> 00:13:14,919
keeping you there. Twenty two tracks, MP three wave and

259
00:13:15,039 --> 00:13:19,480
flak format Music to Code by dot Net. All right, Rocky,

260
00:13:19,600 --> 00:13:22,600
I mean, do we read his do we even read

261
00:13:22,679 --> 00:13:23,600
his bio?

262
00:13:24,159 --> 00:13:25,360
Speaker 2: We must blessed.

263
00:13:25,399 --> 00:13:27,559
Speaker 1: We'll get an email from somebody who's like, who is

264
00:13:27,600 --> 00:13:31,279
this guy? Right? This guy, but he's been on so

265
00:13:31,360 --> 00:13:33,960
many dot net rock shows from the very early days,

266
00:13:34,000 --> 00:13:37,759
but he is. Are you retired now? Are you still

267
00:13:37,879 --> 00:13:39,639
chief software architect at Merrymurr.

268
00:13:40,399 --> 00:13:44,759
Speaker 3: I'm not retired. I can call myself semi retired, but yes,

269
00:13:44,840 --> 00:13:45,240
I am a.

270
00:13:45,279 --> 00:13:48,679
Speaker 1: Chief But Merrimur is your company, right, Marmur.

271
00:13:48,399 --> 00:13:50,879
Speaker 3: Is my company. And then I also am a VP

272
00:13:51,000 --> 00:13:54,000
at ZBA and so I do some cool stuff there

273
00:13:54,039 --> 00:13:54,440
as well.

274
00:13:55,000 --> 00:13:58,799
Speaker 1: And you're a Microsoft Regional director and an MVP and

275
00:13:59,519 --> 00:14:04,840
ably the earliest dot net author there was, certainly for

276
00:14:04,960 --> 00:14:07,360
VB dot net. You did. You and Billie Hollis did

277
00:14:07,360 --> 00:14:12,480
the first book on VB dot net during the beta

278
00:14:13,320 --> 00:14:14,039
of dot net.

279
00:14:14,320 --> 00:14:16,480
Speaker 3: Yes, wrote that book in six weeks.

280
00:14:16,759 --> 00:14:20,440
Speaker 1: That was at And you're the author of c s

281
00:14:20,679 --> 00:14:24,120
l A dot Net Rocky. What is c s l

282
00:14:24,159 --> 00:14:24,960
A dot Net.

283
00:14:26,360 --> 00:14:27,879
Speaker 3: I'm glad you asked, Carl.

284
00:14:28,519 --> 00:14:29,840
Speaker 1: No, it just came to me.

285
00:14:30,600 --> 00:14:36,159
Speaker 3: Yeah. It turns out that the we for forever, it seems,

286
00:14:36,159 --> 00:14:41,480
we've had these fantastic frameworks for building user experiences, Blazer

287
00:14:41,559 --> 00:14:44,519
being you know, the latest and best so far. In

288
00:14:44,519 --> 00:14:48,480
my opinion, and uh, and we've had all sorts of

289
00:14:48,639 --> 00:14:53,000
frameworks for talking to databases and od b C and

290
00:14:53,399 --> 00:14:54,159
entity framework.

291
00:14:55,000 --> 00:14:55,360
Speaker 1: Uh.

292
00:14:55,759 --> 00:14:59,240
Speaker 3: And then you know, you get these situations where you're writing,

293
00:14:59,519 --> 00:15:03,440
let's say, real application that has business logic, where does

294
00:15:03,480 --> 00:15:07,480
the business logic go? That that's the question, right, And

295
00:15:08,399 --> 00:15:10,039
so you put it in the UI, but you're not

296
00:15:10,039 --> 00:15:11,679
supposed to put it in the UI. You put it

297
00:15:11,720 --> 00:15:13,879
in the database. But oh my god, who wants to

298
00:15:13,879 --> 00:15:14,759
put it in the database?

299
00:15:14,799 --> 00:15:16,000
Speaker 1: Really? How much?

300
00:15:16,399 --> 00:15:17,279
Speaker 2: Well did you want to write?

301
00:15:17,600 --> 00:15:17,840
Speaker 3: Yeah?

302
00:15:17,960 --> 00:15:18,200
Speaker 1: Right?

303
00:15:18,840 --> 00:15:22,039
Speaker 3: And so that's that is what CSLA is all about,

304
00:15:22,279 --> 00:15:25,720
is being a home for business logic from trying to

305
00:15:25,720 --> 00:15:29,559
elevate business logic to the same level of structure and

306
00:15:29,600 --> 00:15:33,159
repeatability and maintainability that you get with these other frameworks

307
00:15:33,159 --> 00:15:35,080
for the UI or data access.

308
00:15:35,799 --> 00:15:38,879
Speaker 1: Right. So first there was two tier, which is UI

309
00:15:39,240 --> 00:15:43,200
and database, right, And there was three tier, which is

310
00:15:43,399 --> 00:15:46,039
UI and something in the middle that has some business

311
00:15:46,080 --> 00:15:50,639
logic and that makes calls to your database. And then

312
00:15:50,720 --> 00:15:53,039
there was just n tier, which is well, you might

313
00:15:53,120 --> 00:15:57,720
have multiple middle tiers and you know you have like

314
00:15:57,799 --> 00:16:01,960
a one point a business service that has pure business logic,

315
00:16:02,519 --> 00:16:07,000
and then managers for your data access. And then I've

316
00:16:07,039 --> 00:16:11,360
even seen people, do you know, three tiers in the

317
00:16:11,399 --> 00:16:16,080
middle just for abstraction purposes, And I don't know. I

318
00:16:16,600 --> 00:16:18,559
think we went a little nuts with the tiers. But

319
00:16:19,360 --> 00:16:22,200
now am I wrong?

320
00:16:22,480 --> 00:16:26,279
Speaker 3: Oh no, you're right, you're right. And here's where I

321
00:16:26,320 --> 00:16:31,639
always distinguished because CSLA supports the idea of tiers, which

322
00:16:31,639 --> 00:16:37,159
are all these multiple machines connected by networks. But what

323
00:16:37,440 --> 00:16:41,039
is really important is the concept of layering and separation

324
00:16:41,120 --> 00:16:43,039
of concern right, and.

325
00:16:43,039 --> 00:16:46,240
Speaker 1: So logical tiers versus physical tiers.

326
00:16:46,279 --> 00:16:49,039
Speaker 3: There you go. Yeah, So even if all your software

327
00:16:49,799 --> 00:16:53,000
is we're running on one computer, like on a mobile phone.

328
00:16:53,039 --> 00:16:56,320
You got your UI layer and you got your business

329
00:16:56,399 --> 00:16:58,600
layer and your data access layer and it's all running

330
00:16:58,639 --> 00:17:02,080
on the phone. That doesn't mean you should throw away

331
00:17:02,919 --> 00:17:06,240
separation of concerns. You should still layer your software to

332
00:17:06,319 --> 00:17:10,079
keep it organized in a way that is maintainable over time.

333
00:17:10,519 --> 00:17:13,359
Speaker 1: Right. And you know we're spoiled, you and I at

334
00:17:13,440 --> 00:17:17,079
least because after using Blazer, you know, we took this

335
00:17:17,240 --> 00:17:20,400
idea of MVVM and it's like, well, why do we

336
00:17:20,440 --> 00:17:25,200
need this anymore? I mean, you know, the Blazer UI

337
00:17:25,240 --> 00:17:30,519
framework is so split already, and so easy to separate

338
00:17:30,799 --> 00:17:36,680
logic from UI code, that it seems like overkill to

339
00:17:36,799 --> 00:17:39,400
make a view model in twenty twenty five.

340
00:17:39,759 --> 00:17:44,000
Speaker 3: Well, I agree, because of course I am a strong

341
00:17:44,079 --> 00:17:48,519
proponent of using CSLA, and CSLA suggests that when you

342
00:17:48,559 --> 00:17:51,759
create domain objects, that you create them in the shape

343
00:17:51,880 --> 00:17:56,680
needed by the user scenario, and the UI is created

344
00:17:56,799 --> 00:17:59,440
in the shape needed by the user scenario. And so

345
00:18:00,839 --> 00:18:03,480
if you're using these things right, you're creating your UI

346
00:18:03,599 --> 00:18:06,680
with blazers say, and then underneath it you create your

347
00:18:06,680 --> 00:18:11,680
domain object that is serving the same end goal. And

348
00:18:11,960 --> 00:18:13,799
then you do have to have some sort of mapping

349
00:18:13,880 --> 00:18:17,319
layer to talk to the database because the data, usually

350
00:18:17,440 --> 00:18:20,000
the data is in a relational structure that is not

351
00:18:20,200 --> 00:18:22,000
designed to support the user scenario.

352
00:18:22,480 --> 00:18:26,079
Speaker 1: And that's fine, yeah, especially if you throw you know,

353
00:18:26,119 --> 00:18:28,720
an API in the mix and you've got a web

354
00:18:28,759 --> 00:18:32,839
assembly application and now you've got DTOs to deal with,

355
00:18:33,079 --> 00:18:36,440
and yep, it gets more complex from there.

356
00:18:36,640 --> 00:18:40,039
Speaker 3: You know. What's interesting though, is that I not that

357
00:18:40,119 --> 00:18:47,000
long ago, was writing a WPF sample for CSLA, and

358
00:18:47,039 --> 00:18:50,519
I thought, you know, could I use dependency injection in

359
00:18:50,839 --> 00:18:55,440
WPF like blazer does. And it turns out the answers yes,

360
00:18:56,559 --> 00:19:01,160
and If you do that, your WPF looks you're The

361
00:19:01,160 --> 00:19:05,000
way you build the app is substantially different. It's actually

362
00:19:05,160 --> 00:19:07,400
almost identical to the way you do it in Blazer.

363
00:19:08,880 --> 00:19:11,160
And yet again, you don't really feel the need for

364
00:19:11,240 --> 00:19:16,279
m VVM anymore because the just the way that modern

365
00:19:16,319 --> 00:19:20,039
dot net works, like the way they've built it for well,

366
00:19:20,079 --> 00:19:22,920
the way they built Blazer. If you echo that, you

367
00:19:23,000 --> 00:19:25,640
get all the same benefits. And I don't know why

368
00:19:25,640 --> 00:19:29,279
you would do WPF anymore, but yeah.

369
00:19:29,000 --> 00:19:32,119
Speaker 1: Yeah, well you know it's true. If I'm gonna do

370
00:19:32,200 --> 00:19:35,440
w PF, I'm probably gonna do a hybrid right Blazer

371
00:19:35,440 --> 00:19:36,160
code stand exam.

372
00:19:36,359 --> 00:19:40,200
Speaker 2: But that's you know, Rocky Billy becoming for you right now.

373
00:19:40,559 --> 00:19:43,880
Speaker 1: You know, Billy Billy's coming around, isn't he? I think

374
00:19:43,880 --> 00:19:48,759
he is. He's like, he's pretty cool like it.

375
00:19:49,440 --> 00:19:52,319
Speaker 3: I can sense a future episode where somebody has written

376
00:19:52,319 --> 00:19:55,279
in saying, why did Rocky you know slam w PF

377
00:19:55,440 --> 00:19:55,720
like that.

378
00:19:55,759 --> 00:19:59,599
Speaker 1: Yeah, don't learn about it stand in line, my friend.

379
00:19:59,640 --> 00:20:02,799
Speaker 2: Well, and the same time, I've heard, you know, through

380
00:20:02,799 --> 00:20:06,119
the grape frind internally like WPF getting more focus right

381
00:20:06,200 --> 00:20:09,519
that that they with the win UI sort of peeling

382
00:20:09,559 --> 00:20:11,799
away like this is going to be the Windows way

383
00:20:11,839 --> 00:20:13,720
going forward. I just haven't seen a lot of love,

384
00:20:13,880 --> 00:20:15,880
like how many folks are actually working on this and

385
00:20:15,960 --> 00:20:17,359
where is the real progress being made?

386
00:20:17,440 --> 00:20:19,160
Speaker 1: How many folks are building Windows apps?

387
00:20:19,319 --> 00:20:21,519
Speaker 3: Yeah, well that's the real question, isn't it.

388
00:20:21,599 --> 00:20:23,119
Speaker 1: Yeah? Yeah, who?

389
00:20:23,480 --> 00:20:26,079
Speaker 3: And it's not zero though, because I talked to people

390
00:20:26,400 --> 00:20:31,759
at conferences, different events, and I'll talk about you know,

391
00:20:31,920 --> 00:20:34,440
why you should or shouldn't consider using Blazer and some

392
00:20:34,480 --> 00:20:38,519
of the pros and cons, and almost always there's one

393
00:20:38,599 --> 00:20:41,319
or two people that are like, oh, well, we only

394
00:20:41,359 --> 00:20:45,519
do Windows. We only plan to do Windows because all

395
00:20:45,559 --> 00:20:47,920
of our users are on Windows, and why why would

396
00:20:48,000 --> 00:20:50,519
we care about all this other stuff? And I mean

397
00:20:50,519 --> 00:20:53,640
it's a teeny minority, but you know.

398
00:20:53,759 --> 00:20:56,240
Speaker 2: Nah phones, tablets, who needs that?

399
00:20:58,839 --> 00:21:01,240
Speaker 1: So to answer the question out a CSLA dot net,

400
00:21:01,279 --> 00:21:03,319
we kind of went backwards a little bit. But going

401
00:21:03,359 --> 00:21:06,400
back into history. You wrote this in the age of

402
00:21:06,799 --> 00:21:13,039
Windows applications, where you had stateful data objects, business objects,

403
00:21:13,160 --> 00:21:16,839
and they were all stateful right on the web. You know,

404
00:21:16,920 --> 00:21:20,400
state is something that is created and constructed, but in

405
00:21:20,480 --> 00:21:24,359
Windows everything is right there in the app. And I

406
00:21:24,359 --> 00:21:30,119
remember you having multiple layers of undo, right, you had

407
00:21:30,240 --> 00:21:35,519
persistence and all sorts of features that if you were

408
00:21:35,519 --> 00:21:38,799
going to code them yourself would just be kind of

409
00:21:38,799 --> 00:21:40,960
a nightmare. And then on top of that, they were

410
00:21:41,039 --> 00:21:46,440
really really useful features. So looking in twenty twenty five,

411
00:21:48,720 --> 00:21:52,480
would people be looking to use CSLA dot net with

412
00:21:52,680 --> 00:21:57,400
say a greenfield Blazer application, or you really just supporting

413
00:21:59,200 --> 00:22:03,000
your existing users to bring them into the you know,

414
00:22:03,079 --> 00:22:04,839
twenty first century or both?

415
00:22:05,079 --> 00:22:09,559
Speaker 3: I probably both. I would really like to think. Well,

416
00:22:09,640 --> 00:22:11,640
and and I do know that a lot of the

417
00:22:11,640 --> 00:22:16,240
CSLA user base are using and shifting the blazer cool

418
00:22:17,119 --> 00:22:20,319
and it turns and it's because it's largely what you

419
00:22:20,519 --> 00:22:25,599
said in that the UH CSLA is really good if

420
00:22:25,640 --> 00:22:30,039
you have a dot net and stateful client, right, and

421
00:22:30,480 --> 00:22:35,559
so WPF, Windows Forms, Windows phonesilver Light, all those technologies

422
00:22:35,599 --> 00:22:36,319
throughout the years.

423
00:22:37,000 --> 00:22:39,799
Speaker 1: Well, if you don't know what that is, just just skipping,

424
00:22:40,039 --> 00:22:42,359
don't just ignore it.

425
00:22:42,680 --> 00:22:47,640
Speaker 3: In episode two thousand and ten, you'll you'll get an

426
00:22:47,640 --> 00:22:53,720
earful two thousand I'm just looking looking into your guys's future.

427
00:22:55,440 --> 00:22:59,440
Speaker 1: That's just too close, Like you're going to burn through this.

428
00:23:00,079 --> 00:23:06,240
Speaker 3: Uh. But you know, Blazer is a stateful UI technology too,

429
00:23:07,680 --> 00:23:09,880
with or without web assembly, I mean either way, it

430
00:23:10,319 --> 00:23:15,880
is inherently stateful and it has an even better data

431
00:23:15,920 --> 00:23:21,880
binding story than did and so those two things combined

432
00:23:22,160 --> 00:23:26,559
are what really makes c s l A at its peak.

433
00:23:27,400 --> 00:23:31,559
And so yeah, I definitely am in a spot where

434
00:23:31,559 --> 00:23:35,440
we continue to support c s l A all, you know,

435
00:23:36,519 --> 00:23:40,559
for all the old UI technologies, and sometimes I really

436
00:23:40,599 --> 00:23:43,160
wish we could get rid of let's say, Windows Forms

437
00:23:43,240 --> 00:23:44,799
or Windows forms.

438
00:23:47,160 --> 00:23:49,160
Speaker 1: Or Windows Form or.

439
00:23:49,119 --> 00:23:55,559
Speaker 3: Maybe Windows Yeah, but that's just not realistic. But all

440
00:23:55,720 --> 00:23:58,720
all the focus for the last several years has been

441
00:23:58,880 --> 00:24:02,759
entirely on, uh, this first class experience for Blazer, because

442
00:24:03,519 --> 00:24:08,000
because Blazer is so nice and combined with CSLA, it's

443
00:24:08,119 --> 00:24:09,559
just I think phenomenal.

444
00:24:09,839 --> 00:24:12,559
Speaker 1: So let me guess because I have not seen c

445
00:24:12,799 --> 00:24:16,920
s LA dot net nine for Blazer, but I can

446
00:24:17,000 --> 00:24:19,119
probably guess of some of the things that you put

447
00:24:19,119 --> 00:24:26,599
in there just for Blazer, like maybe some navigation breadcrumbs,

448
00:24:26,759 --> 00:24:32,680
back buttons, support, navigation stack, that kind of thing. Is

449
00:24:32,720 --> 00:24:33,400
that in there?

450
00:24:33,960 --> 00:24:37,240
Speaker 3: That is not because that's all well, that's all UI

451
00:24:37,440 --> 00:24:38,119
level stuff.

452
00:24:38,319 --> 00:24:42,839
Speaker 1: Yeah yeah, but no, but it's also navigation, which is

453
00:24:42,880 --> 00:24:46,119
something that you did in Windows Forms, didn't you.

454
00:24:46,160 --> 00:24:49,920
Speaker 3: No, no, no, no. C s l A is always trying.

455
00:24:50,000 --> 00:24:51,440
Speaker 1: All right, Hang on a second, I got to put

456
00:24:51,440 --> 00:24:56,519
down the crack pipe. Let me just tat down over there. Okay,

457
00:24:56,519 --> 00:25:00,440
I'm sorry, what were we saying saying? Wow?

458
00:25:01,079 --> 00:25:04,279
Speaker 3: I mean the where c s l A helps the

459
00:25:04,400 --> 00:25:08,759
UI is that that the c s l A rules

460
00:25:08,799 --> 00:25:15,400
engine is more powerful than just validation, and so it

461
00:25:15,480 --> 00:25:21,319
not only has validation errors, but also warnings and informational results.

462
00:25:22,160 --> 00:25:27,599
And then there's a whole subsystem for authorization about what

463
00:25:27,599 --> 00:25:32,200
what users can and can't interact with different types of

464
00:25:32,480 --> 00:25:34,599
domain object and even all the way down to the

465
00:25:34,640 --> 00:25:38,440
property level. And so there there are helpers for all

466
00:25:38,480 --> 00:25:44,960
the UI frameworks to elevate those concepts to be first class,

467
00:25:45,160 --> 00:25:48,920
you know, bindable or easily accessible, so that you can

468
00:25:49,880 --> 00:25:51,759
make your UI so that parts of the U I

469
00:25:51,799 --> 00:25:54,720
appear and disappear if the user can or can't see

470
00:25:54,759 --> 00:25:58,720
a thing or something like that. And of course Blazer

471
00:25:58,759 --> 00:26:01,359
does all that too. Yeah, And so that's where a

472
00:26:01,400 --> 00:26:06,000
lot of the work is is integrating. So c SLA,

473
00:26:06,160 --> 00:26:11,759
for example, exposes a set of pre built dynamic authorization policies,

474
00:26:12,480 --> 00:26:18,160
and of course Blazer supports policies through the authorized authorized

475
00:26:18,240 --> 00:26:21,000
view and all the other cool stuff they've got, and

476
00:26:21,039 --> 00:26:23,680
so those two things combined together, so you can just say,

477
00:26:23,759 --> 00:26:27,839
oh this, you know, like like can the user see

478
00:26:27,920 --> 00:26:31,160
or not see the employee salary?

479
00:26:31,319 --> 00:26:31,519
Speaker 1: Right?

480
00:26:32,559 --> 00:26:36,359
Speaker 3: Yeah, you can just tell Blazer to use this policy.

481
00:26:36,480 --> 00:26:39,720
And the policy doesn't do anything. It just looks at

482
00:26:39,720 --> 00:26:43,319
the business rules that are in the rule engine, and

483
00:26:44,279 --> 00:26:46,720
the UI turns turns on or off at part of

484
00:26:46,759 --> 00:26:50,359
the with the user sees. So it's really neat stuff.

485
00:26:50,640 --> 00:26:54,640
Speaker 1: I was using an app today that i'm working on

486
00:26:54,799 --> 00:26:58,839
for but with a team for a customer, and uh,

487
00:26:59,720 --> 00:27:03,519
how a problem with something? And one of the guys said, yeah,

488
00:27:03,640 --> 00:27:05,480
take a look in this part of the app that

489
00:27:05,519 --> 00:27:08,119
he's been working on, and so I go there and

490
00:27:08,160 --> 00:27:12,160
I get a blank screen and it's because I don't

491
00:27:12,279 --> 00:27:16,240
have the authorization to see that, like that bit didn't

492
00:27:16,240 --> 00:27:18,640
get flipped or whatever. But there was no message that

493
00:27:18,799 --> 00:27:22,680
said I'm sorry, you don't know, please wait or nothing,

494
00:27:22,880 --> 00:27:26,200
just like boom blank, I got nothing.

495
00:27:27,160 --> 00:27:30,839
Speaker 3: How well, and I'm teaching and you might do this too,

496
00:27:30,880 --> 00:27:34,880
and you're teaching about the authorization stuff. In Blazer. There's

497
00:27:35,000 --> 00:27:39,920
the heavy hammer, which is the authorized attribute. Right just

498
00:27:40,000 --> 00:27:43,799
as y'all can't even get to this page, no, I'm

499
00:27:43,839 --> 00:27:45,799
like that that is rarely useful.

500
00:27:46,960 --> 00:27:48,720
Speaker 1: It routes you to the login screen.

501
00:27:48,880 --> 00:27:53,200
Speaker 3: Yeah yeah, well or yeah or wherever. Yeah, but in

502
00:27:53,240 --> 00:27:54,880
real life, I mean, how useful is that?

503
00:27:55,559 --> 00:27:56,440
Speaker 1: You know that.

504
00:27:58,039 --> 00:28:01,359
Speaker 3: You probably actually to your point when user to see something,

505
00:28:01,480 --> 00:28:04,319
say someday you don't have access to them.

506
00:28:04,279 --> 00:28:07,160
Speaker 1: You want a sorry page, right, Richard? Sorry?

507
00:28:07,759 --> 00:28:08,680
Speaker 2: Yeah?

508
00:28:08,759 --> 00:28:11,599
Speaker 1: What is one of the three error messages? Right? Yeah?

509
00:28:11,759 --> 00:28:13,039
Speaker 2: Three perfect air images?

510
00:28:13,119 --> 00:28:13,400
Speaker 1: Is what?

511
00:28:13,519 --> 00:28:13,720
Speaker 3: How?

512
00:28:13,759 --> 00:28:14,599
Speaker 1: And sorry? Right?

513
00:28:14,640 --> 00:28:18,160
Speaker 2: You pretty much covered everything at that point that's not

514
00:28:18,240 --> 00:28:21,640
happening for you. Oh that's fair. Should we take a break.

515
00:28:21,440 --> 00:28:24,319
Speaker 1: Yeah, let's do that. Wow, it's really only it's already

516
00:28:24,319 --> 00:28:27,400
been almost half an hour, so yeah, let's take a

517
00:28:27,400 --> 00:28:29,319
break and we'll be right back with more from Rocky

518
00:28:29,359 --> 00:28:33,880
Lockcap to these very important messages. Did you know you

519
00:28:33,880 --> 00:28:37,759
can easily migrate asp net web apps to Windows containers

520
00:28:37,839 --> 00:28:42,599
on AWS. Use the app to container tool to containerize

521
00:28:42,640 --> 00:28:47,240
your iis websites and deploy to AWS managed container services

522
00:28:47,720 --> 00:28:51,400
with or without Kubernetes. Find out more about app to

523
00:28:51,440 --> 00:28:56,000
container at AWS dot Amazon dot com, slash, dot net,

524
00:28:56,200 --> 00:29:03,160
slash modernize, And we're back. It's dot net rock So

525
00:29:03,200 --> 00:29:06,240
I'm Carl Franklin. That's Richie Campbell. Hey, that's our friend

526
00:29:06,359 --> 00:29:10,319
Rock for the LUCA. Hello. Hello, and yeah talking to

527
00:29:10,319 --> 00:29:13,880
c s l A dot nine, you said most of

528
00:29:13,920 --> 00:29:16,880
the focuses on Blazer in this version.

529
00:29:17,200 --> 00:29:22,400
Speaker 3: Yeah, Well two things in nine Blazer Blazer, Blazer.

530
00:29:22,319 --> 00:29:25,880
Speaker 1: And did I mention Blazer?

531
00:29:26,240 --> 00:29:27,559
Speaker 2: Oh and also Blazer.

532
00:29:29,440 --> 00:29:33,759
Speaker 3: And then the other thing is and there's a cool

533
00:29:33,799 --> 00:29:37,200
story behind this, but the there's a bunch of code

534
00:29:37,240 --> 00:29:41,960
generation that was introduced in nine that are really I

535
00:29:41,960 --> 00:29:47,240
think come to maturity in ten, so very soon, because

536
00:29:47,279 --> 00:29:50,799
we're very much working on ten to come up with

537
00:29:50,880 --> 00:29:57,079
dot net ten. Yeah, and the code generation radically reduces

538
00:29:57,119 --> 00:29:59,039
the amount of code that you have to write in

539
00:29:59,079 --> 00:30:05,920
a typical business class. And the story behind this is

540
00:30:05,960 --> 00:30:12,000
that there's a company or organization group that's using CSLA

541
00:30:12,079 --> 00:30:16,079
to write some software. And I had never encountered this before,

542
00:30:16,079 --> 00:30:18,519
but it's a very cool thing. So what they did

543
00:30:19,440 --> 00:30:24,079
is they didn't want to give money directly to like

544
00:30:24,480 --> 00:30:28,240
to CSLA, to me or whatever. They wanted to fund

545
00:30:28,319 --> 00:30:34,759
people to develop though against the CSLA backlog, and so

546
00:30:34,839 --> 00:30:38,359
they set up, Yeah, they went on a job board

547
00:30:38,839 --> 00:30:43,400
and literally set up a contract that anybody who wanted

548
00:30:43,440 --> 00:30:47,279
to apparently could go sign up for the contract, follow

549
00:30:47,640 --> 00:30:51,319
some set of guidelines, and become a CSLA contributor, and

550
00:30:51,359 --> 00:30:56,640
then they would get compensated. And I was not party

551
00:30:56,680 --> 00:31:00,559
to any of this. This was all wow to me.

552
00:31:00,640 --> 00:31:02,960
I thought it was some sort of scam originally, like

553
00:31:02,960 --> 00:31:04,720
people are coming to be going, hey, how do I

554
00:31:04,759 --> 00:31:08,319
get this work? And I'm like, what are you talking about? Work?

555
00:31:10,839 --> 00:31:13,680
Speaker 2: But I see the see I see the difference in

556
00:31:13,680 --> 00:31:16,119
the shape of your release in nine, because normally you've

557
00:31:16,160 --> 00:31:19,839
got I don't know, eight to ten twelve items in

558
00:31:19,880 --> 00:31:24,000
a given release, and then nine is like sixty.

559
00:31:24,119 --> 00:31:26,400
Speaker 3: Oh it was. It was well, yeah, because we had

560
00:31:26,640 --> 00:31:29,079
I think four or five people that stepped up and

561
00:31:29,119 --> 00:31:32,759
did stuff, and a couple of people did a lot

562
00:31:32,920 --> 00:31:35,880
of stuff, including this one guy from Brazil that wrote

563
00:31:36,240 --> 00:31:42,759
all these code generators to do a whole bunch of

564
00:31:42,759 --> 00:31:46,839
cool stuff. Wow, And probably the biggest one and the

565
00:31:46,839 --> 00:31:51,559
one that we're we didn't it's there in nine and

566
00:31:52,039 --> 00:31:56,839
technically it works, but I think it'll be robust in ten.

567
00:31:57,119 --> 00:32:00,519
Is the way I look at it. That, Yeah, it

568
00:32:00,599 --> 00:32:03,960
generates partial classes, so that most of what you would

569
00:32:04,000 --> 00:32:08,279
have written in a CSLA business class, it just writes

570
00:32:08,319 --> 00:32:10,440
for you and you never see it, right, because it's

571
00:32:10,440 --> 00:32:16,559
in one of those dot G files. And yeah, very

572
00:32:16,640 --> 00:32:18,680
very cool. Yeah, very exciting.

573
00:32:18,720 --> 00:32:20,920
Speaker 2: And in nine to one two, which is a little

574
00:32:20,920 --> 00:32:23,079
more recent, which is this past June, you still got

575
00:32:23,079 --> 00:32:25,279
a huge number of changes in there. Although it seems

576
00:32:25,319 --> 00:32:27,599
like fewer people, it does seem like it kicked off

577
00:32:27,599 --> 00:32:28,160
a momentum.

578
00:32:28,279 --> 00:32:31,599
Speaker 3: Yeah, the contract dropped off, so the people looking to

579
00:32:31,640 --> 00:32:33,920
do this just for the money went away, but then

580
00:32:33,960 --> 00:32:37,759
a couple of people stayed and then so with all

581
00:32:37,759 --> 00:32:42,599
the momentum, other people joined in. Yeah. So yeah, that's

582
00:32:42,640 --> 00:32:45,559
been fantastic and there's been.

583
00:32:46,519 --> 00:32:49,640
Speaker 1: So these guys are managing the pull requests and approving

584
00:32:49,680 --> 00:32:51,720
them and if they got approved then they would pay

585
00:32:51,759 --> 00:32:53,640
for them. Or how did that work? Do you know?

586
00:32:55,359 --> 00:33:02,480
Speaker 3: Well I was approving the poll requests or another really

587
00:33:02,559 --> 00:33:08,039
valuable contributor named Stephan from Germany has become a you know,

588
00:33:08,079 --> 00:33:12,319
it has that level of trust and but yeah, so

589
00:33:12,880 --> 00:33:16,680
this company apparently was paying out based on the prs

590
00:33:16,759 --> 00:33:21,079
being accepted, not by them but by me basically.

591
00:33:20,960 --> 00:33:23,119
Speaker 2: Okay, and did you ever speak to them?

592
00:33:23,319 --> 00:33:26,880
Speaker 3: Well, eventually I did get an email contact with them

593
00:33:27,079 --> 00:33:29,160
and they're like, oh, yeah, we're holding this big piece

594
00:33:29,160 --> 00:33:31,640
of software. CSLA is at the center of it. We

595
00:33:31,799 --> 00:33:34,839
felt the need for, you know, to make sure CSLA

596
00:33:35,079 --> 00:33:39,160
was moving fast and knocked down the backlog some and

597
00:33:39,200 --> 00:33:42,000
so we just thought we would help. Well that's wow,

598
00:33:42,000 --> 00:33:44,680
that's great, Wow, fantastic, right, How cool is that?

599
00:33:45,279 --> 00:33:48,839
Speaker 1: What a great success story for an open source project

600
00:33:48,839 --> 00:33:51,960
that began? G's when when was it when it started?

601
00:33:52,599 --> 00:33:53,359
Speaker 3: Ninety six?

602
00:33:53,759 --> 00:33:54,079
Speaker 1: Wow?

603
00:33:55,079 --> 00:33:56,119
Speaker 3: Nineteen ninety six.

604
00:33:56,720 --> 00:33:59,319
Speaker 2: Now, I mean, were you really even open source? Then?

605
00:34:00,039 --> 00:34:02,160
Source doesn't mean the same thing in nineteen ninety six.

606
00:34:02,680 --> 00:34:04,799
Speaker 3: No, it was a freeware at that point.

607
00:34:04,880 --> 00:34:05,960
Speaker 1: I was just a party of book.

608
00:34:06,400 --> 00:34:10,079
Speaker 3: Yeah, yeah, yeah, and it was yeah, it was. The

609
00:34:10,159 --> 00:34:13,199
term open source did exist at that point, but you know,

610
00:34:13,760 --> 00:34:16,320
it was it was nascent, i would say, compared to

611
00:34:16,320 --> 00:34:20,800
it is today. And freeware and sharewear were pretty common terms,

612
00:34:20,840 --> 00:34:23,920
and so it was. It was released as freeware that

613
00:34:24,000 --> 00:34:25,039
you could get.

614
00:34:25,039 --> 00:34:28,559
Speaker 1: Right is the internet by the book the software.

615
00:34:28,800 --> 00:34:31,559
Speaker 3: The Yeah, the Internet didn't really exist either, so the

616
00:34:31,599 --> 00:34:33,559
only way to get to software was the CD in

617
00:34:33,599 --> 00:34:34,440
the back of the book.

618
00:34:34,599 --> 00:34:34,800
Speaker 2: Yeah.

619
00:34:34,960 --> 00:34:35,320
Speaker 1: Sure.

620
00:34:35,880 --> 00:34:38,559
Speaker 2: And even you know, when I think about really old

621
00:34:39,639 --> 00:34:42,480
source control solutions, you know, open source solutions, I think

622
00:34:42,480 --> 00:34:44,440
I like something like source forge. But even that's like

623
00:34:44,880 --> 00:34:46,320
ninety nine, two thousand.

624
00:34:46,519 --> 00:34:49,199
Speaker 3: Like, no, my my source control back then was having

625
00:34:49,280 --> 00:34:53,159
backups on different folders or on a CD or something.

626
00:34:53,199 --> 00:34:57,239
It was excellent, it was at some point, but I

627
00:34:57,239 --> 00:34:59,320
think it might not have been until I started doing

628
00:34:59,360 --> 00:35:03,599
dot net. I don't remember. I started using uh, what

629
00:35:03,760 --> 00:35:08,960
was it called, not subversion, the CVS, the predecessor to subversion, Yeah,

630
00:35:09,239 --> 00:35:11,079
concurrent versioning system.

631
00:35:11,400 --> 00:35:11,760
Speaker 1: Yeah.

632
00:35:11,840 --> 00:35:14,400
Speaker 3: And uh and I even set up my own server,

633
00:35:15,440 --> 00:35:17,440
I think for that for sure, I did because I

634
00:35:17,480 --> 00:35:21,920
switched to subversion and I had my own server, and

635
00:35:21,920 --> 00:35:24,719
that's what source forage I think originally started out being

636
00:35:24,760 --> 00:35:31,719
a subversion serversion. And then when GET came out, I

637
00:35:31,760 --> 00:35:33,800
didn't jump on it right away, even though a couple

638
00:35:33,800 --> 00:35:35,639
of colleagues were like, oh no, you got to eat

639
00:35:35,639 --> 00:35:37,960
It's so much better, and I'm like, yeah, this is working.

640
00:35:37,960 --> 00:35:38,440
Why would I.

641
00:35:38,639 --> 00:35:42,400
Speaker 2: Yeah, And by better, I mean more hostile, like it

642
00:35:42,440 --> 00:35:42,679
was not.

643
00:35:43,960 --> 00:35:45,840
Speaker 1: It was not a friendly tool.

644
00:35:45,760 --> 00:35:46,840
Speaker 3: No, not at all.

645
00:35:47,519 --> 00:35:50,840
Speaker 1: If you if you're a Unix monk, you could probably

646
00:35:51,079 --> 00:35:53,800
pick it up easier than that's Windows guys.

647
00:35:54,159 --> 00:35:58,599
Speaker 3: And yeah, the tooling got better and somebody one one

648
00:35:58,599 --> 00:36:00,119
of the people I worked with at the time, and

649
00:36:00,239 --> 00:36:03,639
eventually was like, here, I will port your entire history

650
00:36:03,719 --> 00:36:08,800
into GET just to get you there, because it's.

651
00:36:08,199 --> 00:36:10,000
Speaker 2: I want, I want you to do this that badly.

652
00:36:10,079 --> 00:36:11,039
I'm going to do the work.

653
00:36:10,920 --> 00:36:13,519
Speaker 3: For you exactly. It's embarrassing to know that you're not

654
00:36:13,639 --> 00:36:14,639
using this thing.

655
00:36:14,960 --> 00:36:17,559
Speaker 1: Nice, awesome.

656
00:36:18,039 --> 00:36:22,280
Speaker 3: That was probably two thousand and three or something, I'm guessing.

657
00:36:23,639 --> 00:36:27,280
Speaker 2: Yeah, I was thinking of Tortoise SVN. I think that

658
00:36:27,480 --> 00:36:30,679
was the last thing I used before switching to GET.

659
00:36:30,760 --> 00:36:34,800
Speaker 3: Yeah, I used Tortoise all It was awesome, absolutely.

660
00:36:34,360 --> 00:36:36,559
Speaker 2: Yeah, it was integrated with the Windows shell like it

661
00:36:36,599 --> 00:36:38,599
was just I got used to using source control for

662
00:36:38,679 --> 00:36:42,320
kind of everything, you know, and in the Tortoise world, yep.

663
00:36:42,760 --> 00:36:42,960
Speaker 1: Yeah.

664
00:36:43,519 --> 00:36:45,800
Speaker 2: And now it's all gethub all the time, for better

665
00:36:45,880 --> 00:36:46,679
or worse. Yep.

666
00:36:46,880 --> 00:36:49,079
Speaker 3: Well, and once you wrap your head around it, yeah

667
00:36:49,119 --> 00:36:50,079
it's probably for better.

668
00:36:50,239 --> 00:36:52,679
Speaker 2: But yeah, not that I want to hijack us into

669
00:36:52,719 --> 00:36:55,199
an AI conversation, but I have to wonder, you know,

670
00:36:55,760 --> 00:36:58,119
yes you do, how much maintenance you start doing with

671
00:36:58,199 --> 00:37:00,800
c SLA, with some of the dev tools that are

672
00:37:02,159 --> 00:37:05,119
using llms for this, because you've got such a mature

673
00:37:05,159 --> 00:37:08,719
code base, like I could imagine an LM functioning really

674
00:37:08,760 --> 00:37:09,159
well on.

675
00:37:09,159 --> 00:37:13,039
Speaker 3: It, it does and it doesn't. I have probably three

676
00:37:13,079 --> 00:37:18,199
different angles to talk about that. Since you've hijacked the conversation.

677
00:37:18,239 --> 00:37:20,800
Speaker 1: Now you've done it, Richard, like what I've done, We're

678
00:37:20,800 --> 00:37:24,280
going to get all kinds of ail and hate messages.

679
00:37:25,360 --> 00:37:33,480
Speaker 3: So one of the angles is maintaining csla's actual source

680
00:37:33,519 --> 00:37:38,960
code using copilot agent mode or cursor or something like that,

681
00:37:40,039 --> 00:37:46,719
and that works within limited bounds. And the reason I

682
00:37:46,760 --> 00:37:49,320
say it that way is because the CSLA code base

683
00:37:49,400 --> 00:37:51,480
is not only mature, but it's kind of big.

684
00:37:52,159 --> 00:37:54,599
Speaker 1: Yeah, and there's a lot of tokens.

685
00:37:54,880 --> 00:37:59,800
Speaker 3: It's a lot of tokens, and they frequently find that

686
00:37:59,840 --> 00:38:02,320
I'll get part way through doing something with the AI

687
00:38:02,599 --> 00:38:07,760
and the AI will go I can't function token the

688
00:38:07,800 --> 00:38:14,760
contact bag. My head hurts. You're on your own, kid, give.

689
00:38:14,639 --> 00:38:15,559
Speaker 1: Me some time and all.

690
00:38:16,039 --> 00:38:19,559
Speaker 2: Yeah, just just like your cruise control or your full

691
00:38:19,599 --> 00:38:23,920
cell trap and going bebep on you, dude, I'm out.

692
00:38:24,639 --> 00:38:26,199
Speaker 1: Please put your hands on the wheel.

693
00:38:27,119 --> 00:38:29,119
Speaker 3: So for for some things, it works, you know, if

694
00:38:29,280 --> 00:38:32,159
if things of limited scope, I find that it actually

695
00:38:32,159 --> 00:38:36,440
is pretty. But like one of the things I hoped

696
00:38:36,599 --> 00:38:38,800
to do intend that I don't think is going to

697
00:38:38,840 --> 00:38:41,840
happen because it's it's just no matter how you look

698
00:38:41,840 --> 00:38:44,840
at it, it's a huge thing. And it's merging, merging

699
00:38:44,880 --> 00:38:50,079
two of the biggest classes in the framework to into

700
00:38:50,119 --> 00:38:55,760
something else. And uh for those that are C S

701
00:38:55,880 --> 00:38:59,480
l A people, that's it's taking the business rules engine

702
00:38:59,519 --> 00:39:03,199
from business Base and putting it into Business list Base,

703
00:39:03,480 --> 00:39:06,800
so that you could have not only a collection, which

704
00:39:06,800 --> 00:39:09,480
is what business list Base is, but it could also

705
00:39:09,719 --> 00:39:13,719
directly have properties with all the power and capability of

706
00:39:14,000 --> 00:39:21,800
a normal class that has properties. And I have doing

707
00:39:21,840 --> 00:39:25,400
it by hand is daunting, and I'm like, oh no,

708
00:39:25,480 --> 00:39:29,280
the LM will help me. And I have tried it

709
00:39:29,480 --> 00:39:32,920
many times in many different ways, and thus far, every

710
00:39:33,000 --> 00:39:38,519
time it has completely either started hallucinating or run out

711
00:39:38,519 --> 00:39:42,320
of context space and give me an error. So I

712
00:39:42,360 --> 00:39:47,559
do think that it shows that you know and I

713
00:39:47,639 --> 00:39:50,840
use don't get me wrong. I use AI and copile

714
00:39:50,920 --> 00:39:54,840
it agent mode for lots of stuff and cursor and

715
00:39:55,400 --> 00:39:59,559
it's fantastic. But when confronted with something of this size

716
00:39:59,599 --> 00:40:02,719
and compla, it clearly just falls flat.

717
00:40:03,280 --> 00:40:05,639
Speaker 1: You take a too big a bite too. I think

718
00:40:05,719 --> 00:40:09,840
that's too large a skill. I've had that situation before,

719
00:40:09,920 --> 00:40:13,519
where you know, I tell it to generate. I can't

720
00:40:13,519 --> 00:40:15,840
remember what it was, a big enum that had like

721
00:40:15,840 --> 00:40:18,360
a thousand different things on it something I can't remember

722
00:40:18,400 --> 00:40:21,440
what it was, but it stopped out about half maybe

723
00:40:21,440 --> 00:40:23,519
half third of the way down, and it was dot

724
00:40:23,559 --> 00:40:25,719
dot dot. You do the rest. If something like that,

725
00:40:25,880 --> 00:40:30,199
you put the rest here, it's like, okay, can you

726
00:40:30,239 --> 00:40:34,119
give me values fifty through one hundred, Sure, no problem,

727
00:40:34,239 --> 00:40:37,039
fifty ninety eight and then you do the rest.

728
00:40:37,079 --> 00:40:43,880
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
I mean it's interesting to see it hit limits like

730
00:40:46,320 --> 00:40:46,679
that too.

731
00:40:46,960 --> 00:40:50,679
Speaker 3: So the second angle that I'll talk about is people

732
00:40:51,119 --> 00:40:56,800
concluding myself, that are writing code that uses CSLA and

733
00:40:57,280 --> 00:41:01,360
then copilot is pretty darn good because of course Copilot

734
00:41:02,480 --> 00:41:05,679
was trained on I suppose it doesn't. It depends on

735
00:41:05,719 --> 00:41:10,000
which model, but generally speaking, right, they're trained on open

736
00:41:10,000 --> 00:41:13,519
source code. Well, CSLA is open source, and so it's like, yay,

737
00:41:13,639 --> 00:41:17,760
I understand all this stuff, and there's tons of examples

738
00:41:17,760 --> 00:41:18,679
out there in the world.

739
00:41:18,800 --> 00:41:19,280
Speaker 1: Whatnot.

740
00:41:20,320 --> 00:41:25,119
Speaker 3: The problem with it is that the same thing that

741
00:41:25,519 --> 00:41:28,880
us as humans have If you google something, it's like, oh,

742
00:41:28,960 --> 00:41:31,559
I found the answer. Ah, that was the answer from him.

743
00:41:31,559 --> 00:41:36,079
Fifteen years ago or five years ago or and so.

744
00:41:36,679 --> 00:41:38,920
Speaker 2: The answer fifteen years ago is reflection.

745
00:41:41,519 --> 00:41:47,400
Speaker 3: Exactly. You know, the code patterns have changed, and even

746
00:41:47,679 --> 00:41:50,920
with CSLA, we try really hard to do backward compatibility,

747
00:41:50,920 --> 00:41:53,760
and so in some cases the code will even still work.

748
00:41:53,840 --> 00:41:56,639
It's just like, man, I wouldn't do it that way now,

749
00:41:57,000 --> 00:41:57,239
you know.

750
00:41:59,519 --> 00:42:02,920
Speaker 1: So back to CSLA, done that features. I noticed that

751
00:42:02,960 --> 00:42:05,760
you're using gRPC for a few things. What are you

752
00:42:05,800 --> 00:42:06,960
using that for? Well?

753
00:42:07,559 --> 00:42:14,199
Speaker 3: gRPC? So one capability of CSLA is to move object graphs,

754
00:42:15,440 --> 00:42:18,360
generally speaking, between a server where it can talk to

755
00:42:18,400 --> 00:42:20,599
the database and the client where it can talk to

756
00:42:20,639 --> 00:42:26,440
the user. And over the years, CSLA has supported dot

757
00:42:26,519 --> 00:42:30,360
net remoting and ASMX and WCF and.

758
00:42:32,239 --> 00:42:33,639
Speaker 1: You finally came to your senses.

759
00:42:34,239 --> 00:42:39,039
Speaker 3: Well, for a really long time, I would say for

760
00:42:39,119 --> 00:42:45,360
twenty years, it's been extensible pluggable. Yeah, and so the

761
00:42:45,400 --> 00:42:51,760
path the technology almost everybody uses is HTTP. But it

762
00:42:51,800 --> 00:42:55,639
does support gRPC for people that want, you know, slightly

763
00:42:55,679 --> 00:42:59,000
better performance or smaller payloads over the wire, that sort

764
00:42:59,000 --> 00:43:02,880
of thing, significant better performance, yeah, right.

765
00:43:03,679 --> 00:43:06,719
Speaker 1: And what about dot net remoteing binary formatter?

766
00:43:09,119 --> 00:43:11,960
Speaker 2: Yeah, like that perform Back to two thousand.

767
00:43:11,679 --> 00:43:14,559
Speaker 1: And two, well, g RPC is kind of like that.

768
00:43:14,760 --> 00:43:19,519
You know, it's a binary serializer. Yeah, it's very efficient,

769
00:43:20,639 --> 00:43:25,159
and it's a stream of bites that gets hydrated and rehydrated.

770
00:43:25,000 --> 00:43:29,119
Speaker 3: But without some of the security issues that came along

771
00:43:29,159 --> 00:43:30,079
with remote.

772
00:43:30,199 --> 00:43:31,159
Speaker 1: Oh yeah, pretty issues.

773
00:43:31,199 --> 00:43:37,639
Speaker 2: I can't imagine what you're talking about. Call my machine,

774
00:43:37,800 --> 00:43:38,519
it'll be fine.

775
00:43:38,559 --> 00:43:41,360
Speaker 1: So that's cool. So imagine it's just like, uh, you

776
00:43:41,480 --> 00:43:43,440
just say something like, hey, I want to move this

777
00:43:43,559 --> 00:43:45,199
object over there. Just do that.

778
00:43:45,400 --> 00:43:49,679
Speaker 3: Yeah, right, and yeah, in fact, the current three protocols

779
00:43:49,679 --> 00:43:55,000
that are maintained I guess, I mean HTTP is like

780
00:43:55,039 --> 00:43:58,400
in the box because that's you know, then g r PC,

781
00:43:58,599 --> 00:44:01,559
and then I've got a rabbit MQ one because I

782
00:44:01,639 --> 00:44:05,719
thought it should that should be possible, and I wanted

783
00:44:05,760 --> 00:44:07,760
to prove to myself that it was. I don't know

784
00:44:07,840 --> 00:44:11,400
that anybody who's actually used it. But of course that's

785
00:44:11,480 --> 00:44:14,400
kind of cool because it puts your outbound request on

786
00:44:14,440 --> 00:44:16,360
a queue that could be picked up by any one

787
00:44:16,400 --> 00:44:18,119
of a number of machines that are listening.

788
00:44:18,639 --> 00:44:21,239
Speaker 1: Yeah, process guaranteed delivery kind of thing.

789
00:44:21,440 --> 00:44:24,159
Speaker 3: Yeah, and then the response comes back on a return

790
00:44:24,239 --> 00:44:28,920
queue and yeah, it works great. It's really nifty.

791
00:44:30,360 --> 00:44:30,880
Speaker 1: That's nice.

792
00:44:31,119 --> 00:44:36,199
Speaker 3: You want global scale and resiliency, that's certainly the a

793
00:44:36,400 --> 00:44:37,960
technology worth exploring.

794
00:44:38,079 --> 00:44:41,679
Speaker 1: Right. Every time I'm doing a Blazer talk and we

795
00:44:41,800 --> 00:44:44,800
come to the point where I'm showing signal R and

796
00:44:44,840 --> 00:44:47,400
people are like, wow, that's amazing, I'm like, yeah, all right, Well,

797
00:44:47,400 --> 00:44:50,679
before you get too excited, just know that if you're

798
00:44:50,760 --> 00:44:54,400
not listening when a message comes in, it's gone. Yeah, Like,

799
00:44:54,719 --> 00:44:57,880
this doesn't guaranteed delivery. Yeah, this doesn't take the place

800
00:44:57,880 --> 00:44:59,920
of a queue or a bus or anything like that.

801
00:45:00,760 --> 00:45:03,400
It's just you know, hey, if you happen to be listening,

802
00:45:03,599 --> 00:45:04,639
here's a message for you.

803
00:45:05,119 --> 00:45:09,559
Speaker 3: Yeah. Yeah, I characterize it very much like a Blazer

804
00:45:09,639 --> 00:45:12,320
turns the browser into a thirty two seventy terminal.

805
00:45:12,719 --> 00:45:13,360
Speaker 1: Yeah. Nice.

806
00:45:14,119 --> 00:45:16,440
Speaker 3: Not only people with gray hair understand that anymore.

807
00:45:16,480 --> 00:45:19,920
Speaker 2: But yeah, do you even know why that's funny?

808
00:45:20,239 --> 00:45:22,039
Speaker 1: Do you? Yeah? You probably haven't idea.

809
00:45:22,039 --> 00:45:24,519
Speaker 3: There's always that that group of people in the audience

810
00:45:24,559 --> 00:45:28,079
that laugh and I do it for them, be.

811
00:45:28,119 --> 00:45:30,440
Speaker 1: Good, but thank goodness. Yeah, having a queue or a

812
00:45:30,440 --> 00:45:34,880
bus is just a really great thing, especially when you

813
00:45:34,920 --> 00:45:38,639
have network outages and you know you want to you

814
00:45:38,679 --> 00:45:40,960
want to make sure that those things get delivered. Because

815
00:45:40,960 --> 00:45:41,880
they're kind of important.

816
00:45:42,159 --> 00:45:43,519
Speaker 3: They certainly can be.

817
00:45:44,599 --> 00:45:47,679
Speaker 1: So what else? Uh, what else is in there that

818
00:45:48,039 --> 00:45:50,880
we should talk about in not version nine?

819
00:45:51,360 --> 00:45:55,880
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
the list is long.

821
00:45:58,039 --> 00:45:59,800
Speaker 1: I'm gonna Signon's a contributor.

822
00:46:00,000 --> 00:46:03,320
Speaker 3: I'm in crop well and and so there was a

823
00:46:03,320 --> 00:46:08,039
whole bunch of that too. So although that's mostly invisible

824
00:46:08,760 --> 00:46:15,039
is behind the scenes, there was this he did and

825
00:46:15,159 --> 00:46:17,480
it just jumped in and said, you know what, let

826
00:46:17,519 --> 00:46:23,320
me modernize your code base, and which is pretty amazing

827
00:46:23,360 --> 00:46:24,400
when you think about.

828
00:46:24,119 --> 00:46:25,760
Speaker 1: It, and.

829
00:46:27,159 --> 00:46:30,480
Speaker 3: You know, so you get I guess technical debt right,

830
00:46:30,480 --> 00:46:32,840
which I've I've had people do well, technical debt doesn't

831
00:46:32,880 --> 00:46:37,719
really exist or whatever, But I don't know, don't don't

832
00:46:37,719 --> 00:46:41,679
ask me, man, I've been I'm like, I kind of

833
00:46:41,719 --> 00:46:44,719
I kind of think it does.

834
00:46:45,519 --> 00:46:45,639
Speaker 1: Uh.

835
00:46:46,920 --> 00:46:52,519
Speaker 3: And so it turns out though that if somebody were

836
00:46:52,559 --> 00:46:56,199
to have and I think what Simon used was Rider,

837
00:46:56,239 --> 00:46:59,760
because a whole lot of writer type stuff showed up

838
00:47:01,679 --> 00:47:09,320
built you know, in the repo, but basically running tons

839
00:47:09,360 --> 00:47:13,599
and tons of refactorings. In my philosophy, because this code

840
00:47:13,599 --> 00:47:18,039
base is so big and so old, has always been

841
00:47:18,639 --> 00:47:22,679
that when I go into a file and I have time,

842
00:47:22,719 --> 00:47:26,440
I will modernize that file. But the idea of like

843
00:47:26,760 --> 00:47:34,480
literally wholesale going through the whole framework, well, thankfully he

844
00:47:34,559 --> 00:47:37,440
did that for me, I should say.

845
00:47:37,480 --> 00:47:41,360
Speaker 2: You know, it's like like a migration to get he's

846
00:47:41,400 --> 00:47:42,679
an somebody else, is it?

847
00:47:42,800 --> 00:47:46,320
Speaker 3: Yeah, And so I mean hard to argue, right that

848
00:47:46,320 --> 00:47:53,039
that's just phenomenal And we're actually getting a bunch of

849
00:47:53,079 --> 00:47:58,039
that too in c s l A ten. Although this

850
00:47:58,159 --> 00:48:02,920
is a breaking change and is something that Stefan has

851
00:48:02,960 --> 00:48:07,000
been working on for months, which is adding in null

852
00:48:07,039 --> 00:48:11,760
ability support. Oh my, and yeah, yeah that I mean

853
00:48:12,079 --> 00:48:15,719
it touches almost everything, and it's kind of like acync

854
00:48:15,760 --> 00:48:19,679
A weight or generics where once you start it affects

855
00:48:19,679 --> 00:48:21,719
your code base from top to bottom.

856
00:48:21,840 --> 00:48:23,679
Speaker 1: Yeah, can't avoid it, right.

857
00:48:23,519 --> 00:48:27,440
Speaker 3: Yeah, right, So it's it's a huge amount of work

858
00:48:27,519 --> 00:48:29,960
that that. So Simon did all this stuff in nine

859
00:48:30,039 --> 00:48:31,960
and then Stefan did all this stuff in ten, and

860
00:48:33,239 --> 00:48:37,039
life is going to be just almost infinitely better in

861
00:48:37,119 --> 00:48:40,880
terms of being maintainable and taking advantage of modern sea

862
00:48:40,920 --> 00:48:44,360
sharp features and that sort of thing, just working in

863
00:48:44,400 --> 00:48:45,239
this code base.

864
00:48:46,039 --> 00:48:49,679
Speaker 1: Right, I hope you send him a pizza.

865
00:48:49,960 --> 00:48:51,920
Speaker 3: Yeah, he's in Australia. I guess I could, though I

866
00:48:51,920 --> 00:48:52,760
could figure out a way you.

867
00:48:52,880 --> 00:48:54,400
Speaker 1: Have it delivered and you know, you'd have to wake

868
00:48:54,440 --> 00:48:56,159
up in the middle of the night, deticate there in

869
00:48:56,199 --> 00:48:56,920
the morning.

870
00:48:56,800 --> 00:48:59,920
Speaker 2: Something like that, and probably can order in advance. Probably

871
00:49:01,159 --> 00:49:03,440
it's a question, is what's what's a good pizza in

872
00:49:03,440 --> 00:49:05,880
Australia because they're you know, they put beats on their burgers.

873
00:49:05,880 --> 00:49:08,760
Speaker 1: You don't know what to do, that's true, they do. Yeah,

874
00:49:08,960 --> 00:49:10,280
well you can't go wrong with shrimp.

875
00:49:10,440 --> 00:49:11,599
Speaker 3: Oh, I don't know.

876
00:49:11,960 --> 00:49:17,079
Speaker 2: Maybe it's all fun game till the allergies kick in.

877
00:49:18,159 --> 00:49:21,800
Speaker 1: Right, That's what I was thinking, shrimp scampy pizza. Okay.

878
00:49:22,280 --> 00:49:26,760
Speaker 3: So yeah. Another big thing along this line, and in

879
00:49:26,840 --> 00:49:33,840
the geeky end of the world is AOT ahead of

880
00:49:33,840 --> 00:49:40,079
time compilation stuff, right, which because csl A is like

881
00:49:40,400 --> 00:49:42,880
UI Frameworks and that it does a lot of pretty

882
00:49:42,960 --> 00:49:47,159
dynamic things, and so parts of c sl A can't

883
00:49:47,239 --> 00:49:52,599
be AOT compiled. But in order to play well in

884
00:49:52,679 --> 00:49:58,119
the AOT world, you're supposed to now document that through

885
00:49:58,119 --> 00:50:03,360
attributes in your code, and so a whole bunches of

886
00:50:03,360 --> 00:50:08,239
work went into attributing different types and parameters and we're

887
00:50:08,239 --> 00:50:11,119
basically trying to tease out where where can we let

888
00:50:11,159 --> 00:50:16,599
the aot uh you know compiler, uh actually compile stuff?

889
00:50:16,599 --> 00:50:17,920
And where do we have to prevent it?

890
00:50:18,480 --> 00:50:20,920
Speaker 1: I wonder if I wonder if Simon is a robot.

891
00:50:21,760 --> 00:50:27,039
Speaker 3: I wonder, man that dude appears to drop in as

892
00:50:27,079 --> 00:50:29,519
a hobby. I don't know. It's different open source projects

893
00:50:29,519 --> 00:50:32,039
and just go here. Let me make your world better

894
00:50:34,239 --> 00:50:39,599
if you look at it at Simon's history, uh commit history.

895
00:50:39,840 --> 00:50:41,360
It's just amazing, man.

896
00:50:41,920 --> 00:50:43,840
Speaker 2: It's just it's just a green wall.

897
00:50:44,719 --> 00:50:47,920
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
but uh that's crazy. What else can you tell us

899
00:50:51,000 --> 00:50:53,280
here with? You know, seven minutes to go?

900
00:50:53,880 --> 00:50:57,480
Speaker 3: Oh the last the last AI thing that I have

901
00:50:57,559 --> 00:51:01,960
been experimenting with. Carl's like, oh man, more AI, and

902
00:51:02,039 --> 00:51:03,599
Richard's like yay more AI.

903
00:51:04,039 --> 00:51:07,079
Speaker 1: No, No, you know, I live and breathe it every day.

904
00:51:07,079 --> 00:51:09,360
It's just that I know that some of our listeners,

905
00:51:09,760 --> 00:51:11,800
you know, they like just switch it up once while.

906
00:51:13,119 --> 00:51:16,679
Speaker 3: But I tried building and did in fact build an

907
00:51:16,800 --> 00:51:21,719
MCP server for CSLA. Oh cool, oh wow? And so

908
00:51:21,760 --> 00:51:25,760
what does it do? Well? It returns It's kind of

909
00:51:25,760 --> 00:51:30,840
like the Microsoft docs MCP server in that if the

910
00:51:31,519 --> 00:51:35,199
lll M wants to find information about how to do

911
00:51:35,320 --> 00:51:39,639
modern CSLA stuff, it can ask the it can do

912
00:51:39,679 --> 00:51:43,480
a search. It's got two tools I guess they call them.

913
00:51:43,679 --> 00:51:47,199
Tool Number one is search, so I can basically search

914
00:51:47,239 --> 00:51:49,639
for how do I do a thing, and it'll get

915
00:51:49,679 --> 00:51:52,400
back a list of scored results, which are just our

916
00:51:52,519 --> 00:51:57,880
markdown documents, usually with code snippets, and then it can

917
00:51:58,280 --> 00:52:01,039
fetch one of one or more of those code snippets

918
00:52:01,639 --> 00:52:04,480
and then use them to do the right thing when

919
00:52:04,519 --> 00:52:09,159
it's generating. And it works both in like ask mode

920
00:52:09,280 --> 00:52:13,039
and agent mode. I guess you'd say, because it'll do

921
00:52:13,199 --> 00:52:17,079
this to go find the information to explain to the

922
00:52:17,119 --> 00:52:19,599
developer here's how you do it, or here's how it works.

923
00:52:20,280 --> 00:52:22,639
But it'll also do it in agent mode, so that

924
00:52:22,679 --> 00:52:23,000
if you.

925
00:52:22,960 --> 00:52:24,719
Speaker 1: Say, oh, it will actually change your code.

926
00:52:24,760 --> 00:52:29,360
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
how do I do that? And it'll go find the

928
00:52:31,079 --> 00:52:31,760
current code.

929
00:52:31,960 --> 00:52:35,760
Speaker 1: And so what's involved in making an MCP server.

930
00:52:36,119 --> 00:52:40,159
Speaker 3: Well, it turns out that Microsoft and Anthropic work together

931
00:52:41,400 --> 00:52:43,480
just over the last few months to create a new

932
00:52:43,480 --> 00:52:48,199
GET package that makes it pretty darn easy to create

933
00:52:48,280 --> 00:52:56,719
a MCP server in C sharp and you just attribute

934
00:52:56,760 --> 00:53:01,320
some things and it does, magic happens, and everything is fine.

935
00:53:01,519 --> 00:53:03,760
It happens well, because I was trying to do it

936
00:53:03,800 --> 00:53:07,760
without and it was hard to get. The protocol is

937
00:53:07,840 --> 00:53:09,719
just a pain, right, And so.

938
00:53:10,039 --> 00:53:13,639
Speaker 1: You're just exposing data points, aren't you, and search terms

939
00:53:13,719 --> 00:53:14,679
or how what are you doing?

940
00:53:14,920 --> 00:53:18,079
Speaker 3: Yeah, but you have to conform to the right some

941
00:53:18,119 --> 00:53:22,039
semantics for the calls on the endpoint and the right

942
00:53:22,119 --> 00:53:26,079
Jason formats in and out. Okay, there's a whole bunch

943
00:53:26,199 --> 00:53:28,840
to the protocol and basically they implemented it in this

944
00:53:28,880 --> 00:53:31,800
new get package. So all you need to do is

945
00:53:31,840 --> 00:53:36,519
implement a method that says search and then however it

946
00:53:36,559 --> 00:53:38,480
is that you want to do the search, and whether

947
00:53:38,519 --> 00:53:43,039
you're using vector searching, you know, like RAG type stuff

948
00:53:43,079 --> 00:53:47,679
with vectors, I'm not. I'm actually just doing what a

949
00:53:47,719 --> 00:53:53,199
mathematician would call a naive implementation, where I just literally

950
00:53:53,239 --> 00:53:57,000
do full text searching against my you know what, have

951
00:53:57,039 --> 00:54:00,199
I got like a dozen text files to say? You know,

952
00:54:00,280 --> 00:54:02,480
do I do a lot of the words match? And

953
00:54:02,519 --> 00:54:05,119
if they do, then this is a good match, you know.

954
00:54:06,840 --> 00:54:10,320
And I tried the thing, by the way, and it

955
00:54:10,400 --> 00:54:13,320
was not as good because the vector thing is trying

956
00:54:13,360 --> 00:54:17,320
to get some sort of meaning out of my code samples,

957
00:54:17,760 --> 00:54:23,360
and it works out better to just do for my scenario,

958
00:54:23,920 --> 00:54:27,039
it works better to just do looking for keywords.

959
00:54:27,239 --> 00:54:29,159
Speaker 1: Well, clearly, Richard, we're going to have to have somebody

960
00:54:29,199 --> 00:54:32,000
on who can tell us all about building all my radars.

961
00:54:32,039 --> 00:54:34,400
But I don't want to make this put it all

962
00:54:34,400 --> 00:54:37,800
on Rocky. But I'm so curious. Now, if I had

963
00:54:37,840 --> 00:54:41,960
an application that had a lot of functionality that you know,

964
00:54:42,000 --> 00:54:44,440
in building out all this UI to do stuff that

965
00:54:44,840 --> 00:54:49,239
is ultimately functionality, right, whether it's all in an API

966
00:54:49,400 --> 00:54:54,079
layer or whatever, I could build an MCP interface for

967
00:54:54,239 --> 00:54:58,920
that and have it work like you would build a

968
00:54:59,119 --> 00:55:02,400
UI am I off base with that.

969
00:55:02,760 --> 00:55:07,320
Speaker 3: Well, the consumer of your MCP server is the ll

970
00:55:07,440 --> 00:55:10,039
M is an ll M, right, Yeah, So if you're

971
00:55:10,280 --> 00:55:14,079
if you're asking like in this scenario, I'm like, hey, LLLM,

972
00:55:14,440 --> 00:55:17,519
you know Cloud go out and you know Sonet, go

973
00:55:17,559 --> 00:55:21,760
out and create a business class for customer with these properties.

974
00:55:22,320 --> 00:55:23,880
And it'll be like, oh, I don't know how to

975
00:55:23,920 --> 00:55:25,159
do that, or at least I don't know how to

976
00:55:25,159 --> 00:55:28,119
do it correctly. I will look at your MCP server

977
00:55:28,280 --> 00:55:32,840
have a small side conversation, you know, brush up, and

978
00:55:32,880 --> 00:55:34,920
then it can turn around and go, oh okay, I

979
00:55:34,960 --> 00:55:36,719
see how to do this, and then it will generate

980
00:55:36,760 --> 00:55:41,480
all the code with Like I said, one of the

981
00:55:41,559 --> 00:55:44,360
drawbacks if you don't do this is that it will

982
00:55:44,400 --> 00:55:47,599
generate the code, but it's often using older techniques or whatever.

983
00:55:47,920 --> 00:55:49,840
Speaker 1: Well, in your case, I see, what it's doing is

984
00:55:49,880 --> 00:55:54,320
finding code. But what if you have an application itself? Right?

985
00:55:54,920 --> 00:55:57,480
What if I have an application that has an API

986
00:55:57,639 --> 00:56:01,280
endpoint to create a customer and I want to tell

987
00:56:01,280 --> 00:56:05,239
my LLLM hey on this application, go create a customer

988
00:56:05,280 --> 00:56:06,719
with this name and that name and this name and

989
00:56:06,760 --> 00:56:08,519
the other thing, and return back to the customer.

990
00:56:08,519 --> 00:56:12,880
Speaker 3: I D That's what MCP does. Yeah, among I mean you,

991
00:56:13,519 --> 00:56:17,880
MCP can do a lot of things, right. It can information,

992
00:56:19,320 --> 00:56:22,360
but it can also take action, right. And so when

993
00:56:22,880 --> 00:56:25,920
when you're using copilot and agent mode, it's actually using

994
00:56:26,119 --> 00:56:30,480
tons of MCP tools to create files and delete files

995
00:56:30,519 --> 00:56:33,400
and do all the other stuff because that the AIS

996
00:56:33,519 --> 00:56:36,440
can't do those things, so they use the mcps to

997
00:56:36,480 --> 00:56:36,760
do that.

998
00:56:37,280 --> 00:56:37,599
Speaker 1: Got it?

999
00:56:38,360 --> 00:56:40,920
Speaker 3: And so yeah, you could absolutely create an MCP server

1000
00:56:41,079 --> 00:56:44,800
that updates your database by adding a customer.

1001
00:56:44,480 --> 00:56:47,360
Speaker 1: And now, of course that has all sorts of security implications,

1002
00:56:47,360 --> 00:56:48,960
but let's not get into that now.

1003
00:56:51,360 --> 00:56:53,880
Speaker 3: So, yeah, what I did is the super simplest thing, right,

1004
00:56:53,920 --> 00:56:57,800
which is just all I'm doing is providing information to

1005
00:56:58,079 --> 00:57:03,440
educate the But what I also think is now that

1006
00:57:03,480 --> 00:57:05,519
I've now I understand how to do it and how

1007
00:57:05,559 --> 00:57:10,199
easy it is, I can see where any organization that

1008
00:57:10,239 --> 00:57:13,800
has their own coding standards or their own approach to

1009
00:57:14,440 --> 00:57:17,519
implementing security I don't know, whatever it might be, their

1010
00:57:17,519 --> 00:57:22,960
own UI standards could probably take my code as a

1011
00:57:23,000 --> 00:57:28,039
base and go, ah, it's pretty easy to go create. Yeah,

1012
00:57:28,079 --> 00:57:30,119
you know this thing that just documents that. So the

1013
00:57:30,159 --> 00:57:33,599
AI is doing the right thing within my organization.

1014
00:57:33,800 --> 00:57:34,239
Speaker 1: Very cool.

1015
00:57:34,440 --> 00:57:36,360
Speaker 2: Yeah, it's a powerful topic, and it's certainly what I've

1016
00:57:36,400 --> 00:57:38,119
been looking at to say, you know, how far we're

1017
00:57:38,119 --> 00:57:40,119
going to go with this. I have a bunch of thoughts,

1018
00:57:40,159 --> 00:57:42,840
but looking for the right guests, so we'll figure it out.

1019
00:57:42,880 --> 00:57:44,559
Speaker 1: I always have a bunch of thoughts when I talk

1020
00:57:44,639 --> 00:57:48,000
to Rocky, for sure, even if it's at breakfast in

1021
00:57:48,239 --> 00:57:52,920
Stockholm at six o'clock in the morning. The best thoughts

1022
00:57:53,360 --> 00:57:58,719
before somebody goes to the airport you know. Yeah, all right, well, Rocky,

1023
00:57:58,719 --> 00:58:01,480
it's always great to talk to you, and congrats on

1024
00:58:01,519 --> 00:58:05,079
a new framework. When was it released, by the way, nine.

1025
00:58:05,360 --> 00:58:09,400
Speaker 3: Nine was released at the beginning of this year earlier.

1026
00:58:09,519 --> 00:58:13,639
Speaker 2: Yes, it was like February and in June.

1027
00:58:13,400 --> 00:58:17,280
Speaker 1: And then you'll have ten with in November, hopefully shortly after.

1028
00:58:17,800 --> 00:58:21,079
Speaker 3: Shortly after. Yeah, we'll have a We'll have a pre

1029
00:58:21,199 --> 00:58:22,559
release in November for sure.

1030
00:58:22,880 --> 00:58:25,119
Speaker 1: Oh good, all right man. Well, it's good to talk

1031
00:58:25,119 --> 00:58:27,000
to you again, and we will talk to you, dear

1032
00:58:27,039 --> 00:58:51,079
listener next time on dot net rocks. Dot net Rocks

1033
00:58:51,159 --> 00:58:53,880
is brought to you by Franklin's Net and produced by

1034
00:58:53,960 --> 00:58:57,960
Pop Studios, a full service audio, video and post production

1035
00:58:58,079 --> 00:59:02,119
facilities located physically New London, Connecticut, and of course in

1036
00:59:02,239 --> 00:59:07,320
the cloud online at pwop dot com. Visit our website

1037
00:59:07,320 --> 00:59:09,119
at d O T N E t R O c

1038
00:59:09,280 --> 00:59:14,400
k S dot com for RSS feeds, downloads, mobile apps, comments,

1039
00:59:14,679 --> 00:59:17,199
and access to the full archives going back to show

1040
00:59:17,320 --> 00:59:21,039
number one, recorded in September two thousand and two. And

1041
00:59:21,159 --> 00:59:23,559
make sure you check out our sponsors. They keep us

1042
00:59:23,559 --> 00:59:27,039
in business. Now go write some code, see you next time.

1043
00:59:27,960 --> 00:59:31,880
You got Jamtle Vans and

