1
00:00:01,080 --> 00:00:04,799
Speaker 1: How'd you like to listen to dot NetRocks with no ads? Easy?

2
00:00:05,360 --> 00:00:08,560
Become a patron for just five dollars a month. You

3
00:00:08,599 --> 00:00:11,320
get access to a private RSS feed where all the

4
00:00:11,359 --> 00:00:14,599
shows have no ads. Twenty dollars a month, we'll get

5
00:00:14,599 --> 00:00:18,440
you that and a special dot NetRocks patron mug. Sign

6
00:00:18,519 --> 00:00:22,920
up now at Patreon dot dot NetRocks dot com. Hi,

7
00:00:23,000 --> 00:00:24,679
this is Carl Franklin.

8
00:00:24,239 --> 00:00:25,480
Speaker 2: And this is Richard Campbell.

9
00:00:25,839 --> 00:00:30,000
Speaker 1: We've got two special shows coming up soon, episode nineteen

10
00:00:30,120 --> 00:00:32,039
ninety nine and two thousand.

11
00:00:32,399 --> 00:00:35,079
Speaker 2: For episode nineteen ninety nine, we're collecting people's y two

12
00:00:35,159 --> 00:00:37,560
k stories what did you do to help the Y

13
00:00:37,600 --> 00:00:39,719
two k event not actually happen?

14
00:00:40,240 --> 00:00:42,960
Speaker 1: And for episode two thousand, we're going to be sharing

15
00:00:43,000 --> 00:00:45,479
stories about how dot net shaped your career.

16
00:00:46,000 --> 00:00:48,719
Speaker 2: We have a special page at dot netroocks dot com

17
00:00:48,719 --> 00:00:52,159
slash voxpop where you can record messages for us that

18
00:00:52,200 --> 00:00:54,000
we can play on these special episodes.

19
00:00:54,439 --> 00:00:56,479
Speaker 1: So tell us what you did for Y two k

20
00:00:56,759 --> 00:00:59,039
and what dot net means to you, and of course

21
00:00:59,079 --> 00:01:01,200
how long you've been listening to dot net rocks.

22
00:01:01,640 --> 00:01:04,439
Speaker 2: So go to dot netroocks dot com slash vox pop

23
00:01:04,560 --> 00:01:06,480
now and leave us a message before the thought of

24
00:01:06,560 --> 00:01:09,200
operates like whiskey left in a glass overnight.

25
00:01:09,159 --> 00:01:24,400
Speaker 1: Do it? Hey, welcome back to dot net Rocks. I'm

26
00:01:24,480 --> 00:01:27,319
Carl Franklin and I'm Richard County. Kathleen Dollar is here

27
00:01:27,359 --> 00:01:29,640
with us. We're going to be talking to her about,

28
00:01:29,680 --> 00:01:32,280
you know, what she's up to lately and all that.

29
00:01:32,599 --> 00:01:39,439
But this is episode nineteen hundred and ninety two. Maybe

30
00:01:39,439 --> 00:01:42,239
we should start with what happened that year? All right,

31
00:01:42,439 --> 00:01:45,920
bunch of stuff, bunch of stuff. It's busy here where

32
00:01:45,959 --> 00:01:49,560
you want to start? Well, Rodney King la riots very sad.

33
00:01:51,359 --> 00:01:56,560
Bill Clinton defeated George W. Hw Bush. The Cold War

34
00:01:56,680 --> 00:01:59,879
was declared over by the US and Russia. South Africa

35
00:02:00,120 --> 00:02:04,359
Zobe Union yep, theory yep. Then before the Soviet Union

36
00:02:04,359 --> 00:02:07,920
then Russia right yeah, South Africa voted to end apartheid,

37
00:02:08,000 --> 00:02:15,479
and the Bosnian War began. Of course, Hurricane Andrew Let's

38
00:02:15,479 --> 00:02:19,039
see Queen Elizabeth dubbed nineteen ninety two her Ennis horri

39
00:02:19,159 --> 00:02:22,680
bliss Horrible year due to family scandals and a fire

40
00:02:23,560 --> 00:02:24,599
at Windsor Castle.

41
00:02:25,120 --> 00:02:28,319
Speaker 3: So Robin Williams one of his favorite movies I Really

42
00:02:28,400 --> 00:02:31,240
Like You Did is Aladdin. So Elatin came out that

43
00:02:31,319 --> 00:02:31,719
year too.

44
00:02:31,759 --> 00:02:34,479
Speaker 1: Oh yes, Aladin came out. Yeah, some good movies.

45
00:02:34,599 --> 00:02:37,240
Speaker 2: Don't miss out. The North American Free Trade Agreement and

46
00:02:37,479 --> 00:02:40,639
NAFTA was signed that year, and so is the Masterche Treaty,

47
00:02:40,639 --> 00:02:42,360
which is the beginning of the European Union.

48
00:02:42,560 --> 00:02:45,360
Speaker 1: Wow, okay, amazing. And while we're on it, Richard, why

49
00:02:45,360 --> 00:02:48,319
don't you tell us about tech, science and space. In

50
00:02:48,400 --> 00:02:49,439
nineteen ninety two.

51
00:02:50,599 --> 00:02:52,879
Speaker 2: It's a crazy year for shuttles. This is the first

52
00:02:52,960 --> 00:02:57,479
year that Endeavor the replacement for Challenger flies, and so

53
00:02:57,599 --> 00:03:00,400
there are eight Shuttle missions this year and devor a

54
00:03:00,479 --> 00:03:03,319
fly twice once it is made in flight to do

55
00:03:03,360 --> 00:03:06,639
a reboost of a satellite, Intel Sat six three, and

56
00:03:06,719 --> 00:03:10,639
again for one of the three Space four space Lab

57
00:03:10,680 --> 00:03:15,240
missions that happened that year. So lots of they You

58
00:03:15,280 --> 00:03:17,120
don't realize this, but there was a bunch of different

59
00:03:17,159 --> 00:03:22,319
space labs. They were reconfigurable, and so Discovery, Atlantis, Endeavor,

60
00:03:22,520 --> 00:03:28,759
and Columbia all fly space Lab missions. The Restaurantal satellite

61
00:03:28,800 --> 00:03:33,599
deploys on the Russian side now because it's nineteen ninety two,

62
00:03:34,080 --> 00:03:36,479
they do their first mission back to mirr With the

63
00:03:36,520 --> 00:03:40,319
breakup of the Soviet Union in July fifteen and one

64
00:03:40,520 --> 00:03:44,520
last space flight, and that is in September, the final

65
00:03:44,560 --> 00:03:49,120
flight of a Titan three rocket boosting the Mars Observer

66
00:03:49,639 --> 00:03:54,080
to Mars, although it will not arrive and I'll wait

67
00:03:54,599 --> 00:03:58,680
until we next show to tell the story of Mars Observer,

68
00:03:58,759 --> 00:04:02,639
because the loss of Mars Observer changed the way NASA

69
00:04:02,800 --> 00:04:05,240
approached satellites going forward.

70
00:04:05,439 --> 00:04:07,960
Speaker 1: Right from that. Yeah, they lost contact with it. They

71
00:04:08,159 --> 00:04:09,280
didn't know what happened right now.

72
00:04:09,319 --> 00:04:11,560
Speaker 2: About three days before it was supposed to do its

73
00:04:11,680 --> 00:04:15,520
orbital insertion, they were powering things up. It looks like

74
00:04:15,560 --> 00:04:18,079
there was a problem with the fuel system and the

75
00:04:18,160 --> 00:04:22,240
vehicle exploded, which is unfortunate because it was a billion

76
00:04:22,319 --> 00:04:24,160
dollar mission. That's why I was flying on a Tight three.

77
00:04:24,199 --> 00:04:27,600
It was huge, wow, and they took all This is

78
00:04:27,639 --> 00:04:32,040
where a smaller, faster, cheaper comes from Dan Golden's idea

79
00:04:32,079 --> 00:04:35,759
where they take the replace the spare instruments from Mars Observer,

80
00:04:36,079 --> 00:04:39,240
they spread it across four other satellites that'll go to Mars,

81
00:04:39,720 --> 00:04:42,759
two of which will also fail, so at least some

82
00:04:42,800 --> 00:04:46,240
of the sensors will get to Mars successfully. But the

83
00:04:46,639 --> 00:04:51,560
building of these massive one off exploratory satellites will never

84
00:04:51,600 --> 00:04:56,560
happen again. They'll stay small after this. On the computing side,

85
00:04:56,680 --> 00:04:59,240
this is the year that Deck announces their Alpha CHIPPE

86
00:04:59,439 --> 00:05:03,120
sixty four bit risk processor. Yeah, it is one are

87
00:05:03,120 --> 00:05:06,399
the chips. They'll be supported by NT. When that's available,

88
00:05:06,519 --> 00:05:08,319
there will only be a MIT full of computers. A

89
00:05:08,360 --> 00:05:11,199
few different companies will buy the build these. Eventually, as

90
00:05:11,240 --> 00:05:15,199
Deck disappears, the alfship will be acquired by Compact, who

91
00:05:15,199 --> 00:05:18,439
will eventually phase it out in favor of the Intel

92
00:05:18,519 --> 00:05:22,480
Itanium chip that was wildly successful.

93
00:05:22,519 --> 00:05:24,040
Speaker 1: Winnos three one right.

94
00:05:23,959 --> 00:05:26,439
Speaker 2: Yeah, Windows three one comes out that year, which is

95
00:05:26,720 --> 00:05:30,120
a great year for that, and also Visual Basic two

96
00:05:30,560 --> 00:05:32,079
and VB for das.

97
00:05:32,759 --> 00:05:34,240
Speaker 1: I remember it's.

98
00:05:34,120 --> 00:05:37,839
Speaker 2: Also the year that Microsoft produces the Microsoft Developers and

99
00:05:37,839 --> 00:05:39,720
then Network MSDN.

100
00:05:40,040 --> 00:05:42,839
Speaker 1: Yeah. I was working at Cress and Software and writing

101
00:05:44,079 --> 00:05:48,519
with Q and a column for then before Visual Basic

102
00:05:48,560 --> 00:05:51,040
Programs Journal, I think it was called Basic Pro magazine.

103
00:05:51,600 --> 00:05:55,959
And we got called into a meeting with the guys

104
00:05:55,959 --> 00:05:59,240
at Microsoft on the on the Quick Basic team and

105
00:05:59,519 --> 00:06:04,720
Basic seven pds, and we were they were contemplating selling

106
00:06:04,720 --> 00:06:06,600
it to us, and they were like, what would you

107
00:06:06,639 --> 00:06:08,240
do with it? And we said, well, we just keep

108
00:06:08,279 --> 00:06:10,480
supporting it and blah blah blah, and then they said

109
00:06:10,519 --> 00:06:15,439
no and came out with VB DOS interesting, thus putting

110
00:06:15,439 --> 00:06:18,839
a nail in the coffin of Basic seven PDS. I

111
00:06:18,879 --> 00:06:22,199
think because there was no memory left over for your code.

112
00:06:22,319 --> 00:06:24,720
It was all filled with windowing stuff. Yeah.

113
00:06:24,839 --> 00:06:29,600
Speaker 2: Yeah, the overhead so large. Yeah. A couple other hardware tidbits.

114
00:06:29,920 --> 00:06:32,439
A company called sun Disc you now know them as

115
00:06:32,519 --> 00:06:37,000
sand Disc Manufacturers, the first solid state drive at SSD

116
00:06:37,639 --> 00:06:43,279
for IBM and sample quantities. Also, Intel introduces PCI, or

117
00:06:43,279 --> 00:06:45,759
peripheral component in your connects. So if you're talking about

118
00:06:45,800 --> 00:06:50,120
PCs back in the day, the original PC and XT

119
00:06:50,360 --> 00:06:54,120
had the eight bit PC bus. As the two eighty six,

120
00:06:54,199 --> 00:06:56,040
thir eighty six and forty six is come out, they

121
00:06:56,079 --> 00:06:59,759
released the sixteen bit ISA bus. They'll later be a

122
00:06:59,759 --> 00:07:03,439
bus called ESA, although it was not particularly popular. This

123
00:07:03,519 --> 00:07:06,240
is also the year that another replacement bus announced called

124
00:07:06,480 --> 00:07:12,079
Visa Local Bus, but nobody does this. PCI rapidly becomes

125
00:07:12,120 --> 00:07:14,839
the popular standard. It will later be replaced by both

126
00:07:14,920 --> 00:07:18,079
AGP in the late nineties, and then finally what we

127
00:07:18,160 --> 00:07:20,000
use today, PCI Express.

