WEBVTT
1
00:00:01.169 --> 00:00:04.790
How'd you like to listen to. NET Rocks with no ads? Easy.
2
00:00:05.370 --> 00:00:08.769
Become a patron. For just $ 5 a month, you get
3
00:00:08.890 --> 00:00:11.720
access to a private RSS feed where all the shows
4
00:00:11.800 --> 00:00:14.900
have no ads. $ 20 a month will get you that
5
00:00:15.119 --> 00:00:18.839
and a special. NET Rocks patron mug. Sign up now
6
00:00:18.899 --> 00:00:36.549
at patreon.dotnetrocks.com. Hey, and welcome back to. NET Rocks. I'm
7
00:00:36.590 --> 00:00:37.210
Carl Franklin.
8
00:00:37.289 --> 00:00:37.950
And I'm Richard Kaplan.
9
00:00:38.049 --> 00:00:41.250
Our friend Don XML, I mean, Don Demsack is here.
10
00:00:41.270 --> 00:00:41.530
Oh, jeez.
11
00:00:42.170 --> 00:00:44.590
Or is he Don Jason? Are you Don Jason now?
12
00:00:45.109 --> 00:00:45.770
That's my brother.
13
00:00:48.700 --> 00:00:51.880
At least he didn't say Don Yammel. God knows. No.
14
00:00:51.899 --> 00:00:52.659
No.
15
00:00:53.479 --> 00:00:58.119
This is going to be a good one. This is
16
00:00:58.259 --> 00:01:01.460
episode 2018. And as we always do at the top
17
00:01:01.500 --> 00:01:04.040
of the show, let's talk about things that happened that year.
18
00:01:05.120 --> 00:01:07.799
I get all the depressing ones and Richard gets all
19
00:01:07.840 --> 00:01:09.760
the happy ones in space and tech.
20
00:01:09.780 --> 00:01:11.459
Just have to pick carefully.
21
00:01:11.480 --> 00:01:15.849
Yeah, I guess so. But, you know, these are important events, right?
22
00:01:15.950 --> 00:01:16.250
Are they?
23
00:01:16.390 --> 00:01:17.310
School shootings.
24
00:01:17.750 --> 00:01:18.030
Are they?
25
00:01:18.170 --> 00:01:20.689
Robert Mueller's Russia investigation.
26
00:01:20.909 --> 00:01:21.290
Oh, yeah.
27
00:01:21.469 --> 00:01:21.689
Well.
28
00:01:21.730 --> 00:01:25.590
Brett Kavanaugh, Supreme Court confirmation battle.
29
00:01:25.689 --> 00:01:25.870
Yeah.
30
00:01:25.930 --> 00:01:30.620
The 2018 midterm elections when the Democrats took over. The
31
00:01:30.659 --> 00:01:32.640
Democrats strike back. Did they?
32
00:01:32.799 --> 00:01:33.079
Okay.
33
00:01:33.400 --> 00:01:33.840
Well, okay.
34
00:01:33.959 --> 00:01:34.239
I don't know.
35
00:01:37.599 --> 00:01:40.829
Trump and Kim Jong-un, still crazy after all these years.
36
00:01:41.269 --> 00:01:41.549
Nice.
37
00:01:42.030 --> 00:01:42.590
Still friends.
38
00:01:42.609 --> 00:01:45.290
I think that was one of the first meetings, wasn't it?
39
00:01:45.709 --> 00:01:46.290
Yeah, yeah.
40
00:01:46.670 --> 00:01:54.019
June 12th in Singapore. Jamal Khashoggi, as Trump said, these
41
00:01:54.040 --> 00:02:00.260
things happen. He was killed and dissolved in a bathtub
42
00:02:00.400 --> 00:02:00.959
of acid.
43
00:02:01.219 --> 00:02:01.659
Or something.
44
00:02:01.680 --> 00:02:02.040
Okay. Okay.
45
00:02:02.849 --> 00:02:07.480
Or something. That's what we think. California wildfires happens every year,
46
00:02:07.560 --> 00:02:11.520
but 2018 was particularly bad. The Me Too movement and
47
00:02:11.539 --> 00:02:15.639
the Larry Nassar scandal. And just to put a little
48
00:02:15.659 --> 00:02:17.879
fine point on it, hurricanes Florence and Michael.
49
00:02:18.120 --> 00:02:18.280
Right.
50
00:02:18.439 --> 00:02:19.000
Those are good ones.
51
00:02:19.120 --> 00:02:21.139
Catastrophic flooding in the Carolinas.
52
00:02:21.319 --> 00:02:21.590
Yeah.
53
00:02:21.840 --> 00:02:24.650
And the Florida panhandle. All right, Richard. That's enough.
54
00:02:24.889 --> 00:02:28.449
Well, it was also, remember that cave rescue in Thailand? Oh, yeah.
55
00:02:28.750 --> 00:02:31.449
Those students went in and there was the flash flood.
56
00:02:31.530 --> 00:02:32.289
That's when that happened.
57
00:02:32.310 --> 00:02:33.210
That was a good story.
58
00:02:33.430 --> 00:02:33.789
It was.
59
00:02:33.870 --> 00:02:36.129
I mean, one of the rescuers lost their lives trying
60
00:02:36.150 --> 00:02:38.909
to save those kids. Right. But they were successful. Do
61
00:02:39.270 --> 00:02:42.090
you remember when, I think that's when Elon started going crazy. Yeah.
62
00:02:42.189 --> 00:02:44.509
Remember he really wanted to be involved in that. It's like,
63
00:02:44.530 --> 00:02:48.580
you're not actually qualified. I'll build a submersible. It's like, A,
64
00:02:48.590 --> 00:02:50.719
you don't know how to build a submersible. And B,
65
00:02:51.280 --> 00:02:53.939
that's not going to work in a cave either. And
66
00:02:53.960 --> 00:02:56.759
then he got really snarky and started calling people pedophiles
67
00:02:56.800 --> 00:02:59.599
and things. Yeah. I don't know. It was one of
68
00:02:59.620 --> 00:03:02.969
those moments because this is the same year that the
69
00:03:03.030 --> 00:03:05.370
Falcon Heavy flies for the first time and Elon put
70
00:03:05.409 --> 00:03:09.430
his red Tesla Roadster on top of it as the payload,
71
00:03:09.949 --> 00:03:11.250
which was pretty cool.
72
00:03:11.330 --> 00:03:13.930
I thought that was the cool Elon doing that.
73
00:03:13.969 --> 00:03:17.580
Yeah. But it's interesting to think that's the same year
74
00:03:17.639 --> 00:03:21.259
he goes nuts on this cave rescue thing so i
75
00:03:21.280 --> 00:03:22.439
mean things are just getting.
76
00:03:22.240 --> 00:03:27.719
Weirder and weirder yeah weirdness weirdness abides um also i
77
00:03:27.759 --> 00:03:31.370
want to mention aretha franklin and anthony bourdain died in
78
00:03:31.370 --> 00:03:35.210
2018 yeah very sad also paul allen very sad about
79
00:03:35.250 --> 00:03:39.310
have you there's a new movie like a documentary about anthony.
80
00:03:39.189 --> 00:03:41.930
There's an anthony bourdain movie coming out imminently yeah so
81
00:03:41.949 --> 00:03:43.500
it hasn't come out yet I think it's just out
82
00:03:43.520 --> 00:03:44.319
brand new. Okay.
83
00:03:44.520 --> 00:03:45.240
Yeah. I want to see that.
84
00:03:45.300 --> 00:03:45.479
Yeah.
85
00:03:45.740 --> 00:03:49.169
Also George H.W. Bush and John McCain died. Yeah.
86
00:03:49.370 --> 00:03:51.830
All right, Richard, save us from this misery. So I
87
00:03:52.129 --> 00:03:54.270
mentioned the Falcon heavy flight, which, yeah, that was pretty cool.
88
00:03:54.289 --> 00:03:56.090
We ended up doing a geek out about it. I mean,
89
00:03:56.110 --> 00:03:59.229
it was just an extraordinary rocket strapping three side by side.
90
00:04:00.210 --> 00:04:03.030
Originally he had planned on doing something called asparagus staging,
91
00:04:03.060 --> 00:04:05.060
where he was actually going to feed the fuel from
92
00:04:05.120 --> 00:04:08.610
the wing of boosters into the center so that when
93
00:04:08.669 --> 00:04:12.050
the outer boosters were empty and separated, the center booster
94
00:04:12.069 --> 00:04:15.849
would be completely full. Never happened. Instead, they do it
95
00:04:15.889 --> 00:04:18.149
the simpler way, which is simply to throttle down the
96
00:04:18.189 --> 00:04:21.319
center booster so it doesn't burn as much fuel. That
97
00:04:21.360 --> 00:04:23.740
being said, Falcon Heavy, you'd be never real happy with
98
00:04:23.779 --> 00:04:26.720
it The simple reason that it has a lot of power,
99
00:04:26.759 --> 00:04:28.860
but it doesn't have a lot of payload space. And
100
00:04:28.879 --> 00:04:31.959
so there's relatively few cases where it's needed. And he
101
00:04:31.980 --> 00:04:35.250
was already talking about what we now know is Starship, uh,
102
00:04:35.370 --> 00:04:38.250
and starting to do prototypes around all of that. Uh,
103
00:04:38.259 --> 00:04:42.310
we have a lot of cool, uh, satellites up in 2018,
104
00:04:42.310 --> 00:04:46.750
starting with tests, the transiting exoplanet survey satellite. So this
105
00:04:46.769 --> 00:04:51.129
was the only, the third of the dedicated finding exoplanet
106
00:04:51.149 --> 00:04:55.069
satellites that the, the successor of Kepler. Kepler had launched
107
00:04:55.100 --> 00:04:59.240
back in 2009 and found 2,600 exoplanets. That was Kepler's
108
00:04:59.300 --> 00:05:02.620
mission was to do deep surveys to see how common
109
00:05:02.839 --> 00:05:06.759
are planets. And the answer is very common. Most stars
110
00:05:06.839 --> 00:05:11.100
have planets. TESS as a survey satellite is not designed
111
00:05:11.139 --> 00:05:15.160
to observe as closely, but to cover much larger tracks
112
00:05:15.279 --> 00:05:19.040
of the sky. And fast forwarding eight years now, it's
113
00:05:19.079 --> 00:05:23.759
found over 8,000 potential objects that generally need additional surveying.
114
00:05:24.269 --> 00:05:28.790
because it is a survey spacecraft. But of those 8,000,
115
00:05:28.790 --> 00:05:31.629
almost 1,000 have not been confirmed as exoplanets. So if
116
00:05:31.649 --> 00:05:36.689
you're keeping count, we're up around 6,300 confirmed exoplanets so
117
00:05:36.750 --> 00:05:41.569
far from all of our different collection methodologies. This is
118
00:05:41.610 --> 00:05:44.550
not how Star Trek was supposed to work. Remember in
119
00:05:44.569 --> 00:05:46.470
Star Trek, you had to fly to the solar system
120
00:05:46.490 --> 00:05:48.250
to see the planets? No, we're going to have a
121
00:05:48.300 --> 00:05:50.620
map of all of them long before we can get
122
00:05:50.639 --> 00:05:53.579
to any of them. There's a couple of asteroid missions.
123
00:05:53.639 --> 00:05:59.759
Hayabusa 2 in June got to Rigu. And in December,
124
00:06:00.420 --> 00:06:03.420
OSIRIS-REx gets to Bennu, which is cool. We start to
125
00:06:03.480 --> 00:06:06.379
explore asteroids sort of on a regular basis. In August,
126
00:06:06.430 --> 00:06:09.870
the Parker Solar Probe, the first time we've ever tried
127
00:06:09.910 --> 00:06:13.310
to fly a satellite to the sun. to actually do
128
00:06:13.370 --> 00:06:16.769
measurements of its outer atmosphere. That's a very difficult thing
129
00:06:16.810 --> 00:06:18.550
to do. You have to go really, really fast to
130
00:06:18.569 --> 00:06:18.810
do that.
131
00:06:18.829 --> 00:06:21.269
Remember Richard Pryor's bit, the first man to walk on
132
00:06:21.310 --> 00:06:21.649
the sun?
133
00:06:21.670 --> 00:06:25.009
Ooh, ah, ah, ooh, how?
134
00:06:26.180 --> 00:06:28.720
So to make the solar probe go fast enough to
135
00:06:28.759 --> 00:06:30.240
get that close to the sun, they launched on a
136
00:06:30.259 --> 00:06:32.620
Delta IV, which is one of the highest performance rockets
137
00:06:32.660 --> 00:06:36.339
ever made. It's largely obsolete now and retired and broke
138
00:06:36.360 --> 00:06:37.740
a bunch of speed records to try and get it
139
00:06:37.779 --> 00:06:40.259
down there. It'll take a while to actually get close
140
00:06:40.300 --> 00:06:42.019
enough and actually start to do sampling of the sun.
141
00:06:42.620 --> 00:06:45.439
Also in August was when on the International Space Station,
142
00:06:45.540 --> 00:06:50.279
Soyuz MS-09, this is the vehicle that they transport astronauts
143
00:06:50.339 --> 00:06:52.300
to and from the space station, which at that time,
144
00:06:52.319 --> 00:06:55.990
because the shuttle is no longer flying and Crew Dragon
145
00:06:56.019 --> 00:06:58.610
doesn't exist yet, it's still in development, was the only
146
00:06:58.649 --> 00:07:00.990
way to get to the station. They find a two
147
00:07:01.089 --> 00:07:05.389
millimeter hole in the orbital module of the Soyuz. And
148
00:07:05.410 --> 00:07:07.230
there was a lot of controversy about whether it was
149
00:07:07.350 --> 00:07:09.750
drilled because it was sort of a perfect hole or
150
00:07:09.790 --> 00:07:12.569
was it just that right hole? you know, penetrator that
151
00:07:12.610 --> 00:07:15.189
it went through there. Anyway, fixed with a piece of
152
00:07:15.509 --> 00:07:16.430
cape on tape.
153
00:07:16.449 --> 00:07:17.430
Could have been mice.
154
00:07:17.750 --> 00:07:19.910
You know, and because it was the Orbridge module, it
155
00:07:19.930 --> 00:07:21.829
doesn't have to survive re-entry, so it's not that big
156
00:07:21.850 --> 00:07:23.509
of a deal. But yeah, it kicked up a lot
157
00:07:23.550 --> 00:07:27.569
of speculation. And if that wasn't enough, the very next
158
00:07:27.649 --> 00:07:31.250
Soyuz in October, this is Soyuz MS-10, it was only
159
00:07:31.290 --> 00:07:33.889
carrying two passengers. Normally, the Soyuz can carry three, but
160
00:07:33.930 --> 00:07:39.569
occasionally fly with less. In this case, it had Alexei Ovichin, And, uh,
161
00:07:39.680 --> 00:07:42.740
from Roscosmos and Nick Hague from NASA, they were going
162
00:07:42.759 --> 00:07:44.699
to be part of the exhibition 57 to the international
163
00:07:44.720 --> 00:07:49.160
space station. But two minutes after launch, there was a failure.
164
00:07:49.399 --> 00:07:52.199
And Soyuz is one of the most reliable, most flown
165
00:07:52.220 --> 00:07:53.500
spacecraft of all time.
166
00:07:53.579 --> 00:07:53.839
Yeah.
167
00:07:53.899 --> 00:07:56.220
This was one of the very rare failures and it
168
00:07:56.240 --> 00:08:00.189
was a failure that had never occurred before. There was
169
00:08:00.199 --> 00:08:02.810
something wrong in the sensor of one of the strap-on boosters.
170
00:08:02.829 --> 00:08:05.449
There are four strap-on boosters that famously separate from a
171
00:08:05.490 --> 00:08:08.170
Soyuz and do what they call the Korolev cross. As
172
00:08:08.189 --> 00:08:10.649
they come flying off. And it didn't happen this time.
173
00:08:10.709 --> 00:08:12.459
And the one booster hung up. And then when it
174
00:08:12.500 --> 00:08:17.360
did break away, it struck the central booster core. And
175
00:08:17.420 --> 00:08:20.560
that ended the going into space. As Nick Hague said,
176
00:08:20.620 --> 00:08:22.860
as soon as the bouncing around started, I guess we're
177
00:08:22.899 --> 00:08:27.139
not going to the space station. But at this point,
178
00:08:27.160 --> 00:08:29.639
they're already 50 kilometers up. And that's too high for
179
00:08:29.699 --> 00:08:33.659
the escape tower. So it's already been ejected. But there is...
180
00:08:34.269 --> 00:08:38.549
Mode 2, Ascent Abort, a system that had been tested
181
00:08:38.690 --> 00:08:41.899
but never used. And this was the first and only
182
00:08:41.940 --> 00:08:42.919
time it's ever been used.
183
00:08:43.100 --> 00:08:45.159
So they basically turned it around and re-entered?
184
00:08:45.259 --> 00:08:47.620
It's more complicated than that because you've got an exploding
185
00:08:47.679 --> 00:08:49.679
rocket behind you, so you don't want to be near that.
186
00:08:49.750 --> 00:08:52.789
So instead of abort motors fire and push the Soyuz
187
00:08:52.830 --> 00:08:56.049
assembly away from the booster, and then you have to
188
00:08:56.210 --> 00:09:00.370
get into... descent mode because you're carrying the propulsion module
189
00:09:00.409 --> 00:09:03.309
as well as descent module and the orbital module so
190
00:09:03.370 --> 00:09:05.370
those each have to be pushed off and then it
191
00:09:05.409 --> 00:09:07.480
has to switch over to descent mode get the heat
192
00:09:07.500 --> 00:09:12.259
shield pointed down and actually land because of the angle
193
00:09:12.279 --> 00:09:14.259
of ascent they only get to about 90 kilometers so
194
00:09:14.279 --> 00:09:16.059
they spend some time in free fall still going up
195
00:09:16.120 --> 00:09:17.139
the explosion happened.
196
00:09:16.940 --> 00:09:19.620
At 50 dude you should make movies This is great.
197
00:09:20.179 --> 00:09:20.799
It's crazy.
198
00:09:21.000 --> 00:09:22.580
It's like I'm on the edge of my seat.
199
00:09:22.679 --> 00:09:25.000
And they're in free fall, and now they have to reorient,
200
00:09:25.019 --> 00:09:27.110
and they do a ballistic return, which means those poor
201
00:09:27.120 --> 00:09:30.950
guys pulled about seven Gs as they came back down.
202
00:09:32.289 --> 00:09:35.830
Worked perfectly. Both astronauts walked away. The crazy part is
203
00:09:35.870 --> 00:09:40.889
realizing from launch at Balkanur to on the ground about
204
00:09:40.889 --> 00:09:44.019
200 kilometers downrange in Kazakhstan, 19 minutes.
205
00:09:44.419 --> 00:09:44.879
Oh, my God.
206
00:09:45.289 --> 00:09:45.710
Goodness.
207
00:09:46.029 --> 00:09:49.379
It was fast and it's all automated. Like basically they
208
00:09:49.399 --> 00:09:52.659
were having trouble keeping up with the control systems working
209
00:09:52.700 --> 00:09:53.000
through it.
210
00:09:53.059 --> 00:09:55.259
That's definitely not enough time for a feature film.
211
00:09:55.470 --> 00:09:57.970
No, it's pretty quick, but I'm sure there's a bit
212
00:09:57.990 --> 00:09:59.970
of story to go around it. Anyway, it worked flawlessly.
213
00:10:00.659 --> 00:10:03.019
and they would eventually get to space on a different
214
00:10:03.039 --> 00:10:08.600
spacecraft because that one weren't no good no more. In November,
215
00:10:08.740 --> 00:10:10.899
we have the 20th anniversary of the International Space Station
216
00:10:10.919 --> 00:10:14.580
because the Zarya module went up in 1998. We're also
217
00:10:14.679 --> 00:10:18.299
fully over into commercial resupply now. So Roscoff's mostly due
218
00:10:18.350 --> 00:10:22.570
to five deliveries in 2018. But SpaceX does three on
219
00:10:22.629 --> 00:10:26.370
Cargo Dragon. Orbital ATK does three with Cygnus. And JAXA
220
00:10:26.409 --> 00:10:31.909
has one HTV delivery. So a total of, what is that, 12.
221
00:10:31.909 --> 00:10:34.450
And also in November, the InSight lander lands on Mars.
222
00:10:34.509 --> 00:10:37.200
First thing to have landed on Mars since Perseverance. And
223
00:10:37.299 --> 00:10:41.440
it's doing measurements of Mars quakes and interior mapping of Mars.
224
00:10:41.990 --> 00:10:45.990
by looking at reverberations that travel through the planet. And finally,
225
00:10:46.110 --> 00:10:50.720
in December, China launches the Chang'e 4 relay satellite in
226
00:10:50.840 --> 00:10:53.779
preparation for their landing, putting a lander and rover down
227
00:10:53.799 --> 00:10:55.480
on the far side of the moon. They need a
228
00:10:55.519 --> 00:10:57.159
satellite to be able to communicate with the far side
229
00:10:57.179 --> 00:10:59.460
of the moon. So that goes up in 2018. The
230
00:10:59.500 --> 00:11:02.539
big mission will be in 2019. Ready for compute stories?
231
00:11:02.879 --> 00:11:03.200
Yes.
232
00:11:03.720 --> 00:11:05.379
And you always think I have to give you all
233
00:11:05.399 --> 00:11:07.620
the good news. So let's start off in January with
234
00:11:07.720 --> 00:11:10.000
Meltdown Inspector. Okay.
235
00:11:10.039 --> 00:11:10.159
Okay.
236
00:11:10.809 --> 00:11:18.870
So these were discovered potential exploits using a speculative execution
237
00:11:18.889 --> 00:11:23.700
that exists in both AMD and Intel processors. And there
238
00:11:23.740 --> 00:11:25.740
was no security around that. So the theory was that
239
00:11:25.759 --> 00:11:27.879
if you did stuff exactly right, you might be able
240
00:11:27.899 --> 00:11:30.740
to grab data from another virtual machine that was running through.
241
00:11:31.100 --> 00:11:34.179
This exploit has never been found in the wild. Even
242
00:11:34.259 --> 00:11:36.519
attempts to try and utilize it have been largely futile.
243
00:11:36.559 --> 00:11:39.990
But at the time, they really freaked out. And putting
244
00:11:40.029 --> 00:11:44.860
security rules in place caused substantial performance penalties. I think
245
00:11:44.879 --> 00:11:48.720
to talk about literally 20% of available compute disappeared to
246
00:11:48.759 --> 00:11:50.200
fix spectrum and meltdown.
247
00:11:50.480 --> 00:11:50.960
Not good.
248
00:11:51.000 --> 00:11:51.679
Remember that?
249
00:11:51.720 --> 00:11:52.019
Wow.
250
00:11:52.399 --> 00:11:54.759
And adding to my, I don't only have good news
251
00:11:55.039 --> 00:11:59.379
stories in 2018, Google officially removes their don't be evil
252
00:11:59.460 --> 00:12:02.100
from their code of conduct. I mean, they didn't add
253
00:12:02.120 --> 00:12:04.139
be evil, but they just took out the don't be.
254
00:12:04.759 --> 00:12:08.919
And then in March, uh, The Cambridge Analytica scandal. Oh, yes.
255
00:12:09.259 --> 00:12:12.000
Where Cambridge Analytica had mined Facebook data in a way
256
00:12:12.019 --> 00:12:15.220
that not even Facebook had thought about and was very
257
00:12:15.279 --> 00:12:19.620
effective at doing things like creating ads for individuals where
258
00:12:19.639 --> 00:12:22.649
the individual didn't realize they're the only ones seeing the ad.
259
00:12:22.970 --> 00:12:26.389
A very effective strategy for getting a group of English
260
00:12:26.429 --> 00:12:29.110
people to vote against their best interests and exit the EU.
261
00:12:29.269 --> 00:12:31.230
Now we have Facebook and nobody cares.
262
00:12:31.250 --> 00:12:32.169
There you go. Yeah.
263
00:12:32.330 --> 00:12:32.929
Targeted ad.
264
00:12:33.029 --> 00:12:37.110
And in April, Belgium declares... video game loot box systems
265
00:12:37.149 --> 00:12:40.590
to be gambling and illegal for minors, which it is.
266
00:12:40.610 --> 00:12:46.549
I don't disagree with them. Interesting problem. Yeah. Don't manipulate children, please. Well,
267
00:12:46.889 --> 00:12:50.029
not too heavily. And then in May, the GDPR is enacted.
268
00:12:50.490 --> 00:12:53.210
It's been in development for a few years. This is
269
00:12:53.250 --> 00:12:56.129
why you have to keep agreeing to cookies as well
270
00:12:56.169 --> 00:12:57.500
as a bunch of other things like the right to
271
00:12:57.529 --> 00:13:02.840
be forgotten and serious fines for not being forthright with breaches.
272
00:13:03.120 --> 00:13:03.299
Yeah.
273
00:13:03.639 --> 00:13:05.500
Um, over on the Microsoft side of things, it may,
274
00:13:05.519 --> 00:13:10.570
we have build 2018, which ships.net core 2.1. But also,
275
00:13:10.590 --> 00:13:12.429
and I realized this in hindsight, when I was putting
276
00:13:12.450 --> 00:13:15.210
this together is sort of the first wave of AI stuff.
277
00:13:15.230 --> 00:13:17.710
Remember visual studio and telecode? I think we did a
278
00:13:17.769 --> 00:13:18.269
show on it.
279
00:13:18.370 --> 00:13:18.830
Yeah. Yeah.
280
00:13:18.850 --> 00:13:18.990
Yeah.
281
00:13:19.090 --> 00:13:21.429
Where it wasn't an, you know, we're really talking about having,
282
00:13:21.529 --> 00:13:24.320
helping to generate code for testing and things. It's also
283
00:13:24.360 --> 00:13:27.940
the year they ship ml.net machine learning.net for, for doing
284
00:13:27.980 --> 00:13:28.700
models that way.
285
00:13:28.720 --> 00:13:29.059
Right.
286
00:13:29.350 --> 00:13:32.409
And certainly last but not least, for the build announcements,
287
00:13:32.480 --> 00:13:35.059
one of the ones that I jumped over was Azure Sphere.
288
00:13:35.120 --> 00:13:37.620
Do you remember this? This is when Microsoft starts building
289
00:13:37.659 --> 00:13:41.500
their own flavor of a Linux operating system for IoT.
290
00:13:42.570 --> 00:13:45.370
It's subsequently been phased out now, but for a few
291
00:13:45.409 --> 00:13:48.149
years here, it's like, Microsoft makes their own Linux. I
292
00:13:48.210 --> 00:13:48.549
love that.
293
00:13:48.710 --> 00:13:48.870
Mm-hmm.
294
00:13:49.490 --> 00:13:51.210
Later in the year, in October, well, actually it was
295
00:13:51.250 --> 00:13:54.320
announced in June, but completed in October, Microsoft acquires GitHub
296
00:13:54.340 --> 00:13:59.120
for $ 7. 5 billion. And our friend, Nat Friedman, formerly of Xamarin,
297
00:13:59.179 --> 00:14:02.679
now a Microsoft employee, becomes the new CEO of GitHub.
298
00:14:02.860 --> 00:14:04.700
We get Core 2.2 at the end of the year
299
00:14:04.720 --> 00:14:05.600
in December. Yeah.
300
00:14:05.779 --> 00:14:07.360
A couple other compute stories.
301
00:14:08.019 --> 00:14:10.649
This is the year that Elon Musk attempts to take
302
00:14:10.750 --> 00:14:13.529
over OpenAI from his partners and gets booted out of it.
303
00:14:13.529 --> 00:14:15.509
And he's still angry about that and purse fights with
304
00:14:15.549 --> 00:14:16.769
Sam Altman on regular basis.
305
00:14:16.950 --> 00:14:19.110
Yeah, because... That's where he is right now.
306
00:14:19.309 --> 00:14:22.539
Because reasons, because I realized all the same, the same
307
00:14:22.600 --> 00:14:25.759
year that he flies the biggest rocket in history into
308
00:14:25.799 --> 00:14:28.860
space and puts a sports car into space, which still orbiting,
309
00:14:28.879 --> 00:14:32.259
you know, between the earth and Mars also, you know,
310
00:14:32.370 --> 00:14:36.649
call some guy trying to save children in Thailand, a pedophile, uh,
311
00:14:36.730 --> 00:14:39.899
also tries to hijack the AI company. Yeah. Uh, We're
312
00:14:39.940 --> 00:14:43.210
coming into the period of excitement as we're going through
313
00:14:43.230 --> 00:14:47.470
these next few years in quantum computing. And in 2018,
314
00:14:47.470 --> 00:14:50.610
there was a very important paper published, the NISC paper,
315
00:14:50.669 --> 00:14:54.250
which means Noisy Intermediate Scale Quantum, this paper by John Preskill.
316
00:14:55.149 --> 00:14:59.549
This is the point where companies are starting to build qubits,
317
00:14:59.929 --> 00:15:03.289
build these chandelier dipped in liquid helium style computers that
318
00:15:03.309 --> 00:15:06.250
have about 50 qubits or so forth. And in this paper,
319
00:15:06.269 --> 00:15:08.490
he talks about it's all going to be about error correction.
320
00:15:09.220 --> 00:15:10.860
that we're getting out of the lab. These things are
321
00:15:10.879 --> 00:15:12.340
going to be able to do certain levels of compute,
322
00:15:12.360 --> 00:15:15.610
but without really fault tolerance in this, you're not going
323
00:15:15.629 --> 00:15:20.049
to be able to get much done. And that sets
324
00:15:20.149 --> 00:15:22.529
up Google, who's driving a lot of this stuff with
325
00:15:22.570 --> 00:15:26.549
their quantum toolkit, aimed at researchers for testing what prototype
326
00:15:26.570 --> 00:15:28.940
hardware could do, which is funny because next year they'll
327
00:15:29.240 --> 00:15:32.919
actually produce the second market process. So obviously Google was anticipated.
328
00:15:33.419 --> 00:15:33.919
And that's what I got.
329
00:15:34.250 --> 00:15:34.570
All right.
330
00:15:34.610 --> 00:15:38.730
Well, before we bring Don on, let's talk about Better
331
00:15:38.750 --> 00:15:40.149
Know Framework. Roll the music.
332
00:15:40.230 --> 00:15:40.490
Awesome.
333
00:15:40.809 --> 00:15:43.870
All right, man.
334
00:15:44.230 --> 00:15:51.399
What do you got? Guess who's back in Better Know Framework?
335
00:15:51.539 --> 00:15:57.080
I think I know. He's Australian. It's Simon.
336
00:15:57.320 --> 00:15:57.860
It's Simon.
337
00:15:58.539 --> 00:16:05.009
So he belongs to our Appfee Next Slack channel. And
338
00:16:05.210 --> 00:16:08.519
he basically knew that I had done some work into
339
00:16:08.600 --> 00:16:14.480
looking into serializing link queries and passing them from client
340
00:16:14.519 --> 00:16:18.820
to server and pretty much gave up. And there was
341
00:16:18.860 --> 00:16:23.049
a whole smattering of GitHub repos out there of people
342
00:16:23.090 --> 00:16:26.149
who attempted it. And I tried like 50% of them
343
00:16:26.169 --> 00:16:29.090
and they all failed. And so he came up with
344
00:16:29.129 --> 00:16:33.559
this thing called SCRY, S-C-R-Y, or maybe it's SCARY. I
345
00:16:33.580 --> 00:16:33.799
don't know.
346
00:16:33.879 --> 00:16:34.559
Or Scree.
347
00:16:34.759 --> 00:16:35.379
Or Scree?
348
00:16:35.440 --> 00:16:35.700
Yeah.
349
00:16:35.779 --> 00:16:38.860
He doesn't have a pronunciation legend, but he says it's
350
00:16:38.919 --> 00:16:43.070
a type-safe serializable link from a client to a server
351
00:16:43.159 --> 00:16:47.470
side EF core model. And I had told him, and
352
00:16:47.750 --> 00:16:52.590
both Mateus Carvalho and I had worked on this before,
353
00:16:52.629 --> 00:16:56.169
and Mateus came up with something, and I came up
354
00:16:56.190 --> 00:17:01.740
with something, AVN repository, that basically tells Did the same,
355
00:17:01.779 --> 00:17:07.279
but I used classes and serialized those classes for filtering
356
00:17:07.380 --> 00:17:11.099
and basically all aspects of a SQL query, a link query, right?
357
00:17:11.640 --> 00:17:14.660
A where, an order by, all of that stuff just
358
00:17:14.720 --> 00:17:16.269
turned into data and passed in.
359
00:17:16.289 --> 00:17:16.809
And it works.
360
00:17:17.349 --> 00:17:23.150
But as Simon pointed out, it's not as efficient as
361
00:17:23.190 --> 00:17:26.289
what he's doing. Yeah. So this is, and he has a,
362
00:17:26.950 --> 00:17:28.650
there's two links. We're going to give you a link
363
00:17:28.670 --> 00:17:32.109
to the scary or the scry or scree project. And
364
00:17:32.170 --> 00:17:36.549
then there's this doc querying MD composing a query at runtime.
365
00:17:37.990 --> 00:17:41.079
And so he just talks about how to do that,
366
00:17:41.150 --> 00:17:47.480
how to create projections and computer projection members. It's really cool. And,
367
00:17:47.700 --> 00:17:49.039
and it works interesting.
368
00:17:49.180 --> 00:17:50.299
And so, yeah.
369
00:17:50.420 --> 00:17:54.960
And, and so, yeah. Um, Simon, you win the prize.
370
00:17:55.220 --> 00:17:55.960
You're awesome.
371
00:17:56.319 --> 00:17:59.240
You're the first person I know who has actually done this.
372
00:17:59.849 --> 00:18:02.930
And maybe I just resigned and said, I can't be done.
373
00:18:02.990 --> 00:18:06.190
And maybe it was done, you know, long before that.
374
00:18:06.309 --> 00:18:06.670
I don't know.
375
00:18:06.950 --> 00:18:09.190
But that reminds me of link to rest.
376
00:18:09.650 --> 00:18:12.690
Oh, link to rest. Well, that sounds exactly like what
377
00:18:12.730 --> 00:18:13.230
I was doing.
378
00:18:13.410 --> 00:18:14.049
Yeah. Yeah.
379
00:18:14.069 --> 00:18:16.170
Because it was the inverse.
380
00:18:16.430 --> 00:18:16.670
Right.
381
00:18:16.769 --> 00:18:21.059
Where you, well, you created from a link query, you
382
00:18:21.220 --> 00:18:23.740
could create a query string.
383
00:18:23.980 --> 00:18:24.269
Right.
384
00:18:24.420 --> 00:18:26.119
But you couldn't put it back on the other side
385
00:18:26.140 --> 00:18:28.750
and turn it into a link query, which is, which
386
00:18:28.789 --> 00:18:30.529
is what he's doing. And what I wanted to do
387
00:18:30.589 --> 00:18:34.109
as well, right? Because you've got a form and it's
388
00:18:34.150 --> 00:18:36.289
got a whole bunch of search parameters. And if your
389
00:18:36.309 --> 00:18:38.289
data is local, great link query.
390
00:18:38.789 --> 00:18:41.009
Well, no, so it did it the other way too.
391
00:18:41.450 --> 00:18:42.690
If it's behind an API.
392
00:18:43.529 --> 00:18:48.039
Link to REST, it would, it was an ASP.NET. It
393
00:18:48.059 --> 00:18:52.369
was NBC, ASP.NET. It would, take that query string and
394
00:18:52.410 --> 00:18:54.630
then turn it into a link.
395
00:18:54.950 --> 00:19:00.160
Oh, okay. Well, that's great. Link to rest, rest to link. Okay. Well,
396
00:19:00.339 --> 00:19:02.960
check out scary or scree or scry or whatever it is.
397
00:19:03.960 --> 00:19:06.349
And ask Simon how to pronounce this thing.
398
00:19:06.369 --> 00:19:06.990
Cause I don't know.
399
00:19:07.509 --> 00:19:08.990
I'm sure there's a difference, but yeah.
400
00:19:09.109 --> 00:19:09.369
Right.
401
00:19:09.609 --> 00:19:11.509
I just remember link to rest.
402
00:19:11.930 --> 00:19:13.910
Well, Richard, who's talking to us today?
403
00:19:14.029 --> 00:19:16.650
Grabbed a comment off show 1994, the one we did
404
00:19:16.670 --> 00:19:19.470
with our friend Brady Gaster, talking about Squad. A lot
405
00:19:19.490 --> 00:19:20.630
of good comments on that show.
406
00:19:20.710 --> 00:19:20.890
Yeah.
407
00:19:21.130 --> 00:19:24.650
And this one comes from Paula Pinto, who says, while
408
00:19:24.769 --> 00:19:27.349
interesting as always, the whole Squad enthusiasm was pretty much
409
00:19:27.390 --> 00:19:30.890
focused on single developer workflow. Now not having to depend
410
00:19:30.930 --> 00:19:33.400
on anyone else to do related development tasks. It was
411
00:19:33.539 --> 00:19:37.039
all about their nicknamed agents without any ethical discussion of
412
00:19:37.079 --> 00:19:40.640
what tooling like Squad will have in developer teams. I've
413
00:19:40.660 --> 00:19:43.119
already observed how teams have been downsized. Thank the SaaS
414
00:19:43.160 --> 00:19:45.789
products for placing the need for backend developers, AI tooling
415
00:19:45.809 --> 00:19:47.670
doing the work of team members that used to do
416
00:19:47.690 --> 00:19:50.890
translations or asset creations for CMS platforms. Now we get
417
00:19:50.930 --> 00:19:54.099
tools like Squad reducing even further the amount of humans
418
00:19:54.140 --> 00:19:56.480
in the loop, getting celebrated for what a single developer
419
00:19:56.500 --> 00:19:58.559
could choose while taking into account the repercussions it has
420
00:19:59.000 --> 00:20:00.839
on those that are deemed no longer needed to be
421
00:20:00.859 --> 00:20:01.740
kept around as employees.
422
00:20:01.819 --> 00:20:03.259
Unless you didn't have a team to begin with.
423
00:20:03.319 --> 00:20:05.720
In a late capitalism-driven society, if $ 5 can do what...
424
00:20:06.690 --> 00:20:08.829
work of 20 developers thanks to tooling like squad the
425
00:20:08.869 --> 00:20:10.609
remaining 15 are out of the company like an old
426
00:20:10.630 --> 00:20:12.910
detroit they will need to find work that isn't yet taken.
427
00:20:12.710 --> 00:20:15.880
By ai unless you didn't start with a team yeah
428
00:20:16.000 --> 00:20:17.299
you were always one guy.
429
00:20:18.039 --> 00:20:20.819
But i also think it's kind of a short-sighted mindset
430
00:20:20.859 --> 00:20:24.299
too because i'm seeing more nobody team's not getting laid
431
00:20:24.339 --> 00:20:26.400
out but just working on the other stuff they hadn't
432
00:20:26.440 --> 00:20:29.160
gotten to like the joke for years was none of
433
00:20:29.220 --> 00:20:30.750
us would get to the bottom of our to-do list
434
00:20:32.079 --> 00:20:35.559
And now we're getting through the feature lists and starting
435
00:20:35.579 --> 00:20:38.619
to get into tech debt. And then other features start
436
00:20:38.700 --> 00:20:43.460
to appear. It's only the shortest-sighted of companies that would
437
00:20:43.500 --> 00:20:46.640
work on one thing and not think, what are the
438
00:20:46.680 --> 00:20:48.309
other things we could do? You've got a group of
439
00:20:48.349 --> 00:20:51.049
people who are now more powerful. Utilize them.
440
00:20:51.069 --> 00:20:52.970
You take all those people on the team, give them
441
00:20:53.049 --> 00:20:57.279
all a unique task, give them their AI tools. And
442
00:20:57.500 --> 00:20:59.789
set them free. And before you know it, you're through
443
00:20:59.880 --> 00:21:00.619
all of those things.
444
00:21:00.869 --> 00:21:01.089
Yeah.
445
00:21:01.200 --> 00:21:02.460
Technical debt's a big one.
446
00:21:02.589 --> 00:21:05.150
I also think there is a larger conversation about what
447
00:21:05.210 --> 00:21:09.069
the shape of teams looks like with these tools going forward. Right.
448
00:21:09.289 --> 00:21:10.430
We're still in early days.
449
00:21:10.789 --> 00:21:14.170
I've been running into folks who, in the startup community,
450
00:21:14.230 --> 00:21:16.390
are saying they don't need developers anymore.
451
00:21:16.970 --> 00:21:19.190
Yeah. That doesn't seem true.
452
00:21:20.710 --> 00:21:23.650
Somebody I ran into, he just came back from two
453
00:21:23.670 --> 00:21:27.670
weeks of a startup incubator, and he was saying, Of
454
00:21:27.750 --> 00:21:31.490
the 20 or so startups there, none of them had developers.
455
00:21:31.569 --> 00:21:31.809
Yeah.
456
00:21:31.930 --> 00:21:32.150
Right.
457
00:21:32.309 --> 00:21:33.289
That's easy to understand.
458
00:21:33.869 --> 00:21:35.950
Sure. All right, Paulo. Thank you so much for your comment.
459
00:21:36.049 --> 00:21:37.410
And a copy of Music Code Buy is on its
460
00:21:37.430 --> 00:21:38.569
way to you. And if you'd like a copy of
461
00:21:38.589 --> 00:21:42.369
Music Code Buy, write a comment on the website at. netronics. com
462
00:21:41.690 --> 00:21:43.500
or on the Facebooks. We publish every show there. And
463
00:21:43.539 --> 00:21:45.000
if you comment there and I read it on the show,
464
00:21:45.460 --> 00:21:46.690
we'll send you a copy of Music Code Buy.
465
00:21:46.700 --> 00:21:52.599
Or you could just go to musictocodebuy.net and get it yourself. MP3, WAV,
466
00:21:52.700 --> 00:21:56.240
and FLAC formats. Go ahead. You know you want it.
467
00:21:59.170 --> 00:22:01.809
All right, let's bring on Don Demsack. Don is a
468
00:22:01.849 --> 00:22:05.809
technology leader dedicated to strengthening the tech ecosystem in Central
469
00:22:05.849 --> 00:22:09.430
Pennsylvania and beyond. His day job is with a major
470
00:22:09.470 --> 00:22:14.279
technology company's infrastructure group where he helps CIOs and CTOs
471
00:22:14.380 --> 00:22:19.140
think like COOs. His nights and weekends go to volunteering
472
00:22:19.200 --> 00:22:21.700
as a board member of the Technology Council of Central
473
00:22:21.720 --> 00:22:26.569
PA and as an active member of Tech Lancaster. You
474
00:22:26.589 --> 00:22:29.970
can find his latest ramblings over on Substack. This is
475
00:22:30.039 --> 00:22:32.420
his fourth trip to. NET Rocks and the first in
476
00:22:32.460 --> 00:22:33.400
almost 20 years.
477
00:22:33.940 --> 00:22:34.740
It's been too long.
478
00:22:35.019 --> 00:22:40.140
Dude, I remember your first episode. It was during the
479
00:22:40.200 --> 00:22:44.140
Rory years. So it's episode 62. Rory years were 50
480
00:22:44.140 --> 00:22:49.970
to 100. And he somehow convinced you to come up
481
00:22:50.009 --> 00:22:52.130
to the studio. And you were there in the studio
482
00:22:52.170 --> 00:22:53.250
for us, with us.
483
00:22:53.769 --> 00:22:54.589
Yep. And you remember.
484
00:22:55.099 --> 00:22:57.539
Richard Roy used to do the Google weirdos thing.
485
00:22:57.720 --> 00:22:58.000
Right.
486
00:22:59.799 --> 00:23:03.039
So just for people who don't remember, he would look,
487
00:23:03.059 --> 00:23:08.460
he had a blog, popular blog, neopolian.com. And it was
488
00:23:08.779 --> 00:23:14.640
hysterical and very, very surreal. And he took it down
489
00:23:14.680 --> 00:23:16.809
because he, he wanted to be taken more seriously as
490
00:23:16.829 --> 00:23:19.230
a developer and everybody just wanted comic relief, but he
491
00:23:19.269 --> 00:23:23.670
was very funny. Anyway, he would look at the logs and,
492
00:23:24.390 --> 00:23:28.890
of what people typed into Google and then landed themselves
493
00:23:29.109 --> 00:23:31.609
on his blog, right? He could tell that it came
494
00:23:31.650 --> 00:23:36.579
from Google and the string is in the log, right?
495
00:23:36.599 --> 00:23:37.150
The URL.
496
00:23:38.130 --> 00:23:42.099
And so he would read these and they were just crazy,
497
00:23:42.119 --> 00:23:45.500
what people were looking for. But one of them, and
498
00:23:45.519 --> 00:23:49.740
I remember this specifically, Don, tell Don XML to come
499
00:23:49.799 --> 00:23:51.039
home and take out the garbage.
500
00:23:52.809 --> 00:23:56.930
You just made my wife's week. That is exactly. Make
501
00:23:57.049 --> 00:23:58.470
sure Carl brings that up.
502
00:23:59.190 --> 00:24:00.759
Oh, well, how could we not?
503
00:24:00.779 --> 00:24:03.000
I mean, it's crazy.
504
00:24:03.259 --> 00:24:06.259
But yeah, you used to be Don XML. And then
505
00:24:06.299 --> 00:24:09.759
I think by your third episode, which was 271, it
506
00:24:09.799 --> 00:24:11.740
was Don Demsack on Link to XML.
507
00:24:12.109 --> 00:24:16.599
Yeah. And who did the session before Mike? Do you remember?
508
00:24:16.619 --> 00:24:18.880
Uh, two 70 to 70.
509
00:24:18.880 --> 00:24:20.619
Let's see. I got the list right here.
510
00:24:22.099 --> 00:24:23.779
It's funny. It's all online. That's weird.
511
00:24:23.839 --> 00:24:25.740
Yes, it is. I can tell you.
512
00:24:25.759 --> 00:24:28.779
No, I got it right here. It was Eric Meyer,
513
00:24:29.220 --> 00:24:29.980
Eric Meyer.
514
00:24:30.400 --> 00:24:34.359
Oh, why the Eric Meyer on link on link? Yeah.
515
00:24:34.380 --> 00:24:35.539
The guy who helped create it.
516
00:24:35.599 --> 00:24:37.200
Something he knows a little thing about.
517
00:24:37.509 --> 00:24:37.740
Yeah.
518
00:24:37.809 --> 00:24:42.029
Just a little. Um, if you haven't, he, or, uh,
519
00:24:42.069 --> 00:24:46.339
been paying attention to him, uh, He recently has a
520
00:24:46.380 --> 00:24:48.980
video up on YouTube of a presentation.
521
00:24:49.000 --> 00:24:49.079
AI.
522
00:24:50.640 --> 00:24:58.319
Engineering, around how AI agents got teeth once we allowed
523
00:24:58.440 --> 00:25:03.279
them to do more than just chat when he gave
524
00:25:03.299 --> 00:25:06.579
them access to tools. And he throws out a whole
525
00:25:06.759 --> 00:25:11.529
theory of how we can lock down AI agents by
526
00:25:11.589 --> 00:25:16.039
making them do... mathematical proofs that the stuff that they're
527
00:25:16.059 --> 00:25:22.609
doing won't negatively impact something. It is an awesome video.
528
00:25:22.950 --> 00:25:25.269
Yeah, we need more of that. Absolutely.
529
00:25:25.269 --> 00:25:26.549
100%.
530
00:25:26.549 --> 00:25:30.990
I saw an article that you wrote on LinkedIn, which
531
00:25:31.029 --> 00:25:35.369
was also on your sub stack. Everything that I've seen
532
00:25:35.589 --> 00:25:39.259
from you has been thought-provoking, but this was about the
533
00:25:39.279 --> 00:25:48.039
new MCP 2.0 and how you can't make a stateful
534
00:25:48.279 --> 00:25:53.299
MCP server anymore if you're using 2.0. And so, yeah,
535
00:25:53.339 --> 00:25:55.589
we talked about that. I talked about that with Rocky
536
00:25:55.890 --> 00:26:02.730
on Code with AI. And Richard found your substack and
537
00:26:02.809 --> 00:26:05.529
found some good stuff that you're thinking of and talking about.
538
00:26:05.849 --> 00:26:06.650
And here you are.
539
00:26:06.890 --> 00:26:11.319
Yeah, it ties right back to what Eric is talking about.
540
00:26:11.380 --> 00:26:13.240
It was funny because I've been working on this for
541
00:26:13.279 --> 00:26:20.819
a bit. But this whole idea of how do we
542
00:26:20.980 --> 00:26:22.940
govern these agents better?
543
00:26:23.099 --> 00:26:23.559
Right. Sure.
544
00:26:23.700 --> 00:26:28.259
Everybody. Now, for the last two years, people have been
545
00:26:28.480 --> 00:26:32.279
really complaining about governance. But the big thing everybody now
546
00:26:32.380 --> 00:26:34.240
is complaining about is tokenomics.
547
00:26:34.500 --> 00:26:35.920
Tokenomics.
548
00:26:36.079 --> 00:26:39.420
That's the big thing that everybody is looking because now
549
00:26:39.440 --> 00:26:41.119
there's a cost per token.
550
00:26:41.279 --> 00:26:41.519
Right.
551
00:26:41.599 --> 00:26:46.710
Well, those two things are kind of related. about two
552
00:26:46.730 --> 00:26:49.809
years ago, just over two years ago, through my day job,
553
00:26:50.049 --> 00:26:54.750
I got to see a demo of some agentic AI.
554
00:26:55.509 --> 00:27:01.509
And the demo that they created was really thought-provoking because
555
00:27:01.529 --> 00:27:09.549
it didn't just show what the agents were working on,
556
00:27:09.950 --> 00:27:12.859
but it actually, at the bottom of it, showed the
557
00:27:12.990 --> 00:27:16.599
conversations the agents were actually having with each other. And
558
00:27:17.099 --> 00:27:20.960
I was like, wow, that looks like a Teams or
559
00:27:21.000 --> 00:27:26.839
a Slack conversation. But I'd never thought of agentic AI
560
00:27:27.180 --> 00:27:32.160
in that way. We're software developers. We think about APIs,
561
00:27:32.519 --> 00:27:36.539
application programming interfaces. Now there's this whole idea of a
562
00:27:37.220 --> 00:27:38.700
natural language interface.
563
00:27:38.900 --> 00:27:42.690
Or semi-natural, like The way those tools talk to each
564
00:27:42.789 --> 00:27:47.329
other is not that normal, but I get what you're saying.
565
00:27:47.430 --> 00:27:49.109
It is English of a sort.
566
00:27:49.750 --> 00:27:52.009
And that, that was the thing that jumped out at
567
00:27:52.029 --> 00:27:59.759
me was it was too generic in a team's chat.
568
00:27:59.920 --> 00:28:05.460
You expect a lot of three letter acronyms and very
569
00:28:05.519 --> 00:28:08.849
specific words. for each of the roles that are there.
570
00:28:09.369 --> 00:28:13.089
Think about chat between a DBA, a front end developer
571
00:28:13.130 --> 00:28:16.970
and a middle and a mid tier developer, all the conversations,
572
00:28:17.119 --> 00:28:19.220
all the acronyms that they wind up using.
573
00:28:19.319 --> 00:28:19.539
Yeah.
574
00:28:19.740 --> 00:28:20.920
That was lacking.
575
00:28:21.259 --> 00:28:24.039
It speaks to a lack of common context between the agents.
576
00:28:24.440 --> 00:28:28.160
And that's where my head was going was how do I, that,
577
00:28:28.220 --> 00:28:32.559
that seems to be missing. Um, and as you guys know,
578
00:28:32.619 --> 00:28:35.259
and you've got, you guys had a bunch of over
579
00:28:35.299 --> 00:28:39.950
the years, especially recently, domain-driven design type folks. I was like,
580
00:28:40.410 --> 00:28:42.009
there's no ubiquitous language.
581
00:28:42.549 --> 00:28:42.750
Right.
582
00:28:43.769 --> 00:28:52.130
What if we made these agents speak the ubiquitous language
583
00:28:52.599 --> 00:28:56.500
of the domain that they're in charge of?
584
00:28:56.819 --> 00:28:57.039
Right.
585
00:28:57.319 --> 00:28:59.240
That would be super cool.
586
00:28:59.599 --> 00:29:02.259
And really what you're doing is bracketing their context, right?
587
00:29:02.279 --> 00:29:04.400
That they need to use the correct language.
588
00:29:04.640 --> 00:29:09.339
Correct. And by doing that, there's side effects, lots of
589
00:29:09.380 --> 00:29:13.140
good side effects. If you can constrain them or control
590
00:29:13.200 --> 00:29:17.029
their language, I'm calling it a controlled natural language. Um,
591
00:29:17.390 --> 00:29:20.750
then they can only do what they can express.
592
00:29:21.450 --> 00:29:21.789
Yeah.
593
00:29:22.089 --> 00:29:23.430
And it's another kind of constraint.
594
00:29:23.910 --> 00:29:28.029
Think about the open AI hacking of hugging face.
595
00:29:28.589 --> 00:29:28.829
Right.
596
00:29:28.970 --> 00:29:34.759
Where it had access via MCP to a tool. figured
597
00:29:34.859 --> 00:29:38.990
out how to do something that wasn't desired by that tool.
598
00:29:39.450 --> 00:29:42.569
But if we had a natural, a constrained or controlled
599
00:29:42.609 --> 00:29:45.190
natural language in front of that, then they wouldn't be
600
00:29:45.250 --> 00:29:47.609
able to ask the things that they shouldn't be able
601
00:29:47.630 --> 00:29:48.009
to do.
602
00:29:48.210 --> 00:29:49.190
Yeah.
603
00:29:49.650 --> 00:29:55.769
So that's, and so the term, these are patterns that I,
604
00:29:56.380 --> 00:30:01.279
I'm using for this is instead of bounded context, domain-driven design,
605
00:30:01.740 --> 00:30:05.710
how about bounded agency? So how do we build walls
606
00:30:05.730 --> 00:30:09.910
around what the domain that that particular agent can do,
607
00:30:11.859 --> 00:30:15.279
not via just security, but actually ways to express it?
608
00:30:15.599 --> 00:30:17.220
If they don't have the language to express it, they
609
00:30:17.259 --> 00:30:17.640
can't do it.
610
00:30:17.759 --> 00:30:18.000
Right.
611
00:30:18.160 --> 00:30:21.859
So if you're adding another layer... Doesn't, uh, doesn't that
612
00:30:21.900 --> 00:30:22.960
affect your tokenomics?
613
00:30:23.259 --> 00:30:30.720
That's the other side is now you can actually decrease the, um, the,
614
00:30:31.220 --> 00:30:37.109
the verbiage that's going across. Um, and one of the
615
00:30:37.349 --> 00:30:41.109
major challenges with a natural language as us as humans
616
00:30:41.890 --> 00:30:43.849
is there's a lots of different ways to say the
617
00:30:43.910 --> 00:30:48.289
exact same thing, which leads to ambiguity. Right. And there's, and,
618
00:30:49.519 --> 00:30:53.299
By constraining it or controlling that language, you actually reduce
619
00:30:53.480 --> 00:31:00.019
the actual word count, which you're going to reduce the tokens.
620
00:31:00.240 --> 00:31:03.740
But then you're also decreasing your ambiguity, too, because you
621
00:31:03.759 --> 00:31:05.359
can only say it a certain way.
622
00:31:05.519 --> 00:31:09.900
Well, aren't you using tokens for that intermediate layer that
623
00:31:09.940 --> 00:31:11.250
does the translation?
624
00:31:11.710 --> 00:31:16.130
So originally, that's where I was thinking. But then I
625
00:31:16.150 --> 00:31:17.470
take it one step further.
626
00:31:17.490 --> 00:31:17.779
If I.
627
00:31:18.880 --> 00:31:24.400
can control the language, and so I can control the syntax.
628
00:31:24.440 --> 00:31:27.670
And this goes back to stuff that you guys know
629
00:31:27.690 --> 00:31:30.690
me from, XML. What did I do with XML? I
630
00:31:30.710 --> 00:31:34.329
created domain-specific languages. What did you do with JSON? Create
631
00:31:34.369 --> 00:31:38.279
domain-specific languages. What do we do with Fluent APIs and LINQ?
632
00:31:38.799 --> 00:31:43.720
We created the Fluent APIs and other languages within code. Well,
633
00:31:44.279 --> 00:31:50.519
with all the stuff that's been going on with chat
634
00:31:50.539 --> 00:31:55.940
GPT and natural language processing and stuff that we were
635
00:31:55.980 --> 00:32:00.160
doing with, with link back in the day. What if
636
00:32:00.299 --> 00:32:05.369
I could put a intent compiler in front of the
637
00:32:05.410 --> 00:32:12.069
tool that then parses that text because it's a constrained
638
00:32:12.109 --> 00:32:16.880
natural language. And instead of feeding everything to the model,
639
00:32:17.980 --> 00:32:23.450
what if I if I knew what words mapped to
640
00:32:23.509 --> 00:32:28.450
specific functions, I could actually call those functions instead of
641
00:32:28.490 --> 00:32:31.890
having to pass it through to the agent who would
642
00:32:31.990 --> 00:32:36.250
eventually pass it through to an MCP server somewhere to
643
00:32:36.569 --> 00:32:40.799
actually call the tool. So now I've actually reduced, dramatically
644
00:32:40.859 --> 00:32:44.000
reduced how much is actually going to the models because
645
00:32:44.019 --> 00:32:45.799
I'm pulling some pieces of that.
646
00:32:46.279 --> 00:32:49.599
From this static glossary kind of thing. But, And I
647
00:32:49.660 --> 00:32:52.000
imagine that the best of both worlds would be if
648
00:32:52.119 --> 00:32:54.859
the word doesn't exist in the glossary and it can't
649
00:32:54.920 --> 00:32:57.619
express it in a more concise way, then it would
650
00:32:57.680 --> 00:33:00.740
go out and get definitions for those words and add
651
00:33:00.759 --> 00:33:01.559
them to the domain.
652
00:33:02.309 --> 00:33:05.950
So you, you, you really want to control that language
653
00:33:06.049 --> 00:33:08.190
so that you're controlling what it can do.
654
00:33:08.210 --> 00:33:09.109
Right.
655
00:33:09.130 --> 00:33:15.720
So you would prefer, uh, to keep to, uh, to
656
00:33:15.940 --> 00:33:19.700
programmatically add the new languages. Don't let it do it
657
00:33:19.880 --> 00:33:20.529
on its own.
658
00:33:20.549 --> 00:33:22.410
Well, at least it could make you a list.
659
00:33:22.650 --> 00:33:23.309
A list of it.
660
00:33:24.529 --> 00:33:26.869
Yeah, a list of things that it didn't understand or whatever.
661
00:33:26.990 --> 00:33:31.410
Correct. And you can publish that language. And that's one
662
00:33:31.450 --> 00:33:35.920
of the things that models are great at, converting from
663
00:33:36.059 --> 00:33:37.400
one language to another language.
664
00:33:37.420 --> 00:33:37.640
Right.
665
00:33:38.079 --> 00:33:41.460
So if you have a way to declare that controlled
666
00:33:41.519 --> 00:33:44.059
natural language, it can convert it automatically.
667
00:33:44.519 --> 00:33:47.680
Yeah, that's right. I could see repos for all sorts
668
00:33:47.720 --> 00:33:53.440
of vertical industries, uh, DSLs in used in that way to,
669
00:33:53.640 --> 00:33:57.880
to rein in your LLMs and your tokenomics.
670
00:33:58.700 --> 00:34:01.299
I make it a heck of a lot easier for that.
671
00:34:01.420 --> 00:34:06.799
And so, um, so I actually built, uh, uh, uh,
672
00:34:07.240 --> 00:34:08.900
I built a couple of different things based on that,
673
00:34:08.920 --> 00:34:14.119
but I actually have a, uh, MVP that you can
674
00:34:14.159 --> 00:34:17.570
go pull down from GitHub. It's called Limelight X. Well,
675
00:34:17.730 --> 00:34:19.250
Rush is out this year, right?
676
00:34:19.469 --> 00:34:20.250
Doing the tour.
677
00:34:20.349 --> 00:34:24.409
So Rush fan had to pull that in. So Limelight X.
678
00:34:26.690 --> 00:34:29.840
And so you go there, you can actually go see
679
00:34:29.989 --> 00:34:37.659
how to do this. So you can give it the
680
00:34:37.739 --> 00:34:43.980
natural language, the constrained natural language. give it a text
681
00:34:44.860 --> 00:34:50.469
and it will actually give you the intermediate steps so
682
00:34:50.489 --> 00:34:53.230
you can visualize it. So how do you parse that
683
00:34:53.269 --> 00:34:57.409
apart to an AST? How do you take that AST
684
00:34:58.050 --> 00:35:01.070
and optimize it? Then you take that AST and turn
685
00:35:01.110 --> 00:35:04.650
it into intermediate result, which then gets put into an
686
00:35:04.710 --> 00:35:08.710
expression tree a la link. How do you do that?
687
00:35:08.909 --> 00:35:16.769
Because what I've found is, Most people doing AI engineering,
688
00:35:17.369 --> 00:35:24.210
AI agents, they don't come from our comp sci background. Right.
689
00:35:24.570 --> 00:35:26.989
They come from the dynamic language.
690
00:35:26.809 --> 00:35:27.550
Side of the house.
691
00:35:27.690 --> 00:35:34.500
They're Python and JavaScript type script. So parsing and compiler
692
00:35:34.719 --> 00:35:38.139
theory type stuff is not something that sits in their domain.
693
00:35:38.969 --> 00:35:42.380
While you can do some of that stuff with those languages,
694
00:35:42.420 --> 00:35:45.420
you don't typically do it. So they're not thinking that way.
695
00:35:46.960 --> 00:35:49.619
So how do I get best of both worlds? That's
696
00:35:49.699 --> 00:35:50.599
part of the challenge.
697
00:35:51.059 --> 00:35:52.739
Before we go any further, I think we should take
698
00:35:52.760 --> 00:35:54.880
a little break. You think so, Richard?
699
00:35:55.260 --> 00:35:55.760
Sure, let's do it.
700
00:35:55.760 --> 00:36:00.719
All right, we'll be right back after these very important messages. Hey,
701
00:36:00.780 --> 00:36:04.340
Carl here. You probably know text control is a powerful
702
00:36:04.400 --> 00:36:08.519
library for document editing and PDF generation. But did you
703
00:36:08.559 --> 00:36:11.539
know they're also a strong supporter of the developer community?
704
00:36:12.099 --> 00:36:14.460
It's part of their mission to build and support a
705
00:36:14.519 --> 00:36:18.949
strong developer community by being present, listening to users, and
706
00:36:19.050 --> 00:36:22.670
sharing knowledge at conferences across Europe and the United States.
707
00:36:23.170 --> 00:36:26.269
So if you're heading to a conference soon, check if
708
00:36:26.309 --> 00:36:29.340
Text Control will be there and stop by to say hi.
709
00:36:29.699 --> 00:36:35.920
You can find their full conference calendar at www.textcontrol.com. And
710
00:36:35.960 --> 00:36:38.489
make sure you thank them for supporting. NET Rocks.
711
00:36:42.570 --> 00:36:43.429
And we're back. It's.
712
00:36:43.389 --> 00:36:43.750
NET Rocks.
713
00:36:43.789 --> 00:36:45.210
I'm Richard Campbell. That's Carl Franklin.
714
00:36:45.389 --> 00:36:45.730
Hey.
715
00:36:45.949 --> 00:36:48.590
Talking to our friend Don Demsack a bit about, well,
716
00:36:48.760 --> 00:36:51.460
you just brought up Limelight X as a way to
717
00:36:51.480 --> 00:36:56.920
sort of create a natural language-like set of instructions, which,
718
00:36:56.940 --> 00:36:59.000
I mean, in some ways reminds me of the way
719
00:36:59.039 --> 00:37:03.670
we write specs anyway. Software development is somewhat language. I mean,
720
00:37:03.690 --> 00:37:05.880
you have the programming language is a constraint. But if
721
00:37:05.920 --> 00:37:09.960
you also notice, the average product manager speaks in a
722
00:37:10.099 --> 00:37:14.070
somewhat constrained language. They're trying to communicate with developers, and
723
00:37:14.110 --> 00:37:16.570
developers speak a weird form of English.
724
00:37:18.090 --> 00:37:19.130
Dilbert proved that.
725
00:37:20.289 --> 00:37:23.989
They're really trying to just be very clear on what
726
00:37:24.070 --> 00:37:27.239
the intent is, and I think it serves the LLMs
727
00:37:27.320 --> 00:37:29.900
pretty well to stick with that same kind of language barrier.
728
00:37:29.900 --> 00:37:30.960
100%.
729
00:37:30.960 --> 00:37:35.320
And then domain-driven design never took off.
730
00:37:35.809 --> 00:37:36.030
Yeah.
731
00:37:36.289 --> 00:37:39.110
We all know it works, but one of the side
732
00:37:39.170 --> 00:37:42.949
effects of implementing it is you needed to have a
733
00:37:43.030 --> 00:37:47.780
subject matter expert who can pull that the main logic
734
00:37:48.070 --> 00:37:52.420
out of that, those communications that was very specialized.
735
00:37:52.940 --> 00:37:53.179
Yeah.
736
00:37:53.619 --> 00:38:02.039
Well, nowadays with coding assistance and the spec driven development world,
737
00:38:03.619 --> 00:38:07.760
we are starting to put that context into text documents
738
00:38:07.840 --> 00:38:11.639
that obviously we could use models to start pulling out
739
00:38:11.900 --> 00:38:15.320
that domain-specific language from the specifications.
740
00:38:15.679 --> 00:38:17.909
I would even go one step further and say we're
741
00:38:17.949 --> 00:38:20.550
heading towards, if we're not there already, just not thinking
742
00:38:20.590 --> 00:38:25.369
of it, conversation-based development. In this last episode that I
743
00:38:25.389 --> 00:38:28.710
did with Rocky Latka, he talked about how he and
744
00:38:28.829 --> 00:38:32.250
three other guys sat down to design a system He
745
00:38:32.289 --> 00:38:36.250
whipped out his Android phone, started recording. It made a transcript.
746
00:38:36.690 --> 00:38:39.769
He uploaded that transcript to Claude and said, build me
747
00:38:39.809 --> 00:38:43.920
a spec based on this conversation. Whoa. I mean, talk
748
00:38:43.960 --> 00:38:46.739
about layers, right?
749
00:38:46.860 --> 00:38:48.760
Using the tool as the preprocessor.
750
00:38:49.000 --> 00:38:49.400
Yeah.
751
00:38:50.820 --> 00:38:56.940
It's an interesting space that we're in because that's been
752
00:38:57.000 --> 00:39:00.909
the art of being a developer is has been really
753
00:39:00.989 --> 00:39:06.880
taking these vague requirements and then converting it into code.
754
00:39:07.340 --> 00:39:10.820
What was my favorite, what's the number one thing whenever
755
00:39:10.920 --> 00:39:14.940
I would build something, the business person would typically turn
756
00:39:14.960 --> 00:39:16.760
around and say, I know that's what I asked for,
757
00:39:16.800 --> 00:39:17.920
but that's not what I wanted.
758
00:39:18.340 --> 00:39:18.840
Yeah, right.
759
00:39:20.110 --> 00:39:24.289
Because humans are really, really, really bad at giving requirements. Weird.
760
00:39:24.329 --> 00:39:26.789
Yeah. And in some ways, like you want the domain
761
00:39:26.849 --> 00:39:29.949
expert because they know the space, but they often skip over.
762
00:39:30.179 --> 00:39:32.699
essential parts because they're so knowledgeable in the space. They
763
00:39:32.719 --> 00:39:35.059
don't even realize what they know.
764
00:39:35.280 --> 00:39:35.519
Yeah.
765
00:39:35.659 --> 00:39:35.820
Yeah.
766
00:39:35.980 --> 00:39:39.380
And that's, I mean, because Rocky's been around, he knows
767
00:39:40.000 --> 00:39:43.440
what he needs to put into that. And so how
768
00:39:43.460 --> 00:39:48.570
do you teach that to these new wave of, uh,
769
00:39:50.329 --> 00:39:55.829
coding engineers that are using coding assistants to do that. Well,
770
00:39:57.170 --> 00:40:01.949
we could teach them better requirement skills. And that's one
771
00:40:01.989 --> 00:40:03.989
of the things I started doing a couple of years
772
00:40:04.050 --> 00:40:09.909
ago in prompt engineering was a big rage two years ago.
773
00:40:09.929 --> 00:40:13.289
And now it's context engineering. But when I explain it
774
00:40:14.190 --> 00:40:16.610
to the average person, what a prompt is, I tell
775
00:40:16.630 --> 00:40:21.110
them it's a requirement. Think of it as giving it
776
00:40:21.150 --> 00:40:22.570
a requirement to another human.
777
00:40:22.710 --> 00:40:22.909
Right.
778
00:40:22.969 --> 00:40:26.050
Got to put in all that extra context. And then
779
00:40:26.150 --> 00:40:30.409
because of my agile background, I like to use given
780
00:40:30.449 --> 00:40:34.880
when then, so that as measured by. And then I
781
00:40:34.920 --> 00:40:38.739
would teach people to write their prompts in that structured
782
00:40:38.820 --> 00:40:42.559
form and they get better results out of the engine
783
00:40:42.719 --> 00:40:45.579
because you're giving it all the context that you would need.
784
00:40:45.840 --> 00:40:47.420
Yeah. That's brilliant.
785
00:40:47.559 --> 00:40:50.949
And so that's, And so that's the same problem that
786
00:40:51.250 --> 00:40:58.000
I'm running into with the spec-driven development is while they
787
00:40:58.039 --> 00:41:03.079
have great structure for the documents, how do you build
788
00:41:03.119 --> 00:41:05.559
the tests? Right. What you really kind of need to
789
00:41:05.619 --> 00:41:10.510
be able to do is create, given when then type scenarios,
790
00:41:11.030 --> 00:41:17.409
do more behavior-driven development. So testing for behavior that's expected
791
00:41:17.510 --> 00:41:20.889
or not expected. rather than writing generic tests.
792
00:41:20.949 --> 00:41:24.329
You're right. Domain-driven development is great at defining what we'd
793
00:41:24.449 --> 00:41:28.539
like it to do, but behavior-driven development is much better
794
00:41:28.659 --> 00:41:31.219
at defining what it actually does and if that's what
795
00:41:31.260 --> 00:41:32.059
we really wanted to do.
796
00:41:32.199 --> 00:41:37.199
And then if you could take that, those behavior-driven tests,
797
00:41:37.880 --> 00:41:43.250
now you can also use that to drive the controlled
798
00:41:43.289 --> 00:41:46.769
natural language because you're expressing the behaviors that you're looking for.
799
00:41:47.329 --> 00:41:47.650
And so.
800
00:41:48.800 --> 00:41:54.360
Besides Limelight X, I have a project called VectorRen, V-E-C-T-O-R,
801
00:41:55.400 --> 00:42:01.460
my SVG days, Ren, R-E-N, so two R's. And it
802
00:42:01.590 --> 00:42:06.929
was built with that in mind to show developers how
803
00:42:06.989 --> 00:42:12.250
to build an SVG game, a web-based with JavaScript, with
804
00:42:12.449 --> 00:42:16.469
generic JavaScript, no framework. And so what was the, you
805
00:42:16.489 --> 00:42:19.440
guys remember, what the big game was when we were
806
00:42:19.460 --> 00:42:22.099
trying to do demo SVG back in the day, it
807
00:42:22.119 --> 00:42:23.599
was asteroids. Right.
808
00:42:24.119 --> 00:42:25.590
Oh yeah. So that's right.
809
00:42:25.829 --> 00:42:31.050
There is in half an hour using this methodology, I
810
00:42:31.090 --> 00:42:34.130
describe what the game should do and given one then,
811
00:42:34.150 --> 00:42:40.000
and it generated a simple implementation of asteroids. And you
812
00:42:40.039 --> 00:42:44.239
can go to vector ren.org or go to vector ren, uh,
813
00:42:44.500 --> 00:42:46.989
the GitHub page, uh, out there and you can pull
814
00:42:47.030 --> 00:42:49.949
it down. And it's a very simple way to learn
815
00:42:49.989 --> 00:42:53.909
JavaScript from this point of view, without any of the frameworks,
816
00:42:55.030 --> 00:42:58.800
something simple that, that, that people can actually leverage, uh,
817
00:42:58.940 --> 00:43:03.880
because we have this generation of developers who don't have
818
00:43:03.920 --> 00:43:05.599
the traditional comp side background.
819
00:43:05.619 --> 00:43:05.780
Right.
820
00:43:05.960 --> 00:43:06.179
Yeah.
821
00:43:06.460 --> 00:43:10.159
I'm just thinking about, we're revising this. We've been playing
822
00:43:10.179 --> 00:43:12.510
with what the software development life cycle with these tools
823
00:43:12.570 --> 00:43:16.550
is supposed to look like. And, and I'll, I think
824
00:43:16.570 --> 00:43:19.269
there's a lot more energy put into the context up
825
00:43:19.349 --> 00:43:22.929
front just because the tools will generate lots and lots
826
00:43:22.969 --> 00:43:24.809
of code. It's just most of it is not that
827
00:43:24.849 --> 00:43:27.380
good if you haven't really done a good job of
828
00:43:27.510 --> 00:43:28.820
setting up these constraints.
829
00:43:30.019 --> 00:43:33.500
I've been doing a lot of stuff with AI here
830
00:43:33.519 --> 00:43:37.280
in Central Pennsylvania. One of the interesting feedback I'm getting
831
00:43:37.340 --> 00:43:41.539
from non-traditional developers is we don't care.
832
00:43:42.539 --> 00:43:43.619
Yeah.
833
00:43:44.139 --> 00:43:45.920
It gets the job done, and that's all.
834
00:43:45.840 --> 00:43:46.219
I care about.
835
00:43:46.239 --> 00:43:47.699
You're going to care.
836
00:43:50.960 --> 00:43:54.239
I hit up one of the folks I was talking about.
837
00:43:54.280 --> 00:43:59.690
I was talking about, hey, you're just creating dynamic scripts.
838
00:43:59.710 --> 00:44:06.670
This feels a lot like what JavaScript felt like before jQuery,
839
00:44:06.730 --> 00:44:10.949
before we got V8, before we got TypeScript. We're sending around.
840
00:44:10.969 --> 00:44:13.900
Yeah, before we put constraints around for reliability.
841
00:44:14.400 --> 00:44:20.179
And consistency. So, and I was like, you know, from
842
00:44:20.219 --> 00:44:25.570
a tokenomics point of view, every time you send that text,
843
00:44:26.250 --> 00:44:28.550
you're getting charged for it. Yeah. And so there's a
844
00:44:28.610 --> 00:44:31.860
cost because I don't care. It's cheaper for me to
845
00:44:31.929 --> 00:44:34.409
do that than to spend the time to actually write
846
00:44:35.429 --> 00:44:36.250
the compiled code.
847
00:44:36.269 --> 00:44:39.550
For now, anyway, the costs are going up. But often
848
00:44:39.630 --> 00:44:42.050
the folks don't care because they don't know the consequences.
849
00:44:42.329 --> 00:44:44.030
They don't know good engineering principles.
850
00:44:44.469 --> 00:44:47.090
Yeah, they don't know how the software will bite them later.
851
00:44:47.369 --> 00:44:48.670
It's generally what works right now.
852
00:44:48.769 --> 00:44:50.809
And what I'm seeing is a lot of the vibe
853
00:44:50.869 --> 00:44:54.070
coders realizing that they can only go so far of
854
00:44:54.130 --> 00:44:56.730
vibe coding, and then they start going to coding assistants,
855
00:44:57.670 --> 00:45:00.570
but then they don't know how to create these good
856
00:45:00.639 --> 00:45:03.719
engineering principles. And so I think there's a big market
857
00:45:03.860 --> 00:45:04.460
for that.
858
00:45:04.860 --> 00:45:07.219
So the AKA they're starting to care.
859
00:45:07.760 --> 00:45:11.670
And it makes me sad because as a VB guy,
860
00:45:12.190 --> 00:45:14.670
old school VB guy, isn't that what the C plus
861
00:45:14.710 --> 00:45:16.469
plus people complained about us about?
862
00:45:17.150 --> 00:45:17.409
Yep.
863
00:45:17.449 --> 00:45:18.800
Yeah, we weren't real developers.
864
00:45:19.400 --> 00:45:22.480
Well, Yeah, and again, the argument was, is the software
865
00:45:22.530 --> 00:45:24.989
quality sufficient? And let's face it, we built a lot
866
00:45:25.010 --> 00:45:27.469
of bad quality software, and then we learned, hey, software
867
00:45:27.510 --> 00:45:30.429
quality matters. And you could do it with VB, you
868
00:45:30.449 --> 00:45:32.210
just had to follow some good practices.
869
00:45:32.349 --> 00:45:35.969
I think a lot of that nose turning down at
870
00:45:36.409 --> 00:45:40.599
VB developers was a byproduct of what happened between C
871
00:45:41.440 --> 00:45:46.800
developers and basic developers in the very early days of programming.
872
00:45:48.179 --> 00:45:52.500
Basic with go-tos was looked at as horrible. I was
873
00:45:52.599 --> 00:45:57.380
using Visual Basic and then attending a community college and
874
00:45:57.420 --> 00:46:00.920
the computer science lady, I told her that I was
875
00:46:01.239 --> 00:46:03.480
using Visual Basic. She goes, oh, basic. Oh, you can't
876
00:46:03.519 --> 00:46:04.119
say basic.
877
00:46:04.530 --> 00:46:05.849
No go-tos, no go-tos.
878
00:46:05.909 --> 00:46:09.030
I'm like, no, it's completely changed now. You know, it's
879
00:46:09.110 --> 00:46:11.590
come into its own and they still just, you know,
880
00:46:12.210 --> 00:46:14.929
you get an idea in your mind and it's hard
881
00:46:14.969 --> 00:46:15.349
to shake.
882
00:46:15.630 --> 00:46:18.519
And I don't want to be that Get off my
883
00:46:18.579 --> 00:46:20.659
lawn guy. Yeah, right. And I don't want to be
884
00:46:21.300 --> 00:46:21.900
that old guy.
885
00:46:21.920 --> 00:46:22.300
Nobody does.
886
00:46:22.320 --> 00:46:26.920
I've got the gray hair, fine. But I don't want
887
00:46:26.940 --> 00:46:31.920
to be that guy. Same thing with coding assistants. What
888
00:46:31.940 --> 00:46:34.489
I've been talking about to a lot of folks is
889
00:46:34.860 --> 00:46:39.909
coding assistants is the new IDE. I remember back when
890
00:46:40.030 --> 00:46:43.170
we were talking, you know, Vim was it. You didn't
891
00:46:43.329 --> 00:46:44.030
use Studio.
892
00:46:44.489 --> 00:46:44.730
Right.
893
00:46:44.929 --> 00:46:48.489
IntelliSense. Coding is novel. You had to know it and
894
00:46:48.530 --> 00:46:51.530
remember it in your head and use a text editor.
895
00:46:51.989 --> 00:46:53.769
Real developers use text editors.
896
00:46:54.090 --> 00:46:56.010
I think it took Don Box a long time to
897
00:46:56.050 --> 00:46:58.030
come to grips with the fact that people are going
898
00:46:58.050 --> 00:47:00.500
to use IDEs, not them.
899
00:47:01.599 --> 00:47:03.920
It would be interesting to get his opinion on coding.
900
00:47:03.940 --> 00:47:09.820
You see those positions all over the place. I think
901
00:47:09.840 --> 00:47:11.400
you're making a mistake as soon as you're bound to
902
00:47:11.440 --> 00:47:14.159
a tool. In the end, the goal was to deliver
903
00:47:14.199 --> 00:47:15.059
value to customers.
904
00:47:15.869 --> 00:47:19.469
And then there's this whole, and this ties into Run
905
00:47:19.510 --> 00:47:23.769
As Radio, then there's this whole angle from the IT
906
00:47:23.829 --> 00:47:28.909
admin side of the house where IT admins were doing automation,
907
00:47:28.969 --> 00:47:32.510
but they were doing it via a GUI tool because
908
00:47:33.230 --> 00:47:34.909
IT admins didn't write code.
909
00:47:35.409 --> 00:47:35.610
Right.
910
00:47:35.750 --> 00:47:37.369
That was for the developer world.
911
00:47:37.610 --> 00:47:38.190
Right.
912
00:47:38.710 --> 00:47:40.969
In my day job, what I'm starting to see is
913
00:47:41.190 --> 00:47:46.230
more and more IT admins admins leveraging coding assistance to
914
00:47:46.409 --> 00:47:51.170
actually create better code than they could ever written because
915
00:47:51.449 --> 00:47:54.409
all they ever wrote scripts. This is much better code
916
00:47:55.739 --> 00:47:58.400
and it's making their lives a heck of a lot easier.
917
00:47:58.679 --> 00:48:02.519
So that's just, I mean, that's an unintended consequence, but
918
00:48:02.760 --> 00:48:06.260
it's helping, especially in these days when so many companies,
919
00:48:06.380 --> 00:48:10.760
so many on-prem companies who are using VMware and now
920
00:48:11.010 --> 00:48:13.230
they're kind of A little bit of a backlash. They're
921
00:48:13.269 --> 00:48:16.449
all trying to move off, and now they're more open
922
00:48:16.510 --> 00:48:19.269
to how do I do this automation rather than using
923
00:48:19.329 --> 00:48:19.690
a tool.
924
00:48:20.269 --> 00:48:22.909
One quick correction. I think I misspoke. When I was
925
00:48:23.090 --> 00:48:26.670
in a community college, it wasn't VB. It was Quick Basic.
926
00:48:27.150 --> 00:48:31.570
Quick Basic. Quick Basic was compiled, and it was structured,
927
00:48:31.659 --> 00:48:35.480
and it was great back then. And this computer science
928
00:48:35.539 --> 00:48:36.780
person was like, no go-tos.
929
00:48:37.699 --> 00:48:38.019
Don't say it.
930
00:48:39.579 --> 00:48:41.460
Well, and it's the thing, there's nothing wrong with the language.
931
00:48:41.519 --> 00:48:43.320
It just had a construct that was a problem. Hey,
932
00:48:43.360 --> 00:48:46.369
remember option explicit? Like we did learn.
933
00:48:46.989 --> 00:48:47.349
Sure.
934
00:48:48.849 --> 00:48:50.050
On error, resume next.
935
00:48:50.510 --> 00:48:51.809
Yeah.
936
00:48:53.190 --> 00:48:54.190
I don't have any bugs.
937
00:48:55.030 --> 00:48:55.449
What?
938
00:48:55.969 --> 00:48:56.250
Yeah.
939
00:48:56.269 --> 00:48:58.429
So one of the things that I've been starting to
940
00:48:58.550 --> 00:49:02.579
work with is how do I start creating skills to
941
00:49:02.619 --> 00:49:07.420
be able to help teach these non-developers these good habits?
942
00:49:07.460 --> 00:49:10.219
So like one of the things, That's in a beta
943
00:49:10.260 --> 00:49:15.869
right now is a requirements interrogator skill. So help the
944
00:49:15.969 --> 00:49:20.099
average person create that given when then brief so that
945
00:49:20.139 --> 00:49:24.500
they get better requirements when they're trying to build something.
946
00:49:24.760 --> 00:49:25.960
Yeah, you have to wonder if we're not going to
947
00:49:26.039 --> 00:49:28.570
end up with more opinionated agents that are like, I
948
00:49:29.010 --> 00:49:32.389
can't start building this until I have these broader requirements
949
00:49:32.429 --> 00:49:35.389
settled around those kinds of constraints that are going to
950
00:49:35.409 --> 00:49:39.280
matter for security and architecture and reliability and scalability. all
951
00:49:39.300 --> 00:49:42.099
of the abilities that everyone doesn't care about until they
952
00:49:42.139 --> 00:49:42.860
care about them.
953
00:49:43.260 --> 00:49:43.440
Yeah.
954
00:49:44.139 --> 00:49:46.300
One of them I'm playing with right now is, is
955
00:49:46.440 --> 00:49:49.679
creating a skill to create architectural decision records.
956
00:49:50.199 --> 00:49:50.400
Right.
957
00:49:50.699 --> 00:49:54.519
We've never, I mean, we all always wanted to have them,
958
00:49:55.159 --> 00:49:58.739
but now if I'm using a coding assistant, that helps
959
00:49:58.820 --> 00:50:02.019
make my coding system better. It tells the architecture and
960
00:50:02.059 --> 00:50:04.579
the reasons why we picked certain things.
961
00:50:05.909 --> 00:50:06.110
Yeah.
962
00:50:07.409 --> 00:50:07.550
Yeah.
963
00:50:07.949 --> 00:50:10.730
There's lots to all of that. I mean, again, I
964
00:50:10.750 --> 00:50:12.889
feel like we're just groping around right now trying to
965
00:50:12.929 --> 00:50:13.429
figure out.
966
00:50:13.650 --> 00:50:14.909
It's early days.
967
00:50:15.590 --> 00:50:19.010
What are the, yeah, the tools are shifting. Just remember,
968
00:50:19.030 --> 00:50:21.210
we were trying to develop on. NET in the early
969
00:50:21.250 --> 00:50:24.889
days where every time they got a build out, the
970
00:50:25.110 --> 00:50:28.300
editor changed, the framework had changed, and the language had changed.
971
00:50:28.960 --> 00:50:32.500
Everything you're doing, incorrect. Yeah.
972
00:50:32.579 --> 00:50:34.519
I was part of that early days. I don't even
973
00:50:34.579 --> 00:50:36.780
remember if I ever mentioned it to you guys, but
974
00:50:36.940 --> 00:50:44.500
the framework The client that I had back in 99, 2000,
975
00:50:44.500 --> 00:50:51.429
their president was on the board for Microsoft, and I
976
00:50:51.469 --> 00:50:54.670
was building dashboards for him, and I got introduced to
977
00:50:54.710 --> 00:50:55.809
Project Cool.
978
00:50:55.530 --> 00:50:57.969
Before it was announced. Before it became C Sharp?
979
00:50:57.989 --> 00:50:59.269
Yeah, before 2000, the announcement at PDC 2000.
980
00:50:59.250 --> 00:50:59.369
Yeah.
981
00:51:04.820 --> 00:51:06.179
I think it was actually TechEd, but yeah.
982
00:51:06.219 --> 00:51:06.539
TechEd.
983
00:51:06.719 --> 00:51:08.519
Yeah, it was TechEd. That's where I'm at.
984
00:51:08.739 --> 00:51:12.219
But yeah, but I'm also thinking about the craziness that was.
985
00:51:12.420 --> 00:51:18.179
NET Core in, you know, 2018 or 2016. Because it
986
00:51:18.199 --> 00:51:20.010
took them 18 months to get that first version built
987
00:51:20.050 --> 00:51:22.530
and there were so many previews. And every time you
988
00:51:22.550 --> 00:51:25.010
got a preview, everything shuffled on you. And it just
989
00:51:25.030 --> 00:51:28.590
seems an awful lot like trying to work with Anthropica
990
00:51:28.610 --> 00:51:30.730
or OpenAI or any of these tools right now, where
991
00:51:30.829 --> 00:51:33.500
every time you get A new build, new harness, like
992
00:51:33.559 --> 00:51:37.739
there's so many different components that presuming it works the
993
00:51:37.780 --> 00:51:40.690
same way is crazy. It changes. It changes a lot.
994
00:51:40.869 --> 00:51:43.570
And just like with. NET Core, Richard, I think that
995
00:51:43.590 --> 00:51:47.170
there's still a lot of people not dipping their toes
996
00:51:47.250 --> 00:51:51.170
into AI developer-wise for the very same reason.
997
00:51:52.050 --> 00:51:56.110
So have you guys had anybody on for Microsoft Foundry Local?
998
00:51:56.469 --> 00:51:56.840
Not yet.
999
00:51:57.050 --> 00:51:58.519
Not yet. No, it's on my radar.
1000
00:51:59.199 --> 00:52:02.519
I've been intimate with that. So that's part of what
1001
00:52:02.820 --> 00:52:07.639
the bounded context. Part of what I realized is to
1002
00:52:07.960 --> 00:52:12.010
use these smaller models, you had to be very prescriptive
1003
00:52:12.050 --> 00:52:13.329
in the prompts that you were giving.
1004
00:52:13.530 --> 00:52:13.989
Right, right.
1005
00:52:14.030 --> 00:52:16.349
And when I started writing the code, I didn't want
1006
00:52:16.369 --> 00:52:22.070
to put that code as text into my program. I
1007
00:52:22.110 --> 00:52:24.829
wanted to pull it out. And so I created a
1008
00:52:25.880 --> 00:52:30.719
YAML language that did essentially prompt as a function so
1009
00:52:30.760 --> 00:52:33.199
that you could import it in and create it. And
1010
00:52:33.219 --> 00:52:37.619
there's a couple different prompt as a function frameworks out there.
1011
00:52:39.239 --> 00:52:50.130
BAML is one and DPSY, another where it makes it
1012
00:52:50.269 --> 00:52:54.360
easy to put prompts into your programming languages. The Dipsy
1013
00:52:54.400 --> 00:53:01.969
is Python only. BAML is TypeScript and Python. And so
1014
00:53:02.710 --> 00:53:05.289
I built a framework to be able to do that
1015
00:53:05.849 --> 00:53:07.969
because I was trying to run local models. I was
1016
00:53:08.070 --> 00:53:11.780
running local models on what I'm using now, Copilot Plus PC.
1017
00:53:13.699 --> 00:53:17.159
The Copilot Plus PCs were supposed to be the place
1018
00:53:17.199 --> 00:53:19.400
to be able to run these models. It's just not.
1019
00:53:20.010 --> 00:53:21.829
Not as good as it could have been.
1020
00:53:21.849 --> 00:53:26.030
At 40 tops, that's not a lot. Meantime, I'm looking
1021
00:53:26.070 --> 00:53:29.940
at my RTX 5080 at 1,500 tops and saying, why
1022
00:53:30.000 --> 00:53:32.239
aren't I a co-pilot PC?
1023
00:53:32.420 --> 00:53:36.019
So I am super excited for the new RTX Spark laptops.
1024
00:53:36.519 --> 00:53:38.480
I'll be the first to go buy one of them
1025
00:53:38.980 --> 00:53:39.760
when they come out.
1026
00:53:40.360 --> 00:53:42.760
They're actually going to be a laptop, because right now
1027
00:53:42.800 --> 00:53:44.050
it's a NUC.
1028
00:53:44.679 --> 00:53:48.219
Well, the big difference is the DGX Spark, Right. That's
1029
00:53:48.239 --> 00:53:51.820
the one you're thinking is the RTX Spark. Two separate things.
1030
00:53:52.239 --> 00:53:54.840
The DGX is Linux.
1031
00:53:55.219 --> 00:53:55.440
Right.
1032
00:53:55.480 --> 00:53:59.210
The RTX laptop, which is, that was, it was a nook.
1033
00:53:59.969 --> 00:54:03.650
The RTX is a laptop. It is going to run
1034
00:54:03.690 --> 00:54:04.989
Windows on ARM.
1035
00:54:05.329 --> 00:54:05.530
Right.
1036
00:54:05.590 --> 00:54:07.570
So it's, you could think of it as the Uber
1037
00:54:07.989 --> 00:54:09.090
Co-Pilot Plus piece.
1038
00:54:09.429 --> 00:54:12.150
Possibly, yeah. It'll be interesting. It's one of the things
1039
00:54:12.210 --> 00:54:14.230
I've seen over and over again with the DGX Spark,
1040
00:54:14.250 --> 00:54:17.269
but folks are actually using it is, You end up
1041
00:54:17.309 --> 00:54:22.750
running NVIDIA's models because they're so much better optimized for
1042
00:54:22.849 --> 00:54:27.219
their hardware that you just get vastly better responses or results.
1043
00:54:28.099 --> 00:54:32.559
So it's not a universal anything. Where is our ODBC
1044
00:54:34.360 --> 00:54:37.260
so that you really have some equanimity across all of
1045
00:54:37.340 --> 00:54:40.269
these different products? and can really see what all the
1046
00:54:40.389 --> 00:54:42.690
different hardware solutions can be there. I hate that we're
1047
00:54:42.710 --> 00:54:45.519
building dedicated to hardware solutions, but I get it.
1048
00:54:45.699 --> 00:54:49.679
Part of why I created that prompt as a function
1049
00:54:50.059 --> 00:54:53.440
to make it portable, to describe what's the model, what's the,
1050
00:54:54.380 --> 00:54:58.559
am I using VLR? Am I using Foundry Local? What's
1051
00:54:58.599 --> 00:55:01.820
the model? So I can abstract that away so you
1052
00:55:01.840 --> 00:55:03.619
don't have to worry about it and be able to
1053
00:55:03.989 --> 00:55:05.949
switch it in and out. And so I've got a
1054
00:55:06.170 --> 00:55:10.679
framework for that and I'm, I hit my limit with
1055
00:55:10.699 --> 00:55:13.579
the Copilot Plus PC and I'm waiting for these new
1056
00:55:13.679 --> 00:55:17.099
ones to come out. But that's a whole different conversation
1057
00:55:17.119 --> 00:55:20.139
because there's so many people, so many clients and customers
1058
00:55:20.179 --> 00:55:22.610
I talk to that can't use public models.
1059
00:55:22.690 --> 00:55:23.190
Right, right.
1060
00:55:23.389 --> 00:55:25.250
There's whole classes of work that are just not an
1061
00:55:25.349 --> 00:55:27.570
option to be going, leaving your machine in any way.
1062
00:55:28.110 --> 00:55:31.969
Combined with tokens are only getting more expensive and all
1063
00:55:31.989 --> 00:55:36.230
you can eat is disappearing and The methodologies we've been
1064
00:55:36.369 --> 00:55:39.269
using with the sort of adversarial agent model are just
1065
00:55:39.489 --> 00:55:40.389
mo tokens.
1066
00:55:40.809 --> 00:55:45.869
And smaller models hallucinate less. Right.
1067
00:55:45.989 --> 00:55:47.809
They are more bound.
1068
00:55:47.989 --> 00:55:51.469
And then you bound it by a language, a constrained language,
1069
00:55:51.530 --> 00:55:54.909
a controlled language, and you can reduce it even worse.
1070
00:55:55.090 --> 00:55:59.860
That's kind of where I'm going with this. Still early days.
1071
00:56:00.809 --> 00:56:03.789
I do a lot of Foundry local type stuff, running
1072
00:56:03.929 --> 00:56:09.489
to issues, report bugs. There's a whole Viber community. Folks
1073
00:56:09.510 --> 00:56:12.909
who are interested in getting into dipping their toe in
1074
00:56:12.989 --> 00:56:17.469
how do I inject AI LLMs, highly recommend checking it out.
1075
00:56:17.840 --> 00:56:21.079
It's an easy install. And there's a command line tool
1076
00:56:21.119 --> 00:56:23.000
that you can use just to get started to have
1077
00:56:23.019 --> 00:56:25.989
a chat. Have some fun. And then they've got some
1078
00:56:26.030 --> 00:56:28.860
great SDKs, whatever language you want to use from.
1079
00:56:29.030 --> 00:56:29.840
NET to Rust.
1080
00:56:30.719 --> 00:56:31.340
It's out there.
1081
00:56:31.590 --> 00:56:32.690
I highly recommend it.
1082
00:56:32.920 --> 00:56:34.179
This is good stuff, Don.
1083
00:56:34.679 --> 00:56:35.059
Excellent.
1084
00:56:35.139 --> 00:56:36.460
And it got me thinking.
1085
00:56:36.519 --> 00:56:40.599
Yeah, definitely got us thinking. Where can we find you
1086
00:56:40.719 --> 00:56:42.059
online besides your Substack?
1087
00:56:42.860 --> 00:56:49.719
My Substack and LinkedIn. I do both. LinkedIn, it's marketing
1088
00:56:50.059 --> 00:56:54.949
hell right now. People are all complaining. Um, it's not
1089
00:56:54.989 --> 00:56:59.230
where the developers are. Right. And Substack, I tried Reddit.
1090
00:56:59.769 --> 00:57:06.510
I tried, uh, various Discord servers. Um, my local Lancaster
1091
00:57:06.550 --> 00:57:09.670
folks have a great Slack team. So I'm there, Tech Lancaster.
1092
00:57:10.369 --> 00:57:15.360
Those folks are awesome. But Substack feels like the blogging
1093
00:57:15.420 --> 00:57:18.880
from the old days. It's, it's, it's a good community there.
1094
00:57:18.940 --> 00:57:21.199
So in the Lancaster area, do you find that there
1095
00:57:21.239 --> 00:57:22.559
are many Amish developers there?
1096
00:57:23.539 --> 00:57:26.260
There are some that you'd be surprised.
1097
00:57:26.480 --> 00:57:26.820
Wow.
1098
00:57:26.840 --> 00:57:30.739
You'd be surprised. And I wrote up a whole article on,
1099
00:57:31.219 --> 00:57:34.760
because I'm new to the area, Lancaster feels to me
1100
00:57:34.960 --> 00:57:40.889
like Portland, Oregon 20 years ago. They like that weird,
1101
00:57:41.389 --> 00:57:42.829
let's be weird attitude.
1102
00:57:42.849 --> 00:57:43.389
Right.
1103
00:57:43.489 --> 00:57:47.170
They like the back to nature, had the farming, all
1104
00:57:47.210 --> 00:57:48.130
that sort of stuff.
1105
00:57:48.530 --> 00:57:48.710
Yeah.
1106
00:57:48.730 --> 00:57:49.030
But.
1107
00:57:49.360 --> 00:57:52.679
They also like the tech side and there's two massive
1108
00:57:52.719 --> 00:57:56.179
data centers coming in. Coral Reeve is the big AI
1109
00:57:56.920 --> 00:57:59.519
company is putting a big data center and Google's putting
1110
00:57:59.579 --> 00:58:01.739
a big data center in there. So there's a lot
1111
00:58:01.820 --> 00:58:07.239
of innovation going on in that Amish community. It's an
1112
00:58:07.300 --> 00:58:08.510
interesting time.
1113
00:58:08.889 --> 00:58:09.250
Yeah.
1114
00:58:09.349 --> 00:58:12.070
Most people don't think of it that way, but land
1115
00:58:12.130 --> 00:58:14.269
is a heck of a lot cheaper. They can't build
1116
00:58:14.329 --> 00:58:18.159
any more data centers in, um, Northern Virginia. So they're
1117
00:58:18.199 --> 00:58:21.460
moving north into central PA and south into Richmond.
1118
00:58:21.679 --> 00:58:22.099
Okay.
1119
00:58:23.039 --> 00:58:25.590
Well, you have to keep us apprised. And when you
1120
00:58:25.909 --> 00:58:31.449
trade your first AI training for a shoe fly pie,
1121
00:58:31.510 --> 00:58:38.349
let me know. All right, Don, thanks very much.
1122
00:58:38.409 --> 00:58:39.650
Good to catch up with you again.
1123
00:58:39.949 --> 00:58:41.530
Good to catch up. And let's not make it in
1124
00:58:41.550 --> 00:58:42.309
another 20 years.
1125
00:58:42.530 --> 00:58:46.750
Definitely. And we'll talk to you, dear listener, next time on.
1126
00:58:46.679 --> 00:58:47.420
NET Rocks.
1127
00:59:08.389 --> 00:59:09.969
NET Rocks is brought to you by Frankenstein.
1128
00:59:10.409 --> 00:59:14.920
Net and produced by Plop Studios, a full-service audio, video,
1129
00:59:14.960 --> 00:59:18.280
and post-production facility located physically.
1130
00:59:17.820 --> 00:59:20.559
In New London, Connecticut, and, of course, in the cloud.
1131
00:59:21.260 --> 00:59:23.559
Online at pwop.com.
1132
00:59:24.280 --> 00:59:32.179
Visit our website at dotnetrocks.com for RSS feeds, downloads, mobile apps, comments,
1133
00:59:32.619 --> 00:59:35.079
and access to the full archives going back to show
1134
00:59:35.119 --> 00:59:39.440
number one, recorded in September 2002. And make sure you
1135
00:59:39.480 --> 00:59:42.659
check out our sponsors. They keep us in business. Now
1136
00:59:42.679 --> 00:59:43.519
go write some code.
1137
00:59:44.219 --> 00:59:44.860
See you next time.
1
00:00:01.169 --> 00:00:04.790
How'd you like to listen to. NET Rocks with no ads? Easy.
2
00:00:05.370 --> 00:00:08.769
Become a patron. For just $ 5 a month, you get
3
00:00:08.890 --> 00:00:11.720
access to a private RSS feed where all the shows
4
00:00:11.800 --> 00:00:14.900
have no ads. $ 20 a month will get you that
5
00:00:15.119 --> 00:00:18.839
and a special. NET Rocks patron mug. Sign up now
6
00:00:18.899 --> 00:00:36.549
at patreon.dotnetrocks.com. Hey, and welcome back to. NET Rocks. I'm
7
00:00:36.590 --> 00:00:37.210
Carl Franklin.
8
00:00:37.289 --> 00:00:37.950
And I'm Richard Kaplan.
9
00:00:38.049 --> 00:00:41.250
Our friend Don XML, I mean, Don Demsack is here.
10
00:00:41.270 --> 00:00:41.530
Oh, jeez.
11
00:00:42.170 --> 00:00:44.590
Or is he Don Jason? Are you Don Jason now?
12
00:00:45.109 --> 00:00:45.770
That's my brother.
13
00:00:48.700 --> 00:00:51.880
At least he didn't say Don Yammel. God knows. No.
14
00:00:51.899 --> 00:00:52.659
No.
15
00:00:53.479 --> 00:00:58.119
This is going to be a good one. This is
16
00:00:58.259 --> 00:01:01.460
episode 2018. And as we always do at the top
17
00:01:01.500 --> 00:01:04.040
of the show, let's talk about things that happened that year.
18
00:01:05.120 --> 00:01:07.799
I get all the depressing ones and Richard gets all
19
00:01:07.840 --> 00:01:09.760
the happy ones in space and tech.
20
00:01:09.780 --> 00:01:11.459
Just have to pick carefully.
21
00:01:11.480 --> 00:01:15.849
Yeah, I guess so. But, you know, these are important events, right?
22
00:01:15.950 --> 00:01:16.250
Are they?
23
00:01:16.390 --> 00:01:17.310
School shootings.
24
00:01:17.750 --> 00:01:18.030
Are they?
25
00:01:18.170 --> 00:01:20.689
Robert Mueller's Russia investigation.
26
00:01:20.909 --> 00:01:21.290
Oh, yeah.
27
00:01:21.469 --> 00:01:21.689
Well.
28
00:01:21.730 --> 00:01:25.590
Brett Kavanaugh, Supreme Court confirmation battle.
29
00:01:25.689 --> 00:01:25.870
Yeah.
30
00:01:25.930 --> 00:01:30.620
The 2018 midterm elections when the Democrats took over. The
31
00:01:30.659 --> 00:01:32.640
Democrats strike back. Did they?
32
00:01:32.799 --> 00:01:33.079
Okay.
33
00:01:33.400 --> 00:01:33.840
Well, okay.
34
00:01:33.959 --> 00:01:34.239
I don't know.
35
00:01:37.599 --> 00:01:40.829
Trump and Kim Jong-un, still crazy after all these years.
36
00:01:41.269 --> 00:01:41.549
Nice.
37
00:01:42.030 --> 00:01:42.590
Still friends.
38
00:01:42.609 --> 00:01:45.290
I think that was one of the first meetings, wasn't it?
39
00:01:45.709 --> 00:01:46.290
Yeah, yeah.
40
00:01:46.670 --> 00:01:54.019
June 12th in Singapore. Jamal Khashoggi, as Trump said, these
41
00:01:54.040 --> 00:02:00.260
things happen. He was killed and dissolved in a bathtub
42
00:02:00.400 --> 00:02:00.959
of acid.
43
00:02:01.219 --> 00:02:01.659
Or something.
44
00:02:01.680 --> 00:02:02.040
Okay. Okay.
45
00:02:02.849 --> 00:02:07.480
Or something. That's what we think. California wildfires happens every year,
46
00:02:07.560 --> 00:02:11.520
but 2018 was particularly bad. The Me Too movement and
47
00:02:11.539 --> 00:02:15.639
the Larry Nassar scandal. And just to put a little
48
00:02:15.659 --> 00:02:17.879
fine point on it, hurricanes Florence and Michael.
49
00:02:18.120 --> 00:02:18.280
Right.
50
00:02:18.439 --> 00:02:19.000
Those are good ones.
51
00:02:19.120 --> 00:02:21.139
Catastrophic flooding in the Carolinas.
52
00:02:21.319 --> 00:02:21.590
Yeah.
53
00:02:21.840 --> 00:02:24.650
And the Florida panhandle. All right, Richard. That's enough.
54
00:02:24.889 --> 00:02:28.449
Well, it was also, remember that cave rescue in Thailand? Oh, yeah.
55
00:02:28.750 --> 00:02:31.449
Those students went in and there was the flash flood.
56
00:02:31.530 --> 00:02:32.289
That's when that happened.
57
00:02:32.310 --> 00:02:33.210
That was a good story.
58
00:02:33.430 --> 00:02:33.789
It was.
59
00:02:33.870 --> 00:02:36.129
I mean, one of the rescuers lost their lives trying
60
00:02:36.150 --> 00:02:38.909
to save those kids. Right. But they were successful. Do
61
00:02:39.270 --> 00:02:42.090
you remember when, I think that's when Elon started going crazy. Yeah.
62
00:02:42.189 --> 00:02:44.509
Remember he really wanted to be involved in that. It's like,
63
00:02:44.530 --> 00:02:48.580
you're not actually qualified. I'll build a submersible. It's like, A,
64
00:02:48.590 --> 00:02:50.719
you don't know how to build a submersible. And B,
65
00:02:51.280 --> 00:02:53.939
that's not going to work in a cave either. And
66
00:02:53.960 --> 00:02:56.759
then he got really snarky and started calling people pedophiles
67
00:02:56.800 --> 00:02:59.599
and things. Yeah. I don't know. It was one of
68
00:02:59.620 --> 00:03:02.969
those moments because this is the same year that the
69
00:03:03.030 --> 00:03:05.370
Falcon Heavy flies for the first time and Elon put
70
00:03:05.409 --> 00:03:09.430
his red Tesla Roadster on top of it as the payload,
71
00:03:09.949 --> 00:03:11.250
which was pretty cool.
72
00:03:11.330 --> 00:03:13.930
I thought that was the cool Elon doing that.
73
00:03:13.969 --> 00:03:17.580
Yeah. But it's interesting to think that's the same year
74
00:03:17.639 --> 00:03:21.259
he goes nuts on this cave rescue thing so i
75
00:03:21.280 --> 00:03:22.439
mean things are just getting.
76
00:03:22.240 --> 00:03:27.719
Weirder and weirder yeah weirdness weirdness abides um also i
77
00:03:27.759 --> 00:03:31.370
want to mention aretha franklin and anthony bourdain died in
78
00:03:31.370 --> 00:03:35.210
2018 yeah very sad also paul allen very sad about
79
00:03:35.250 --> 00:03:39.310
have you there's a new movie like a documentary about anthony.
80
00:03:39.189 --> 00:03:41.930
There's an anthony bourdain movie coming out imminently yeah so
81
00:03:41.949 --> 00:03:43.500
it hasn't come out yet I think it's just out
82
00:03:43.520 --> 00:03:44.319
brand new. Okay.
83
00:03:44.520 --> 00:03:45.240
Yeah. I want to see that.
84
00:03:45.300 --> 00:03:45.479
Yeah.
85
00:03:45.740 --> 00:03:49.169
Also George H.W. Bush and John McCain died. Yeah.
86
00:03:49.370 --> 00:03:51.830
All right, Richard, save us from this misery. So I
87
00:03:52.129 --> 00:03:54.270
mentioned the Falcon heavy flight, which, yeah, that was pretty cool.
88
00:03:54.289 --> 00:03:56.090
We ended up doing a geek out about it. I mean,
89
00:03:56.110 --> 00:03:59.229
it was just an extraordinary rocket strapping three side by side.
90
00:04:00.210 --> 00:04:03.030
Originally he had planned on doing something called asparagus staging,
91
00:04:03.060 --> 00:04:05.060
where he was actually going to feed the fuel from
92
00:04:05.120 --> 00:04:08.610
the wing of boosters into the center so that when
93
00:04:08.669 --> 00:04:12.050
the outer boosters were empty and separated, the center booster
94
00:04:12.069 --> 00:04:15.849
would be completely full. Never happened. Instead, they do it
95
00:04:15.889 --> 00:04:18.149
the simpler way, which is simply to throttle down the
96
00:04:18.189 --> 00:04:21.319
center booster so it doesn't burn as much fuel. That
97
00:04:21.360 --> 00:04:23.740
being said, Falcon Heavy, you'd be never real happy with
98
00:04:23.779 --> 00:04:26.720
it The simple reason that it has a lot of power,
99
00:04:26.759 --> 00:04:28.860
but it doesn't have a lot of payload space. And
100
00:04:28.879 --> 00:04:31.959
so there's relatively few cases where it's needed. And he
101
00:04:31.980 --> 00:04:35.250
was already talking about what we now know is Starship, uh,
102
00:04:35.370 --> 00:04:38.250
and starting to do prototypes around all of that. Uh,
103
00:04:38.259 --> 00:04:42.310
we have a lot of cool, uh, satellites up in 2018,
104
00:04:42.310 --> 00:04:46.750
starting with tests, the transiting exoplanet survey satellite. So this
105
00:04:46.769 --> 00:04:51.129
was the only, the third of the dedicated finding exoplanet
106
00:04:51.149 --> 00:04:55.069
satellites that the, the successor of Kepler. Kepler had launched
107
00:04:55.100 --> 00:04:59.240
back in 2009 and found 2,600 exoplanets. That was Kepler's
108
00:04:59.300 --> 00:05:02.620
mission was to do deep surveys to see how common
109
00:05:02.839 --> 00:05:06.759
are planets. And the answer is very common. Most stars
110
00:05:06.839 --> 00:05:11.100
have planets. TESS as a survey satellite is not designed
111
00:05:11.139 --> 00:05:15.160
to observe as closely, but to cover much larger tracks
112
00:05:15.279 --> 00:05:19.040
of the sky. And fast forwarding eight years now, it's
113
00:05:19.079 --> 00:05:23.759
found over 8,000 potential objects that generally need additional surveying.
114
00:05:24.269 --> 00:05:28.790
because it is a survey spacecraft. But of those 8,000,
115
00:05:28.790 --> 00:05:31.629
almost 1,000 have not been confirmed as exoplanets. So if
116
00:05:31.649 --> 00:05:36.689
you're keeping count, we're up around 6,300 confirmed exoplanets so
117
00:05:36.750 --> 00:05:41.569
far from all of our different collection methodologies. This is
118
00:05:41.610 --> 00:05:44.550
not how Star Trek was supposed to work. Remember in
119
00:05:44.569 --> 00:05:46.470
Star Trek, you had to fly to the solar system
120
00:05:46.490 --> 00:05:48.250
to see the planets? No, we're going to have a
121
00:05:48.300 --> 00:05:50.620
map of all of them long before we can get
122
00:05:50.639 --> 00:05:53.579
to any of them. There's a couple of asteroid missions.
123
00:05:53.639 --> 00:05:59.759
Hayabusa 2 in June got to Rigu. And in December,
124
00:06:00.420 --> 00:06:03.420
OSIRIS-REx gets to Bennu, which is cool. We start to
125
00:06:03.480 --> 00:06:06.379
explore asteroids sort of on a regular basis. In August,
126
00:06:06.430 --> 00:06:09.870
the Parker Solar Probe, the first time we've ever tried
127
00:06:09.910 --> 00:06:13.310
to fly a satellite to the sun. to actually do
128
00:06:13.370 --> 00:06:16.769
measurements of its outer atmosphere. That's a very difficult thing
129
00:06:16.810 --> 00:06:18.550
to do. You have to go really, really fast to
130
00:06:18.569 --> 00:06:18.810
do that.
131
00:06:18.829 --> 00:06:21.269
Remember Richard Pryor's bit, the first man to walk on
132
00:06:21.310 --> 00:06:21.649
the sun?
133
00:06:21.670 --> 00:06:25.009
Ooh, ah, ah, ooh, how?
134
00:06:26.180 --> 00:06:28.720
So to make the solar probe go fast enough to
135
00:06:28.759 --> 00:06:30.240
get that close to the sun, they launched on a
136
00:06:30.259 --> 00:06:32.620
Delta IV, which is one of the highest performance rockets
137
00:06:32.660 --> 00:06:36.339
ever made. It's largely obsolete now and retired and broke
138
00:06:36.360 --> 00:06:37.740
a bunch of speed records to try and get it
139
00:06:37.779 --> 00:06:40.259
down there. It'll take a while to actually get close
140
00:06:40.300 --> 00:06:42.019
enough and actually start to do sampling of the sun.
141
00:06:42.620 --> 00:06:45.439
Also in August was when on the International Space Station,
142
00:06:45.540 --> 00:06:50.279
Soyuz MS-09, this is the vehicle that they transport astronauts
143
00:06:50.339 --> 00:06:52.300
to and from the space station, which at that time,
144
00:06:52.319 --> 00:06:55.990
because the shuttle is no longer flying and Crew Dragon
145
00:06:56.019 --> 00:06:58.610
doesn't exist yet, it's still in development, was the only
146
00:06:58.649 --> 00:07:00.990
way to get to the station. They find a two
147
00:07:01.089 --> 00:07:05.389
millimeter hole in the orbital module of the Soyuz. And
148
00:07:05.410 --> 00:07:07.230
there was a lot of controversy about whether it was
149
00:07:07.350 --> 00:07:09.750
drilled because it was sort of a perfect hole or
150
00:07:09.790 --> 00:07:12.569
was it just that right hole? you know, penetrator that
151
00:07:12.610 --> 00:07:15.189
it went through there. Anyway, fixed with a piece of
152
00:07:15.509 --> 00:07:16.430
cape on tape.
153
00:07:16.449 --> 00:07:17.430
Could have been mice.
154
00:07:17.750 --> 00:07:19.910
You know, and because it was the Orbridge module, it
155
00:07:19.930 --> 00:07:21.829
doesn't have to survive re-entry, so it's not that big
156
00:07:21.850 --> 00:07:23.509
of a deal. But yeah, it kicked up a lot
157
00:07:23.550 --> 00:07:27.569
of speculation. And if that wasn't enough, the very next
158
00:07:27.649 --> 00:07:31.250
Soyuz in October, this is Soyuz MS-10, it was only
159
00:07:31.290 --> 00:07:33.889
carrying two passengers. Normally, the Soyuz can carry three, but
160
00:07:33.930 --> 00:07:39.569
occasionally fly with less. In this case, it had Alexei Ovichin, And, uh,
161
00:07:39.680 --> 00:07:42.740
from Roscosmos and Nick Hague from NASA, they were going
162
00:07:42.759 --> 00:07:44.699
to be part of the exhibition 57 to the international
163
00:07:44.720 --> 00:07:49.160
space station. But two minutes after launch, there was a failure.
164
00:07:49.399 --> 00:07:52.199
And Soyuz is one of the most reliable, most flown
165
00:07:52.220 --> 00:07:53.500
spacecraft of all time.
166
00:07:53.579 --> 00:07:53.839
Yeah.
167
00:07:53.899 --> 00:07:56.220
This was one of the very rare failures and it
168
00:07:56.240 --> 00:08:00.189
was a failure that had never occurred before. There was
169
00:08:00.199 --> 00:08:02.810
something wrong in the sensor of one of the strap-on boosters.
170
00:08:02.829 --> 00:08:05.449
There are four strap-on boosters that famously separate from a
171
00:08:05.490 --> 00:08:08.170
Soyuz and do what they call the Korolev cross. As
172
00:08:08.189 --> 00:08:10.649
they come flying off. And it didn't happen this time.
173
00:08:10.709 --> 00:08:12.459
And the one booster hung up. And then when it
174
00:08:12.500 --> 00:08:17.360
did break away, it struck the central booster core. And
175
00:08:17.420 --> 00:08:20.560
that ended the going into space. As Nick Hague said,
176
00:08:20.620 --> 00:08:22.860
as soon as the bouncing around started, I guess we're
177
00:08:22.899 --> 00:08:27.139
not going to the space station. But at this point,
178
00:08:27.160 --> 00:08:29.639
they're already 50 kilometers up. And that's too high for
179
00:08:29.699 --> 00:08:33.659
the escape tower. So it's already been ejected. But there is...
180
00:08:34.269 --> 00:08:38.549
Mode 2, Ascent Abort, a system that had been tested
181
00:08:38.690 --> 00:08:41.899
but never used. And this was the first and only
182
00:08:41.940 --> 00:08:42.919
time it's ever been used.
183
00:08:43.100 --> 00:08:45.159
So they basically turned it around and re-entered?
184
00:08:45.259 --> 00:08:47.620
It's more complicated than that because you've got an exploding
185
00:08:47.679 --> 00:08:49.679
rocket behind you, so you don't want to be near that.
186
00:08:49.750 --> 00:08:52.789
So instead of abort motors fire and push the Soyuz
187
00:08:52.830 --> 00:08:56.049
assembly away from the booster, and then you have to
188
00:08:56.210 --> 00:09:00.370
get into... descent mode because you're carrying the propulsion module
189
00:09:00.409 --> 00:09:03.309
as well as descent module and the orbital module so
190
00:09:03.370 --> 00:09:05.370
those each have to be pushed off and then it
191
00:09:05.409 --> 00:09:07.480
has to switch over to descent mode get the heat
192
00:09:07.500 --> 00:09:12.259
shield pointed down and actually land because of the angle
193
00:09:12.279 --> 00:09:14.259
of ascent they only get to about 90 kilometers so
194
00:09:14.279 --> 00:09:16.059
they spend some time in free fall still going up
195
00:09:16.120 --> 00:09:17.139
the explosion happened.
196
00:09:16.940 --> 00:09:19.620
At 50 dude you should make movies This is great.
197
00:09:20.179 --> 00:09:20.799
It's crazy.
198
00:09:21.000 --> 00:09:22.580
It's like I'm on the edge of my seat.
199
00:09:22.679 --> 00:09:25.000
And they're in free fall, and now they have to reorient,
200
00:09:25.019 --> 00:09:27.110
and they do a ballistic return, which means those poor
201
00:09:27.120 --> 00:09:30.950
guys pulled about seven Gs as they came back down.
202
00:09:32.289 --> 00:09:35.830
Worked perfectly. Both astronauts walked away. The crazy part is
203
00:09:35.870 --> 00:09:40.889
realizing from launch at Balkanur to on the ground about
204
00:09:40.889 --> 00:09:44.019
200 kilometers downrange in Kazakhstan, 19 minutes.
205
00:09:44.419 --> 00:09:44.879
Oh, my God.
206
00:09:45.289 --> 00:09:45.710
Goodness.
207
00:09:46.029 --> 00:09:49.379
It was fast and it's all automated. Like basically they
208
00:09:49.399 --> 00:09:52.659
were having trouble keeping up with the control systems working
209
00:09:52.700 --> 00:09:53.000
through it.
210
00:09:53.059 --> 00:09:55.259
That's definitely not enough time for a feature film.
211
00:09:55.470 --> 00:09:57.970
No, it's pretty quick, but I'm sure there's a bit
212
00:09:57.990 --> 00:09:59.970
of story to go around it. Anyway, it worked flawlessly.
213
00:10:00.659 --> 00:10:03.019
and they would eventually get to space on a different
214
00:10:03.039 --> 00:10:08.600
spacecraft because that one weren't no good no more. In November,
215
00:10:08.740 --> 00:10:10.899
we have the 20th anniversary of the International Space Station
216
00:10:10.919 --> 00:10:14.580
because the Zarya module went up in 1998. We're also
217
00:10:14.679 --> 00:10:18.299
fully over into commercial resupply now. So Roscoff's mostly due
218
00:10:18.350 --> 00:10:22.570
to five deliveries in 2018. But SpaceX does three on
219
00:10:22.629 --> 00:10:26.370
Cargo Dragon. Orbital ATK does three with Cygnus. And JAXA
220
00:10:26.409 --> 00:10:31.909
has one HTV delivery. So a total of, what is that, 12.
221
00:10:31.909 --> 00:10:34.450
And also in November, the InSight lander lands on Mars.
222
00:10:34.509 --> 00:10:37.200
First thing to have landed on Mars since Perseverance. And
223
00:10:37.299 --> 00:10:41.440
it's doing measurements of Mars quakes and interior mapping of Mars.
224
00:10:41.990 --> 00:10:45.990
by looking at reverberations that travel through the planet. And finally,
225
00:10:46.110 --> 00:10:50.720
in December, China launches the Chang'e 4 relay satellite in
226
00:10:50.840 --> 00:10:53.779
preparation for their landing, putting a lander and rover down
227
00:10:53.799 --> 00:10:55.480
on the far side of the moon. They need a
228
00:10:55.519 --> 00:10:57.159
satellite to be able to communicate with the far side
229
00:10:57.179 --> 00:10:59.460
of the moon. So that goes up in 2018. The
230
00:10:59.500 --> 00:11:02.539
big mission will be in 2019. Ready for compute stories?
231
00:11:02.879 --> 00:11:03.200
Yes.
232
00:11:03.720 --> 00:11:05.379
And you always think I have to give you all
233
00:11:05.399 --> 00:11:07.620
the good news. So let's start off in January with
234
00:11:07.720 --> 00:11:10.000
Meltdown Inspector. Okay.
235
00:11:10.039 --> 00:11:10.159
Okay.
236
00:11:10.809 --> 00:11:18.870
So these were discovered potential exploits using a speculative execution
237
00:11:18.889 --> 00:11:23.700
that exists in both AMD and Intel processors. And there
238
00:11:23.740 --> 00:11:25.740
was no security around that. So the theory was that
239
00:11:25.759 --> 00:11:27.879
if you did stuff exactly right, you might be able
240
00:11:27.899 --> 00:11:30.740
to grab data from another virtual machine that was running through.
241
00:11:31.100 --> 00:11:34.179
This exploit has never been found in the wild. Even
242
00:11:34.259 --> 00:11:36.519
attempts to try and utilize it have been largely futile.
243
00:11:36.559 --> 00:11:39.990
But at the time, they really freaked out. And putting
244
00:11:40.029 --> 00:11:44.860
security rules in place caused substantial performance penalties. I think
245
00:11:44.879 --> 00:11:48.720
to talk about literally 20% of available compute disappeared to
246
00:11:48.759 --> 00:11:50.200
fix spectrum and meltdown.
247
00:11:50.480 --> 00:11:50.960
Not good.
248
00:11:51.000 --> 00:11:51.679
Remember that?
249
00:11:51.720 --> 00:11:52.019
Wow.
250
00:11:52.399 --> 00:11:54.759
And adding to my, I don't only have good news
251
00:11:55.039 --> 00:11:59.379
stories in 2018, Google officially removes their don't be evil
252
00:11:59.460 --> 00:12:02.100
from their code of conduct. I mean, they didn't add
253
00:12:02.120 --> 00:12:04.139
be evil, but they just took out the don't be.
254
00:12:04.759 --> 00:12:08.919
And then in March, uh, The Cambridge Analytica scandal. Oh, yes.
255
00:12:09.259 --> 00:12:12.000
Where Cambridge Analytica had mined Facebook data in a way
256
00:12:12.019 --> 00:12:15.220
that not even Facebook had thought about and was very
257
00:12:15.279 --> 00:12:19.620
effective at doing things like creating ads for individuals where
258
00:12:19.639 --> 00:12:22.649
the individual didn't realize they're the only ones seeing the ad.
259
00:12:22.970 --> 00:12:26.389
A very effective strategy for getting a group of English
260
00:12:26.429 --> 00:12:29.110
people to vote against their best interests and exit the EU.
261
00:12:29.269 --> 00:12:31.230
Now we have Facebook and nobody cares.
262
00:12:31.250 --> 00:12:32.169
There you go. Yeah.
263
00:12:32.330 --> 00:12:32.929
Targeted ad.
264
00:12:33.029 --> 00:12:37.110
And in April, Belgium declares... video game loot box systems
265
00:12:37.149 --> 00:12:40.590
to be gambling and illegal for minors, which it is.
266
00:12:40.610 --> 00:12:46.549
I don't disagree with them. Interesting problem. Yeah. Don't manipulate children, please. Well,
267
00:12:46.889 --> 00:12:50.029
not too heavily. And then in May, the GDPR is enacted.
268
00:12:50.490 --> 00:12:53.210
It's been in development for a few years. This is
269
00:12:53.250 --> 00:12:56.129
why you have to keep agreeing to cookies as well
270
00:12:56.169 --> 00:12:57.500
as a bunch of other things like the right to
271
00:12:57.529 --> 00:13:02.840
be forgotten and serious fines for not being forthright with breaches.
272
00:13:03.120 --> 00:13:03.299
Yeah.
273
00:13:03.639 --> 00:13:05.500
Um, over on the Microsoft side of things, it may,
274
00:13:05.519 --> 00:13:10.570
we have build 2018, which ships.net core 2.1. But also,
275
00:13:10.590 --> 00:13:12.429
and I realized this in hindsight, when I was putting
276
00:13:12.450 --> 00:13:15.210
this together is sort of the first wave of AI stuff.
277
00:13:15.230 --> 00:13:17.710
Remember visual studio and telecode? I think we did a
278
00:13:17.769 --> 00:13:18.269
show on it.
279
00:13:18.370 --> 00:13:18.830
Yeah. Yeah.
280
00:13:18.850 --> 00:13:18.990
Yeah.
281
00:13:19.090 --> 00:13:21.429
Where it wasn't an, you know, we're really talking about having,
282
00:13:21.529 --> 00:13:24.320
helping to generate code for testing and things. It's also
283
00:13:24.360 --> 00:13:27.940
the year they ship ml.net machine learning.net for, for doing
284
00:13:27.980 --> 00:13:28.700
models that way.
285
00:13:28.720 --> 00:13:29.059
Right.
286
00:13:29.350 --> 00:13:32.409
And certainly last but not least, for the build announcements,
287
00:13:32.480 --> 00:13:35.059
one of the ones that I jumped over was Azure Sphere.
288
00:13:35.120 --> 00:13:37.620
Do you remember this? This is when Microsoft starts building
289
00:13:37.659 --> 00:13:41.500
their own flavor of a Linux operating system for IoT.
290
00:13:42.570 --> 00:13:45.370
It's subsequently been phased out now, but for a few
291
00:13:45.409 --> 00:13:48.149
years here, it's like, Microsoft makes their own Linux. I
292
00:13:48.210 --> 00:13:48.549
love that.
293
00:13:48.710 --> 00:13:48.870
Mm-hmm.
294
00:13:49.490 --> 00:13:51.210
Later in the year, in October, well, actually it was
295
00:13:51.250 --> 00:13:54.320
announced in June, but completed in October, Microsoft acquires GitHub
296
00:13:54.340 --> 00:13:59.120
for $ 7. 5 billion. And our friend, Nat Friedman, formerly of Xamarin,
297
00:13:59.179 --> 00:14:02.679
now a Microsoft employee, becomes the new CEO of GitHub.
298
00:14:02.860 --> 00:14:04.700
We get Core 2.2 at the end of the year
299
00:14:04.720 --> 00:14:05.600
in December. Yeah.
300
00:14:05.779 --> 00:14:07.360
A couple other compute stories.
301
00:14:08.019 --> 00:14:10.649
This is the year that Elon Musk attempts to take
302
00:14:10.750 --> 00:14:13.529
over OpenAI from his partners and gets booted out of it.
303
00:14:13.529 --> 00:14:15.509
And he's still angry about that and purse fights with
304
00:14:15.549 --> 00:14:16.769
Sam Altman on regular basis.
305
00:14:16.950 --> 00:14:19.110
Yeah, because... That's where he is right now.
306
00:14:19.309 --> 00:14:22.539
Because reasons, because I realized all the same, the same
307
00:14:22.600 --> 00:14:25.759
year that he flies the biggest rocket in history into
308
00:14:25.799 --> 00:14:28.860
space and puts a sports car into space, which still orbiting,
309
00:14:28.879 --> 00:14:32.259
you know, between the earth and Mars also, you know,
310
00:14:32.370 --> 00:14:36.649
call some guy trying to save children in Thailand, a pedophile, uh,
311
00:14:36.730 --> 00:14:39.899
also tries to hijack the AI company. Yeah. Uh, We're
312
00:14:39.940 --> 00:14:43.210
coming into the period of excitement as we're going through
313
00:14:43.230 --> 00:14:47.470
these next few years in quantum computing. And in 2018,
314
00:14:47.470 --> 00:14:50.610
there was a very important paper published, the NISC paper,
315
00:14:50.669 --> 00:14:54.250
which means Noisy Intermediate Scale Quantum, this paper by John Preskill.
316
00:14:55.149 --> 00:14:59.549
This is the point where companies are starting to build qubits,
317
00:14:59.929 --> 00:15:03.289
build these chandelier dipped in liquid helium style computers that
318
00:15:03.309 --> 00:15:06.250
have about 50 qubits or so forth. And in this paper,
319
00:15:06.269 --> 00:15:08.490
he talks about it's all going to be about error correction.
320
00:15:09.220 --> 00:15:10.860
that we're getting out of the lab. These things are
321
00:15:10.879 --> 00:15:12.340
going to be able to do certain levels of compute,
322
00:15:12.360 --> 00:15:15.610
but without really fault tolerance in this, you're not going
323
00:15:15.629 --> 00:15:20.049
to be able to get much done. And that sets
324
00:15:20.149 --> 00:15:22.529
up Google, who's driving a lot of this stuff with
325
00:15:22.570 --> 00:15:26.549
their quantum toolkit, aimed at researchers for testing what prototype
326
00:15:26.570 --> 00:15:28.940
hardware could do, which is funny because next year they'll
327
00:15:29.240 --> 00:15:32.919
actually produce the second market process. So obviously Google was anticipated.
328
00:15:33.419 --> 00:15:33.919
And that's what I got.
329
00:15:34.250 --> 00:15:34.570
All right.
330
00:15:34.610 --> 00:15:38.730
Well, before we bring Don on, let's talk about Better
331
00:15:38.750 --> 00:15:40.149
Know Framework. Roll the music.
332
00:15:40.230 --> 00:15:40.490
Awesome.
333
00:15:40.809 --> 00:15:43.870
All right, man.
334
00:15:44.230 --> 00:15:51.399
What do you got? Guess who's back in Better Know Framework?
335
00:15:51.539 --> 00:15:57.080
I think I know. He's Australian. It's Simon.
336
00:15:57.320 --> 00:15:57.860
It's Simon.
337
00:15:58.539 --> 00:16:05.009
So he belongs to our Appfee Next Slack channel. And
338
00:16:05.210 --> 00:16:08.519
he basically knew that I had done some work into
339
00:16:08.600 --> 00:16:14.480
looking into serializing link queries and passing them from client
340
00:16:14.519 --> 00:16:18.820
to server and pretty much gave up. And there was
341
00:16:18.860 --> 00:16:23.049
a whole smattering of GitHub repos out there of people
342
00:16:23.090 --> 00:16:26.149
who attempted it. And I tried like 50% of them
343
00:16:26.169 --> 00:16:29.090
and they all failed. And so he came up with
344
00:16:29.129 --> 00:16:33.559
this thing called SCRY, S-C-R-Y, or maybe it's SCARY. I
345
00:16:33.580 --> 00:16:33.799
don't know.
346
00:16:33.879 --> 00:16:34.559
Or Scree.
347
00:16:34.759 --> 00:16:35.379
Or Scree?
348
00:16:35.440 --> 00:16:35.700
Yeah.
349
00:16:35.779 --> 00:16:38.860
He doesn't have a pronunciation legend, but he says it's
350
00:16:38.919 --> 00:16:43.070
a type-safe serializable link from a client to a server
351
00:16:43.159 --> 00:16:47.470
side EF core model. And I had told him, and
352
00:16:47.750 --> 00:16:52.590
both Mateus Carvalho and I had worked on this before,
353
00:16:52.629 --> 00:16:56.169
and Mateus came up with something, and I came up
354
00:16:56.190 --> 00:17:01.740
with something, AVN repository, that basically tells Did the same,
355
00:17:01.779 --> 00:17:07.279
but I used classes and serialized those classes for filtering
356
00:17:07.380 --> 00:17:11.099
and basically all aspects of a SQL query, a link query, right?
357
00:17:11.640 --> 00:17:14.660
A where, an order by, all of that stuff just
358
00:17:14.720 --> 00:17:16.269
turned into data and passed in.
359
00:17:16.289 --> 00:17:16.809
And it works.
360
00:17:17.349 --> 00:17:23.150
But as Simon pointed out, it's not as efficient as
361
00:17:23.190 --> 00:17:26.289
what he's doing. Yeah. So this is, and he has a,
362
00:17:26.950 --> 00:17:28.650
there's two links. We're going to give you a link
363
00:17:28.670 --> 00:17:32.109
to the scary or the scry or scree project. And
364
00:17:32.170 --> 00:17:36.549
then there's this doc querying MD composing a query at runtime.
365
00:17:37.990 --> 00:17:41.079
And so he just talks about how to do that,
366
00:17:41.150 --> 00:17:47.480
how to create projections and computer projection members. It's really cool. And,
367
00:17:47.700 --> 00:17:49.039
and it works interesting.
368
00:17:49.180 --> 00:17:50.299
And so, yeah.
369
00:17:50.420 --> 00:17:54.960
And, and so, yeah. Um, Simon, you win the prize.
370
00:17:55.220 --> 00:17:55.960
You're awesome.
371
00:17:56.319 --> 00:17:59.240
You're the first person I know who has actually done this.
372
00:17:59.849 --> 00:18:02.930
And maybe I just resigned and said, I can't be done.
373
00:18:02.990 --> 00:18:06.190
And maybe it was done, you know, long before that.
374
00:18:06.309 --> 00:18:06.670
I don't know.
375
00:18:06.950 --> 00:18:09.190
But that reminds me of link to rest.
376
00:18:09.650 --> 00:18:12.690
Oh, link to rest. Well, that sounds exactly like what
377
00:18:12.730 --> 00:18:13.230
I was doing.
378
00:18:13.410 --> 00:18:14.049
Yeah. Yeah.
379
00:18:14.069 --> 00:18:16.170
Because it was the inverse.
380
00:18:16.430 --> 00:18:16.670
Right.
381
00:18:16.769 --> 00:18:21.059
Where you, well, you created from a link query, you
382
00:18:21.220 --> 00:18:23.740
could create a query string.
383
00:18:23.980 --> 00:18:24.269
Right.
384
00:18:24.420 --> 00:18:26.119
But you couldn't put it back on the other side
385
00:18:26.140 --> 00:18:28.750
and turn it into a link query, which is, which
386
00:18:28.789 --> 00:18:30.529
is what he's doing. And what I wanted to do
387
00:18:30.589 --> 00:18:34.109
as well, right? Because you've got a form and it's
388
00:18:34.150 --> 00:18:36.289
got a whole bunch of search parameters. And if your
389
00:18:36.309 --> 00:18:38.289
data is local, great link query.
390
00:18:38.789 --> 00:18:41.009
Well, no, so it did it the other way too.
391
00:18:41.450 --> 00:18:42.690
If it's behind an API.
392
00:18:43.529 --> 00:18:48.039
Link to REST, it would, it was an ASP.NET. It
393
00:18:48.059 --> 00:18:52.369
was NBC, ASP.NET. It would, take that query string and
394
00:18:52.410 --> 00:18:54.630
then turn it into a link.
395
00:18:54.950 --> 00:19:00.160
Oh, okay. Well, that's great. Link to rest, rest to link. Okay. Well,
396
00:19:00.339 --> 00:19:02.960
check out scary or scree or scry or whatever it is.
397
00:19:03.960 --> 00:19:06.349
And ask Simon how to pronounce this thing.
398
00:19:06.369 --> 00:19:06.990
Cause I don't know.
399
00:19:07.509 --> 00:19:08.990
I'm sure there's a difference, but yeah.
400
00:19:09.109 --> 00:19:09.369
Right.
401
00:19:09.609 --> 00:19:11.509
I just remember link to rest.
402
00:19:11.930 --> 00:19:13.910
Well, Richard, who's talking to us today?
403
00:19:14.029 --> 00:19:16.650
Grabbed a comment off show 1994, the one we did
404
00:19:16.670 --> 00:19:19.470
with our friend Brady Gaster, talking about Squad. A lot
405
00:19:19.490 --> 00:19:20.630
of good comments on that show.
406
00:19:20.710 --> 00:19:20.890
Yeah.
407
00:19:21.130 --> 00:19:24.650
And this one comes from Paula Pinto, who says, while
408
00:19:24.769 --> 00:19:27.349
interesting as always, the whole Squad enthusiasm was pretty much
409
00:19:27.390 --> 00:19:30.890
focused on single developer workflow. Now not having to depend
410
00:19:30.930 --> 00:19:33.400
on anyone else to do related development tasks. It was
411
00:19:33.539 --> 00:19:37.039
all about their nicknamed agents without any ethical discussion of
412
00:19:37.079 --> 00:19:40.640
what tooling like Squad will have in developer teams. I've
413
00:19:40.660 --> 00:19:43.119
already observed how teams have been downsized. Thank the SaaS
414
00:19:43.160 --> 00:19:45.789
products for placing the need for backend developers, AI tooling
415
00:19:45.809 --> 00:19:47.670
doing the work of team members that used to do
416
00:19:47.690 --> 00:19:50.890
translations or asset creations for CMS platforms. Now we get
417
00:19:50.930 --> 00:19:54.099
tools like Squad reducing even further the amount of humans
418
00:19:54.140 --> 00:19:56.480
in the loop, getting celebrated for what a single developer
419
00:19:56.500 --> 00:19:58.559
could choose while taking into account the repercussions it has
420
00:19:59.000 --> 00:20:00.839
on those that are deemed no longer needed to be
421
00:20:00.859 --> 00:20:01.740
kept around as employees.
422
00:20:01.819 --> 00:20:03.259
Unless you didn't have a team to begin with.
423
00:20:03.319 --> 00:20:05.720
In a late capitalism-driven society, if $ 5 can do what...
424
00:20:06.690 --> 00:20:08.829
work of 20 developers thanks to tooling like squad the
425
00:20:08.869 --> 00:20:10.609
remaining 15 are out of the company like an old
426
00:20:10.630 --> 00:20:12.910
detroit they will need to find work that isn't yet taken.
427
00:20:12.710 --> 00:20:15.880
By ai unless you didn't start with a team yeah
428
00:20:16.000 --> 00:20:17.299
you were always one guy.
429
00:20:18.039 --> 00:20:20.819
But i also think it's kind of a short-sighted mindset
430
00:20:20.859 --> 00:20:24.299
too because i'm seeing more nobody team's not getting laid
431
00:20:24.339 --> 00:20:26.400
out but just working on the other stuff they hadn't
432
00:20:26.440 --> 00:20:29.160
gotten to like the joke for years was none of
433
00:20:29.220 --> 00:20:30.750
us would get to the bottom of our to-do list
434
00:20:32.079 --> 00:20:35.559
And now we're getting through the feature lists and starting
435
00:20:35.579 --> 00:20:38.619
to get into tech debt. And then other features start
436
00:20:38.700 --> 00:20:43.460
to appear. It's only the shortest-sighted of companies that would
437
00:20:43.500 --> 00:20:46.640
work on one thing and not think, what are the
438
00:20:46.680 --> 00:20:48.309
other things we could do? You've got a group of
439
00:20:48.349 --> 00:20:51.049
people who are now more powerful. Utilize them.
440
00:20:51.069 --> 00:20:52.970
You take all those people on the team, give them
441
00:20:53.049 --> 00:20:57.279
all a unique task, give them their AI tools. And
442
00:20:57.500 --> 00:20:59.789
set them free. And before you know it, you're through
443
00:20:59.880 --> 00:21:00.619
all of those things.
444
00:21:00.869 --> 00:21:01.089
Yeah.
445
00:21:01.200 --> 00:21:02.460
Technical debt's a big one.
446
00:21:02.589 --> 00:21:05.150
I also think there is a larger conversation about what
447
00:21:05.210 --> 00:21:09.069
the shape of teams looks like with these tools going forward. Right.
448
00:21:09.289 --> 00:21:10.430
We're still in early days.
449
00:21:10.789 --> 00:21:14.170
I've been running into folks who, in the startup community,
450
00:21:14.230 --> 00:21:16.390
are saying they don't need developers anymore.
451
00:21:16.970 --> 00:21:19.190
Yeah. That doesn't seem true.
452
00:21:20.710 --> 00:21:23.650
Somebody I ran into, he just came back from two
453
00:21:23.670 --> 00:21:27.670
weeks of a startup incubator, and he was saying, Of
454
00:21:27.750 --> 00:21:31.490
the 20 or so startups there, none of them had developers.
455
00:21:31.569 --> 00:21:31.809
Yeah.
456
00:21:31.930 --> 00:21:32.150
Right.
457
00:21:32.309 --> 00:21:33.289
That's easy to understand.
458
00:21:33.869 --> 00:21:35.950
Sure. All right, Paulo. Thank you so much for your comment.
459
00:21:36.049 --> 00:21:37.410
And a copy of Music Code Buy is on its
460
00:21:37.430 --> 00:21:38.569
way to you. And if you'd like a copy of
461
00:21:38.589 --> 00:21:42.369
Music Code Buy, write a comment on the website at. netronics. com
462
00:21:41.690 --> 00:21:43.500
or on the Facebooks. We publish every show there. And
463
00:21:43.539 --> 00:21:45.000
if you comment there and I read it on the show,
464
00:21:45.460 --> 00:21:46.690
we'll send you a copy of Music Code Buy.
465
00:21:46.700 --> 00:21:52.599
Or you could just go to musictocodebuy.net and get it yourself. MP3, WAV,
466
00:21:52.700 --> 00:21:56.240
and FLAC formats. Go ahead. You know you want it.
467
00:21:59.170 --> 00:22:01.809
All right, let's bring on Don Demsack. Don is a
468
00:22:01.849 --> 00:22:05.809
technology leader dedicated to strengthening the tech ecosystem in Central
469
00:22:05.849 --> 00:22:09.430
Pennsylvania and beyond. His day job is with a major
470
00:22:09.470 --> 00:22:14.279
technology company's infrastructure group where he helps CIOs and CTOs
471
00:22:14.380 --> 00:22:19.140
think like COOs. His nights and weekends go to volunteering
472
00:22:19.200 --> 00:22:21.700
as a board member of the Technology Council of Central
473
00:22:21.720 --> 00:22:26.569
PA and as an active member of Tech Lancaster. You
474
00:22:26.589 --> 00:22:29.970
can find his latest ramblings over on Substack. This is
475
00:22:30.039 --> 00:22:32.420
his fourth trip to. NET Rocks and the first in
476
00:22:32.460 --> 00:22:33.400
almost 20 years.
477
00:22:33.940 --> 00:22:34.740
It's been too long.
478
00:22:35.019 --> 00:22:40.140
Dude, I remember your first episode. It was during the
479
00:22:40.200 --> 00:22:44.140
Rory years. So it's episode 62. Rory years were 50
480
00:22:44.140 --> 00:22:49.970
to 100. And he somehow convinced you to come up
481
00:22:50.009 --> 00:22:52.130
to the studio. And you were there in the studio
482
00:22:52.170 --> 00:22:53.250
for us, with us.
483
00:22:53.769 --> 00:22:54.589
Yep. And you remember.
484
00:22:55.099 --> 00:22:57.539
Richard Roy used to do the Google weirdos thing.
485
00:22:57.720 --> 00:22:58.000
Right.
486
00:22:59.799 --> 00:23:03.039
So just for people who don't remember, he would look,
487
00:23:03.059 --> 00:23:08.460
he had a blog, popular blog, neopolian.com. And it was
488
00:23:08.779 --> 00:23:14.640
hysterical and very, very surreal. And he took it down
489
00:23:14.680 --> 00:23:16.809
because he, he wanted to be taken more seriously as
490
00:23:16.829 --> 00:23:19.230
a developer and everybody just wanted comic relief, but he
491
00:23:19.269 --> 00:23:23.670
was very funny. Anyway, he would look at the logs and,
492
00:23:24.390 --> 00:23:28.890
of what people typed into Google and then landed themselves
493
00:23:29.109 --> 00:23:31.609
on his blog, right? He could tell that it came
494
00:23:31.650 --> 00:23:36.579
from Google and the string is in the log, right?
495
00:23:36.599 --> 00:23:37.150
The URL.
496
00:23:38.130 --> 00:23:42.099
And so he would read these and they were just crazy,
497
00:23:42.119 --> 00:23:45.500
what people were looking for. But one of them, and
498
00:23:45.519 --> 00:23:49.740
I remember this specifically, Don, tell Don XML to come
499
00:23:49.799 --> 00:23:51.039
home and take out the garbage.
500
00:23:52.809 --> 00:23:56.930
You just made my wife's week. That is exactly. Make
501
00:23:57.049 --> 00:23:58.470
sure Carl brings that up.
502
00:23:59.190 --> 00:24:00.759
Oh, well, how could we not?
503
00:24:00.779 --> 00:24:03.000
I mean, it's crazy.
504
00:24:03.259 --> 00:24:06.259
But yeah, you used to be Don XML. And then
505
00:24:06.299 --> 00:24:09.759
I think by your third episode, which was 271, it
506
00:24:09.799 --> 00:24:11.740
was Don Demsack on Link to XML.
507
00:24:12.109 --> 00:24:16.599
Yeah. And who did the session before Mike? Do you remember?
508
00:24:16.619 --> 00:24:18.880
Uh, two 70 to 70.
509
00:24:18.880 --> 00:24:20.619
Let's see. I got the list right here.
510
00:24:22.099 --> 00:24:23.779
It's funny. It's all online. That's weird.
511
00:24:23.839 --> 00:24:25.740
Yes, it is. I can tell you.
512
00:24:25.759 --> 00:24:28.779
No, I got it right here. It was Eric Meyer,
513
00:24:29.220 --> 00:24:29.980
Eric Meyer.
514
00:24:30.400 --> 00:24:34.359
Oh, why the Eric Meyer on link on link? Yeah.
515
00:24:34.380 --> 00:24:35.539
The guy who helped create it.
516
00:24:35.599 --> 00:24:37.200
Something he knows a little thing about.
517
00:24:37.509 --> 00:24:37.740
Yeah.
518
00:24:37.809 --> 00:24:42.029
Just a little. Um, if you haven't, he, or, uh,
519
00:24:42.069 --> 00:24:46.339
been paying attention to him, uh, He recently has a
520
00:24:46.380 --> 00:24:48.980
video up on YouTube of a presentation.
521
00:24:49.000 --> 00:24:49.079
AI.
522
00:24:50.640 --> 00:24:58.319
Engineering, around how AI agents got teeth once we allowed
523
00:24:58.440 --> 00:25:03.279
them to do more than just chat when he gave
524
00:25:03.299 --> 00:25:06.579
them access to tools. And he throws out a whole
525
00:25:06.759 --> 00:25:11.529
theory of how we can lock down AI agents by
526
00:25:11.589 --> 00:25:16.039
making them do... mathematical proofs that the stuff that they're
527
00:25:16.059 --> 00:25:22.609
doing won't negatively impact something. It is an awesome video.
528
00:25:22.950 --> 00:25:25.269
Yeah, we need more of that. Absolutely.
529
00:25:25.269 --> 00:25:26.549
100%.
530
00:25:26.549 --> 00:25:30.990
I saw an article that you wrote on LinkedIn, which
531
00:25:31.029 --> 00:25:35.369
was also on your sub stack. Everything that I've seen
532
00:25:35.589 --> 00:25:39.259
from you has been thought-provoking, but this was about the
533
00:25:39.279 --> 00:25:48.039
new MCP 2.0 and how you can't make a stateful
534
00:25:48.279 --> 00:25:53.299
MCP server anymore if you're using 2.0. And so, yeah,
535
00:25:53.339 --> 00:25:55.589
we talked about that. I talked about that with Rocky
536
00:25:55.890 --> 00:26:02.730
on Code with AI. And Richard found your substack and
537
00:26:02.809 --> 00:26:05.529
found some good stuff that you're thinking of and talking about.
538
00:26:05.849 --> 00:26:06.650
And here you are.
539
00:26:06.890 --> 00:26:11.319
Yeah, it ties right back to what Eric is talking about.
540
00:26:11.380 --> 00:26:13.240
It was funny because I've been working on this for
541
00:26:13.279 --> 00:26:20.819
a bit. But this whole idea of how do we
542
00:26:20.980 --> 00:26:22.940
govern these agents better?
543
00:26:23.099 --> 00:26:23.559
Right. Sure.
544
00:26:23.700 --> 00:26:28.259
Everybody. Now, for the last two years, people have been
545
00:26:28.480 --> 00:26:32.279
really complaining about governance. But the big thing everybody now
546
00:26:32.380 --> 00:26:34.240
is complaining about is tokenomics.
547
00:26:34.500 --> 00:26:35.920
Tokenomics.
548
00:26:36.079 --> 00:26:39.420
That's the big thing that everybody is looking because now
549
00:26:39.440 --> 00:26:41.119
there's a cost per token.
550
00:26:41.279 --> 00:26:41.519
Right.
551
00:26:41.599 --> 00:26:46.710
Well, those two things are kind of related. about two
552
00:26:46.730 --> 00:26:49.809
years ago, just over two years ago, through my day job,
553
00:26:50.049 --> 00:26:54.750
I got to see a demo of some agentic AI.
554
00:26:55.509 --> 00:27:01.509
And the demo that they created was really thought-provoking because
555
00:27:01.529 --> 00:27:09.549
it didn't just show what the agents were working on,
556
00:27:09.950 --> 00:27:12.859
but it actually, at the bottom of it, showed the
557
00:27:12.990 --> 00:27:16.599
conversations the agents were actually having with each other. And
558
00:27:17.099 --> 00:27:20.960
I was like, wow, that looks like a Teams or
559
00:27:21.000 --> 00:27:26.839
a Slack conversation. But I'd never thought of agentic AI
560
00:27:27.180 --> 00:27:32.160
in that way. We're software developers. We think about APIs,
561
00:27:32.519 --> 00:27:36.539
application programming interfaces. Now there's this whole idea of a
562
00:27:37.220 --> 00:27:38.700
natural language interface.
563
00:27:38.900 --> 00:27:42.690
Or semi-natural, like The way those tools talk to each
564
00:27:42.789 --> 00:27:47.329
other is not that normal, but I get what you're saying.
565
00:27:47.430 --> 00:27:49.109
It is English of a sort.
566
00:27:49.750 --> 00:27:52.009
And that, that was the thing that jumped out at
567
00:27:52.029 --> 00:27:59.759
me was it was too generic in a team's chat.
568
00:27:59.920 --> 00:28:05.460
You expect a lot of three letter acronyms and very
569
00:28:05.519 --> 00:28:08.849
specific words. for each of the roles that are there.
570
00:28:09.369 --> 00:28:13.089
Think about chat between a DBA, a front end developer
571
00:28:13.130 --> 00:28:16.970
and a middle and a mid tier developer, all the conversations,
572
00:28:17.119 --> 00:28:19.220
all the acronyms that they wind up using.
573
00:28:19.319 --> 00:28:19.539
Yeah.
574
00:28:19.740 --> 00:28:20.920
That was lacking.
575
00:28:21.259 --> 00:28:24.039
It speaks to a lack of common context between the agents.
576
00:28:24.440 --> 00:28:28.160
And that's where my head was going was how do I, that,
577
00:28:28.220 --> 00:28:32.559
that seems to be missing. Um, and as you guys know,
578
00:28:32.619 --> 00:28:35.259
and you've got, you guys had a bunch of over
579
00:28:35.299 --> 00:28:39.950
the years, especially recently, domain-driven design type folks. I was like,
580
00:28:40.410 --> 00:28:42.009
there's no ubiquitous language.
581
00:28:42.549 --> 00:28:42.750
Right.
582
00:28:43.769 --> 00:28:52.130
What if we made these agents speak the ubiquitous language
583
00:28:52.599 --> 00:28:56.500
of the domain that they're in charge of?
584
00:28:56.819 --> 00:28:57.039
Right.
585
00:28:57.319 --> 00:28:59.240
That would be super cool.
586
00:28:59.599 --> 00:29:02.259
And really what you're doing is bracketing their context, right?
587
00:29:02.279 --> 00:29:04.400
That they need to use the correct language.
588
00:29:04.640 --> 00:29:09.339
Correct. And by doing that, there's side effects, lots of
589
00:29:09.380 --> 00:29:13.140
good side effects. If you can constrain them or control
590
00:29:13.200 --> 00:29:17.029
their language, I'm calling it a controlled natural language. Um,
591
00:29:17.390 --> 00:29:20.750
then they can only do what they can express.
592
00:29:21.450 --> 00:29:21.789
Yeah.
593
00:29:22.089 --> 00:29:23.430
And it's another kind of constraint.
594
00:29:23.910 --> 00:29:28.029
Think about the open AI hacking of hugging face.
595
00:29:28.589 --> 00:29:28.829
Right.
596
00:29:28.970 --> 00:29:34.759
Where it had access via MCP to a tool. figured
597
00:29:34.859 --> 00:29:38.990
out how to do something that wasn't desired by that tool.
598
00:29:39.450 --> 00:29:42.569
But if we had a natural, a constrained or controlled
599
00:29:42.609 --> 00:29:45.190
natural language in front of that, then they wouldn't be
600
00:29:45.250 --> 00:29:47.609
able to ask the things that they shouldn't be able
601
00:29:47.630 --> 00:29:48.009
to do.
602
00:29:48.210 --> 00:29:49.190
Yeah.
603
00:29:49.650 --> 00:29:55.769
So that's, and so the term, these are patterns that I,
604
00:29:56.380 --> 00:30:01.279
I'm using for this is instead of bounded context, domain-driven design,
605
00:30:01.740 --> 00:30:05.710
how about bounded agency? So how do we build walls
606
00:30:05.730 --> 00:30:09.910
around what the domain that that particular agent can do,
607
00:30:11.859 --> 00:30:15.279
not via just security, but actually ways to express it?
608
00:30:15.599 --> 00:30:17.220
If they don't have the language to express it, they
609
00:30:17.259 --> 00:30:17.640
can't do it.
610
00:30:17.759 --> 00:30:18.000
Right.
611
00:30:18.160 --> 00:30:21.859
So if you're adding another layer... Doesn't, uh, doesn't that
612
00:30:21.900 --> 00:30:22.960
affect your tokenomics?
613
00:30:23.259 --> 00:30:30.720
That's the other side is now you can actually decrease the, um, the,
614
00:30:31.220 --> 00:30:37.109
the verbiage that's going across. Um, and one of the
615
00:30:37.349 --> 00:30:41.109
major challenges with a natural language as us as humans
616
00:30:41.890 --> 00:30:43.849
is there's a lots of different ways to say the
617
00:30:43.910 --> 00:30:48.289
exact same thing, which leads to ambiguity. Right. And there's, and,
618
00:30:49.519 --> 00:30:53.299
By constraining it or controlling that language, you actually reduce
619
00:30:53.480 --> 00:31:00.019
the actual word count, which you're going to reduce the tokens.
620
00:31:00.240 --> 00:31:03.740
But then you're also decreasing your ambiguity, too, because you
621
00:31:03.759 --> 00:31:05.359
can only say it a certain way.
622
00:31:05.519 --> 00:31:09.900
Well, aren't you using tokens for that intermediate layer that
623
00:31:09.940 --> 00:31:11.250
does the translation?
624
00:31:11.710 --> 00:31:16.130
So originally, that's where I was thinking. But then I
625
00:31:16.150 --> 00:31:17.470
take it one step further.
626
00:31:17.490 --> 00:31:17.779
If I.
627
00:31:18.880 --> 00:31:24.400
can control the language, and so I can control the syntax.
628
00:31:24.440 --> 00:31:27.670
And this goes back to stuff that you guys know
629
00:31:27.690 --> 00:31:30.690
me from, XML. What did I do with XML? I
630
00:31:30.710 --> 00:31:34.329
created domain-specific languages. What did you do with JSON? Create
631
00:31:34.369 --> 00:31:38.279
domain-specific languages. What do we do with Fluent APIs and LINQ?
632
00:31:38.799 --> 00:31:43.720
We created the Fluent APIs and other languages within code. Well,
633
00:31:44.279 --> 00:31:50.519
with all the stuff that's been going on with chat
634
00:31:50.539 --> 00:31:55.940
GPT and natural language processing and stuff that we were
635
00:31:55.980 --> 00:32:00.160
doing with, with link back in the day. What if
636
00:32:00.299 --> 00:32:05.369
I could put a intent compiler in front of the
637
00:32:05.410 --> 00:32:12.069
tool that then parses that text because it's a constrained
638
00:32:12.109 --> 00:32:16.880
natural language. And instead of feeding everything to the model,
639
00:32:17.980 --> 00:32:23.450
what if I if I knew what words mapped to
640
00:32:23.509 --> 00:32:28.450
specific functions, I could actually call those functions instead of
641
00:32:28.490 --> 00:32:31.890
having to pass it through to the agent who would
642
00:32:31.990 --> 00:32:36.250
eventually pass it through to an MCP server somewhere to
643
00:32:36.569 --> 00:32:40.799
actually call the tool. So now I've actually reduced, dramatically
644
00:32:40.859 --> 00:32:44.000
reduced how much is actually going to the models because
645
00:32:44.019 --> 00:32:45.799
I'm pulling some pieces of that.
646
00:32:46.279 --> 00:32:49.599
From this static glossary kind of thing. But, And I
647
00:32:49.660 --> 00:32:52.000
imagine that the best of both worlds would be if
648
00:32:52.119 --> 00:32:54.859
the word doesn't exist in the glossary and it can't
649
00:32:54.920 --> 00:32:57.619
express it in a more concise way, then it would
650
00:32:57.680 --> 00:33:00.740
go out and get definitions for those words and add
651
00:33:00.759 --> 00:33:01.559
them to the domain.
652
00:33:02.309 --> 00:33:05.950
So you, you, you really want to control that language
653
00:33:06.049 --> 00:33:08.190
so that you're controlling what it can do.
654
00:33:08.210 --> 00:33:09.109
Right.
655
00:33:09.130 --> 00:33:15.720
So you would prefer, uh, to keep to, uh, to
656
00:33:15.940 --> 00:33:19.700
programmatically add the new languages. Don't let it do it
657
00:33:19.880 --> 00:33:20.529
on its own.
658
00:33:20.549 --> 00:33:22.410
Well, at least it could make you a list.
659
00:33:22.650 --> 00:33:23.309
A list of it.
660
00:33:24.529 --> 00:33:26.869
Yeah, a list of things that it didn't understand or whatever.
661
00:33:26.990 --> 00:33:31.410
Correct. And you can publish that language. And that's one
662
00:33:31.450 --> 00:33:35.920
of the things that models are great at, converting from
663
00:33:36.059 --> 00:33:37.400
one language to another language.
664
00:33:37.420 --> 00:33:37.640
Right.
665
00:33:38.079 --> 00:33:41.460
So if you have a way to declare that controlled
666
00:33:41.519 --> 00:33:44.059
natural language, it can convert it automatically.
667
00:33:44.519 --> 00:33:47.680
Yeah, that's right. I could see repos for all sorts
668
00:33:47.720 --> 00:33:53.440
of vertical industries, uh, DSLs in used in that way to,
669
00:33:53.640 --> 00:33:57.880
to rein in your LLMs and your tokenomics.
670
00:33:58.700 --> 00:34:01.299
I make it a heck of a lot easier for that.
671
00:34:01.420 --> 00:34:06.799
And so, um, so I actually built, uh, uh, uh,
672
00:34:07.240 --> 00:34:08.900
I built a couple of different things based on that,
673
00:34:08.920 --> 00:34:14.119
but I actually have a, uh, MVP that you can
674
00:34:14.159 --> 00:34:17.570
go pull down from GitHub. It's called Limelight X. Well,
675
00:34:17.730 --> 00:34:19.250
Rush is out this year, right?
676
00:34:19.469 --> 00:34:20.250
Doing the tour.
677
00:34:20.349 --> 00:34:24.409
So Rush fan had to pull that in. So Limelight X.
678
00:34:26.690 --> 00:34:29.840
And so you go there, you can actually go see
679
00:34:29.989 --> 00:34:37.659
how to do this. So you can give it the
680
00:34:37.739 --> 00:34:43.980
natural language, the constrained natural language. give it a text
681
00:34:44.860 --> 00:34:50.469
and it will actually give you the intermediate steps so
682
00:34:50.489 --> 00:34:53.230
you can visualize it. So how do you parse that
683
00:34:53.269 --> 00:34:57.409
apart to an AST? How do you take that AST
684
00:34:58.050 --> 00:35:01.070
and optimize it? Then you take that AST and turn
685
00:35:01.110 --> 00:35:04.650
it into intermediate result, which then gets put into an
686
00:35:04.710 --> 00:35:08.710
expression tree a la link. How do you do that?
687
00:35:08.909 --> 00:35:16.769
Because what I've found is, Most people doing AI engineering,
688
00:35:17.369 --> 00:35:24.210
AI agents, they don't come from our comp sci background. Right.
689
00:35:24.570 --> 00:35:26.989
They come from the dynamic language.
690
00:35:26.809 --> 00:35:27.550
Side of the house.
691
00:35:27.690 --> 00:35:34.500
They're Python and JavaScript type script. So parsing and compiler
692
00:35:34.719 --> 00:35:38.139
theory type stuff is not something that sits in their domain.
693
00:35:38.969 --> 00:35:42.380
While you can do some of that stuff with those languages,
694
00:35:42.420 --> 00:35:45.420
you don't typically do it. So they're not thinking that way.
695
00:35:46.960 --> 00:35:49.619
So how do I get best of both worlds? That's
696
00:35:49.699 --> 00:35:50.599
part of the challenge.
697
00:35:51.059 --> 00:35:52.739
Before we go any further, I think we should take
698
00:35:52.760 --> 00:35:54.880
a little break. You think so, Richard?
699
00:35:55.260 --> 00:35:55.760
Sure, let's do it.
700
00:35:55.760 --> 00:36:00.719
All right, we'll be right back after these very important messages. Hey,
701
00:36:00.780 --> 00:36:04.340
Carl here. You probably know text control is a powerful
702
00:36:04.400 --> 00:36:08.519
library for document editing and PDF generation. But did you
703
00:36:08.559 --> 00:36:11.539
know they're also a strong supporter of the developer community?
704
00:36:12.099 --> 00:36:14.460
It's part of their mission to build and support a
705
00:36:14.519 --> 00:36:18.949
strong developer community by being present, listening to users, and
706
00:36:19.050 --> 00:36:22.670
sharing knowledge at conferences across Europe and the United States.
707
00:36:23.170 --> 00:36:26.269
So if you're heading to a conference soon, check if
708
00:36:26.309 --> 00:36:29.340
Text Control will be there and stop by to say hi.
709
00:36:29.699 --> 00:36:35.920
You can find their full conference calendar at www.textcontrol.com. And
710
00:36:35.960 --> 00:36:38.489
make sure you thank them for supporting. NET Rocks.
711
00:36:42.570 --> 00:36:43.429
And we're back. It's.
712
00:36:43.389 --> 00:36:43.750
NET Rocks.
713
00:36:43.789 --> 00:36:45.210
I'm Richard Campbell. That's Carl Franklin.
714
00:36:45.389 --> 00:36:45.730
Hey.
715
00:36:45.949 --> 00:36:48.590
Talking to our friend Don Demsack a bit about, well,
716
00:36:48.760 --> 00:36:51.460
you just brought up Limelight X as a way to
717
00:36:51.480 --> 00:36:56.920
sort of create a natural language-like set of instructions, which,
718
00:36:56.940 --> 00:36:59.000
I mean, in some ways reminds me of the way
719
00:36:59.039 --> 00:37:03.670
we write specs anyway. Software development is somewhat language. I mean,
720
00:37:03.690 --> 00:37:05.880
you have the programming language is a constraint. But if
721
00:37:05.920 --> 00:37:09.960
you also notice, the average product manager speaks in a
722
00:37:10.099 --> 00:37:14.070
somewhat constrained language. They're trying to communicate with developers, and
723
00:37:14.110 --> 00:37:16.570
developers speak a weird form of English.
724
00:37:18.090 --> 00:37:19.130
Dilbert proved that.
725
00:37:20.289 --> 00:37:23.989
They're really trying to just be very clear on what
726
00:37:24.070 --> 00:37:27.239
the intent is, and I think it serves the LLMs
727
00:37:27.320 --> 00:37:29.900
pretty well to stick with that same kind of language barrier.
728
00:37:29.900 --> 00:37:30.960
100%.
729
00:37:30.960 --> 00:37:35.320
And then domain-driven design never took off.
730
00:37:35.809 --> 00:37:36.030
Yeah.
731
00:37:36.289 --> 00:37:39.110
We all know it works, but one of the side
732
00:37:39.170 --> 00:37:42.949
effects of implementing it is you needed to have a
733
00:37:43.030 --> 00:37:47.780
subject matter expert who can pull that the main logic
734
00:37:48.070 --> 00:37:52.420
out of that, those communications that was very specialized.
735
00:37:52.940 --> 00:37:53.179
Yeah.
736
00:37:53.619 --> 00:38:02.039
Well, nowadays with coding assistance and the spec driven development world,
737
00:38:03.619 --> 00:38:07.760
we are starting to put that context into text documents
738
00:38:07.840 --> 00:38:11.639
that obviously we could use models to start pulling out
739
00:38:11.900 --> 00:38:15.320
that domain-specific language from the specifications.
740
00:38:15.679 --> 00:38:17.909
I would even go one step further and say we're
741
00:38:17.949 --> 00:38:20.550
heading towards, if we're not there already, just not thinking
742
00:38:20.590 --> 00:38:25.369
of it, conversation-based development. In this last episode that I
743
00:38:25.389 --> 00:38:28.710
did with Rocky Latka, he talked about how he and
744
00:38:28.829 --> 00:38:32.250
three other guys sat down to design a system He
745
00:38:32.289 --> 00:38:36.250
whipped out his Android phone, started recording. It made a transcript.
746
00:38:36.690 --> 00:38:39.769
He uploaded that transcript to Claude and said, build me
747
00:38:39.809 --> 00:38:43.920
a spec based on this conversation. Whoa. I mean, talk
748
00:38:43.960 --> 00:38:46.739
about layers, right?
749
00:38:46.860 --> 00:38:48.760
Using the tool as the preprocessor.
750
00:38:49.000 --> 00:38:49.400
Yeah.
751
00:38:50.820 --> 00:38:56.940
It's an interesting space that we're in because that's been
752
00:38:57.000 --> 00:39:00.909
the art of being a developer is has been really
753
00:39:00.989 --> 00:39:06.880
taking these vague requirements and then converting it into code.
754
00:39:07.340 --> 00:39:10.820
What was my favorite, what's the number one thing whenever
755
00:39:10.920 --> 00:39:14.940
I would build something, the business person would typically turn
756
00:39:14.960 --> 00:39:16.760
around and say, I know that's what I asked for,
757
00:39:16.800 --> 00:39:17.920
but that's not what I wanted.
758
00:39:18.340 --> 00:39:18.840
Yeah, right.
759
00:39:20.110 --> 00:39:24.289
Because humans are really, really, really bad at giving requirements. Weird.
760
00:39:24.329 --> 00:39:26.789
Yeah. And in some ways, like you want the domain
761
00:39:26.849 --> 00:39:29.949
expert because they know the space, but they often skip over.
762
00:39:30.179 --> 00:39:32.699
essential parts because they're so knowledgeable in the space. They
763
00:39:32.719 --> 00:39:35.059
don't even realize what they know.
764
00:39:35.280 --> 00:39:35.519
Yeah.
765
00:39:35.659 --> 00:39:35.820
Yeah.
766
00:39:35.980 --> 00:39:39.380
And that's, I mean, because Rocky's been around, he knows
767
00:39:40.000 --> 00:39:43.440
what he needs to put into that. And so how
768
00:39:43.460 --> 00:39:48.570
do you teach that to these new wave of, uh,
769
00:39:50.329 --> 00:39:55.829
coding engineers that are using coding assistants to do that. Well,
770
00:39:57.170 --> 00:40:01.949
we could teach them better requirement skills. And that's one
771
00:40:01.989 --> 00:40:03.989
of the things I started doing a couple of years
772
00:40:04.050 --> 00:40:09.909
ago in prompt engineering was a big rage two years ago.
773
00:40:09.929 --> 00:40:13.289
And now it's context engineering. But when I explain it
774
00:40:14.190 --> 00:40:16.610
to the average person, what a prompt is, I tell
775
00:40:16.630 --> 00:40:21.110
them it's a requirement. Think of it as giving it
776
00:40:21.150 --> 00:40:22.570
a requirement to another human.
777
00:40:22.710 --> 00:40:22.909
Right.
778
00:40:22.969 --> 00:40:26.050
Got to put in all that extra context. And then
779
00:40:26.150 --> 00:40:30.409
because of my agile background, I like to use given
780
00:40:30.449 --> 00:40:34.880
when then, so that as measured by. And then I
781
00:40:34.920 --> 00:40:38.739
would teach people to write their prompts in that structured
782
00:40:38.820 --> 00:40:42.559
form and they get better results out of the engine
783
00:40:42.719 --> 00:40:45.579
because you're giving it all the context that you would need.
784
00:40:45.840 --> 00:40:47.420
Yeah. That's brilliant.
785
00:40:47.559 --> 00:40:50.949
And so that's, And so that's the same problem that
786
00:40:51.250 --> 00:40:58.000
I'm running into with the spec-driven development is while they
787
00:40:58.039 --> 00:41:03.079
have great structure for the documents, how do you build
788
00:41:03.119 --> 00:41:05.559
the tests? Right. What you really kind of need to
789
00:41:05.619 --> 00:41:10.510
be able to do is create, given when then type scenarios,
790
00:41:11.030 --> 00:41:17.409
do more behavior-driven development. So testing for behavior that's expected
791
00:41:17.510 --> 00:41:20.889
or not expected. rather than writing generic tests.
792
00:41:20.949 --> 00:41:24.329
You're right. Domain-driven development is great at defining what we'd
793
00:41:24.449 --> 00:41:28.539
like it to do, but behavior-driven development is much better
794
00:41:28.659 --> 00:41:31.219
at defining what it actually does and if that's what
795
00:41:31.260 --> 00:41:32.059
we really wanted to do.
796
00:41:32.199 --> 00:41:37.199
And then if you could take that, those behavior-driven tests,
797
00:41:37.880 --> 00:41:43.250
now you can also use that to drive the controlled
798
00:41:43.289 --> 00:41:46.769
natural language because you're expressing the behaviors that you're looking for.
799
00:41:47.329 --> 00:41:47.650
And so.
800
00:41:48.800 --> 00:41:54.360
Besides Limelight X, I have a project called VectorRen, V-E-C-T-O-R,
801
00:41:55.400 --> 00:42:01.460
my SVG days, Ren, R-E-N, so two R's. And it
802
00:42:01.590 --> 00:42:06.929
was built with that in mind to show developers how
803
00:42:06.989 --> 00:42:12.250
to build an SVG game, a web-based with JavaScript, with
804
00:42:12.449 --> 00:42:16.469
generic JavaScript, no framework. And so what was the, you
805
00:42:16.489 --> 00:42:19.440
guys remember, what the big game was when we were
806
00:42:19.460 --> 00:42:22.099
trying to do demo SVG back in the day, it
807
00:42:22.119 --> 00:42:23.599
was asteroids. Right.
808
00:42:24.119 --> 00:42:25.590
Oh yeah. So that's right.
809
00:42:25.829 --> 00:42:31.050
There is in half an hour using this methodology, I
810
00:42:31.090 --> 00:42:34.130
describe what the game should do and given one then,
811
00:42:34.150 --> 00:42:40.000
and it generated a simple implementation of asteroids. And you
812
00:42:40.039 --> 00:42:44.239
can go to vector ren.org or go to vector ren, uh,
813
00:42:44.500 --> 00:42:46.989
the GitHub page, uh, out there and you can pull
814
00:42:47.030 --> 00:42:49.949
it down. And it's a very simple way to learn
815
00:42:49.989 --> 00:42:53.909
JavaScript from this point of view, without any of the frameworks,
816
00:42:55.030 --> 00:42:58.800
something simple that, that, that people can actually leverage, uh,
817
00:42:58.940 --> 00:43:03.880
because we have this generation of developers who don't have
818
00:43:03.920 --> 00:43:05.599
the traditional comp side background.
819
00:43:05.619 --> 00:43:05.780
Right.
820
00:43:05.960 --> 00:43:06.179
Yeah.
821
00:43:06.460 --> 00:43:10.159
I'm just thinking about, we're revising this. We've been playing
822
00:43:10.179 --> 00:43:12.510
with what the software development life cycle with these tools
823
00:43:12.570 --> 00:43:16.550
is supposed to look like. And, and I'll, I think
824
00:43:16.570 --> 00:43:19.269
there's a lot more energy put into the context up
825
00:43:19.349 --> 00:43:22.929
front just because the tools will generate lots and lots
826
00:43:22.969 --> 00:43:24.809
of code. It's just most of it is not that
827
00:43:24.849 --> 00:43:27.380
good if you haven't really done a good job of
828
00:43:27.510 --> 00:43:28.820
setting up these constraints.
829
00:43:30.019 --> 00:43:33.500
I've been doing a lot of stuff with AI here
830
00:43:33.519 --> 00:43:37.280
in Central Pennsylvania. One of the interesting feedback I'm getting
831
00:43:37.340 --> 00:43:41.539
from non-traditional developers is we don't care.
832
00:43:42.539 --> 00:43:43.619
Yeah.
833
00:43:44.139 --> 00:43:45.920
It gets the job done, and that's all.
834
00:43:45.840 --> 00:43:46.219
I care about.
835
00:43:46.239 --> 00:43:47.699
You're going to care.
836
00:43:50.960 --> 00:43:54.239
I hit up one of the folks I was talking about.
837
00:43:54.280 --> 00:43:59.690
I was talking about, hey, you're just creating dynamic scripts.
838
00:43:59.710 --> 00:44:06.670
This feels a lot like what JavaScript felt like before jQuery,
839
00:44:06.730 --> 00:44:10.949
before we got V8, before we got TypeScript. We're sending around.
840
00:44:10.969 --> 00:44:13.900
Yeah, before we put constraints around for reliability.
841
00:44:14.400 --> 00:44:20.179
And consistency. So, and I was like, you know, from
842
00:44:20.219 --> 00:44:25.570
a tokenomics point of view, every time you send that text,
843
00:44:26.250 --> 00:44:28.550
you're getting charged for it. Yeah. And so there's a
844
00:44:28.610 --> 00:44:31.860
cost because I don't care. It's cheaper for me to
845
00:44:31.929 --> 00:44:34.409
do that than to spend the time to actually write
846
00:44:35.429 --> 00:44:36.250
the compiled code.
847
00:44:36.269 --> 00:44:39.550
For now, anyway, the costs are going up. But often
848
00:44:39.630 --> 00:44:42.050
the folks don't care because they don't know the consequences.
849
00:44:42.329 --> 00:44:44.030
They don't know good engineering principles.
850
00:44:44.469 --> 00:44:47.090
Yeah, they don't know how the software will bite them later.
851
00:44:47.369 --> 00:44:48.670
It's generally what works right now.
852
00:44:48.769 --> 00:44:50.809
And what I'm seeing is a lot of the vibe
853
00:44:50.869 --> 00:44:54.070
coders realizing that they can only go so far of
854
00:44:54.130 --> 00:44:56.730
vibe coding, and then they start going to coding assistants,
855
00:44:57.670 --> 00:45:00.570
but then they don't know how to create these good
856
00:45:00.639 --> 00:45:03.719
engineering principles. And so I think there's a big market
857
00:45:03.860 --> 00:45:04.460
for that.
858
00:45:04.860 --> 00:45:07.219
So the AKA they're starting to care.
859
00:45:07.760 --> 00:45:11.670
And it makes me sad because as a VB guy,
860
00:45:12.190 --> 00:45:14.670
old school VB guy, isn't that what the C plus
861
00:45:14.710 --> 00:45:16.469
plus people complained about us about?
862
00:45:17.150 --> 00:45:17.409
Yep.
863
00:45:17.449 --> 00:45:18.800
Yeah, we weren't real developers.
864
00:45:19.400 --> 00:45:22.480
Well, Yeah, and again, the argument was, is the software
865
00:45:22.530 --> 00:45:24.989
quality sufficient? And let's face it, we built a lot
866
00:45:25.010 --> 00:45:27.469
of bad quality software, and then we learned, hey, software
867
00:45:27.510 --> 00:45:30.429
quality matters. And you could do it with VB, you
868
00:45:30.449 --> 00:45:32.210
just had to follow some good practices.
869
00:45:32.349 --> 00:45:35.969
I think a lot of that nose turning down at
870
00:45:36.409 --> 00:45:40.599
VB developers was a byproduct of what happened between C
871
00:45:41.440 --> 00:45:46.800
developers and basic developers in the very early days of programming.
872
00:45:48.179 --> 00:45:52.500
Basic with go-tos was looked at as horrible. I was
873
00:45:52.599 --> 00:45:57.380
using Visual Basic and then attending a community college and
874
00:45:57.420 --> 00:46:00.920
the computer science lady, I told her that I was
875
00:46:01.239 --> 00:46:03.480
using Visual Basic. She goes, oh, basic. Oh, you can't
876
00:46:03.519 --> 00:46:04.119
say basic.
877
00:46:04.530 --> 00:46:05.849
No go-tos, no go-tos.
878
00:46:05.909 --> 00:46:09.030
I'm like, no, it's completely changed now. You know, it's
879
00:46:09.110 --> 00:46:11.590
come into its own and they still just, you know,
880
00:46:12.210 --> 00:46:14.929
you get an idea in your mind and it's hard
881
00:46:14.969 --> 00:46:15.349
to shake.
882
00:46:15.630 --> 00:46:18.519
And I don't want to be that Get off my
883
00:46:18.579 --> 00:46:20.659
lawn guy. Yeah, right. And I don't want to be
884
00:46:21.300 --> 00:46:21.900
that old guy.
885
00:46:21.920 --> 00:46:22.300
Nobody does.
886
00:46:22.320 --> 00:46:26.920
I've got the gray hair, fine. But I don't want
887
00:46:26.940 --> 00:46:31.920
to be that guy. Same thing with coding assistants. What
888
00:46:31.940 --> 00:46:34.489
I've been talking about to a lot of folks is
889
00:46:34.860 --> 00:46:39.909
coding assistants is the new IDE. I remember back when
890
00:46:40.030 --> 00:46:43.170
we were talking, you know, Vim was it. You didn't
891
00:46:43.329 --> 00:46:44.030
use Studio.
892
00:46:44.489 --> 00:46:44.730
Right.
893
00:46:44.929 --> 00:46:48.489
IntelliSense. Coding is novel. You had to know it and
894
00:46:48.530 --> 00:46:51.530
remember it in your head and use a text editor.
895
00:46:51.989 --> 00:46:53.769
Real developers use text editors.
896
00:46:54.090 --> 00:46:56.010
I think it took Don Box a long time to
897
00:46:56.050 --> 00:46:58.030
come to grips with the fact that people are going
898
00:46:58.050 --> 00:47:00.500
to use IDEs, not them.
899
00:47:01.599 --> 00:47:03.920
It would be interesting to get his opinion on coding.
900
00:47:03.940 --> 00:47:09.820
You see those positions all over the place. I think
901
00:47:09.840 --> 00:47:11.400
you're making a mistake as soon as you're bound to
902
00:47:11.440 --> 00:47:14.159
a tool. In the end, the goal was to deliver
903
00:47:14.199 --> 00:47:15.059
value to customers.
904
00:47:15.869 --> 00:47:19.469
And then there's this whole, and this ties into Run
905
00:47:19.510 --> 00:47:23.769
As Radio, then there's this whole angle from the IT
906
00:47:23.829 --> 00:47:28.909
admin side of the house where IT admins were doing automation,
907
00:47:28.969 --> 00:47:32.510
but they were doing it via a GUI tool because
908
00:47:33.230 --> 00:47:34.909
IT admins didn't write code.
909
00:47:35.409 --> 00:47:35.610
Right.
910
00:47:35.750 --> 00:47:37.369
That was for the developer world.
911
00:47:37.610 --> 00:47:38.190
Right.
912
00:47:38.710 --> 00:47:40.969
In my day job, what I'm starting to see is
913
00:47:41.190 --> 00:47:46.230
more and more IT admins admins leveraging coding assistance to
914
00:47:46.409 --> 00:47:51.170
actually create better code than they could ever written because
915
00:47:51.449 --> 00:47:54.409
all they ever wrote scripts. This is much better code
916
00:47:55.739 --> 00:47:58.400
and it's making their lives a heck of a lot easier.
917
00:47:58.679 --> 00:48:02.519
So that's just, I mean, that's an unintended consequence, but
918
00:48:02.760 --> 00:48:06.260
it's helping, especially in these days when so many companies,
919
00:48:06.380 --> 00:48:10.760
so many on-prem companies who are using VMware and now
920
00:48:11.010 --> 00:48:13.230
they're kind of A little bit of a backlash. They're
921
00:48:13.269 --> 00:48:16.449
all trying to move off, and now they're more open
922
00:48:16.510 --> 00:48:19.269
to how do I do this automation rather than using
923
00:48:19.329 --> 00:48:19.690
a tool.
924
00:48:20.269 --> 00:48:22.909
One quick correction. I think I misspoke. When I was
925
00:48:23.090 --> 00:48:26.670
in a community college, it wasn't VB. It was Quick Basic.
926
00:48:27.150 --> 00:48:31.570
Quick Basic. Quick Basic was compiled, and it was structured,
927
00:48:31.659 --> 00:48:35.480
and it was great back then. And this computer science
928
00:48:35.539 --> 00:48:36.780
person was like, no go-tos.
929
00:48:37.699 --> 00:48:38.019
Don't say it.
930
00:48:39.579 --> 00:48:41.460
Well, and it's the thing, there's nothing wrong with the language.
931
00:48:41.519 --> 00:48:43.320
It just had a construct that was a problem. Hey,
932
00:48:43.360 --> 00:48:46.369
remember option explicit? Like we did learn.
933
00:48:46.989 --> 00:48:47.349
Sure.
934
00:48:48.849 --> 00:48:50.050
On error, resume next.
935
00:48:50.510 --> 00:48:51.809
Yeah.
936
00:48:53.190 --> 00:48:54.190
I don't have any bugs.
937
00:48:55.030 --> 00:48:55.449
What?
938
00:48:55.969 --> 00:48:56.250
Yeah.
939
00:48:56.269 --> 00:48:58.429
So one of the things that I've been starting to
940
00:48:58.550 --> 00:49:02.579
work with is how do I start creating skills to
941
00:49:02.619 --> 00:49:07.420
be able to help teach these non-developers these good habits?
942
00:49:07.460 --> 00:49:10.219
So like one of the things, That's in a beta
943
00:49:10.260 --> 00:49:15.869
right now is a requirements interrogator skill. So help the
944
00:49:15.969 --> 00:49:20.099
average person create that given when then brief so that
945
00:49:20.139 --> 00:49:24.500
they get better requirements when they're trying to build something.
946
00:49:24.760 --> 00:49:25.960
Yeah, you have to wonder if we're not going to
947
00:49:26.039 --> 00:49:28.570
end up with more opinionated agents that are like, I
948
00:49:29.010 --> 00:49:32.389
can't start building this until I have these broader requirements
949
00:49:32.429 --> 00:49:35.389
settled around those kinds of constraints that are going to
950
00:49:35.409 --> 00:49:39.280
matter for security and architecture and reliability and scalability. all
951
00:49:39.300 --> 00:49:42.099
of the abilities that everyone doesn't care about until they
952
00:49:42.139 --> 00:49:42.860
care about them.
953
00:49:43.260 --> 00:49:43.440
Yeah.
954
00:49:44.139 --> 00:49:46.300
One of them I'm playing with right now is, is
955
00:49:46.440 --> 00:49:49.679
creating a skill to create architectural decision records.
956
00:49:50.199 --> 00:49:50.400
Right.
957
00:49:50.699 --> 00:49:54.519
We've never, I mean, we all always wanted to have them,
958
00:49:55.159 --> 00:49:58.739
but now if I'm using a coding assistant, that helps
959
00:49:58.820 --> 00:50:02.019
make my coding system better. It tells the architecture and
960
00:50:02.059 --> 00:50:04.579
the reasons why we picked certain things.
961
00:50:05.909 --> 00:50:06.110
Yeah.
962
00:50:07.409 --> 00:50:07.550
Yeah.
963
00:50:07.949 --> 00:50:10.730
There's lots to all of that. I mean, again, I
964
00:50:10.750 --> 00:50:12.889
feel like we're just groping around right now trying to
965
00:50:12.929 --> 00:50:13.429
figure out.
966
00:50:13.650 --> 00:50:14.909
It's early days.
967
00:50:15.590 --> 00:50:19.010
What are the, yeah, the tools are shifting. Just remember,
968
00:50:19.030 --> 00:50:21.210
we were trying to develop on. NET in the early
969
00:50:21.250 --> 00:50:24.889
days where every time they got a build out, the
970
00:50:25.110 --> 00:50:28.300
editor changed, the framework had changed, and the language had changed.
971
00:50:28.960 --> 00:50:32.500
Everything you're doing, incorrect. Yeah.
972
00:50:32.579 --> 00:50:34.519
I was part of that early days. I don't even
973
00:50:34.579 --> 00:50:36.780
remember if I ever mentioned it to you guys, but
974
00:50:36.940 --> 00:50:44.500
the framework The client that I had back in 99, 2000,
975
00:50:44.500 --> 00:50:51.429
their president was on the board for Microsoft, and I
976
00:50:51.469 --> 00:50:54.670
was building dashboards for him, and I got introduced to
977
00:50:54.710 --> 00:50:55.809
Project Cool.
978
00:50:55.530 --> 00:50:57.969
Before it was announced. Before it became C Sharp?
979
00:50:57.989 --> 00:50:59.269
Yeah, before 2000, the announcement at PDC 2000.
980
00:50:59.250 --> 00:50:59.369
Yeah.
981
00:51:04.820 --> 00:51:06.179
I think it was actually TechEd, but yeah.
982
00:51:06.219 --> 00:51:06.539
TechEd.
983
00:51:06.719 --> 00:51:08.519
Yeah, it was TechEd. That's where I'm at.
984
00:51:08.739 --> 00:51:12.219
But yeah, but I'm also thinking about the craziness that was.
985
00:51:12.420 --> 00:51:18.179
NET Core in, you know, 2018 or 2016. Because it
986
00:51:18.199 --> 00:51:20.010
took them 18 months to get that first version built
987
00:51:20.050 --> 00:51:22.530
and there were so many previews. And every time you
988
00:51:22.550 --> 00:51:25.010
got a preview, everything shuffled on you. And it just
989
00:51:25.030 --> 00:51:28.590
seems an awful lot like trying to work with Anthropica
990
00:51:28.610 --> 00:51:30.730
or OpenAI or any of these tools right now, where
991
00:51:30.829 --> 00:51:33.500
every time you get A new build, new harness, like
992
00:51:33.559 --> 00:51:37.739
there's so many different components that presuming it works the
993
00:51:37.780 --> 00:51:40.690
same way is crazy. It changes. It changes a lot.
994
00:51:40.869 --> 00:51:43.570
And just like with. NET Core, Richard, I think that
995
00:51:43.590 --> 00:51:47.170
there's still a lot of people not dipping their toes
996
00:51:47.250 --> 00:51:51.170
into AI developer-wise for the very same reason.
997
00:51:52.050 --> 00:51:56.110
So have you guys had anybody on for Microsoft Foundry Local?
998
00:51:56.469 --> 00:51:56.840
Not yet.
999
00:51:57.050 --> 00:51:58.519
Not yet. No, it's on my radar.
1000
00:51:59.199 --> 00:52:02.519
I've been intimate with that. So that's part of what
1001
00:52:02.820 --> 00:52:07.639
the bounded context. Part of what I realized is to
1002
00:52:07.960 --> 00:52:12.010
use these smaller models, you had to be very prescriptive
1003
00:52:12.050 --> 00:52:13.329
in the prompts that you were giving.
1004
00:52:13.530 --> 00:52:13.989
Right, right.
1005
00:52:14.030 --> 00:52:16.349
And when I started writing the code, I didn't want
1006
00:52:16.369 --> 00:52:22.070
to put that code as text into my program. I
1007
00:52:22.110 --> 00:52:24.829
wanted to pull it out. And so I created a
1008
00:52:25.880 --> 00:52:30.719
YAML language that did essentially prompt as a function so
1009
00:52:30.760 --> 00:52:33.199
that you could import it in and create it. And
1010
00:52:33.219 --> 00:52:37.619
there's a couple different prompt as a function frameworks out there.
1011
00:52:39.239 --> 00:52:50.130
BAML is one and DPSY, another where it makes it
1012
00:52:50.269 --> 00:52:54.360
easy to put prompts into your programming languages. The Dipsy
1013
00:52:54.400 --> 00:53:01.969
is Python only. BAML is TypeScript and Python. And so
1014
00:53:02.710 --> 00:53:05.289
I built a framework to be able to do that
1015
00:53:05.849 --> 00:53:07.969
because I was trying to run local models. I was
1016
00:53:08.070 --> 00:53:11.780
running local models on what I'm using now, Copilot Plus PC.
1017
00:53:13.699 --> 00:53:17.159
The Copilot Plus PCs were supposed to be the place
1018
00:53:17.199 --> 00:53:19.400
to be able to run these models. It's just not.
1019
00:53:20.010 --> 00:53:21.829
Not as good as it could have been.
1020
00:53:21.849 --> 00:53:26.030
At 40 tops, that's not a lot. Meantime, I'm looking
1021
00:53:26.070 --> 00:53:29.940
at my RTX 5080 at 1,500 tops and saying, why
1022
00:53:30.000 --> 00:53:32.239
aren't I a co-pilot PC?
1023
00:53:32.420 --> 00:53:36.019
So I am super excited for the new RTX Spark laptops.
1024
00:53:36.519 --> 00:53:38.480
I'll be the first to go buy one of them
1025
00:53:38.980 --> 00:53:39.760
when they come out.
1026
00:53:40.360 --> 00:53:42.760
They're actually going to be a laptop, because right now
1027
00:53:42.800 --> 00:53:44.050
it's a NUC.
1028
00:53:44.679 --> 00:53:48.219
Well, the big difference is the DGX Spark, Right. That's
1029
00:53:48.239 --> 00:53:51.820
the one you're thinking is the RTX Spark. Two separate things.
1030
00:53:52.239 --> 00:53:54.840
The DGX is Linux.
1031
00:53:55.219 --> 00:53:55.440
Right.
1032
00:53:55.480 --> 00:53:59.210
The RTX laptop, which is, that was, it was a nook.
1033
00:53:59.969 --> 00:54:03.650
The RTX is a laptop. It is going to run
1034
00:54:03.690 --> 00:54:04.989
Windows on ARM.
1035
00:54:05.329 --> 00:54:05.530
Right.
1036
00:54:05.590 --> 00:54:07.570
So it's, you could think of it as the Uber
1037
00:54:07.989 --> 00:54:09.090
Co-Pilot Plus piece.
1038
00:54:09.429 --> 00:54:12.150
Possibly, yeah. It'll be interesting. It's one of the things
1039
00:54:12.210 --> 00:54:14.230
I've seen over and over again with the DGX Spark,
1040
00:54:14.250 --> 00:54:17.269
but folks are actually using it is, You end up
1041
00:54:17.309 --> 00:54:22.750
running NVIDIA's models because they're so much better optimized for
1042
00:54:22.849 --> 00:54:27.219
their hardware that you just get vastly better responses or results.
1043
00:54:28.099 --> 00:54:32.559
So it's not a universal anything. Where is our ODBC
1044
00:54:34.360 --> 00:54:37.260
so that you really have some equanimity across all of
1045
00:54:37.340 --> 00:54:40.269
these different products? and can really see what all the
1046
00:54:40.389 --> 00:54:42.690
different hardware solutions can be there. I hate that we're
1047
00:54:42.710 --> 00:54:45.519
building dedicated to hardware solutions, but I get it.
1048
00:54:45.699 --> 00:54:49.679
Part of why I created that prompt as a function
1049
00:54:50.059 --> 00:54:53.440
to make it portable, to describe what's the model, what's the,
1050
00:54:54.380 --> 00:54:58.559
am I using VLR? Am I using Foundry Local? What's
1051
00:54:58.599 --> 00:55:01.820
the model? So I can abstract that away so you
1052
00:55:01.840 --> 00:55:03.619
don't have to worry about it and be able to
1053
00:55:03.989 --> 00:55:05.949
switch it in and out. And so I've got a
1054
00:55:06.170 --> 00:55:10.679
framework for that and I'm, I hit my limit with
1055
00:55:10.699 --> 00:55:13.579
the Copilot Plus PC and I'm waiting for these new
1056
00:55:13.679 --> 00:55:17.099
ones to come out. But that's a whole different conversation
1057
00:55:17.119 --> 00:55:20.139
because there's so many people, so many clients and customers
1058
00:55:20.179 --> 00:55:22.610
I talk to that can't use public models.
1059
00:55:22.690 --> 00:55:23.190
Right, right.
1060
00:55:23.389 --> 00:55:25.250
There's whole classes of work that are just not an
1061
00:55:25.349 --> 00:55:27.570
option to be going, leaving your machine in any way.
1062
00:55:28.110 --> 00:55:31.969
Combined with tokens are only getting more expensive and all
1063
00:55:31.989 --> 00:55:36.230
you can eat is disappearing and The methodologies we've been
1064
00:55:36.369 --> 00:55:39.269
using with the sort of adversarial agent model are just
1065
00:55:39.489 --> 00:55:40.389
mo tokens.
1066
00:55:40.809 --> 00:55:45.869
And smaller models hallucinate less. Right.
1067
00:55:45.989 --> 00:55:47.809
They are more bound.
1068
00:55:47.989 --> 00:55:51.469
And then you bound it by a language, a constrained language,
1069
00:55:51.530 --> 00:55:54.909
a controlled language, and you can reduce it even worse.
1070
00:55:55.090 --> 00:55:59.860
That's kind of where I'm going with this. Still early days.
1071
00:56:00.809 --> 00:56:03.789
I do a lot of Foundry local type stuff, running
1072
00:56:03.929 --> 00:56:09.489
to issues, report bugs. There's a whole Viber community. Folks
1073
00:56:09.510 --> 00:56:12.909
who are interested in getting into dipping their toe in
1074
00:56:12.989 --> 00:56:17.469
how do I inject AI LLMs, highly recommend checking it out.
1075
00:56:17.840 --> 00:56:21.079
It's an easy install. And there's a command line tool
1076
00:56:21.119 --> 00:56:23.000
that you can use just to get started to have
1077
00:56:23.019 --> 00:56:25.989
a chat. Have some fun. And then they've got some
1078
00:56:26.030 --> 00:56:28.860
great SDKs, whatever language you want to use from.
1079
00:56:29.030 --> 00:56:29.840
NET to Rust.
1080
00:56:30.719 --> 00:56:31.340
It's out there.
1081
00:56:31.590 --> 00:56:32.690
I highly recommend it.
1082
00:56:32.920 --> 00:56:34.179
This is good stuff, Don.
1083
00:56:34.679 --> 00:56:35.059
Excellent.
1084
00:56:35.139 --> 00:56:36.460
And it got me thinking.
1085
00:56:36.519 --> 00:56:40.599
Yeah, definitely got us thinking. Where can we find you
1086
00:56:40.719 --> 00:56:42.059
online besides your Substack?
1087
00:56:42.860 --> 00:56:49.719
My Substack and LinkedIn. I do both. LinkedIn, it's marketing
1088
00:56:50.059 --> 00:56:54.949
hell right now. People are all complaining. Um, it's not
1089
00:56:54.989 --> 00:56:59.230
where the developers are. Right. And Substack, I tried Reddit.
1090
00:56:59.769 --> 00:57:06.510
I tried, uh, various Discord servers. Um, my local Lancaster
1091
00:57:06.550 --> 00:57:09.670
folks have a great Slack team. So I'm there, Tech Lancaster.
1092
00:57:10.369 --> 00:57:15.360
Those folks are awesome. But Substack feels like the blogging
1093
00:57:15.420 --> 00:57:18.880
from the old days. It's, it's, it's a good community there.
1094
00:57:18.940 --> 00:57:21.199
So in the Lancaster area, do you find that there
1095
00:57:21.239 --> 00:57:22.559
are many Amish developers there?
1096
00:57:23.539 --> 00:57:26.260
There are some that you'd be surprised.
1097
00:57:26.480 --> 00:57:26.820
Wow.
1098
00:57:26.840 --> 00:57:30.739
You'd be surprised. And I wrote up a whole article on,
1099
00:57:31.219 --> 00:57:34.760
because I'm new to the area, Lancaster feels to me
1100
00:57:34.960 --> 00:57:40.889
like Portland, Oregon 20 years ago. They like that weird,
1101
00:57:41.389 --> 00:57:42.829
let's be weird attitude.
1102
00:57:42.849 --> 00:57:43.389
Right.
1103
00:57:43.489 --> 00:57:47.170
They like the back to nature, had the farming, all
1104
00:57:47.210 --> 00:57:48.130
that sort of stuff.
1105
00:57:48.530 --> 00:57:48.710
Yeah.
1106
00:57:48.730 --> 00:57:49.030
But.
1107
00:57:49.360 --> 00:57:52.679
They also like the tech side and there's two massive
1108
00:57:52.719 --> 00:57:56.179
data centers coming in. Coral Reeve is the big AI
1109
00:57:56.920 --> 00:57:59.519
company is putting a big data center and Google's putting
1110
00:57:59.579 --> 00:58:01.739
a big data center in there. So there's a lot
1111
00:58:01.820 --> 00:58:07.239
of innovation going on in that Amish community. It's an
1112
00:58:07.300 --> 00:58:08.510
interesting time.
1113
00:58:08.889 --> 00:58:09.250
Yeah.
1114
00:58:09.349 --> 00:58:12.070
Most people don't think of it that way, but land
1115
00:58:12.130 --> 00:58:14.269
is a heck of a lot cheaper. They can't build
1116
00:58:14.329 --> 00:58:18.159
any more data centers in, um, Northern Virginia. So they're
1117
00:58:18.199 --> 00:58:21.460
moving north into central PA and south into Richmond.
1118
00:58:21.679 --> 00:58:22.099
Okay.
1119
00:58:23.039 --> 00:58:25.590
Well, you have to keep us apprised. And when you
1120
00:58:25.909 --> 00:58:31.449
trade your first AI training for a shoe fly pie,
1121
00:58:31.510 --> 00:58:38.349
let me know. All right, Don, thanks very much.
1122
00:58:38.409 --> 00:58:39.650
Good to catch up with you again.
1123
00:58:39.949 --> 00:58:41.530
Good to catch up. And let's not make it in
1124
00:58:41.550 --> 00:58:42.309
another 20 years.
1125
00:58:42.530 --> 00:58:46.750
Definitely. And we'll talk to you, dear listener, next time on.
1126
00:58:46.679 --> 00:58:47.420
NET Rocks.
1127
00:59:08.389 --> 00:59:09.969
NET Rocks is brought to you by Frankenstein.
1128
00:59:10.409 --> 00:59:14.920
Net and produced by Plop Studios, a full-service audio, video,
1129
00:59:14.960 --> 00:59:18.280
and post-production facility located physically.
1130
00:59:17.820 --> 00:59:20.559
In New London, Connecticut, and, of course, in the cloud.
1131
00:59:21.260 --> 00:59:23.559
Online at pwop.com.
1132
00:59:24.280 --> 00:59:32.179
Visit our website at dotnetrocks.com for RSS feeds, downloads, mobile apps, comments,
1133
00:59:32.619 --> 00:59:35.079
and access to the full archives going back to show
1134
00:59:35.119 --> 00:59:39.440
number one, recorded in September 2002. And make sure you
1135
00:59:39.480 --> 00:59:42.659
check out our sponsors. They keep us in business. Now
1136
00:59:42.679 --> 00:59:43.519
go write some code.
1137
00:59:44.219 --> 00:59:44.860
See you next time.