128
00:07:20,279 --> 00:07:24,879
Speaker 1: The first two words of toy boy PCI and AGP.

129
00:07:25,600 --> 00:07:26,079
There you go.

130
00:07:27,199 --> 00:07:31,000
Speaker 2: More Operating Systems OS two, the IBM Eparty system, the

131
00:07:31,000 --> 00:07:34,959
thirty two bit edition is released. Also, Linux is released

132
00:07:35,040 --> 00:07:40,040
under the GNU, which is canoes not Linux GPL license.

133
00:07:40,800 --> 00:07:45,319
So that's all the OS's I think. IBM puts out

134
00:07:45,319 --> 00:07:48,680
the very first think pad and from the very beginning

135
00:07:48,879 --> 00:07:52,240
with the track point pointer, the little rubber looks like

136
00:07:52,279 --> 00:07:54,600
a pencil eraser nub in the middle of the keyboard.

137
00:07:54,920 --> 00:07:57,120
From the very first version. And just so you know

138
00:07:57,160 --> 00:08:00,399
it's the first version. The display on this laptop is

139
00:08:00,600 --> 00:08:04,079
ten inches and it's a TFT LCD.

140
00:08:05,079 --> 00:08:07,079
Speaker 1: I want it so bad, couldn't afford one.

141
00:08:07,160 --> 00:08:09,959
Speaker 2: They weren't. They're a big deal, last piece of hardware,

142
00:08:09,959 --> 00:08:11,920
and I want to pull a couple of software ones.

143
00:08:13,160 --> 00:08:19,439
Apple CEO John Scully announces the Newton, calling it a

144
00:08:19,560 --> 00:08:23,240
Personal Digital Assistant a PDA. It won't actually start shipping

145
00:08:23,240 --> 00:08:25,279
on nineteen ninety three, and it'll be dead by nineteen

146
00:08:25,319 --> 00:08:27,639
ninety seven. But you know that's the beginning of that.

147
00:08:27,720 --> 00:08:29,439
Speaker 1: Well, you know, it wouldn't have been bad, but it

148
00:08:29,480 --> 00:08:31,480
only came in one flavor fig.

149
00:08:32,840 --> 00:08:35,320
Speaker 2: But you had to learn how their language for how

150
00:08:35,360 --> 00:08:39,200
to draw on it, right. Yeah, they couldn't read regular handwriting.

151
00:08:39,799 --> 00:08:41,879
On the Internet side of things, This is the year

152
00:08:41,919 --> 00:08:45,919
that the Joint Photographic Experts Group standardizes and image format

153
00:08:45,960 --> 00:08:49,759
we know as JPEG. Yeah, and a guy named Mark

154
00:08:49,919 --> 00:08:53,720
Cahill coins the term surfing the Internet right, and two

155
00:08:53,759 --> 00:08:57,480
pieces of a software past the Language of Stuff. ID

156
00:08:57,600 --> 00:09:01,879
Software releases Cassel Wolfenstein. Oh Yeah, and Adobe puts out

157
00:09:01,879 --> 00:09:04,480
a Photoshop two point five, which is not that big

158
00:09:04,480 --> 00:09:07,279
of a deal except it's the first version released for Windows.

159
00:09:07,519 --> 00:09:07,919
Speaker 1: Nice.

160
00:09:08,120 --> 00:09:08,799
Speaker 2: That's all I got.

161
00:09:08,960 --> 00:09:11,759
Speaker 1: Well, let's talk about the top ten albums nineteen ninety two.

162
00:09:11,799 --> 00:09:16,960
I'll make it quick, Sonic Youth's Dirty Album. Popular singles

163
00:09:17,000 --> 00:09:24,519
are one in Sugarcane, Countdown to Extinction by Megadeth. The

164
00:09:24,600 --> 00:09:28,960
popular singles there Symphony of Destruction, Sweating Bullets. Mary J.

165
00:09:29,159 --> 00:09:32,639
Blige put out What's the four to one one? Real

166
00:09:32,720 --> 00:09:37,759
Love You Remind me, Sweet Thing, the Bodyguard, Whitney Houston.

167
00:09:38,120 --> 00:09:40,840
I will always love you. I'm every woman and run

168
00:09:40,840 --> 00:09:43,679
to you. Who could forget Whitney? She was so good

169
00:09:43,879 --> 00:09:48,000
that she had an amazing year. Two Yeah, Billy Ray

170
00:09:48,000 --> 00:09:51,159
Cyrus Achy, Breaky Heart Lord, that's.

171
00:09:51,039 --> 00:09:52,480
Speaker 3: The one I wanted you to not miss if you

172
00:09:52,559 --> 00:09:54,600
hadn't got that when I was gonna jump in with

173
00:09:54,639 --> 00:09:55,120
that ache.

174
00:09:55,120 --> 00:09:58,879
Speaker 1: Breaky Heart was that year number six. I think that

175
00:09:59,000 --> 00:10:01,600
might have kicked off the line dancing craze. I'm not

176
00:10:01,639 --> 00:10:04,759
sure if it was going strong before that. The album,

177
00:10:04,799 --> 00:10:09,759
of course, is called Sun Gave All Pearl Jam Wow,

178
00:10:09,960 --> 00:10:16,200
some great singles, Jeremy Alive. Even Flow ten was the

179
00:10:16,840 --> 00:10:21,799
nineteen ninety two fifth most popular album of that year.

180
00:10:22,320 --> 00:10:27,159
You two's Aktung Baby Huge, Huge in nineteen ninety two

181
00:10:28,720 --> 00:10:33,320
one mysterious ways, even better than the real thing. Who's

182
00:10:33,360 --> 00:10:40,279
going to Ride Your Wild Horses? Yeah? So goodrim Automatic

183
00:10:40,320 --> 00:10:44,039
for the people. Everybody hurts Man on the Moon Drive,

184
00:10:44,279 --> 00:10:51,000
The Sidewinder Sleeps Tonight, amazing album. The chronic by Doctor

185
00:10:51,080 --> 00:10:55,039
Dre absolutely a smash hit. This is number two, Nothing

186
00:10:55,120 --> 00:10:58,159
but a g Thang Dre Day and Let Me Ride

187
00:10:58,279 --> 00:11:01,639
or the singles, and the number one album of nineteen

188
00:11:01,720 --> 00:11:07,519
ninety two, Eric Clapton Unplugged, Awesome, Tears in Heaven, Acoustic Layla,

189
00:11:07,919 --> 00:11:12,240
all those great songs he just cleaned up in nineteen

190
00:11:12,279 --> 00:11:16,440
ninety two. So anyway, that's that's it for our reminiscing.

191
00:11:16,559 --> 00:11:18,960
I guess we should go on to better No Framework

192
00:11:19,159 --> 00:11:27,720
awesome all right?

193
00:11:27,720 --> 00:11:27,840
Speaker 3: Man?

194
00:11:27,840 --> 00:11:28,440
Speaker 1: When he got.

195
00:11:30,519 --> 00:11:31,720
Speaker 2: Oh, what's t unit.

196
00:11:32,320 --> 00:11:34,480
Speaker 1: Well, I'll tell you it's not. Tune it.

197
00:11:37,840 --> 00:11:38,159
Speaker 4: To it.

198
00:11:38,720 --> 00:11:39,159
Speaker 2: I don't know.

199
00:11:39,360 --> 00:11:42,759
Speaker 1: Yeah, tu n it t it's a modern testing framework

200
00:11:42,799 --> 00:11:46,879
for dot net that uses source generated tests. Ooh, it's

201
00:11:47,000 --> 00:11:51,279
parallel by default, parallel execution, and it has native AOT

202
00:11:51,440 --> 00:11:56,440
support built on Microsoft Testing platform. Is faster than traditional

203
00:11:56,440 --> 00:12:00,320
reflection based frameworks and gives you more control over how

204
00:12:00,360 --> 00:12:03,879
your tests run. And more importantly, our friend Simon Kropp

205
00:12:04,559 --> 00:12:08,480
loves it. Okay, however, he asked us, by us, I

206
00:12:08,600 --> 00:12:12,159
mean the guys in the app nex slack, who's running

207
00:12:12,159 --> 00:12:15,519
tea unit? And the answer was, what's t unit? Nice?

208
00:12:16,039 --> 00:12:18,639
Speaker 2: I think that was my line?

209
00:12:19,399 --> 00:12:23,600
Speaker 1: What's that? So there you go know it? Learned it?

210
00:12:23,639 --> 00:12:23,879
Speaker 2: Love it?

211
00:12:23,960 --> 00:12:24,120
Speaker 3: Well?

212
00:12:24,679 --> 00:12:26,600
Speaker 2: Well, if it's doors by Simon Crop, you should pay

213
00:12:26,600 --> 00:12:27,200
attention to it.

214
00:12:27,399 --> 00:12:30,080
Speaker 1: Absolutely. Yeah. So who's talking to us today?

215
00:12:30,159 --> 00:12:32,960
Speaker 2: Richard Grounded kamin Offer Show nineteen eighty eight, not that

216
00:12:33,000 --> 00:12:35,039
far back with our friend Jason Bach talking a little

217
00:12:35,039 --> 00:12:37,440
bit about dot net source generators. You can see a

218
00:12:37,519 --> 00:12:42,720
theme here and our recent also guest Schmooley Engelard said, first,

219
00:12:42,840 --> 00:12:46,120
I need to share that I have metaprogramming dot net.

220
00:12:46,120 --> 00:12:48,720
That's Jason's book and I love it so much. Two

221
00:12:48,799 --> 00:12:51,960
important things I wanted to share. First, the source code

222
00:12:52,000 --> 00:12:55,720
generated by source generators is read only. You cannot change them.

223
00:12:56,120 --> 00:12:58,480
And second, for me, one of the easy ways to

224
00:12:58,519 --> 00:13:00,799
know if I may want a source is if I

225
00:13:00,960 --> 00:13:03,440
was in C plus plus, would I be writing a

226
00:13:03,440 --> 00:13:05,799
template or a macro? Interesting?

227
00:13:06,000 --> 00:13:08,519
Speaker 1: I think you'd be asking co pilot to write it for.

228
00:13:08,559 --> 00:13:16,120
Speaker 2: You bylus by stepping that whole process comments two weeks old,

229
00:13:16,200 --> 00:13:17,120
it's already had a date.

230
00:13:17,399 --> 00:13:18,399
Speaker 3: Yeah, yeah.

231
00:13:18,600 --> 00:13:24,840
Speaker 2: Jason actually responded to Schmooley's comment and said and thanked

232
00:13:24,879 --> 00:13:27,600
him for the nice comments and said, you write sorce

233
00:13:27,639 --> 00:13:30,360
generator gen codes. He is read only. Also, other source

234
00:13:30,360 --> 00:13:32,879
generates can't react to code created by a source generator,

235
00:13:33,519 --> 00:13:35,360
so smoothly, thank you so much for your comment and Comedy

236
00:13:35,360 --> 00:13:36,600
of music codey is on its way to you. And

237
00:13:36,639 --> 00:13:38,120
if you'd like a copy of music Code by I

238
00:13:38,120 --> 00:13:39,799
write a comment on the website at dot a rock

239
00:13:39,840 --> 00:13:41,679
saw Comma on the Facebook, so we publish every show

240
00:13:41,679 --> 00:13:43,000
there and if you comment there and not read it

241
00:13:43,000 --> 00:13:44,679
on the show, we'll send you copy of music Code.

242
00:13:44,720 --> 00:13:47,519
Speaker 1: I'm pretty sure Schmooley already has a copy of Music

243
00:13:47,519 --> 00:13:48,200
to Code Vibe.

244
00:13:48,240 --> 00:13:49,679
Speaker 2: I hope so, I would think.

245
00:13:49,720 --> 00:13:51,759
Speaker 1: But if you don't want to leave a comment, you

246
00:13:51,799 --> 00:13:53,240
just want to buy it, you can go to music

247
00:13:53,279 --> 00:13:57,320
to codebuy dot Net. There's twenty two tracks approximately twenty

248
00:13:57,320 --> 00:14:02,799
five minutes long, perfect for coding, and it helps you

249
00:14:02,879 --> 00:14:08,759
stay in that state of flow. And with that, let

250
00:14:08,840 --> 00:14:11,759
us bring back to the show Kathleen Dollard. She calls

251
00:14:11,759 --> 00:14:15,360
herself a dot net connoisseur. She's certainly seen a lot

252
00:14:15,399 --> 00:14:19,480
of code as a long time teacher and consultant as

253
00:14:19,559 --> 00:14:22,960
well as nearly eight years at Microsoft. Transitions are tough,

254
00:14:23,039 --> 00:14:25,960
but she's ready for the next big adventure. And welcome

255
00:14:26,000 --> 00:14:28,279
back to the show. Kathleen. It's been a while, but

256
00:14:28,440 --> 00:14:30,879
you have been a frequent guest here over the years.

257
00:14:30,960 --> 00:14:31,159
Speaker 2: Yeah.

258
00:14:31,200 --> 00:14:33,320
Speaker 3: I'm not sure how many I've done. It's been a lot,

259
00:14:33,360 --> 00:14:36,320
but it has been a while. It maybe two years.

260
00:14:36,360 --> 00:14:38,960
It's really been a little while, so I'm thrilled to

261
00:14:38,960 --> 00:14:39,799
be back. It's great.

262
00:14:39,919 --> 00:14:42,440
Speaker 2: Well, and you were on seventeen hundred, which was our

263
00:14:42,679 --> 00:14:45,200
collection of guests who've been on the most.

264
00:14:46,039 --> 00:14:47,360
Speaker 3: Yeah, yeah, yeah, yeah, yeah.

265
00:14:47,759 --> 00:14:49,639
Speaker 2: You know, if you're in that, there's a pretty clear

266
00:14:49,720 --> 00:14:51,679
sign you've done to manybody. Yeah, last one was four

267
00:14:51,759 --> 00:14:53,600
years ago when we were talking about C sharp eleven.

268
00:14:53,720 --> 00:14:59,919
Speaker 3: Oh four, Oh my, oh wow, that's crazy, that's crazy.

269
00:15:00,360 --> 00:15:02,480
So I did think the fact that I've been a

270
00:15:02,480 --> 00:15:06,000
bit out of touch probably is partially because, you know,

271
00:15:06,120 --> 00:15:08,600
life got pretty intense the last two years that I

272
00:15:08,720 --> 00:15:13,519
was in Microsoft. We were running really short staffed. So

273
00:15:13,559 --> 00:15:15,000
what do you do when you're short staffed? Do you

274
00:15:15,039 --> 00:15:21,519
let people off? So so the PMT was short staffed,

275
00:15:21,559 --> 00:15:24,519
and I think, I think we didn't. It was very

276
00:15:24,519 --> 00:15:27,120
hard to focus on what was important because there was

277
00:15:27,159 --> 00:15:30,360
so much, so much going on, and then I left

278
00:15:30,399 --> 00:15:33,519
Microsoft in May with the layoffs, which broke my heart.

279
00:15:33,840 --> 00:15:37,120
It's my job, my dream job. And the funny thing

280
00:15:37,200 --> 00:15:39,279
is the same day. It's not funny, but it was good.

281
00:15:40,039 --> 00:15:42,960
The same day, about two hours before they laid me off,

282
00:15:43,399 --> 00:15:45,440
I found out that I probably had cancer. And so

283
00:15:46,039 --> 00:15:47,840
it sounds like a terrible day. You go, oh my god,

284
00:15:47,840 --> 00:15:50,360
what a bad day. Oh, but no, if you can

285
00:15:50,399 --> 00:15:52,679
imagine what would have happened if those things had happened

286
00:15:52,679 --> 00:15:55,240
two weeks apart, and we had this life changing event

287
00:15:55,639 --> 00:15:58,440
and you just got used to it. You just had

288
00:15:58,480 --> 00:16:01,200
your plan, and then the other and dropped. That would

289
00:16:01,200 --> 00:16:03,799
have been horrible. I'm so grateful that I didn't have

290
00:16:03,840 --> 00:16:06,799
a moment where I saw my life without these two

291
00:16:06,840 --> 00:16:09,679
things crashing on together. It was such a blessing because

292
00:16:09,759 --> 00:16:12,720
I didn't have to worry about, Oh, I've got new plans,

293
00:16:12,720 --> 00:16:15,399
and now these new hard plans are destroyed. So the

294
00:16:15,440 --> 00:16:20,159
good news is that it was a very well behaved cancers.

295
00:16:20,279 --> 00:16:25,320
Cancer as cancer goes, and so I am now. I

296
00:16:25,399 --> 00:16:29,399
go back for some checkups next next weekend. I basically

297
00:16:29,720 --> 00:16:32,320
should be cancer free at this point. It was a

298
00:16:32,360 --> 00:16:33,960
tough it was a tough six months. It was a

299
00:16:34,000 --> 00:16:37,279
tough six months, six eight months. But it's you know,

300
00:16:37,399 --> 00:16:39,600
I've got my energy back and I'm ready to go,

301
00:16:39,840 --> 00:16:40,879
and so sure.

302
00:16:41,240 --> 00:16:43,679
Speaker 1: The stress of leaving Microsoft didn't help.

303
00:16:43,720 --> 00:16:48,519
Speaker 3: Well, Yes, and no, I worry a lot about how

304
00:16:48,559 --> 00:16:50,600
I would have coped if I'd had the stress of

305
00:16:50,639 --> 00:16:55,120
being at Microsoft doing that. It was I mean, I

306
00:16:55,120 --> 00:16:57,080
loved my job. I love the people I worked with there.

307
00:16:57,720 --> 00:16:59,679
I don't want to I'm missaying anything bad about it

308
00:17:00,120 --> 00:17:03,559
up that it is. It is not an easy place.

309
00:17:03,799 --> 00:17:05,960
It's not an easy place to work. It's a hard

310
00:17:06,000 --> 00:17:10,079
place to work, very intense, very intense yeah, I loved it,

311
00:17:10,400 --> 00:17:14,039
but moving on to other things and so.

312
00:17:14,079 --> 00:17:17,319
Speaker 1: Yeah, greener pastures, Yeah, I hope so think So so

313
00:17:18,119 --> 00:17:20,599
what's what's charging your batteries these days?

314
00:17:20,839 --> 00:17:22,880
Speaker 3: Well, there's what's charging my batteries and what you know.

315
00:17:22,880 --> 00:17:25,839
I'm kind of setting out towards doing I do eventually

316
00:17:25,880 --> 00:17:27,599
have to do something else. I mean, you know, it's

317
00:17:27,799 --> 00:17:29,400
it's it was good to take some time off and

318
00:17:29,400 --> 00:17:31,519
be able to focus on my health, but kind of

319
00:17:31,559 --> 00:17:33,599
done with that right now. So the kind of two

320
00:17:33,599 --> 00:17:37,119
big areas. One is c sharp with sort of a

321
00:17:37,359 --> 00:17:40,279
kind of a new vision for the way we talk

322
00:17:40,319 --> 00:17:43,119
about c sharp because it's a new world out there.

323
00:17:43,240 --> 00:17:45,000
And the second is I'm very into clize and I

324
00:17:45,000 --> 00:17:46,680
don't know which one you want to talk about first.

325
00:17:47,119 --> 00:17:49,799
So first of all, clize is the thing you type

326
00:17:49,799 --> 00:17:51,759
when you type in something like dot nit built. That's

327
00:17:51,799 --> 00:17:54,000
what we're talking about, is what you type at the cursor.

328
00:17:54,319 --> 00:17:56,279
So I want to make sure that everybody's on board

329
00:17:56,319 --> 00:17:59,640
with what we're talking about. And it's an amazing space.

330
00:17:59,680 --> 00:18:02,880
It's just I've been involved in it since I joined Microsoft,

331
00:18:02,880 --> 00:18:06,880
which nine and a half years ago, because I went

332
00:18:06,960 --> 00:18:10,680
in there just being a goodie person and they decided that.

333
00:18:10,880 --> 00:18:12,480
So because of that, I should run the dt at

334
00:18:12,480 --> 00:18:15,440
CLI and SDK because I'd have a good appreciation for

335
00:18:15,519 --> 00:18:18,519
people who didn't have that as their first, you know,

336
00:18:18,799 --> 00:18:20,720
place of comment, which I think was great. So I

337
00:18:20,799 --> 00:18:23,240
learned a whole lot, really fell in love with space

338
00:18:23,279 --> 00:18:26,680
because I'm not language geek from way way, way way

339
00:18:26,720 --> 00:18:30,960
back way back into at least at least nineteen ninety two.

340
00:18:31,920 --> 00:18:35,319
And as a language geek, I love dsl's. I love

341
00:18:35,359 --> 00:18:38,519
the ability to express what you care about in a language.

342
00:18:38,759 --> 00:18:41,119
And there's many places that's not a good choice, but

343
00:18:41,200 --> 00:18:43,640
that's what a CLI is. You get to build your

344
00:18:43,640 --> 00:18:46,599
own DSL and you get to do it within a framework.

345
00:18:46,680 --> 00:18:48,960
It's like a sonnet instead of a free verse.

346
00:18:49,039 --> 00:18:51,400
Speaker 1: All right, Just for the one person who didn't understand

347
00:18:51,400 --> 00:18:55,000
the acronym CLI command line interface. If the DSL domain

348
00:18:55,160 --> 00:18:56,839
specific language.

349
00:18:56,400 --> 00:18:59,480
Speaker 3: Thank you, and demain specific language just means that you're

350
00:18:59,519 --> 00:19:03,000
making up up the aspects of it. Now you generally

351
00:19:03,000 --> 00:19:04,960
don't make up the syntax. It's not only with the

352
00:19:05,000 --> 00:19:07,359
CLI where you don't get full control of the syntax,

353
00:19:07,559 --> 00:19:09,720
but you have control of the semantics. So if we

354
00:19:09,839 --> 00:19:12,480
just look at this CLI that most people listening to

355
00:19:12,519 --> 00:19:15,839
this will know something about well, there's two Get and

356
00:19:15,880 --> 00:19:17,880
dot net would be the two most people listening to

357
00:19:17,880 --> 00:19:20,680
this will have probably used. And so when you say

358
00:19:20,759 --> 00:19:25,839
dot net space build, there's code written that takes dot

359
00:19:25,920 --> 00:19:29,240
Net to say that's executable and build that's what we're

360
00:19:29,240 --> 00:19:32,440
working on, and then takes all sorts of other things,

361
00:19:32,440 --> 00:19:36,759
like you might have configuration, and configuration would be dash,

362
00:19:36,920 --> 00:19:40,799
dash config or h C and those rules are set

363
00:19:40,799 --> 00:19:43,839
out and something called the PASIC standard, which is ancient,

364
00:19:44,200 --> 00:19:46,880
absolutely ancient, and so one of the things that I

365
00:19:46,920 --> 00:19:49,160
didn't have a chance to do while I was at Microsoft.

366
00:19:49,200 --> 00:19:51,880
It was on my plate, it was on somebody else's plate,

367
00:19:52,000 --> 00:19:53,480
And now I'm like, you know, I might find time

368
00:19:53,559 --> 00:19:57,359
for that is to actually do some updating to that standard,

369
00:19:57,359 --> 00:20:00,160
to say this is what we do. And like the

370
00:20:00,200 --> 00:20:04,400
areas that's worth conversation is how we use abbreviations, because

371
00:20:05,200 --> 00:20:09,720
dash F is in Frank is my favorite one to

372
00:20:09,759 --> 00:20:13,839
talk about because it regularly means two different things and

373
00:20:13,839 --> 00:20:17,559
they're just a teeny bit different. One is dash dash

374
00:20:17,680 --> 00:20:22,000
force and the other is dash dash format. So if

375
00:20:22,039 --> 00:20:24,880
you're merely thinking this should have a format, and you

376
00:20:24,960 --> 00:20:27,599
go dash F to a command that you really didn't

377
00:20:27,599 --> 00:20:30,519
want to do a dash dash force too. There you go.

378
00:20:30,799 --> 00:20:32,720
So I think that there's some things that we want

379
00:20:32,759 --> 00:20:35,799
to talk about. There's also a lot of orthogonal things.

380
00:20:35,799 --> 00:20:38,519
Help has not been updated since the initial POSIC standard

381
00:20:38,519 --> 00:20:41,240
in any real way, and now we have these spectacular

382
00:20:41,279 --> 00:20:45,000
tools like spector Console where we can really make beautiful things.

383
00:20:45,359 --> 00:20:48,440
And happily I am still closely in touch with the

384
00:20:48,720 --> 00:20:52,400
net stycancel It team, and hopefully I will now be

385
00:20:52,480 --> 00:20:56,640
on the outside pushing in my ideas and thoughts the

386
00:20:56,680 --> 00:20:59,200
same way I did before I joined Microsoft as an MVP.

387
00:21:00,200 --> 00:21:03,160
An MVP for twenty years during Microsoft got to work

388
00:21:03,160 --> 00:21:05,720
on the inside. Now I'm the outside setting up the

389
00:21:06,119 --> 00:21:07,839
conduits in the ways that I can work on the

390
00:21:07,839 --> 00:21:11,039
outside and make a difference. So that's kind of what

391
00:21:11,079 --> 00:21:11,880
I'm doing now.

392
00:21:12,319 --> 00:21:15,119
Speaker 2: The POSIC standards comes into playing the sense that POSEIKS

393
00:21:15,160 --> 00:21:19,039
says to dash is word rather than just like dash

394
00:21:19,079 --> 00:21:20,599
out would be dash dash force.

395
00:21:21,279 --> 00:21:25,319
Speaker 3: Yes, right, So the POSEK standard is all these little details,

396
00:21:25,559 --> 00:21:28,640
and it's actually a good standard because it's relatively consumable.

397
00:21:29,799 --> 00:21:32,880
So if you have something that needs a name, then

398
00:21:33,119 --> 00:21:35,079
you can think of as a named parameter versus an

399
00:21:35,160 --> 00:21:38,400
unnamed parameter. So a named parameter in poseis it is

400
00:21:38,440 --> 00:21:40,480
going to be dash, dash and then the word. But

401
00:21:40,559 --> 00:21:44,160
it may be abbreviated if it's a boolean flag as

402
00:21:44,400 --> 00:21:47,640
just dash and then the letter. So I guess format's

403
00:21:47,680 --> 00:21:49,240
a bad example. I'm gonna have to find another one

404
00:21:49,240 --> 00:21:51,599
because it would not be a bullion. So you might

405
00:21:51,680 --> 00:21:55,359
think that abbreviation worked, but it generally wouldn't because probably

406
00:21:55,480 --> 00:21:57,839
format wouldn't be a bullion. It only works at bulliants.

407
00:21:57,839 --> 00:21:59,799
Is one of the things I think it's worth another look.

408
00:22:00,079 --> 00:22:03,119
I think I also come to the conclusion that we

409
00:22:03,160 --> 00:22:05,039
can do it dot net. We don't have to change

410
00:22:05,039 --> 00:22:07,839
the whole world. But the other thing up on that

411
00:22:07,920 --> 00:22:12,680
front is open CLI. Because the other really exciting thing

412
00:22:12,920 --> 00:22:15,720
in addition to you can write this little language to

413
00:22:15,759 --> 00:22:18,400
help the people you work with, which people they're writing

414
00:22:18,400 --> 00:22:20,759
CLIs to do regularly do it. They just may not

415
00:22:20,799 --> 00:22:23,480
think of it that way. The other thing is that

416
00:22:23,720 --> 00:22:27,519
you're writing for AI and in today's world, one of

417
00:22:27,559 --> 00:22:32,079
the really easy ways to set out what you offer

418
00:22:32,799 --> 00:22:37,039
as consumable without making it a service and without having

419
00:22:37,079 --> 00:22:39,319
to stand it up in that way. So it's just

420
00:22:39,359 --> 00:22:41,720
within your organization, it's just go out and find this

421
00:22:41,839 --> 00:22:46,759
executable on our local stores wherever it is. Then you

422
00:22:46,799 --> 00:22:49,680
can write that and have it be available to AI

423
00:22:50,160 --> 00:22:53,200
via the CLI. And there's a standard that's called the

424
00:22:53,240 --> 00:22:56,680
open CLI standard that Patrick Spenson is I know about

425
00:22:56,720 --> 00:22:59,200
it through Patrick Spenson, but there may be some other

426
00:22:59,559 --> 00:23:01,279
I know there's other people are that are involved in that,

427
00:23:01,640 --> 00:23:03,599
but that hopefully will be not just on it, that

428
00:23:03,640 --> 00:23:05,559
will hopefully be across the entire space.

429
00:23:05,880 --> 00:23:09,839
Speaker 1: It couras to me that dsls have kind of been

430
00:23:09,880 --> 00:23:13,960
replaced by these large language models. Maybe I don't know,

431
00:23:14,240 --> 00:23:17,519
it would seem that you could use a large language

432
00:23:17,519 --> 00:23:20,960
model in the case of you know, where you would

433
00:23:21,000 --> 00:23:22,000
have a DSL before.

434
00:23:22,359 --> 00:23:27,559
Speaker 3: Well. Possibly, I think that we are just so much

435
00:23:27,759 --> 00:23:31,759
at the top of the ski slope or avalanche, or

436
00:23:32,279 --> 00:23:35,240
just at the beginning that we have no idea. I mean,

437
00:23:35,279 --> 00:23:37,319
I think we're like, I don't know what year we

438
00:23:37,319 --> 00:23:40,119
would pick. I don't think it'd be nineteen ninety two

439
00:23:40,839 --> 00:23:43,720
in the Internet world, But you know, we're so much

440
00:23:43,839 --> 00:23:45,920
at that beginning. I don't think we have any idea.

441
00:23:46,039 --> 00:23:50,599
But another possibility, the one I think is more likely,

442
00:23:51,079 --> 00:23:53,720
is that dsls will feed AI, so that AI is

443
00:23:53,759 --> 00:23:57,000
more likely to use a DSL on a thing that

444
00:23:57,119 --> 00:24:00,400
is done well and piece things that are done well together.

445
00:24:00,519 --> 00:24:02,400
I think that that is more likely to be the

446
00:24:02,440 --> 00:24:05,319
place we land when we realize that when I ask

447
00:24:05,359 --> 00:24:09,240
for something in chat in my browser, it doesn't matter

448
00:24:09,279 --> 00:24:11,920
if it's one hundred percent correct. But when I run

449
00:24:11,960 --> 00:24:15,759
a program, especially one that does money or health or

450
00:24:15,799 --> 00:24:18,279
any one of a number of different things, it matters

451
00:24:18,400 --> 00:24:21,200
that it works well and it's relatively fast. And so

452
00:24:21,319 --> 00:24:24,119
I think that we're more likely to see a really

453
00:24:24,160 --> 00:24:26,680
good merging of these spaces. But I don't know. You

454
00:24:26,720 --> 00:24:30,400
may be right. It could be that you know, the

455
00:24:30,440 --> 00:24:34,039
code does get enough better that we don't have those problems.

456
00:24:34,319 --> 00:24:36,559
Speaker 2: It's funny because I was just thinking, I don't normally

457
00:24:36,599 --> 00:24:39,880
type dot net build. I run a script that has

458
00:24:39,920 --> 00:24:41,920
dot net build in it, and a bunch of other

459
00:24:42,000 --> 00:24:42,599
steps too.

460
00:24:42,680 --> 00:24:46,720
Speaker 3: Because repeatability, yes, absolutely, And that's one of the great

461
00:24:46,720 --> 00:24:50,960
things about clized is they're so easily scriptable. And there's

462
00:24:51,279 --> 00:24:55,119
two projects, ones out and ones in process in terms

463
00:24:55,119 --> 00:24:57,119
of how you build them, and they both really relate

464
00:24:57,160 --> 00:25:00,359
to scripts, and one of them is system command, which

465
00:25:00,440 --> 00:25:04,240
is a parser in dot Netlin. Microsoft has it, which

466
00:25:04,240 --> 00:25:07,440
I worked on for seven years in beta, tremendously painful

467
00:25:07,440 --> 00:25:11,079
experience because we did not have support and management. Finally,

468
00:25:11,119 --> 00:25:14,200
with millions and millions of downloads that weren't from Microsoft

469
00:25:14,240 --> 00:25:16,960
because they had a different store, they finally said, I

470
00:25:17,000 --> 00:25:19,880
guess we should do something and release this. So the

471
00:25:19,920 --> 00:25:22,240
right people got on board and it got released. So

472
00:25:22,279 --> 00:25:24,559
that was that was that's great?

473
00:25:24,839 --> 00:25:26,319
Speaker 2: Was that that was dot net cli.

474
00:25:26,799 --> 00:25:28,640
Speaker 3: No, no, no, no, dot is cli has been out forever.

475
00:25:28,839 --> 00:25:31,960
The parser that runs it, the parser uses is called

476
00:25:32,000 --> 00:25:34,359
system command Line. So if you want to write your

477
00:25:34,359 --> 00:25:38,119
own CLI, do not do not. Do not do not

478
00:25:38,480 --> 00:25:40,599
write your own parser. It will be bad. I just

479
00:25:40,680 --> 00:25:46,119
tell you it's tremendously difficult to I know absolutely, it's

480
00:25:46,160 --> 00:25:49,599
tremendously difficult. I know how much time and pain and

481
00:25:49,680 --> 00:25:53,000
love and wisdom went into System Commandment parser. Use it,

482
00:25:53,160 --> 00:25:56,480
or if you'd like Patrick Finson's console, better use use

483
00:25:56,519 --> 00:25:57,960
it if you want to. There's a couple out there

484
00:25:57,960 --> 00:26:01,559
that also are pretty good that they have. There's there's

485
00:26:01,599 --> 00:26:05,160
subtle standards within the dot neit ecosystem that people actually

486
00:26:05,200 --> 00:26:08,039
probably will expect. So it really is a good idea

487
00:26:08,200 --> 00:26:11,079
to use that that went into full release in November.

488
00:26:11,400 --> 00:26:14,440
So yeah, all the everybody that was involved in that

489
00:26:14,480 --> 00:26:18,519
three cheers. Some real heroes in that story because they

490
00:26:18,759 --> 00:26:22,079
it was it was really fighting up a hill, so

491
00:26:22,400 --> 00:26:23,400
really big heroes.

492
00:26:23,480 --> 00:26:26,480
Speaker 2: So it was always an internal library then, and it

493
00:26:26,480 --> 00:26:28,079
was never meant to be a public.

494
00:26:27,880 --> 00:26:29,839
Speaker 3: No no, no, no no, no, just the opposite. It

495
00:26:29,920 --> 00:26:33,799
started as an open source public library that we did

496
00:26:33,839 --> 00:26:36,599
with the community. John and I did it. What happened

497
00:26:36,640 --> 00:26:38,680
is I did dot Tools. I was the PM for

498
00:26:38,720 --> 00:26:41,119
dot neit tools, and when we released dot neit Tools

499
00:26:41,119 --> 00:26:43,960
and I sat down and I wrote my little samples

500
00:26:43,960 --> 00:26:47,200
and stuff. I just wanted to cry because even for

501
00:26:47,240 --> 00:26:51,680
a completely crappy parser, over half my code was Parson code.

502
00:26:51,720 --> 00:26:53,759
It wasn't anything to do with what I wanted to do.

503
00:26:53,839 --> 00:26:56,079
It was all just this crap Parson code that I

504
00:26:56,160 --> 00:26:58,519
did not want to write. And so I went to

505
00:26:58,720 --> 00:27:02,960
start asking around who can and John Squero said I

506
00:27:03,119 --> 00:27:04,960
might be interested in that, And I don't know if

507
00:27:04,960 --> 00:27:07,160
he's forgiven me yet because it was a really painful

508
00:27:07,160 --> 00:27:10,759
seven years for all of us and the So anyway,

509
00:27:11,200 --> 00:27:13,119
we've got it out now. So there is a good

510
00:27:13,160 --> 00:27:17,279
parser out from Microsoft. You know, it's fast, it's it's great,

511
00:27:17,319 --> 00:27:21,279
it's it's wonderful. I don't think it has a good

512
00:27:21,359 --> 00:27:24,920
U either for the for the programmer. I actually think

513
00:27:24,920 --> 00:27:30,400
it's terrible. So I was in Prague at Update conference

514
00:27:30,519 --> 00:27:32,480
and I stepped on stage. I'm so excited. I said, Oh,

515
00:27:32,480 --> 00:27:34,720
this is just nearly released. Everybody go take a look

516
00:27:34,720 --> 00:27:37,119
at this, and I'm showing examples of it. I'm going

517
00:27:37,160 --> 00:27:39,759
we're still writing a bunch of code that we have

518
00:27:39,839 --> 00:27:42,559
to learn about. It's interesting, just do it. So I'm

519
00:27:42,559 --> 00:27:45,319
working on a side project and if it is interested,

520
00:27:45,400 --> 00:27:48,720
it's get hug Kathleen Dollar. Dragon Fruit Too is the

521
00:27:48,799 --> 00:27:51,480
name of it. If you're a System command Line fan,

522
00:27:51,839 --> 00:27:54,359
you know what dragon Fruit is. This is the next generation.

523
00:27:55,240 --> 00:27:58,160
It does subcommands and the things we've wanted in the

524
00:27:58,240 --> 00:28:01,240
dragon Fruit which is now gone. That's not part of

525
00:28:01,319 --> 00:28:05,240
the released System command Line. So that is going to

526
00:28:05,240 --> 00:28:08,200
be able to restate what we can do in CLIs

527
00:28:08,400 --> 00:28:09,640
you talked about scripting.

528
00:28:09,799 --> 00:28:10,720
Speaker 1: What is dragon Fruit.

529
00:28:10,880 --> 00:28:13,400
Speaker 3: It's a rapper for System command Line that gives it

530
00:28:13,400 --> 00:28:16,079
a good UI. It lets you do a single create

531
00:28:16,079 --> 00:28:19,319
your entire CLI with classes that are familiar to you

532
00:28:19,759 --> 00:28:23,640
and they're basically DTOs. It wraps system command line and

533
00:28:23,680 --> 00:28:27,279
a dto that that's a data transfer object. It's a

534
00:28:27,319 --> 00:28:30,839
simple little object. So it just marries those two together

535
00:28:30,920 --> 00:28:34,319
unless you write your CLI very very easily. So that's

536
00:28:34,559 --> 00:28:36,480
the main goal, but it also will allow you to

537
00:28:36,519 --> 00:28:39,680
extend it because it's open and we've got lots of

538
00:28:39,680 --> 00:28:42,759
things in there, like better defaults. And you were talking

539
00:28:42,799 --> 00:28:47,160
about scripting Richard, which if you know what you're talking,

540
00:28:47,200 --> 00:28:50,039
if you know those commands, you already know them, then

541
00:28:50,039 --> 00:28:53,079
it's very easy to redescript. If you don't know those commands,

542
00:28:53,200 --> 00:28:57,079
it's very hard to redescript because there's things like I

543
00:28:57,119 --> 00:29:00,920
talked about named and unnamed arguments. There's a huge use

544
00:29:01,039 --> 00:29:05,480
of unnamed arguments within CLIs and that's a good thing

545
00:29:05,519 --> 00:29:08,319
if you're typing less to type. It's a very bad

546
00:29:08,359 --> 00:29:11,880
thing if you're reading, because you see a word, you

547
00:29:11,880 --> 00:29:14,319
don't know what that word is. And so let's just

548
00:29:14,400 --> 00:29:18,680
say that you have a project in your system that

549
00:29:18,880 --> 00:29:22,119
is like I don't know, it's it's I don't know,

550
00:29:22,200 --> 00:29:25,440
it's like run okay, and that's just the name of

551
00:29:26,039 --> 00:29:29,759
a project you've got. Well, if you see dot net,

552
00:29:30,000 --> 00:29:34,079
you know build run. You don't know what's going on there,

553
00:29:34,119 --> 00:29:37,559
and because you can state a project after dot neit build,

554
00:29:37,839 --> 00:29:40,960
so it's it's difficult to use them. I think it'd

555
00:29:40,960 --> 00:29:43,519
be much easier for humans and definitely easier for AI

556
00:29:44,079 --> 00:29:46,480
if you could read a script that was written adjacent.

557
00:29:47,000 --> 00:29:49,519
And so that's one of the things that that's the

558
00:29:49,640 --> 00:29:52,640
kind of thing we can enable. Prompting people have asked

559
00:29:52,640 --> 00:29:56,000
for a lot, being able to pull defaults from environment variables.

560
00:29:56,480 --> 00:29:59,319
All of those things are in there. They're either in

561
00:29:59,400 --> 00:30:02,880
the system or they're already designed into this wrapper. So

562
00:30:02,880 --> 00:30:03,799
that's what I'm coding it.

563
00:30:03,880 --> 00:30:06,240
Speaker 2: Certainly I have it. I have in writing scripts, and

564
00:30:06,279 --> 00:30:09,400
that's as much PowerShell as anything dot net related. Yeah,

565
00:30:09,400 --> 00:30:12,920
to always use the double dash long names. Yeah, so

566
00:30:13,039 --> 00:30:15,519
you chot just so because it's a pain to do once,

567
00:30:15,559 --> 00:30:16,920
but it's in a script. You're never going to type

568
00:30:16,960 --> 00:30:21,079
it again. But when you go to read it, holy man. Yeah.

569
00:30:21,440 --> 00:30:24,519
Speaker 3: I also suspect that you're you're doing a great deal

570
00:30:24,519 --> 00:30:27,759
of good for any AI usage that that script would

571
00:30:27,759 --> 00:30:31,599
ever have. Yeah, I imagine either evaluation or to use

572
00:30:31,640 --> 00:30:33,319
it to find out what it's doing. To use it.

573
00:30:33,920 --> 00:30:36,759
For example, you might look at a bunch of scripts

574
00:30:36,759 --> 00:30:40,000
to say, what are the configuration files. So for that

575
00:30:40,079 --> 00:30:42,519
kind of work, I think that you're way far ahead

576
00:30:42,599 --> 00:30:45,119
if you're using the dash DASH can fig and say

577
00:30:45,119 --> 00:30:47,759
a dash C. Even though in theory the AI could

578
00:30:47,759 --> 00:30:50,759
work it back, it also should.

579
00:30:50,480 --> 00:30:52,839
Speaker 2: Be able to do you'd think it can. It's just

580
00:30:52,839 --> 00:30:53,480
one less step.

581
00:30:53,599 --> 00:30:57,240
Speaker 3: Well, right now today we don't yet have that open

582
00:30:57,240 --> 00:30:59,279
sale I at so we don't have a guaranteed way

583
00:30:59,319 --> 00:31:02,680
for it to get to the actual intent of that

584
00:31:02,759 --> 00:31:06,559
particular domain specific language and what does C mean for

585
00:31:06,799 --> 00:31:10,319
this particular command and so because we don't yet have

586
00:31:10,359 --> 00:31:13,880
a solid pipeline there, I actually think you get better

587
00:31:13,920 --> 00:31:16,839
results as well as being easier to read when AI

588
00:31:16,960 --> 00:31:17,480
is involved.

589
00:31:17,599 --> 00:31:20,039
Speaker 2: That's interesting. Okay, why don't we take a break. I

590
00:31:20,119 --> 00:31:26,279
got some questions after that sounds good, and we're back.

591
00:31:26,319 --> 00:31:29,240
It's dot at Rock's amateur Campbell. That's Carl Franklin. Hey,

592
00:31:29,599 --> 00:31:33,319
hanging with our friend Kathleen Dollard after entirely too long

593
00:31:34,079 --> 00:31:38,319
and were just digging in on you know, the whole

594
00:31:38,359 --> 00:31:41,119
wave of CLI came from the open source side, and

595
00:31:41,480 --> 00:31:46,480
to me, it always was about appealing to non ide

596
00:31:46,640 --> 00:31:50,519
developers like they, especially the younger generation of web developers

597
00:31:50,559 --> 00:31:52,880
who never went into visual studio that were used to

598
00:31:52,960 --> 00:31:55,039
rolling their owns, and here was a way for them

599
00:31:55,079 --> 00:31:56,839
to building DOT that they they're familiar with.

600
00:31:57,000 --> 00:31:59,599
Speaker 3: I think that's true, but I also think that that

601
00:31:59,799 --> 00:32:03,079
it's also better for certain things. So if you look

602
00:32:03,160 --> 00:32:05,799
at we use the dot nea clig and that GET

603
00:32:05,839 --> 00:32:07,799
is equally true and GET, it's just it's not as

604
00:32:07,839 --> 00:32:11,200
structured quite as well as dot cli, I think. So

605
00:32:11,279 --> 00:32:15,279
the CLI is huge. It's actually quite large. There's I

606
00:32:15,319 --> 00:32:18,440
don't know, one hundred, one hundred and fifty different options

607
00:32:18,480 --> 00:32:21,599
on different commands all stuffed in there, and that maybe

608
00:32:21,599 --> 00:32:24,720
doesn't include new geed and net new has an entire

609
00:32:24,759 --> 00:32:26,640
open system behind it of all the templates.

610
00:32:26,720 --> 00:32:27,200
Speaker 2: It's huge.

611
00:32:27,200 --> 00:32:30,599
Speaker 3: It's absolutely huge. So if you were just take a

612
00:32:30,640 --> 00:32:32,720
second and think about what the UI would look like

613
00:32:32,720 --> 00:32:33,079
if it was.

614
00:32:33,039 --> 00:32:38,279
Speaker 4: A good options It was a very telling thing that

615
00:32:38,359 --> 00:32:41,920
happened around I don't know if it was PARASHAWM guessing

616
00:32:41,960 --> 00:32:44,680
it was, but it might have predated Parashel where some

617
00:32:44,759 --> 00:32:47,160
of the work for it professionals.

618
00:32:47,160 --> 00:32:50,839
Speaker 3: The people back when we had it pro folks. They

619
00:32:51,440 --> 00:32:53,960
they had started they went to Gooey's and then they

620
00:32:54,000 --> 00:32:56,319
started having the real command line that would be the

621
00:32:56,359 --> 00:32:58,880
same thing at the bottom of the screens in many

622
00:32:58,880 --> 00:33:01,319
of the tools, because yeah, you really needed that. Both

623
00:33:01,359 --> 00:33:05,279
the build scripts 'very important, but also because there comes

624
00:33:05,319 --> 00:33:08,400
a point that just trying to assess the information that's

625
00:33:08,400 --> 00:33:12,400
coming at you, and there's this very small thing that

626
00:33:12,480 --> 00:33:16,839
salies do really well that is not obviously importance of,

627
00:33:17,160 --> 00:33:19,680
and that is defaults. So if you look at that

628
00:33:19,720 --> 00:33:22,519
dot neit build command that's inside your script and you

629
00:33:22,599 --> 00:33:26,759
do or do not see a config then that's important information. Okay,

630
00:33:26,799 --> 00:33:29,759
so that's very easy, and so a configure you're going

631
00:33:29,839 --> 00:33:32,880
to probably have. Okay, that's you know, that's most likely

632
00:33:33,160 --> 00:33:35,000
you're going to have it. But there's a whole lot

633
00:33:35,000 --> 00:33:36,559
of other things there, like what your run time is,

634
00:33:36,640 --> 00:33:40,720
or what actually what the projects are. Are you just

635
00:33:40,759 --> 00:33:42,640
going to build into this directory and move to the

636
00:33:42,640 --> 00:33:45,160
directory or are you're going to stay what the project is.

637
00:33:45,160 --> 00:33:47,240
There's just a ton of things there that either are

638
00:33:47,240 --> 00:33:50,119
present or absent. But when you look at a guy,

639
00:33:50,400 --> 00:33:53,480
you don't have that ability to say, these are the

640
00:33:53,519 --> 00:33:56,559
things that are special about this particular case. And that's

641
00:33:56,599 --> 00:33:58,960
what a default is. It's what is special about this

642
00:33:59,039 --> 00:34:04,000
particular case. And nobody's ever really built gooey's that say,

643
00:34:04,079 --> 00:34:05,799
you know, the bread green stuff is all the stuff

644
00:34:05,799 --> 00:34:09,320
that's that's not default, right, I've never seen that, And

645
00:34:09,400 --> 00:34:11,119
in fact, in a gooey you generally can't tell the

646
00:34:11,119 --> 00:34:13,239
difference because if you have a zero that's a default

647
00:34:13,440 --> 00:34:15,800
versus a zero somebody entered, it looks.

648
00:34:15,519 --> 00:34:18,199
Speaker 2: Just the same, exactly the same. That's a great insight.

649
00:34:18,360 --> 00:34:18,599
Speaker 1: You know.

650
00:34:18,840 --> 00:34:21,800
Speaker 2: The neat thing about parameters is they're all intentional. You

651
00:34:21,840 --> 00:34:23,880
wouldn't put them if they weren't optional.

652
00:34:23,880 --> 00:34:27,800
Speaker 3: Any pleasure using optional parameters, that's absolutely true, and in clized.

653
00:34:27,960 --> 00:34:29,800
You only put the things that you need to put. No,

654
00:34:29,920 --> 00:34:31,760
I don't know anybody who just says, oh, for fun,

655
00:34:31,760 --> 00:34:33,199
I'm going to go ahead and add a few extra

656
00:34:33,239 --> 00:34:35,760
things when they're typing in to use a CEL.

657
00:34:35,920 --> 00:34:38,440
Speaker 2: Yeah, that's a mean person. You don't like that person.

658
00:34:38,519 --> 00:34:41,280
Don't do that. Only put in parameters that matter, especially.

659
00:34:40,920 --> 00:34:43,119
Speaker 3: If they do with scripts. No, you don't, you don't,

660
00:34:43,199 --> 00:34:43,480
you don't.

661
00:34:43,519 --> 00:34:45,719
Speaker 2: Yeah, it's a great you know. The other obvious one

662
00:34:45,800 --> 00:34:48,679
is it's really hard to keep multiple goooyes across multiple

663
00:34:48,679 --> 00:34:52,920
people all in sync. For configuration, where a batch file

664
00:34:52,960 --> 00:34:55,000
sitting in a folder that everybody can access, that is

665
00:34:55,039 --> 00:34:58,960
the only way to build. Then yeah, you know everybody

666
00:34:59,000 --> 00:35:01,519
literally runs the same piece of code.

667
00:35:01,159 --> 00:35:03,199
Speaker 3: And it fits in so well and with such a

668
00:35:03,199 --> 00:35:06,559
good driver for the SDK design and the overall design

669
00:35:06,599 --> 00:35:09,480
of all of it. Like you know, when we when

670
00:35:09,480 --> 00:35:15,320
they went to do the the file based applications, it's like, okay,

671
00:35:15,360 --> 00:35:17,039
we know what to do. We don't have to sit

672
00:35:17,079 --> 00:35:19,599
down and design anything. So we know that we want

673
00:35:19,599 --> 00:35:22,280
to say dot net build blah blah, dot c s. Okay,

674
00:35:22,559 --> 00:35:24,480
that's what it's got to be. And now how do

675
00:35:24,519 --> 00:35:27,000
we make that work? And so it was a huge,

676
00:35:27,239 --> 00:35:30,559
huge organizing and driving factor. Now we had some mistakes

677
00:35:30,639 --> 00:35:34,599
that came in actually creamy, but it's okay, Like we

678
00:35:34,679 --> 00:35:36,440
used to be able used to have to say dot

679
00:35:36,519 --> 00:35:39,239
net AD. I think it was a AD project and

680
00:35:39,360 --> 00:35:42,440
package AD. So but there were two almost the same

681
00:35:42,440 --> 00:35:45,599
thing that we just switched and that's not removed. So

682
00:35:45,679 --> 00:35:50,320
now the noun verb completely. One everybody's doing CLI is

683
00:35:50,400 --> 00:35:53,519
do noun verb. Reach out to me if you need

684
00:35:53,599 --> 00:35:56,000
to understand how to do obsolescence in the CLR, because

685
00:35:56,199 --> 00:35:57,800
it is a it is a tricky thing to do,

686
00:35:57,840 --> 00:35:58,920
but you can do it well.

687
00:35:59,039 --> 00:36:01,719
Speaker 2: It did bring up the question you know, now that

688
00:36:01,719 --> 00:36:03,679
you've talked about system, command line and so forth in

689
00:36:03,719 --> 00:36:06,880
this tooling, who should be building CLI's, Like I get

690
00:36:06,880 --> 00:36:10,880
that you should build clish you think like this, and

691
00:36:10,920 --> 00:36:13,679
you're building tools always going to use. But who should

692
00:36:13,679 --> 00:36:14,639
be making a CLI?

693
00:36:15,360 --> 00:36:18,280
Speaker 1: I can give you one right now, just people who

694
00:36:18,280 --> 00:36:23,400
are using AI agents to do things that you typically

695
00:36:23,440 --> 00:36:26,840
have to build a CLI around. Right Get hub Copilot

696
00:36:26,880 --> 00:36:28,000
is a perfect example.

697
00:36:28,760 --> 00:36:30,920
Speaker 3: So I think that there's a bunch of answers. One

698
00:36:30,960 --> 00:36:33,639
is who's your audience? So if your audience wants scoies,

699
00:36:33,679 --> 00:36:36,360
your audience wants scooies. If your audience wants the people

700
00:36:36,440 --> 00:36:38,800
going to use your app want a command line app,

701
00:36:38,800 --> 00:36:41,840
they want a command line app. I'm of the opinion

702
00:36:42,039 --> 00:36:45,880
that almost everything should be designed CLI first and then

703
00:36:45,880 --> 00:36:48,559
can we second, because in that way you have the

704
00:36:48,679 --> 00:36:51,920
organizing force of the CLI, which I mean, like I said,

705
00:36:51,960 --> 00:36:55,800
you just it was so important in the net s

706
00:36:55,840 --> 00:36:59,360
to case it's a nightmare. It was we made it

707
00:36:59,360 --> 00:37:00,960
better when we at the old dot net new and

708
00:37:00,960 --> 00:37:02,679
got the new dot net new. And there's some things

709
00:37:02,760 --> 00:37:06,280
New gets relationship, you know, handing off to new get

710
00:37:06,320 --> 00:37:07,719
got better, and a bunch of stuff got better of

711
00:37:07,760 --> 00:37:11,000
the last eight years. Somebody else runs it now. Chad

712
00:37:11,039 --> 00:37:16,880
husk Is is the person who does that. But the

713
00:37:16,920 --> 00:37:19,960
part of it. The first answer is what do people want?

714
00:37:20,039 --> 00:37:23,199
The second answer is, unless you have a really I

715
00:37:23,239 --> 00:37:25,199
know this needs to be a guy in this way,

716
00:37:25,360 --> 00:37:27,480
I want to design the guy first. Unless you know

717
00:37:27,519 --> 00:37:30,119
you want to design guy first, design CLI first, and

718
00:37:30,199 --> 00:37:33,559
it helps your testing, It helps your prototyping, it helps

719
00:37:33,599 --> 00:37:37,559
you communicate with your stakeholders without worrying about whether the

720
00:37:37,559 --> 00:37:39,800
button is blue. There's just a ton of things you

721
00:37:39,880 --> 00:37:43,639
gain from being CLI first in your overall app design.

722
00:37:43,679 --> 00:37:46,440
Also keeps your apps from being too big, because most

723
00:37:46,480 --> 00:37:49,760
of us look at something like we're you just getting

724
00:37:49,800 --> 00:37:51,760
dot net. They're about as big as you can get

725
00:37:52,480 --> 00:37:55,159
as your CLI is actually not a single CLI. It's

726
00:37:55,159 --> 00:37:57,519
a breaking off point into a whole bunch of little CLIs.

727
00:37:58,199 --> 00:38:01,760
It's a prefix you can only get so big, and

728
00:38:02,280 --> 00:38:03,639
it kind of keeps you with that size.

729
00:38:03,920 --> 00:38:06,320
Speaker 2: And that granularity is super useful too.

730
00:38:06,559 --> 00:38:09,280
Speaker 3: Yeah, it's like, how should we break this up? Now

731
00:38:09,360 --> 00:38:12,519
becomes a good question for a good reason. Instead of

732
00:38:12,840 --> 00:38:15,360
a guy app which is just going to keep growing

733
00:38:15,440 --> 00:38:17,840
like a big amima until it's taken over your entire

734
00:38:17,880 --> 00:38:20,880
company if it's a medium sized company, and that's never

735
00:38:20,920 --> 00:38:23,000
good because then your ability to change to the next

736
00:38:23,000 --> 00:38:25,199
great thing is drops zero.

737
00:38:25,400 --> 00:38:28,239
Speaker 2: Right, that makes a lot of sense. Yeah, yeah, so

738
00:38:28,440 --> 00:38:31,880
I think, I mean, I hate. I really wanted to

739
00:38:31,920 --> 00:38:34,599
push on this idea that CLIs are all about AI,

740
00:38:34,840 --> 00:38:36,519
that there's a bunch of reasons you were going out

741
00:38:36,599 --> 00:38:40,000
CLIs anyway, going way back to the DevOps movement and

742
00:38:40,039 --> 00:38:43,400
so forth. But now it really opens the door to

743
00:38:43,519 --> 00:38:46,440
these new tools and the way they want to work

744
00:38:46,480 --> 00:38:46,920
as well.

745
00:38:47,119 --> 00:38:49,559
Speaker 3: Yeah, it really is. And that's why things I could

746
00:38:49,639 --> 00:38:53,079
in CLI looking at maybe some more expressiveness, looking at

747
00:38:53,119 --> 00:38:55,920
not being afraid to change. I'm no longer afraid to

748
00:38:55,960 --> 00:38:57,559
change the positic standard. I will not do it on

749
00:38:57,599 --> 00:39:00,159
my own, But I think that as a community, as

750
00:39:00,159 --> 00:39:02,440
an ecosystem, we need to take a look and say

751
00:39:02,639 --> 00:39:06,480
can we can we either solidify some things other than

752
00:39:06,960 --> 00:39:10,079
H or can we you know, what can we do

753
00:39:10,199 --> 00:39:14,719
here to find some space to grow alternate you know,

754
00:39:14,760 --> 00:39:19,239
alternate help is a really obvious one. And prompting prompting

755
00:39:19,280 --> 00:39:22,639
for required values being part of your part of your

756
00:39:22,840 --> 00:39:25,960
part system, not something you have to write for every

757
00:39:26,000 --> 00:39:28,519
application yourself. If you want it, it'd be just a

758
00:39:28,639 --> 00:39:29,639
configuration switch.

759
00:39:30,079 --> 00:39:32,800
Speaker 2: So yeah, Yeah, it's interesting to think because that is

760
00:39:32,840 --> 00:39:36,559
such an old standard that maybe needs to be modernized

761
00:39:36,840 --> 00:39:40,159
because of these new tools, so that we have fewer

762
00:39:40,159 --> 00:39:41,199
problems going forward.

763
00:39:41,360 --> 00:39:44,920
Speaker 3: Yeah, and I think everything that's there will stay forever.

764
00:39:45,079 --> 00:39:46,960
I don't think anyone's going to literally.

765
00:39:47,000 --> 00:39:48,000
Speaker 2: Change it, right.

766
00:39:48,639 --> 00:39:50,920
Speaker 3: You know, I said I'm not afraid to change it,

767
00:39:50,960 --> 00:39:53,360
but I really mean I'm not afraid to talk about

768
00:39:53,440 --> 00:39:56,239
extending it to see whether there's buy in on some

769
00:39:56,320 --> 00:40:00,400
of the things that we could do if we extended it,

770
00:40:00,440 --> 00:40:03,920
as simple as if we're going to have help be

771
00:40:04,079 --> 00:40:06,840
in a more structured format to make it easier for AI,

772
00:40:07,039 --> 00:40:09,440
easier for some other things. Oh my gosh, can we

773
00:40:09,440 --> 00:40:12,079
all use the same format? That's what open cli is

774
00:40:12,159 --> 00:40:15,599
ultimately about. You know, it's got lots of things going

775
00:40:15,639 --> 00:40:17,800
on with it, but that is, you know, we need

776
00:40:17,840 --> 00:40:19,840
to use the same the same structure there.

777
00:40:19,880 --> 00:40:23,599
Speaker 1: You mentioned obsoleting a few minutes ago. Yeah, is that

778
00:40:23,679 --> 00:40:26,159
the same as deprecating like, well, we don't use that

779
00:40:26,239 --> 00:40:28,920
anymore and now we use this pretty much?

780
00:40:29,000 --> 00:40:33,320
Speaker 3: Yes, that that is really the answer, because unless something

781
00:40:33,599 --> 00:40:38,480
becomes strictly dangerous strictly you really need not to use this,

782
00:40:38,679 --> 00:40:41,599
and unless that happens, you can never remove anything because

783
00:40:41,599 --> 00:40:43,679
you're going to break the scripts. Richard was talking about

784
00:40:44,000 --> 00:40:47,559
that all these people you just think about now thet

785
00:40:47,639 --> 00:40:50,679
net scripts. Of course that's massively in use. There's absolutely

786
00:40:51,119 --> 00:40:54,400
kind of remove any feature ever, which is why it

787
00:40:54,440 --> 00:40:57,000
was so hard to get this verb now and thing

788
00:40:57,159 --> 00:40:59,960
fixed because so many people said we can't have to

789
00:41:00,119 --> 00:41:02,679
ways to do something, and we're like, well, we'll never

790
00:41:02,719 --> 00:41:04,480
fix it then, so can we please have two ways

791
00:41:04,519 --> 00:41:08,559
to do something? And literally it's taking what is is

792
00:41:08,719 --> 00:41:11,239
the old way to do it that now is obsolete

793
00:41:11,480 --> 00:41:13,960
and just hiding it. That's number one. Just don't put

794
00:41:14,000 --> 00:41:17,960
it in help, that's number one. And then the next step,

795
00:41:18,079 --> 00:41:21,760
which the dot netcli, I think mini salies are ready for,

796
00:41:22,119 --> 00:41:24,159
is to have a warning. It is to have the replacement,

797
00:41:24,199 --> 00:41:26,400
and that is just so. I think you may see

798
00:41:26,400 --> 00:41:29,679
that within the dot NETCLI in the mid future. I'm

799
00:41:29,679 --> 00:41:31,800
not sure this year, but soon I think that's going

800
00:41:31,840 --> 00:41:34,079
to be there. I'm not sure if they're working on

801
00:41:34,119 --> 00:41:34,559
it right.

802
00:41:34,400 --> 00:41:34,800
Speaker 1: Now or not.

803
00:41:35,079 --> 00:41:38,599
Speaker 2: When you think about security around CLIs like do we

804
00:41:38,800 --> 00:41:43,639
need to have a log in or some tiers of

805
00:41:43,800 --> 00:41:48,159
authority for different commands in CLIs it's.

806
00:41:47,719 --> 00:41:51,920
Speaker 3: Not my space right now. The answer is that kind

807
00:41:51,920 --> 00:41:55,480
of the the person you are, the framework that you're in,

808
00:41:55,559 --> 00:41:59,039
the things seem to be working. But as AI comes in,

809
00:41:59,079 --> 00:42:00,840
will it I don't know. I don't know the answer

810
00:42:00,840 --> 00:42:01,159
to that.

811
00:42:01,559 --> 00:42:05,079
Speaker 2: It's currently the CLI runs in the context of the

812
00:42:05,119 --> 00:42:07,719
caller exactly. And so you know this is where if

813
00:42:07,760 --> 00:42:09,840
you live in a Linux line, you would pseudo before

814
00:42:09,920 --> 00:42:13,920
running a CLI to promote your your rights, and then

815
00:42:14,000 --> 00:42:16,920
the CLI runs in a higher level, but.

816
00:42:17,360 --> 00:42:20,440
Speaker 3: Hopefully in a very thoughtful way, and only pseudo when

817
00:42:20,480 --> 00:42:24,000
you actually need to because it's holding you say, and

818
00:42:24,119 --> 00:42:28,079
otherwise we may wind up with some rapper basically little

819
00:42:28,559 --> 00:42:32,239
terminal wrappers or repels that can hold more security for

820
00:42:32,280 --> 00:42:34,199
certain things that need it. That's another way, and that's

821
00:42:34,239 --> 00:42:37,119
another place to standards would be really important and valuable.

822
00:42:36,920 --> 00:42:39,400
Speaker 2: Right that you could be a parameter that carries a

823
00:42:39,440 --> 00:42:43,639
token that kind of thing, right, question or something.

824
00:42:44,639 --> 00:42:46,760
Speaker 3: So these are the kinds of things that we we

825
00:42:46,880 --> 00:42:48,519
kind of got stuck in the standard and said, well,

826
00:42:48,519 --> 00:42:50,119
we're not going to think about these new things. We're

827
00:42:50,119 --> 00:42:52,480
not going to think about ways to change. And there's

828
00:42:52,519 --> 00:42:56,920
a lot of answers to that question, including environment variables

829
00:42:56,960 --> 00:42:59,360
that have you know, and having keys that have a

830
00:42:59,400 --> 00:43:02,159
short lifetime. You know, there's a ton of different things

831
00:43:02,159 --> 00:43:04,880
that could be done, and what's the best thing. I

832
00:43:04,920 --> 00:43:07,039
am certainly not the person to make a guess as

833
00:43:07,039 --> 00:43:09,920
to what's the best answer to have the most security

834
00:43:09,960 --> 00:43:12,159
with the least impact, And there might be more than

835
00:43:12,199 --> 00:43:12,679
one answer.

836
00:43:12,719 --> 00:43:15,800
Speaker 2: I'm sure I do not want the CLI to generate

837
00:43:15,840 --> 00:43:19,679
a prompt for a password, That's what I'm sure of. Yeah,

838
00:43:19,719 --> 00:43:22,800
you know, the same way invoking an SSH call or

839
00:43:22,840 --> 00:43:25,960
a Bash call might have a security prompt in it. Well,

840
00:43:26,079 --> 00:43:28,880
the cl I should not behave like that. That is bad.

841
00:43:29,159 --> 00:43:32,039
Speaker 3: Yeah, yeah, and thank you, because I do not yet

842
00:43:32,119 --> 00:43:34,719
in this project, this Dragon Fruit too, I do not

843
00:43:34,840 --> 00:43:38,079
yet have a special password type to ensure that it's

844
00:43:38,119 --> 00:43:40,360
never prompted. And so yeah, thank you.

845
00:43:40,400 --> 00:43:43,440
Speaker 1: Well, in the Windows guey world, when you need something

846
00:43:43,480 --> 00:43:47,239
that requires a higher level of context, it asks pops

847
00:43:47,239 --> 00:43:50,119
a dialogue, you know, POPSI dialogue. It has been doing

848
00:43:50,159 --> 00:43:53,840
that since what XP service back too, right.

849
00:43:54,039 --> 00:43:56,960
Speaker 2: Yeah, well that was just UAC but even before that.

850
00:43:57,000 --> 00:43:59,519
But you know, you make the point. One of the

851
00:43:59,519 --> 00:44:02,000
things about gooy is that you can layer on interface

852
00:44:02,079 --> 00:44:04,039
like this and interrupt.

853
00:44:04,000 --> 00:44:06,679
Speaker 1: And everything stops and you can't press enter. You actually

854
00:44:06,679 --> 00:44:07,280
have to click.

855
00:44:07,360 --> 00:44:08,599
Speaker 2: You can't do a damn thing, you know.

856
00:44:08,679 --> 00:44:11,440
Speaker 1: You have to click allow yeah.

857
00:44:10,840 --> 00:44:14,000
Speaker 3: Or okay, right, Well, we can actually do that. The

858
00:44:14,039 --> 00:44:16,840
problem is to scripts, so we could do that, but

859
00:44:16,880 --> 00:44:19,679
then while scripts there's two actual problems with the scripts.

860
00:44:19,679 --> 00:44:22,159
One is if you do an interactive mode on a

861
00:44:22,239 --> 00:44:25,280
command while it's in a script, it'll hang the entire session.

862
00:44:25,639 --> 00:44:29,360
So that's bad. And so then so in that case

863
00:44:29,400 --> 00:44:33,119
you couldn't get any approval, and so knowing whether you're

864
00:44:33,119 --> 00:44:35,920
in a script becomes then a security question. And right now,

865
00:44:36,039 --> 00:44:38,760
knowing whether you're in interactive mode is kind of like

866
00:44:39,239 --> 00:44:42,079
we can almost always get right. Chet worked on that

867
00:44:42,239 --> 00:44:46,639
to get it in the dot net. In the dot

868
00:44:46,679 --> 00:44:49,280
necli now does know whether you're in interactive mode and

869
00:44:49,320 --> 00:44:52,000
does behave a little bit differently if it's an interactive

870
00:44:52,039 --> 00:44:53,559
mode now, which is great, right.

871
00:44:53,719 --> 00:44:57,079
Speaker 1: One thing that's in the newer version of get hub

872
00:44:57,159 --> 00:45:02,280
Copilot's CLI is this slash allowed dash all okay, which

873
00:45:02,480 --> 00:45:07,039
essentially says, don't prompt me for permission when you want

874
00:45:07,039 --> 00:45:09,239
to do something, just go ahead and do it and

875
00:45:09,679 --> 00:45:13,159
I saw that In'm like, well, that's very convenient, and

876
00:45:13,199 --> 00:45:16,559
you know, convenience is the enemy of security, right, I

877
00:45:16,679 --> 00:45:18,719
want to know exactly what you're I don't want to

878
00:45:18,760 --> 00:45:22,800
see bunch of stuff fly by. Yeah, I want to

879
00:45:22,800 --> 00:45:24,639
know exactly what you're going to do, so I don't

880
00:45:24,719 --> 00:45:25,440
use that mode.

881
00:45:26,000 --> 00:45:28,559
Speaker 2: Yeah, yeah, yeah, it's just a I don't want to

882
00:45:28,599 --> 00:45:32,280
break automation either, Like, yeah, it's a challenge of writing

883
00:45:32,320 --> 00:45:33,440
good scripts.

884
00:45:33,559 --> 00:45:36,000
Speaker 3: And well it is. And this is you know, I

885
00:45:36,079 --> 00:45:38,199
think all these problems are solvable if we look at

886
00:45:38,280 --> 00:45:42,039
them through the eyes of twenty twenty six. And you know,

887
00:45:42,199 --> 00:45:44,039
I should have looked up how all that standard is.

888
00:45:44,039 --> 00:45:46,880
I didn't. It's absolutely ancient and hysterical. It's nineteen ninety two,

889
00:45:46,880 --> 00:45:49,800
but I don't think it is. But it's it's it's

890
00:45:49,880 --> 00:45:53,079
quite old, and it is. It has served very well.

891
00:45:53,159 --> 00:45:56,519
I have nothing bad to say about it except that

892
00:45:56,719 --> 00:45:58,960
it's time for us to it's time for us to

893
00:45:58,960 --> 00:46:03,320
look forward, modernized. And there's one thing in it that

894
00:46:03,800 --> 00:46:06,239
I personally dislike but I doubt it'll change, which is

895
00:46:06,239 --> 00:46:09,760
the ability to smash different flags together. And you know

896
00:46:09,840 --> 00:46:12,159
that's the only thing. It's called pozis bundling and let

897
00:46:12,320 --> 00:46:15,440
let you do like dash ac if A is a

898
00:46:15,480 --> 00:46:17,239
flag and C is a flag. I don't like that

899
00:46:17,320 --> 00:46:19,559
very much. But other than that, you know, it's a

900
00:46:19,599 --> 00:46:23,039
really good standard and it has served really, really well,

901
00:46:23,079 --> 00:46:25,039
and nobody would have ever thought about the kinds of

902
00:46:25,079 --> 00:46:28,079
things that we're thinking about now way back then, and

903
00:46:28,159 --> 00:46:29,840
it's just time to take another look at it and

904
00:46:29,840 --> 00:46:31,840
open sealies doing that. I don't think it's the only

905
00:46:31,880 --> 00:46:34,280
front that we're going to be looking at that, although

906
00:46:34,320 --> 00:46:36,800
perhaps that will be the venue where we can take

907
00:46:36,800 --> 00:46:39,559
a look at a lot of different things and you know,

908
00:46:40,039 --> 00:46:41,920
kind of update. It's time for that.

909
00:46:42,800 --> 00:46:46,440
Speaker 2: Yeah, it does speak to this evolving way of interacting

910
00:46:46,480 --> 00:46:50,639
with software I do. It is really something to watch

911
00:46:50,719 --> 00:46:55,079
an LM write prompts like that, I spit out a

912
00:46:55,159 --> 00:46:56,599
series of commands.

913
00:46:56,639 --> 00:46:59,920
Speaker 3: It is, and it's I think it's awesome. It's just

914
00:47:00,119 --> 00:47:04,440
it's a very nice way to communicate, you know, back

915
00:47:04,480 --> 00:47:07,000
and forth, as long as the commands all stay simple

916
00:47:07,119 --> 00:47:10,639
and easy to understand, which it's up to. It's up

917
00:47:10,679 --> 00:47:12,960
to people are writing the CLIs to do that.

918
00:47:13,159 --> 00:47:16,440
Speaker 2: So yeah, yeah, and back to that question of who's

919
00:47:16,440 --> 00:47:18,440
writing a CLI and what's for. But like you said,

920
00:47:18,519 --> 00:47:21,039
is any piece of software someone needs to interact with,

921
00:47:21,199 --> 00:47:24,320
you should probably be making the CLI first, then defining

922
00:47:24,360 --> 00:47:26,599
a GOOI or whatever of interfaces you want.

923
00:47:26,760 --> 00:47:28,880
Speaker 3: Unless you hear that statement and know what's wrong for

924
00:47:28,960 --> 00:47:32,000
your app, and there are certainly apps that's but if

925
00:47:32,000 --> 00:47:34,159
you don't know what's wrong, think about it. I can't

926
00:47:34,159 --> 00:47:37,920
think about whether that's yeah, I think if it makes sense.

927
00:47:37,840 --> 00:47:38,320
Speaker 1: So yeah.

928
00:47:38,400 --> 00:47:40,719
Speaker 2: I also saw this with the Azure CLI, which is

929
00:47:40,719 --> 00:47:43,480
that often the new feature shows up the CLI first

930
00:47:43,920 --> 00:47:47,159
and then the portal caught up sometime later. So you know,

931
00:47:47,199 --> 00:47:50,239
the other side of this is you can ship faster

932
00:47:50,440 --> 00:47:54,679
when your interface is just an additional parameter call in

933
00:47:54,760 --> 00:47:57,320
the cl I and it just it takes time to

934
00:47:57,440 --> 00:47:58,599
roll that up into the UX.

935
00:47:59,239 --> 00:48:01,800
Speaker 3: Well, it does, and the Asure CLI is probably one

936
00:48:01,800 --> 00:48:03,320
of the easier ones because it has a lot of

937
00:48:03,400 --> 00:48:06,400
standards around. You know, the CLI looks the same across

938
00:48:06,480 --> 00:48:08,599
a whole lot of different A lot of problems are

939
00:48:08,679 --> 00:48:11,400
argon solved in I'm sorry, in the guy. A lot

940
00:48:11,400 --> 00:48:13,239
of problems are solved in that guy. So if you're

941
00:48:13,280 --> 00:48:14,960
going to write to a gouy, it's probably a pretty

942
00:48:14,960 --> 00:48:18,639
easy one. But even so, the cl I allows you

943
00:48:18,719 --> 00:48:20,679
to get through prototype and find out it's even a

944
00:48:20,679 --> 00:48:24,280
good idea before you start putting any any time into

945
00:48:24,320 --> 00:48:26,599
the arrangement of things. You know, you have to start

946
00:48:26,639 --> 00:48:29,960
worrying about your semantics, your words, before you start worrying

947
00:48:29,960 --> 00:48:32,000
about how those words lay out. And I think that's

948
00:48:32,039 --> 00:48:35,239
a really healthy way to look at software, as opposed

949
00:48:35,320 --> 00:48:38,079
to first looking at what's the shape, what's the pretty?

950
00:48:38,119 --> 00:48:39,039
What color should it be?

951
00:48:39,679 --> 00:48:40,320
Speaker 2: It's the color?

952
00:48:40,559 --> 00:48:43,159
Speaker 3: Yeah, yeah, you know, which is terribly important, even a

953
00:48:43,199 --> 00:48:46,719
guey I mean, you know, I'm not eventually. Eventually I

954
00:48:46,760 --> 00:48:48,679
can't design a UI for the life of me. But

955
00:48:49,000 --> 00:48:51,719
that's decent, A gooey, not a gooey A CLI I

956
00:48:51,719 --> 00:48:52,719
can design fairly much.

957
00:48:53,440 --> 00:48:55,320
Speaker 2: What I like about your this whole thinking is like

958
00:48:55,480 --> 00:48:57,920
it's about the functionality exactly.

959
00:48:58,000 --> 00:49:01,480
Speaker 3: That's exactly the point. And another thing that can drive

960
00:49:01,519 --> 00:49:03,159
you away from one is if you have a lot

961
00:49:03,159 --> 00:49:05,920
of data, it's not a real easy way to like,

962
00:49:07,079 --> 00:49:10,000
if you're interdoance. You know, if someone has to interdeance

963
00:49:10,000 --> 00:49:12,920
and you can't abbreviate enough to say any four letters

964
00:49:12,920 --> 00:49:15,559
of the goods will be good enough. Yeah, then you know,

965
00:49:16,000 --> 00:49:17,559
because we deal with commits all the time.

966
00:49:18,360 --> 00:49:20,400
Speaker 2: Well, now you bring up a great point, which is

967
00:49:20,400 --> 00:49:23,119
that you're if you're thinking CLI first, how does that

968
00:49:23,239 --> 00:49:26,079
change the way you craft parameters?

969
00:49:26,239 --> 00:49:26,719
Speaker 3: Exactly?

970
00:49:26,880 --> 00:49:29,079
Speaker 2: That's absolutely you would manage data like you don't want

971
00:49:29,079 --> 00:49:30,679
to put that in a prompt, you'd put it in

972
00:49:30,719 --> 00:49:32,119
a file and a porter to the file.

973
00:49:32,360 --> 00:49:35,039
Speaker 3: Yeah, yeah, absolutely absolutely.

974
00:49:35,679 --> 00:49:38,599
Speaker 2: Is that actually good for a guy or another interface?

975
00:49:38,679 --> 00:49:40,920
I don't know. Like it is interesting to think in

976
00:49:40,960 --> 00:49:42,039
those terms.

977
00:49:42,400 --> 00:49:46,239
Speaker 3: It really is. I think it's a good piece to

978
00:49:46,280 --> 00:49:48,840
our conversation. I don't think it's the end of our conversation.

979
00:49:48,960 --> 00:49:51,800
I just think it's a big part particularly conversation we're

980
00:49:51,800 --> 00:49:53,960
having right now. Everything's changing around us and we're all

981
00:49:54,000 --> 00:49:56,719
trying to figureut which way the ground is. And in

982
00:49:56,760 --> 00:49:58,559
that world, I think that this is one of the

983
00:49:58,559 --> 00:50:02,840
grounding pieces is just say I have something I want shared.

984
00:50:03,079 --> 00:50:04,880
This is a way I can share it, and this

985
00:50:04,960 --> 00:50:07,480
is a way that doesn't depend on a service to share, right.

986
00:50:07,599 --> 00:50:09,920
It can certainly be wrapped by a service. That's great.

987
00:50:10,239 --> 00:50:11,719
But if you try to write your service first and

988
00:50:11,719 --> 00:50:14,519
then you write your sale lie second, good luck, because

989
00:50:14,559 --> 00:50:16,400
you've already got too much code in your library. If

990
00:50:16,440 --> 00:50:18,719
you write your library first and then your c. If

991
00:50:18,760 --> 00:50:21,400
you write your CLI, design your sale first, or design

992
00:50:21,400 --> 00:50:24,800
it alongside, then your library may make more sense. Your

993
00:50:25,880 --> 00:50:28,840
your API, your web api may make more sense. You know,

994
00:50:29,039 --> 00:50:31,840
various different pieces of your overall puzzle may make more sense.

995
00:50:32,519 --> 00:50:33,039
Speaker 1: Yeah.

996
00:50:33,239 --> 00:50:36,440
Speaker 2: Thinking through your parameters before you build your back end,

997
00:50:36,480 --> 00:50:40,440
even at all these places, certainly makes what would it

998
00:50:40,480 --> 00:50:40,840
look like?

999
00:50:41,760 --> 00:50:43,760
Speaker 3: Yeah, certainly makes testing easier too.

1000
00:50:45,119 --> 00:50:48,199
Speaker 2: Sure, that's very automatable and work through all the different parameters.

1001
00:50:48,239 --> 00:50:50,920
That's that's exciting. That's a great way to think about this, Kathleen.

1002
00:50:50,960 --> 00:50:53,400
As usual, you got my head going.

1003
00:50:54,079 --> 00:50:57,440
Speaker 3: Yeah. Well, one thing about the little project I'm working

1004
00:50:57,440 --> 00:51:02,320
on is is if anyone is interested in uh in

1005
00:51:02,719 --> 00:51:04,880
source generators and they want to look at a non

1006
00:51:04,880 --> 00:51:09,800
trivial source generator, some fantastic there's some fantastic blogs out there,

1007
00:51:09,920 --> 00:51:12,760
and I'll send you resources on two of them. On

1008
00:51:13,159 --> 00:51:15,239
if you just want to write Hello World, Hello World

1009
00:51:15,239 --> 00:51:19,000
for source generator is rewriting two storing for moms that

1010
00:51:19,159 --> 00:51:21,519
is the Hello World. And so if you want to

1011
00:51:21,559 --> 00:51:24,639
go beyond that, then it gets really hard, really quick,

1012
00:51:24,639 --> 00:51:28,000
and it is not linear. It is very is very

1013
00:51:28,000 --> 00:51:30,840
non linear. It goes up fast, and I have tricks

1014
00:51:30,880 --> 00:51:32,599
I've been doing this a long time. I had some

1015
00:51:32,639 --> 00:51:34,800
really good tricks and I was showing somebody who's a

1016
00:51:34,880 --> 00:51:37,679
really hot programmer. I was so impressed he said this

1017
00:51:37,880 --> 00:51:39,760
and it was a particular thing I did, and he gets, oh,

1018
00:51:39,840 --> 00:51:41,760
I never thought of that. That's gonna save me a

1019
00:51:41,840 --> 00:51:44,679
lot of times. And so I'm going to be giving

1020
00:51:44,679 --> 00:51:48,000
a talk at Tikarama on that. And I'm also talking

1021
00:51:48,039 --> 00:51:52,880
around on C sharp both Sea Shark gotchas and h

1022
00:51:53,239 --> 00:51:55,440
C sharp modern Sea Shark What should what can your

1023
00:51:55,440 --> 00:51:57,599
code look like today? And why is that good? So

1024
00:51:58,559 --> 00:52:00,559
you know that that's the other thing as I'm working

1025
00:52:00,639 --> 00:52:04,079
on is where C sharp is at. I was so

1026
00:52:04,239 --> 00:52:07,280
busy building it, I couldn't really talk about it, and

1027
00:52:07,320 --> 00:52:10,360
that was a great frustration. And now I can talk

1028
00:52:10,400 --> 00:52:14,519
about that and the Richard Carl You know that I

1029
00:52:14,559 --> 00:52:16,840
did a workshop for a long time which was, you know,

1030
00:52:16,960 --> 00:52:19,400
I'll become a better sea shark programmer. I'll make you

1031
00:52:19,400 --> 00:52:22,639
a better sea shark programmers names like that, and so

1032
00:52:22,760 --> 00:52:26,519
I am hoping I'm in progress. I think I'm going

1033
00:52:26,599 --> 00:52:30,280
to be able to release that and put that together

1034
00:52:30,280 --> 00:52:32,199
in a big way. And so that along with the

1035
00:52:32,400 --> 00:52:37,760
modernizing and then my talk at Tekarrama is staying sane

1036
00:52:37,800 --> 00:52:39,679
while writing as rosin source generator.

1037
00:52:40,119 --> 00:52:40,400
Speaker 1: Nice.

1038
00:52:41,639 --> 00:52:44,039
Speaker 2: You know, I realized there's at least two more shows here.

1039
00:52:44,119 --> 00:52:46,440
You're thinking about what modern cy sharp looks like is

1040
00:52:46,480 --> 00:52:49,599
a whole other show, and everything to do with Roslin's

1041
00:52:49,639 --> 00:52:50,599
easily a show too.

1042
00:52:51,119 --> 00:52:53,519
Speaker 3: Yeah, and the Sea Shark, gotcha, this is actually another

1043
00:52:53,559 --> 00:52:56,559
show too, So we will not be waiting four years again.

1044
00:52:56,639 --> 00:52:57,679
I'm quite sure of that.

1045
00:52:58,079 --> 00:53:01,800
Speaker 2: No, no, I think we better not. We'll figure that out.

1046
00:53:02,639 --> 00:53:04,239
So much fun to talk to you again. Yeah, I'm

1047
00:53:04,239 --> 00:53:04,920
glad you're well.

1048
00:53:05,000 --> 00:53:05,760
Speaker 3: Oh it's great.

1049
00:53:05,800 --> 00:53:07,159
Speaker 1: Yeah, we're very happy for that.

1050
00:53:07,559 --> 00:53:10,679
Speaker 3: Yeah, and I am so glad to be well, so

1051
00:53:10,800 --> 00:53:13,559
glad to be here with you today and ready to

1052
00:53:13,639 --> 00:53:17,639
go and shovel my driveway that is, or snowblower too.

1053
00:53:17,679 --> 00:53:20,599
Speaker 1: But there's some shoveling and we're almost neighbors, so we

1054
00:53:20,599 --> 00:53:21,719
should be hanging out more.

1055
00:53:22,239 --> 00:53:23,559
Speaker 2: I know, I know.

1056
00:53:24,079 --> 00:53:26,320
Speaker 3: Let me, let's get in touch. So let's do it.

1057
00:53:26,559 --> 00:53:29,639
Speaker 1: We'll be in touch. Yeah, sounds good. All right, Kathleen,

1058
00:53:29,679 --> 00:53:32,639
Thanks again, and thank you, dear listener. We'll talk to

1059
00:53:32,679 --> 00:53:55,920
you next time on dot net rocks. Dot net Rocks

1060
00:53:56,000 --> 00:53:58,719
is brought to you by Franklin's Net and produced by

1061
00:53:58,800 --> 00:54:02,800
Pop Studios, a full service audio, video and post production

1062
00:54:02,920 --> 00:54:06,880
facility located physically in New London, Connecticut, and of course

1063
00:54:06,920 --> 00:54:11,679
in the cloud online at pwop dot com. Visit our

1064
00:54:11,679 --> 00:54:13,840
website at d O T N E T R O

1065
00:54:13,920 --> 00:54:19,199
c k S dot com for RSS feeds, downloads, mobile apps, comments,

1066
00:54:19,519 --> 00:54:22,079
and access to the full archives going back to show

1067
00:54:22,159 --> 00:54:25,880
number one, recorded in September two thousand and two. And

1068
00:54:25,960 --> 00:54:28,360
make sure you check out our sponsors. They keep us

1069
00:54:28,400 --> 00:54:31,880
in business. Now go write some code. See you next time.

1070
00:54:32,800 --> 00:54:41,400
Speaker 3: You got Jamal Vans and

