1
00:00:00,040 --> 00:00:02,080
I can't answer the phone, I have
to answer the phone like this. 

2
00:00:02,080 --> 00:00:04,240
Hello, 'cause people stop 
yelling at me. 

3
00:00:05,040 --> 00:00:08,720
Welcome, welcome, welcome to the
Embedded AI podcast. 

4
00:00:08,880 --> 00:00:11,160
I am one of your hosts, Ryan 
Torvik. 

5
00:00:11,680 --> 00:00:15,280
And I'm Luke Anjani. 
And we are here, this podcast is

6
00:00:15,280 --> 00:00:18,600
about kind of talking about how 
embedded systems are developed 

7
00:00:18,600 --> 00:00:21,880
and how medicine was made and 
used and their overlap with AI. 

8
00:00:21,880 --> 00:00:23,520
So it's a pretty wide-ranging 
podcast. 

9
00:00:23,520 --> 00:00:26,120
We cover a lot of things and we 
really want to want to help you 

10
00:00:26,120 --> 00:00:29,320
listeners not make the same 
mistakes that we've made and 

11
00:00:29,320 --> 00:00:31,360
kind of like learn from all the 
things that have already 

12
00:00:31,360 --> 00:00:33,040
happened. 
So you don't have to go and 

13
00:00:33,040 --> 00:00:35,800
spend all this time like, oh, 
well, that didn't work. 

14
00:00:35,800 --> 00:00:37,160
Well, that didn't work. 
Well, that didn't work. 

15
00:00:37,200 --> 00:00:38,720
Yeah, yeah, yeah. 
We'll, we'll, we'll help you 

16
00:00:38,720 --> 00:00:39,920
around. 
We'll kind of lay out some of 

17
00:00:39,920 --> 00:00:41,120
these things. 
Like don't do this. 

18
00:00:41,120 --> 00:00:44,040
It was dumb. 
It took me like 3-3 weeks of and

19
00:00:44,280 --> 00:00:46,400
I regret doing it, but I can 
tell you about it now. 

20
00:00:46,400 --> 00:00:47,840
So. 
So that's what we're here to do.

21
00:00:47,840 --> 00:00:52,520
And we're a real podcast with 
real people, not just reading 

22
00:00:52,520 --> 00:00:54,880
some AI developed script with a 
bunch of talking heads. 

23
00:00:54,880 --> 00:00:57,440
We're real people in the real 
world. 

24
00:00:57,960 --> 00:01:03,760
Welcome to the real world. 
And today we're joined by I. 

25
00:01:04,120 --> 00:01:05,880
I would say he doesn't need an 
introduction, but I'm going to 

26
00:01:05,880 --> 00:01:09,360
give him one anyways. 
We're joined by Darwin Sinoy, 

27
00:01:09,520 --> 00:01:12,600
who is currently at GitLab. 
But I'll tell you what he's, 

28
00:01:12,600 --> 00:01:15,840
he's like caught like he's, 
there's so much information that

29
00:01:15,840 --> 00:01:19,120
you that like if you start him 
going like he's just all this 

30
00:01:19,120 --> 00:01:21,680
information that comes out. 
It's a a huge career. 

31
00:01:21,960 --> 00:01:26,200
ISO 26262 certified MIT systems 
architecture or complex physical

32
00:01:26,200 --> 00:01:29,280
system and COAST member. 
He's been at at GitLab for a 

33
00:01:29,280 --> 00:01:32,800
number of years. 
He is really pushing for 

34
00:01:32,880 --> 00:01:35,800
modernizing the development 
process for embedded developers 

35
00:01:35,880 --> 00:01:38,160
through GitLab. 
And it's just pleasure to have 

36
00:01:38,160 --> 00:01:39,720
you on the show, Sir. 
Thank you. 

37
00:01:42,240 --> 00:01:43,680
And we're gonna try to focus 
today. 

38
00:01:43,680 --> 00:01:45,960
And it's tough because I'll tell
you, Darwin has so much 

39
00:01:45,960 --> 00:01:47,640
information that overlaps all 
this other stuff. 

40
00:01:47,640 --> 00:01:49,720
But we're gonna try to focus. 
We're gonna try to hold in there

41
00:01:50,120 --> 00:01:53,000
because there are at least six 
or seven topics that we brought 

42
00:01:53,000 --> 00:01:55,360
up before we even started 
recording that we could just 

43
00:01:55,480 --> 00:01:57,680
just spend an entire hour on. 
So we're gonna try to focus 

44
00:01:57,680 --> 00:01:59,120
today. 
We're gonna talk about systems 

45
00:01:59,120 --> 00:02:00,520
engineering and embedded 
systems. 

46
00:02:01,280 --> 00:02:03,600
So what are some of the 
problems? 

47
00:02:04,160 --> 00:02:06,040
Kind of layout, Darwin forest 
layout. 

48
00:02:06,040 --> 00:02:08,400
Kind of like what are some of 
the problems with systems 

49
00:02:08,400 --> 00:02:10,919
engineering in general when it 
comes to to embedded systems? 

50
00:02:11,480 --> 00:02:14,480
Yeah, yeah. 
When I started diving into this 

51
00:02:14,480 --> 00:02:18,680
area really deeply, there is 
sort of a, a hubris in, in the 

52
00:02:18,680 --> 00:02:22,360
industry that, oh, embedded 
systems is behind on Agile and 

53
00:02:22,360 --> 00:02:24,560
DevOps. 
And it's because they're just 

54
00:02:24,840 --> 00:02:27,440
kind of stuffy and they don't 
want to get going and they, you 

55
00:02:27,440 --> 00:02:30,800
know, they got old processes. 
But I was, I had to ask myself 

56
00:02:30,800 --> 00:02:34,880
the question, what if there's 
valid business level differences

57
00:02:34,880 --> 00:02:39,760
between how embedded software is
done and how soft regular 

58
00:02:39,760 --> 00:02:41,880
software, so to speak, or SAS is
done. 

59
00:02:42,320 --> 00:02:45,320
And essentially, I've been able 
to boil it down to one, a four 

60
00:02:45,320 --> 00:02:49,480
ISM that software, as it's 
talked about in the Lean startup

61
00:02:49,600 --> 00:02:53,480
and an agile and in DevOps and 
in all the folklore is 

62
00:02:53,480 --> 00:02:57,320
essentially limited to when 
software is the whole product. 

63
00:02:57,680 --> 00:03:00,000
So if you look at the lean 
startup, when you ship software,

64
00:03:00,000 --> 00:03:02,800
you've shipped product and as 
soon as you get into embedded 

65
00:03:02,800 --> 00:03:06,040
systems, by definition, the 
software is embedded into a 

66
00:03:06,040 --> 00:03:09,160
physical product. 
And so basically, software is 

67
00:03:09,160 --> 00:03:11,280
always a part number. 
It could be a critical part 

68
00:03:11,280 --> 00:03:14,360
number when when the software is
playing a critical role, but 

69
00:03:14,360 --> 00:03:18,240
it's still not the whole system.
And I think that one from a sort

70
00:03:18,240 --> 00:03:20,640
of an outsider's perspective, 
coming in and and coming up with

71
00:03:20,640 --> 00:03:23,560
that concept to try to bridge 
these worlds where people have 

72
00:03:23,560 --> 00:03:26,960
been working with and selling to
software is the whole product 

73
00:03:27,360 --> 00:03:29,720
communities and where that's 
been kind of the vent. 

74
00:03:29,720 --> 00:03:33,240
And it's the poster child of 
Agile and DevOps. 

75
00:03:33,560 --> 00:03:36,760
In the world where software is 
not the whole product, there's 

76
00:03:36,760 --> 00:03:40,160
some key differentiators and 
systems engineering is a big 

77
00:03:40,160 --> 00:03:41,920
part of that. 
You make something really 

78
00:03:41,920 --> 00:03:44,560
complicated like a physical 
satellite that's going to go out

79
00:03:44,560 --> 00:03:47,400
in space and experience all 
kinds of different temperatures 

80
00:03:47,400 --> 00:03:49,160
and everything. 
There's a whole level of 

81
00:03:49,160 --> 00:03:52,440
engineering of the physicality 
of that product that is not 

82
00:03:52,440 --> 00:03:55,560
present when we put together a 
piece of cloud software. 

83
00:03:55,840 --> 00:03:58,600
And so the pressure that that 
puts into the embedded cycle, 

84
00:03:58,960 --> 00:04:02,240
embedded software development 
life cycle is very interesting. 

85
00:04:02,800 --> 00:04:05,120
And so that's a big part of it. 
The other part of it is a 

86
00:04:05,120 --> 00:04:07,640
massive supplier ecosystem of 
manufacturing. 

87
00:04:07,640 --> 00:04:12,680
So hardly any complex composite 
product is made all by the same 

88
00:04:12,680 --> 00:04:14,680
company. 
Now when it is, you get 

89
00:04:14,680 --> 00:04:17,440
advantages of of vertical 
integration. 

90
00:04:17,440 --> 00:04:21,800
But many products are subsystems
of purchased systems and they 

91
00:04:21,800 --> 00:04:23,880
have software in them. 
So you always have this 

92
00:04:23,880 --> 00:04:27,200
integration challenge that's 
substantial at the software 

93
00:04:27,200 --> 00:04:29,120
level. 
And you have purposeful 

94
00:04:29,560 --> 00:04:33,000
separation of systems into 
subsystems so that there can be 

95
00:04:33,000 --> 00:04:36,320
an ecosystem of subsystems as 
well as even if you're working 

96
00:04:36,320 --> 00:04:38,680
in the same company. 
So that those teams can move at 

97
00:04:38,680 --> 00:04:42,200
speed at within their subsystem.
And just make sure they have 

98
00:04:42,200 --> 00:04:46,520
well defined boundaries, both 
electronic as well as physical, 

99
00:04:46,800 --> 00:04:49,280
so that they can build 
separately and in parallel and 

100
00:04:49,280 --> 00:04:53,360
then bring together a complex 
system like a, a jet or a or a a

101
00:04:53,360 --> 00:04:55,160
boat or a car or something like 
that. 

102
00:04:55,560 --> 00:04:58,600
I would say, you know, coming 
from a, a more software space, I

103
00:04:58,600 --> 00:05:01,440
would say that the systems 
engineers were always like, why 

104
00:05:01,440 --> 00:05:02,960
are you guys even here? 
Like, come on, we're just 

105
00:05:02,960 --> 00:05:05,280
shipping software. 
And then and then you have the 

106
00:05:05,280 --> 00:05:07,920
systems engineers trying to 
explain to you like This is why 

107
00:05:07,920 --> 00:05:09,840
you need to design your software
in this way. 

108
00:05:09,840 --> 00:05:12,800
And it's like software doesn't 
need to be designed. 

109
00:05:12,800 --> 00:05:16,440
What are you talking about? 
The design is it generates 

110
00:05:16,440 --> 00:05:17,960
itself like, come on, what are 
you talking about? 

111
00:05:18,200 --> 00:05:21,080
And so it was really difficult 
to get the systems engineers to 

112
00:05:21,080 --> 00:05:24,760
like show their value on the 
software group because like you 

113
00:05:24,760 --> 00:05:26,840
don't have the things you have 
in this physical systems. 

114
00:05:26,840 --> 00:05:29,480
Like the, I remember the first 
time I went to Kennedy Space 

115
00:05:29,480 --> 00:05:31,040
Center and I looked up with the 
rocket. 

116
00:05:31,040 --> 00:05:34,320
I'm like, that's why you need 
systems engineers. 

117
00:05:34,320 --> 00:05:37,160
Like, look at all those tubes 
and those wires. 

118
00:05:37,160 --> 00:05:39,680
Like who figured out like how 
you plug those in? 

119
00:05:39,680 --> 00:05:41,800
And then how the data and all 
the stuff, how does it figure 

120
00:05:41,800 --> 00:05:44,440
out what's going on? 
Like that's when you really need

121
00:05:44,440 --> 00:05:47,080
systems engineers. 
And it's like, OK, I get it now.

122
00:05:48,240 --> 00:05:50,920
Yeah, yeah. 
And also too, when I took a look

123
00:05:50,920 --> 00:05:55,440
at this domain, it didn't just 
break down into SAS. 

124
00:05:55,440 --> 00:05:58,280
You know, software is the whole 
product and embedded, it broke 

125
00:05:58,280 --> 00:06:00,480
down into at least three 
categories of embedded. 

126
00:06:00,840 --> 00:06:03,280
And I broke this down roughly as
smart machines and digital 

127
00:06:03,280 --> 00:06:06,280
disruptors. 
And they look the most like SAS 

128
00:06:06,280 --> 00:06:09,600
software because customers are 
demanding or wanting updates as 

129
00:06:09,600 --> 00:06:11,640
value creating. 
But then you have stable or 

130
00:06:11,640 --> 00:06:15,320
boring machines, things that run
in factories and or, or mining 

131
00:06:15,320 --> 00:06:17,600
trucks. 
We have customers that do mining

132
00:06:17,600 --> 00:06:19,640
trucks. 
And if a mining truck is down 

133
00:06:19,640 --> 00:06:22,840
for a day because of a software 
problem, that's hundreds of 

134
00:06:22,840 --> 00:06:25,040
thousands of dollars a day in a 
gold mine. 

135
00:06:25,440 --> 00:06:27,440
And then you finally have safety
critical machines. 

136
00:06:27,440 --> 00:06:30,520
And in that case, software 
errors can result in human harm 

137
00:06:30,520 --> 00:06:33,200
or death. 
And so as you move to the right,

138
00:06:33,480 --> 00:06:37,560
you get less and less like the 
agile DevOps software is the 

139
00:06:37,560 --> 00:06:40,480
whole product domain. 
And some companies have all of 

140
00:06:40,480 --> 00:06:43,080
that under one thing. 
So you look at a modern 

141
00:06:43,080 --> 00:06:45,000
automobile and software defined 
vehicle. 

142
00:06:45,000 --> 00:06:47,000
The cockpit is in the first 
column. 

143
00:06:47,480 --> 00:06:50,440
Stuff like do my electronic 
mirrors function as they should 

144
00:06:50,440 --> 00:06:52,840
with only ever a a single 
release of software is the 

145
00:06:52,840 --> 00:06:54,560
middle column. 
And then the last column is 

146
00:06:54,560 --> 00:06:55,960
functional safety like my 
brakes. 

147
00:06:56,160 --> 00:06:59,240
I get it across to people by 
saying you and your loved ones 

148
00:06:59,240 --> 00:07:02,480
are settling into a roller 
coaster and the operator gets on

149
00:07:02,480 --> 00:07:05,280
and says, I'm sorry, we're going
to be an extra 10 minutes while 

150
00:07:05,280 --> 00:07:07,760
the software update finishes and
we'll get you on your way. 

151
00:07:08,640 --> 00:07:10,680
You're a DevOps pro, so you stay
seated, right? 

152
00:07:10,680 --> 00:07:13,800
Because you know that releases 
are only going to improve your 

153
00:07:13,800 --> 00:07:16,920
experience, right? 
And so this is an example of how

154
00:07:17,200 --> 00:07:20,320
there's a lot of when software 
is embedded in machines, we want

155
00:07:20,320 --> 00:07:23,720
them to do their machine job, do
it well, do it safely, do it 

156
00:07:24,040 --> 00:07:27,240
very predictably. 
And sometimes we want new 

157
00:07:27,240 --> 00:07:30,160
functionality. 
So different world. 

158
00:07:30,960 --> 00:07:32,640
Yeah, by the way, I have to push
back. 

159
00:07:32,640 --> 00:07:34,400
I don't think there is a 
contradiction between safety 

160
00:07:34,400 --> 00:07:38,520
critical software and and agile.
And I say that as somebody who, 

161
00:07:38,560 --> 00:07:42,400
who really cares about agile and
as somebody who has done safety 

162
00:07:42,400 --> 00:07:46,920
critical systems up to ACL level
D, I think that's the only way 

163
00:07:46,920 --> 00:07:48,560
to do it. 
And by the way, you're, you're 

164
00:07:48,560 --> 00:07:51,680
right that many of these things 
are older than than the term 

165
00:07:51,680 --> 00:07:53,120
agile. 
You know, when I was studying 

166
00:07:53,120 --> 00:07:55,520
mechanical engineering, my 
engineers, my, my professors 

167
00:07:55,520 --> 00:07:59,560
would always go on about the, 
the engineer's approach. 

168
00:08:00,880 --> 00:08:03,280
What they understood the 
engineer's approach to be was, 

169
00:08:03,280 --> 00:08:06,520
you know, you think of a 
prototype, you build it, you try

170
00:08:06,520 --> 00:08:08,760
it out, you draw your 
conclusions, you refine your 

171
00:08:08,760 --> 00:08:11,680
plan, you do the next step. 
And then, you know, years like 

172
00:08:11,680 --> 00:08:13,280
it dawned on me. 
Oh, that was their word for 

173
00:08:13,280 --> 00:08:15,760
agile. 
Yeah. 

174
00:08:15,800 --> 00:08:19,080
Well, so I would characterize 
Agile applies to the first part 

175
00:08:19,080 --> 00:08:21,840
of the DevOps Infinity loop and 
we got the second part when 

176
00:08:21,840 --> 00:08:24,200
DevOps came on the scene to 
speed production. 

177
00:08:24,440 --> 00:08:27,200
But if you think of what it 
takes to do a safety critical 

178
00:08:27,200 --> 00:08:30,760
production release and recertify
the software, just the cost 

179
00:08:30,760 --> 00:08:34,240
alone so that the deploy to 
production 10 times a day 

180
00:08:34,799 --> 00:08:38,320
doesn't apply to you might be 
able to do it for a car 

181
00:08:38,320 --> 00:08:41,280
dashboard that doesn't have any 
safety critical functionality or

182
00:08:41,280 --> 00:08:43,360
has very low safety critical 
functionality. 

183
00:08:43,720 --> 00:08:47,160
And but even their customers 
don't don't want 3 updates a 

184
00:08:47,160 --> 00:08:49,040
day. 
They might tolerate an update a 

185
00:08:49,040 --> 00:08:51,480
month. 
But so, so the the the value of 

186
00:08:51,480 --> 00:08:54,560
constant update part of 
continuous deployment to 

187
00:08:54,560 --> 00:08:59,080
production for continuous 
delivery delivering ready to go 

188
00:08:59,080 --> 00:09:02,760
features, you can speed that up,
but just the cost alone of 

189
00:09:02,760 --> 00:09:05,600
getting safety critical software
resorted and out the door 

190
00:09:05,920 --> 00:09:08,960
generally inhibits this the kind
of speed that we talked about as

191
00:09:08,960 --> 00:09:13,000
the the, the, the North star for
software is the whole product. 

192
00:09:13,320 --> 00:09:18,760
Well, and I mean, I, I've, I 
love the fact that my, my 13 

193
00:09:18,760 --> 00:09:22,440
year old Prius, you can, you can
flash through the, the, the 

194
00:09:22,440 --> 00:09:25,360
screen on the car and you can 
get it to tell you what version 

195
00:09:25,360 --> 00:09:28,040
the firmware is. 
And I'm like, I'm not updating 

196
00:09:28,040 --> 00:09:29,720
that. 
Like the car continues to go 

197
00:09:29,720 --> 00:09:32,320
forward and the brake continues 
to work and the turn signals 

198
00:09:32,320 --> 00:09:33,800
work. 
Like I don't need to update the 

199
00:09:33,800 --> 00:09:35,400
firmware. 
My car continues to go forward 

200
00:09:35,400 --> 00:09:37,960
as the car guys, like thank you 
for telling me about it. 

201
00:09:37,960 --> 00:09:41,800
But like even as a consumer, if 
you if Toyota was was having 10 

202
00:09:41,800 --> 00:09:44,480
releases a day, I don't think 
I'd take any of them for that 

203
00:09:44,480 --> 00:09:46,600
whole of a car. 
Well, yeah, well, actually so. 

204
00:09:46,800 --> 00:09:50,600
So when I talk about this, I say
that in boring machines and 

205
00:09:50,680 --> 00:09:54,400
safety critical machines, the 
optimal number of software 

206
00:09:54,400 --> 00:09:58,560
updates is 1 when they ship the 
product, and any more is a 

207
00:09:58,880 --> 00:10:01,680
reputation negative. 
Why doesn't your machine work 

208
00:10:01,680 --> 00:10:02,880
right? 
They don't think about it as 

209
00:10:03,480 --> 00:10:05,160
yeah. 
'Cause it's just a part number. 

210
00:10:05,160 --> 00:10:06,880
The software's just a part 
number. 

211
00:10:07,320 --> 00:10:10,960
Like, yeah. 
And so I I think that that's an 

212
00:10:10,960 --> 00:10:14,120
important issue is that the 
deployment part and also is 

213
00:10:14,120 --> 00:10:17,120
there's usually functionally the
deployment is not up to the 

214
00:10:17,120 --> 00:10:19,640
actual developer. 
So the SRE idea of you build 

215
00:10:19,640 --> 00:10:24,040
that you run it is also not true
because even just your firmware 

216
00:10:24,040 --> 00:10:27,680
for your, your, your Internet 
service provider modem, you know

217
00:10:27,680 --> 00:10:31,040
that A don't touch it unless you
have an actual problem on the 

218
00:10:31,040 --> 00:10:35,360
list of a future upgrade. 
B you're responsible to make 

219
00:10:35,360 --> 00:10:37,760
sure the device is in a 
situation where it can be 

220
00:10:37,760 --> 00:10:39,000
updated. 
No one's doing something 

221
00:10:39,000 --> 00:10:42,280
important on the Internet in 
that domain that that services 

222
00:10:42,560 --> 00:10:44,760
and see you take all the risk of
breaking it if you picked the 

223
00:10:44,760 --> 00:10:47,400
wrong hardware version. 
So even the whole deployment 

224
00:10:47,400 --> 00:10:51,000
piece is usually someone else 
other than the software creating

225
00:10:51,000 --> 00:10:53,240
company. 
There's some exceptions like 

226
00:10:53,240 --> 00:10:55,360
software defined vehicles are an
obvious exception. 

227
00:10:55,360 --> 00:11:00,200
But for for a large part most of
embedded, there's a boundary, an

228
00:11:00,200 --> 00:11:04,120
organizational boundary between 
who releases and who deploys. 

229
00:11:04,120 --> 00:11:06,080
And so that's another 
substantial difference for 

230
00:11:06,080 --> 00:11:08,880
DevOps. 
So let's let's move on from this

231
00:11:08,880 --> 00:11:12,000
a little bit and start moving 
towards like how AI plays a role

232
00:11:12,000 --> 00:11:14,640
in the systems engineering for 
these embedded systems and start

233
00:11:14,640 --> 00:11:16,640
moving in that direction. 
So we kind of said like systems 

234
00:11:16,640 --> 00:11:18,880
engineering is important. 
OK, got it. 

235
00:11:19,000 --> 00:11:20,840
And software is not the king 
anymore. 

236
00:11:21,040 --> 00:11:26,960
Oh, fine, I guess so. 
So, but what are some of the 

237
00:11:26,960 --> 00:11:30,680
problems that, you know, come 
into like, OK, so so just throw 

238
00:11:30,760 --> 00:11:32,160
AI at something like that's 
fine. 

239
00:11:32,160 --> 00:11:36,560
How, how do you even start to 
think about bringing AI into the

240
00:11:36,560 --> 00:11:39,720
process to help whatever it is 
we're trying to do in system 

241
00:11:39,720 --> 00:11:42,040
engineering? 
Oh that's easy, we just have the

242
00:11:42,360 --> 00:11:44,120
AI draw the boxes and arrows for
us. 

243
00:11:48,840 --> 00:11:52,720
It's cold, yeah. 
For me, I took the an MIT course

244
00:11:52,720 --> 00:11:54,400
on model based systems 
engineering. 

245
00:11:54,400 --> 00:11:58,920
It was like a X Pro program. 
So it's like they're continuing 

246
00:11:58,920 --> 00:12:01,040
education and it was about 16 
weeks long. 

247
00:12:01,320 --> 00:12:04,160
Really dug deeply into model 
based systems engineering, which

248
00:12:04,160 --> 00:12:07,280
is the boxes and arrows that 
define the funk, the machine 

249
00:12:07,280 --> 00:12:10,280
functionally. 
And one of the interesting 

250
00:12:10,280 --> 00:12:14,160
things here is that this, 
although this domain has been on

251
00:12:14,160 --> 00:12:19,120
a trajectory to store all of 
their artifacts as text and then

252
00:12:19,280 --> 00:12:24,520
also as code with Sysml 1.4, 
they're trying to get it all as 

253
00:12:24,520 --> 00:12:26,320
text. 
But this the IT was not 

254
00:12:26,320 --> 00:12:29,120
substantial enough to do all the
systems engineering. 

255
00:12:29,280 --> 00:12:32,080
So then you had all kinds of 
sidecar technologies that are 

256
00:12:32,080 --> 00:12:33,880
storing requirements or other 
things. 

257
00:12:34,360 --> 00:12:36,760
Now a Sysml V2, it's just been 
released. 

258
00:12:36,760 --> 00:12:40,760
And the idea is that we now have
the ability to store everything 

259
00:12:40,760 --> 00:12:43,040
in a single source of truth. 
So there's one of our software 

260
00:12:43,040 --> 00:12:46,320
concepts, right? 
That is as code. 

261
00:12:46,320 --> 00:12:50,240
So SYS MLV 2, even though it 
shows diagrams and tables, 

262
00:12:50,480 --> 00:12:52,440
everything in the background is 
stored as code. 

263
00:12:52,640 --> 00:12:56,920
So we're getting to the place 
where now we can apply software 

264
00:12:57,120 --> 00:12:59,240
mentality to it. 
And in fact, if you look at the 

265
00:12:59,240 --> 00:13:03,640
SYS MLV 2 API definition, it 
looks just like the Git API 

266
00:13:03,640 --> 00:13:04,960
definition. 
Commit. 

267
00:13:04,960 --> 00:13:08,840
You can store things in git. 
Well, you, you can, but but more

268
00:13:08,840 --> 00:13:12,480
more importantly is they ripped 
off the entire concept of the 

269
00:13:12,480 --> 00:13:15,880
concept of what do you do when 
you compare one version of the 

270
00:13:15,880 --> 00:13:17,920
thing to another thing. 
The whole revision management of

271
00:13:17,920 --> 00:13:22,120
Git is reflected in there and it
doesn't bind them to Git, but it

272
00:13:22,120 --> 00:13:24,640
makes Git a very natural 
capability. 

273
00:13:24,880 --> 00:13:27,680
But you can see how they're 
trying to borrow what how in 

274
00:13:27,680 --> 00:13:31,360
pure software, we have pushed 
the envelope really hard on 

275
00:13:31,360 --> 00:13:34,160
being able to make coordinated 
changes with the software. 

276
00:13:34,160 --> 00:13:37,040
Technology is so as soon as you 
can store your models, it's not 

277
00:13:37,040 --> 00:13:39,320
code, but your models in the 
same way. 

278
00:13:39,480 --> 00:13:42,240
Now you can just take most of 
our methodology and import it. 

279
00:13:42,240 --> 00:13:44,800
So that's been a really positive
effect. 

280
00:13:44,800 --> 00:13:47,920
I think of software as the whole
product or pure software 

281
00:13:47,920 --> 00:13:51,240
products and how they are 
starting to help inform systems,

282
00:13:51,240 --> 00:13:53,680
systems engineering. 
But you need that. 

283
00:13:53,680 --> 00:13:57,840
You need that unity of having 
your stuff stored at least as 

284
00:13:57,840 --> 00:14:00,160
text and especially as code 
gives it. 

285
00:14:00,480 --> 00:14:05,400
AI can analyze the semantics of 
anything stored as as code quite

286
00:14:05,400 --> 00:14:07,560
well. 
So one thing that I've done that

287
00:14:07,640 --> 00:14:10,640
people are excited about is 
there's a system LV2 model out 

288
00:14:10,640 --> 00:14:13,120
there for a flashlight. 
And for those of you who are 

289
00:14:13,120 --> 00:14:16,600
listening who are more pure 
software folks, a system LV2 

290
00:14:17,560 --> 00:14:20,640
code base is going to say stuff 
like there's a switch and when 

291
00:14:20,640 --> 00:14:23,320
you click it, the power is 
allowed to travel from the power

292
00:14:23,320 --> 00:14:26,240
source to the to the light 
emitting source. 

293
00:14:26,240 --> 00:14:29,480
Like it's very functional, not 
not physical. 

294
00:14:29,480 --> 00:14:31,480
It's not a CAD diagram of a 
flashlight. 

295
00:14:32,040 --> 00:14:35,400
Well, I was able to take that 
and with with AII was able to 

296
00:14:35,400 --> 00:14:38,240
say this is a systems 
engineering model according to 

297
00:14:38,240 --> 00:14:42,680
system LV2. 
I have this Raspberry Pi Pico 

298
00:14:42,680 --> 00:14:44,640
which has one button and one 
LED. 

299
00:14:44,920 --> 00:14:48,360
Can you please create working 
embedded software so I can 

300
00:14:48,360 --> 00:14:51,440
update this board and get it to 
be a flashlight? 

301
00:14:51,440 --> 00:14:54,400
And it was able to do it. 
I gave it a lot of context. 

302
00:14:54,400 --> 00:14:56,920
I gave it a lot of prompting 
context as well as we were 

303
00:14:56,920 --> 00:15:01,680
inside of the entire Pico SDK 
and I had a working Blinky 

304
00:15:01,680 --> 00:15:04,480
project I was working in, so it 
could look at all the examples. 

305
00:15:05,000 --> 00:15:06,320
Yeah. 
And yeah. 

306
00:15:06,440 --> 00:15:09,200
And so inside of GitLab, I can 
also direct it to know more 

307
00:15:09,200 --> 00:15:11,760
about Raspberry Pi Picos. 
I can direct it to. 

308
00:15:12,200 --> 00:15:13,960
I'd be smarter. 
And so I was able to in a in a 

309
00:15:13,960 --> 00:15:17,240
single pass with a decent 
prompt, create a flashlight from

310
00:15:17,240 --> 00:15:19,440
a model based systems 
engineering model directly to 

311
00:15:19,440 --> 00:15:22,000
embedded code, which was pretty,
pretty exciting. 

312
00:15:23,880 --> 00:15:26,920
Yeah, that is very interesting. 
And I mean it, it touches on 

313
00:15:26,960 --> 00:15:30,680
something that we keep bumping 
against again and again, which 

314
00:15:30,680 --> 00:15:34,440
is that only things that are 
somehow represented as text and 

315
00:15:34,440 --> 00:15:38,440
ideally as a some kind of code 
has some kind of semantic to it 

316
00:15:38,960 --> 00:15:43,920
is readily accessible by LLMS, 
right. 

317
00:15:43,920 --> 00:15:47,280
Everything else they, they can 
kind of like maybe pause images,

318
00:15:47,280 --> 00:15:49,720
but they're not really good at 
it and they they struggle a lot.

319
00:15:50,320 --> 00:15:52,040
Yeah. 
And I think that's where MCP 

320
00:15:52,040 --> 00:15:54,360
comes in. 
So I've seen demos of some of 

321
00:15:54,360 --> 00:15:56,800
the enterprise model based 
systems engineering tools that 

322
00:15:56,800 --> 00:16:00,080
run forever interacting with AI.
And when they create a really 

323
00:16:00,080 --> 00:16:04,480
good MCP, that's sort of like 
injecting the process knowledge 

324
00:16:04,480 --> 00:16:06,920
of an engineer. 
So if you or I look at a systems

325
00:16:06,920 --> 00:16:10,000
and I'm not a systems engineer 
by by trade, if I look at a 

326
00:16:10,000 --> 00:16:12,320
systems engineering model, I can
start to figure out what's going

327
00:16:12,320 --> 00:16:14,720
on. 
But how to make one is usually a

328
00:16:14,720 --> 00:16:17,880
whole other level for, you know,
from scratch of knowledge. 

329
00:16:18,320 --> 00:16:23,160
And MCP servers are how you add 
that actively oriented agent 

330
00:16:23,160 --> 00:16:26,560
that is able to then understand,
oh, if I'm going to make an MBSC

331
00:16:26,560 --> 00:16:30,600
model, I need at, you know, some
user diagrams, I need some of 

332
00:16:30,600 --> 00:16:33,920
these, I need some of that. 
So that's where the the whole 

333
00:16:33,920 --> 00:16:36,240
gap is plugged. 
So we, we don't want to 

334
00:16:36,640 --> 00:16:39,840
undervalue the fact that MCP 
servers are going to add that 

335
00:16:39,960 --> 00:16:42,800
process knowledge that you don't
see just in an artifact. 

336
00:16:42,800 --> 00:16:47,000
Even when you're coding, you see
the final thing and AI can infer

337
00:16:47,000 --> 00:16:49,840
a lot of functionality, but 
that's a a big source of, of 

338
00:16:49,840 --> 00:16:52,920
hallucination is I don't 
actually know the best way to 

339
00:16:52,920 --> 00:16:55,520
define a function in this 
language or, or whatever it is 

340
00:16:55,520 --> 00:16:58,120
or, or what architecture you're 
using in this particular 

341
00:16:58,120 --> 00:17:00,520
project. 
What what you're saying really 

342
00:17:00,520 --> 00:17:05,240
is that that we should move 
towards more text based 

343
00:17:05,599 --> 00:17:10,520
representations of of of of our 
stuff or or essentially move 

344
00:17:10,520 --> 00:17:13,560
away from it and move to 
whatever, let's call even 

345
00:17:13,560 --> 00:17:18,720
proprietary representations and 
provide MCP servers that enable 

346
00:17:18,720 --> 00:17:21,920
access to whatever format 
exists. 

347
00:17:22,520 --> 00:17:25,160
Yeah, you just take the OR out 
and throw an end in there. 

348
00:17:25,160 --> 00:17:27,040
So, OK. 
Yeah, I mean, if you're a 

349
00:17:27,040 --> 00:17:31,920
startup going for pure SYS MLV 2
and creating a rule that all 

350
00:17:31,920 --> 00:17:35,240
things shall be in the single 
source of truth model in sys MLV

351
00:17:35,240 --> 00:17:38,480
2, and we will work so hard to 
stay bounded by that, then 

352
00:17:38,600 --> 00:17:41,040
you're going to be way far ahead
because you don't need nearly as

353
00:17:41,040 --> 00:17:43,800
much MCP capability. 
You don't need the ability to 

354
00:17:43,800 --> 00:17:46,480
read proprietary various 
storages, but also you got to 

355
00:17:46,480 --> 00:17:50,000
know that like companies like 
NASA have decades of models 

356
00:17:50,000 --> 00:17:52,360
stored in other tools and 
they're not going to recode 

357
00:17:52,360 --> 00:17:56,560
those or refactor those into sys
MLV 2 just so they can talk with

358
00:17:56,560 --> 00:17:58,520
AI. 
So that's where you need MCP 

359
00:17:58,520 --> 00:18:01,920
servers that understand those 
storage formats, the actual 

360
00:18:01,920 --> 00:18:05,800
architectural semantics of how 
to analyze and build things. 

361
00:18:06,120 --> 00:18:09,040
And, and so a lot of that can be
done through MCP. 

362
00:18:09,320 --> 00:18:11,280
It can also be done through 
knowledgeable engineers 

363
00:18:11,280 --> 00:18:16,720
creating, using imperative AI to
create declarative code then 

364
00:18:16,720 --> 00:18:20,120
does stuff like validate the 
model, validate requirements. 

365
00:18:20,120 --> 00:18:23,920
And so you're going to need both
because, well, working code. 

366
00:18:23,920 --> 00:18:27,120
This is why, like you know, the 
United States IRS, we always 

367
00:18:27,520 --> 00:18:29,720
tease about how they're on COBOL
and how bad that is. 

368
00:18:29,720 --> 00:18:35,440
But in reality, that represents 
human decades of bug stamping. 

369
00:18:35,720 --> 00:18:38,040
And as soon as you refactor to 
new language just because it's 

370
00:18:38,040 --> 00:18:40,560
new, you reinherit a whole bunch
of dog bugs you don't know you 

371
00:18:40,560 --> 00:18:43,040
have except for the next coming 
20 years, right. 

372
00:18:43,200 --> 00:18:45,160
And so the same is with the MBSE
models. 

373
00:18:45,160 --> 00:18:48,200
If you got well working models, 
those are worth, you know, 

374
00:18:48,200 --> 00:18:52,160
millions of human, millions of 
dollars of human time and re 

375
00:18:52,160 --> 00:18:54,520
recoding them just so that 
they're in a new format was is 

376
00:18:54,520 --> 00:18:56,520
probably not going to happen, 
but you still need to access 

377
00:18:56,520 --> 00:19:00,720
them and reuse them. 
We replicated this design 

378
00:19:00,720 --> 00:19:03,720
pattern that only applies to 
COBOL, but we replicated it in 

379
00:19:03,720 --> 00:19:05,960
Rust just because we weren't 
sure what it was going to do. 

380
00:19:05,960 --> 00:19:08,760
So we just refactored it and put
it in Rust and it functions 

381
00:19:08,760 --> 00:19:11,160
exactly the same way as it did 
in COBOL. 

382
00:19:11,400 --> 00:19:12,640
Good job. 
Yeah. 

383
00:19:13,240 --> 00:19:15,320
And and except that when we come
to your end close, there's going

384
00:19:15,320 --> 00:19:17,920
to be that one little Rust edge 
case, it wasn't covered and 

385
00:19:17,920 --> 00:19:20,280
we'll get to find it out while 
we're trying to process billions

386
00:19:20,280 --> 00:19:22,240
of tax returns. 
Yeah, it'll be fine. 

387
00:19:22,360 --> 00:19:23,720
What? 
What could go wrong? 

388
00:19:25,720 --> 00:19:28,160
No, I think, I think the value, 
I think that the, the, the 

389
00:19:28,160 --> 00:19:32,280
reason legacy code is so hard to
get rid of has has to do with 

390
00:19:32,280 --> 00:19:35,120
the intensity of human 
engineering that it reflects. 

391
00:19:35,120 --> 00:19:39,560
It's a value way higher than 
when it's running because it's, 

392
00:19:39,560 --> 00:19:41,600
when it's debugged and it's it's
working. 

393
00:19:41,720 --> 00:19:44,040
It's the same as functional 
safety software. 

394
00:19:44,320 --> 00:19:47,400
We have companies that do 
functional safety systems, 

395
00:19:47,400 --> 00:19:49,920
airbags, steering systems. 
When they get a piece of code 

396
00:19:49,920 --> 00:19:53,360
that's been working well in an 
airbag for 15 years and it's 

397
00:19:53,360 --> 00:19:57,200
never created any harm, they 
want to keep that code exactly 

398
00:19:57,200 --> 00:19:58,800
like it is. 
And so it's the same kind of 

399
00:19:58,800 --> 00:20:01,520
concept. 
By the way, I'm, I'm kind of 

400
00:20:01,520 --> 00:20:05,280
reminded of the episode before 
last when we spoke with Michael 

401
00:20:05,280 --> 00:20:08,560
Lavarenko. 
And, you know, he, he's trying 

402
00:20:08,560 --> 00:20:13,800
to build a company that sort of 
creates models of, of 

403
00:20:13,800 --> 00:20:16,480
microcontrollers and, and other 
devices essentially from the 

404
00:20:16,480 --> 00:20:19,080
specification. 
And he's struggling with fairly 

405
00:20:19,080 --> 00:20:22,400
similar problems where he has, 
you know, different formats 

406
00:20:22,760 --> 00:20:26,040
expressing different intent, 
etcetera, etcetera, from, you 

407
00:20:26,040 --> 00:20:28,040
know, different companies or 
even the same company. 

408
00:20:28,040 --> 00:20:31,680
Like, you know, oh, this is how 
Analog Devices used to do it in 

409
00:20:31,680 --> 00:20:34,040
the 70s and this is how they 
used to write their specs in the

410
00:20:34,040 --> 00:20:39,400
80s or whatever. 
And he's trying to find ways to 

411
00:20:39,400 --> 00:20:41,440
get into that. 
And and this is the same problem

412
00:20:41,640 --> 00:20:43,600
again, you know, from a 
different perspective. 

413
00:20:44,280 --> 00:20:46,880
I think in reality too, the way 
to solve it is the same way that

414
00:20:46,880 --> 00:20:49,600
System LV2 is. 
Let's get together and define 

415
00:20:49,600 --> 00:20:55,280
one schematic, semantic semantic
schematic of an as code language

416
00:20:55,560 --> 00:21:00,560
that is able to be stored. 
And then it renders the actual 

417
00:21:00,560 --> 00:21:04,600
hardware specification document 
from the code and it's able then

418
00:21:04,600 --> 00:21:08,120
to render simulation platforms 
from that same code. 

419
00:21:08,120 --> 00:21:10,920
But so far, and there are some 
of the big vendors are doing 

420
00:21:10,920 --> 00:21:13,640
this, some of the really big 
names are doing that, but 

421
00:21:13,640 --> 00:21:15,560
they're doing it inside of, you 
know, they want to create 

422
00:21:15,560 --> 00:21:17,040
proprietary value, which makes 
sense. 

423
00:21:17,040 --> 00:21:19,920
So it takes someone like Object 
Management Group to say yeah we 

424
00:21:19,920 --> 00:21:23,120
want to solve this problem too 
to step up and start defining. 

425
00:21:23,120 --> 00:21:25,960
Why do we need system LV2? 
We already had law tech like 

426
00:21:25,960 --> 00:21:32,320
come on what? 
What Well, so, and I think that 

427
00:21:32,320 --> 00:21:35,400
we've kind of touched around 
these like these higher level 

428
00:21:35,400 --> 00:21:40,000
specifications and you know, you
talk about in order for to get 

429
00:21:40,000 --> 00:21:43,240
the the AI to be effective at 
understanding how a physical 

430
00:21:43,240 --> 00:21:45,720
system works. 
So you talked about, you know, a

431
00:21:45,720 --> 00:21:47,600
flashlight, the AI doesn't know 
anything about a flashlight. 

432
00:21:47,600 --> 00:21:51,280
It understands English language 
and it understands source code 

433
00:21:51,280 --> 00:21:52,960
that it's read before. 
Like that's what it understands.

434
00:21:52,960 --> 00:21:54,040
It doesn't understand 
flashlights. 

435
00:21:54,160 --> 00:21:56,880
So you basically have to 
describe a flashlight in a, in a

436
00:21:56,880 --> 00:21:59,520
different language that the AI 
can then understand. 

437
00:22:00,040 --> 00:22:03,720
But we have the same problem 
human beings over, you know, 

438
00:22:04,000 --> 00:22:06,200
dealing with systems that we've 
built. 

439
00:22:06,440 --> 00:22:09,200
And so from a software person, 
software person just thinks, oh,

440
00:22:09,200 --> 00:22:11,680
the, the, the system is 
described by the code that I've 

441
00:22:11,680 --> 00:22:14,680
written. 
But you have to understand that 

442
00:22:14,800 --> 00:22:16,880
even when we talk about 
refactoring to new language 

443
00:22:16,880 --> 00:22:20,680
like, well, your, your code is 
written not just as the, the 

444
00:22:20,680 --> 00:22:22,400
solution to the problem that 
you're trying to solve. 

445
00:22:22,440 --> 00:22:25,120
It also has to deal with the 
fact that the programming 

446
00:22:25,120 --> 00:22:27,400
language that you're using has 
these limitations. 

447
00:22:27,400 --> 00:22:30,000
And so you have to write your 
code so that addresses how the 

448
00:22:30,000 --> 00:22:34,320
compiler works and everything. 
And so, but so you capture what 

449
00:22:34,520 --> 00:22:36,840
getting the computer to do the 
thing that you wanted to do with

450
00:22:36,840 --> 00:22:38,120
the programming language that 
you've gotten. 

451
00:22:38,280 --> 00:22:42,880
You do not capture that intent 
of like, how does this, why did 

452
00:22:42,880 --> 00:22:45,680
I do it this way? 
And this and we talked about and

453
00:22:45,680 --> 00:22:47,800
this is a human problem too, 
where OK. 

454
00:22:47,800 --> 00:22:51,000
And so if the three of us work 
on a project for a year and then

455
00:22:51,000 --> 00:22:53,000
the three of us are really busy 
and really cool and super 

456
00:22:53,000 --> 00:22:54,440
important. 
And so they they call us under 

457
00:22:54,440 --> 00:22:56,400
somewhere else. 
So all three of us go away and 

458
00:22:56,400 --> 00:22:59,000
then we're like here, next 
generation of developers, here's

459
00:22:59,000 --> 00:23:01,840
our code, bye. 
Like they don't understand that 

460
00:23:01,840 --> 00:23:03,920
intent, they don't understand 
the specification. 

461
00:23:04,080 --> 00:23:07,040
And so we run into the same 
problem when you hand a project 

462
00:23:07,040 --> 00:23:09,520
off to another group of people 
as you do trying to get AI to 

463
00:23:09,520 --> 00:23:11,760
deal with something. 
And and you see this with junior

464
00:23:11,760 --> 00:23:14,440
engineers who join the term team
and they don't understand the 

465
00:23:14,440 --> 00:23:17,880
iddies right, all the 
productionization security, 

466
00:23:17,880 --> 00:23:20,800
scalability, they don't 
understand why rate limits are 

467
00:23:20,800 --> 00:23:21,960
needed and all that kind of 
stuff. 

468
00:23:21,960 --> 00:23:25,000
And so when they do their first 
builds, it tends to be, yeah, it

469
00:23:25,000 --> 00:23:27,600
works on, it's the, the epitome 
of it works on my machine, 

470
00:23:27,600 --> 00:23:31,880
right. 
And so I, I think that in Agile 

471
00:23:31,880 --> 00:23:36,640
we've, we've mistakenly assumed 
that somehow when you read code,

472
00:23:36,640 --> 00:23:38,360
you can read architectural 
intent. 

473
00:23:38,880 --> 00:23:40,800
Yeah. 
At the same time, I've used AI 

474
00:23:40,800 --> 00:23:43,560
to extract architectural tent 
out of code. 

475
00:23:43,800 --> 00:23:46,960
So there's this to do back end. 
Now that's written in 50 

476
00:23:46,960 --> 00:23:49,240
languages or something. 
It's, and it's really simple 

477
00:23:49,240 --> 00:23:52,080
data schema and you can write to
do front ends as well. 

478
00:23:52,080 --> 00:23:53,760
It's like the ultimate sample 
app. 

479
00:23:54,040 --> 00:23:57,680
And I took, first of all, I got 
AI to select, select several 

480
00:23:57,680 --> 00:23:59,640
representative because there's 
tons of languages. 

481
00:23:59,640 --> 00:24:01,640
I don't want to analyze all. 
And then I asked it to analyze 

482
00:24:01,640 --> 00:24:05,200
all of them and come up with a 
systems architecture in plant 

483
00:24:05,200 --> 00:24:08,640
UML with a specific format of 
the custom schema that I've come

484
00:24:08,640 --> 00:24:11,120
up with. 
And so there is a software 

485
00:24:11,120 --> 00:24:14,600
always has architecture, it's 
just that with emergent it's not

486
00:24:14,600 --> 00:24:16,600
intentional architecture. 
Emergent. 

487
00:24:16,600 --> 00:24:17,640
That was the word I was looking 
for. 

488
00:24:17,640 --> 00:24:18,800
Thank you. 
Yeah. 

489
00:24:21,040 --> 00:24:23,200
And when it emerges from your 
building efforts and you just 

490
00:24:23,200 --> 00:24:25,720
keeps doing this, doing that 
till you get something that 

491
00:24:25,720 --> 00:24:28,120
works and then you send it to 
production and doesn't scale and

492
00:24:28,120 --> 00:24:31,320
then you do stuff to look 
finally scales, you can probably

493
00:24:31,320 --> 00:24:35,040
get get AI to analyze it and go,
oh, this is an ABC scalability 

494
00:24:35,040 --> 00:24:38,160
pattern because you're basically
stumbling into something that's 

495
00:24:38,200 --> 00:24:41,280
a known way of proactively 
building the software if you're 

496
00:24:41,320 --> 00:24:43,480
if you're full on agile. 
I don't, I don't really believe 

497
00:24:43,480 --> 00:24:48,720
that most well building teams 
just do emergent architecture. 

498
00:24:48,720 --> 00:24:50,760
They are actually applying 
architecture from their 

499
00:24:50,760 --> 00:24:53,520
knowledge, but they just simply 
don't store it anywhere because 

500
00:24:53,800 --> 00:24:56,080
they talk the code is the 
documentation. 

501
00:24:56,080 --> 00:24:58,880
And and so that's a real problem
because it's just floating 

502
00:24:58,880 --> 00:25:00,320
around in the head of the 
experienced folks. 

503
00:25:00,320 --> 00:25:03,640
And as they churn out, you risk 
that team going back to old 

504
00:25:03,640 --> 00:25:06,280
mistakes, old patterns that have
been tried in the past. 

505
00:25:06,280 --> 00:25:09,160
And then AD Rs are of course, 
the Band-Aid on top of that, 

506
00:25:10,080 --> 00:25:11,480
stop that from happening in the 
future. 

507
00:25:11,480 --> 00:25:13,440
But they still don't express the
intent. 

508
00:25:13,440 --> 00:25:16,160
They express don't go down this 
road or that road because we 

509
00:25:16,160 --> 00:25:18,480
already, you know, got a bloody 
nose down that road. 

510
00:25:18,640 --> 00:25:20,520
And then, but it leaves 
everything else open, even 

511
00:25:20,520 --> 00:25:23,160
though there's also the idea of 
architectural intent. 

512
00:25:23,760 --> 00:25:25,880
I just put up a sign said yard 
there be Dragons. 

513
00:25:25,880 --> 00:25:27,520
And there's no explanation 
whatsoever. 

514
00:25:27,520 --> 00:25:32,680
What I why I said that? 
Yep, Yep. 

515
00:25:32,960 --> 00:25:36,040
So, so you can, you can take a, 
you can take an LLM and you can 

516
00:25:36,040 --> 00:25:38,400
feed it into a bunch of a bunch 
of code into it and you can say,

517
00:25:38,400 --> 00:25:41,960
hey, produce me some sort of 
specification, like why is this 

518
00:25:41,960 --> 00:25:44,640
code doing what it's doing? 
Like have you you've had some 

519
00:25:44,640 --> 00:25:47,200
success with that? 
Yeah, for sure, for sure. 

520
00:25:47,520 --> 00:25:50,240
The, the, the especially when 
you give it multiple language 

521
00:25:50,240 --> 00:25:54,120
patterns, the same exact 
architectural powder in multiple

522
00:25:54,120 --> 00:25:56,760
languages, because now you've 
got like a Rosetta Stone, right?

523
00:25:56,760 --> 00:25:59,520
So you have the semantics of 
each language express things a 

524
00:25:59,520 --> 00:26:01,760
certain way. 
And one thing you have to 

525
00:26:01,760 --> 00:26:06,160
realize is it like compilers. 
Technically, if the, if the AI 

526
00:26:06,160 --> 00:26:09,080
knows about the compiler, it 
knows a lot about the semantic 

527
00:26:09,080 --> 00:26:13,080
processing of that source code. 
And then if you provide it you 

528
00:26:13,080 --> 00:26:15,960
know 5 examples in different 
languages and say I want the 

529
00:26:15,960 --> 00:26:19,000
architecture aside from all 
these code implementations, then

530
00:26:19,000 --> 00:26:21,400
you get more of a pure 
architecture of of what's going 

531
00:26:21,400 --> 00:26:24,800
on in the covers functionally as
well as data schema wise. 

532
00:26:25,680 --> 00:26:27,920
Yeah. 
So the, the as I'm listening to 

533
00:26:27,920 --> 00:26:30,840
this, I'm, I'm wondering though,
like it, it sounds like you're 

534
00:26:30,840 --> 00:26:33,680
doing, you know, maybe you're 
just living in a better world 

535
00:26:33,680 --> 00:26:37,800
than I am, but you seem to be 
working with or describing very 

536
00:26:37,800 --> 00:26:40,400
small, well defined problems. 
I and I tend to have the 

537
00:26:40,400 --> 00:26:43,240
opposite problem. 
I'm working on large ill defined

538
00:26:43,240 --> 00:26:44,920
problems and ill defined code 
bases. 

539
00:26:45,200 --> 00:26:50,360
And I wonder how well that is is
working with the tools that we 

540
00:26:50,360 --> 00:26:53,560
have at present and. 
I haven't played yet with these 

541
00:26:53,560 --> 00:26:58,080
ideas at scale, I would say that
you typically do what you what 

542
00:26:58,080 --> 00:26:59,560
you would normally do as a human
is like. 

543
00:26:59,560 --> 00:27:02,480
You can't understand 1.2 million
lines of code. 

544
00:27:02,480 --> 00:27:06,040
So you subsystem it and you and 
you work on and you, when you go

545
00:27:06,040 --> 00:27:09,680
to work on this module, you kind
of load that context from memory

546
00:27:09,680 --> 00:27:12,080
and reuse the code. 
Go through your old docs and 

547
00:27:12,080 --> 00:27:14,120
you're like, OK, now I'm 
remembering what this module 

548
00:27:14,120 --> 00:27:15,920
does. 
So you can do, you could do the 

549
00:27:15,920 --> 00:27:19,920
same with AI as get it to 
diagram out just modules and 

550
00:27:19,920 --> 00:27:22,760
then later talk to it about 
putting the whole thing 

551
00:27:22,760 --> 00:27:25,600
together. 
I I think though so. 

552
00:27:25,640 --> 00:27:29,720
So the problem is that if with 
agile generated code, we just 

553
00:27:29,720 --> 00:27:33,640
keep throwing it up against AI 
without any architecture 

554
00:27:33,640 --> 00:27:37,440
diagrams, It's kind of like 
asking an interior decorator, 

555
00:27:38,000 --> 00:27:41,720
our interior, yeah, interior 
decorator to come in and redo 

556
00:27:41,720 --> 00:27:43,760
your main floor plan of your 
house. 

557
00:27:43,800 --> 00:27:45,880
And so they're going to remove a
couple supporting walls. 

558
00:27:45,880 --> 00:27:48,200
They're going to remove the wet 
wall where all the plumbing is, 

559
00:27:48,200 --> 00:27:51,120
and they're not going to fit 
into where the electrical wiring

560
00:27:51,120 --> 00:27:52,800
going because they didn't. 
They don't know. 

561
00:27:52,800 --> 00:27:54,520
They don't have a blueprint. 
They don't know how to read it. 

562
00:27:54,880 --> 00:27:59,800
So thankfully AI is smart enough
to be able to go do an X-ray of 

563
00:27:59,800 --> 00:28:03,000
this house and you tell me what 
the architecture is. 

564
00:28:03,000 --> 00:28:05,080
And then if you have anybody 
around who's been experienced 

565
00:28:05,080 --> 00:28:08,880
that system, they can tune it. 
So even though the architecture,

566
00:28:09,120 --> 00:28:12,280
it's not that agile software 
doesn't have architecture, it's 

567
00:28:12,280 --> 00:28:15,600
just that it was emergent. 
So it's not loaded into a 

568
00:28:15,600 --> 00:28:17,920
context as special knowledge. 
And we talked to AI. 

569
00:28:17,920 --> 00:28:21,120
So I think that the way through 
this is going to be get AI to 

570
00:28:21,120 --> 00:28:24,840
extract the current architecture
of anything that's like not got 

571
00:28:24,840 --> 00:28:28,320
architecture documentation, 
refine it, make it more 

572
00:28:28,320 --> 00:28:31,480
accurate, and then use that 
architecture documentation along

573
00:28:31,480 --> 00:28:34,120
with implementation code. 
So for brownfields, So what I 

574
00:28:34,120 --> 00:28:36,800
hear you saying is like 
brownfields problems are not 

575
00:28:36,800 --> 00:28:39,440
like all the AI demos we see 
where it's like, hey, cleans 

576
00:28:39,440 --> 00:28:42,000
plate business art website, 
right? 

577
00:28:42,000 --> 00:28:43,920
And it's like, sure, it can 
crank that out. 

578
00:28:43,920 --> 00:28:46,760
You can also do that with 
templates, like we already have 

579
00:28:46,800 --> 00:28:49,560
templates to do that. 
So, but when you say, Hey, we 

580
00:28:49,560 --> 00:28:52,960
got this code base of, you know,
500,000 lines, it's been doing 

581
00:28:52,960 --> 00:28:55,600
something for 15 years, how do 
we get started? 

582
00:28:56,000 --> 00:28:57,680
I'd say you got to do 
architecture first. 

583
00:28:57,680 --> 00:29:02,240
Extract the architecture using 
AI represented in a diagram is 

584
00:29:02,240 --> 00:29:05,080
code language on purpose. 
Don't start drawing in raster 

585
00:29:05,080 --> 00:29:08,680
graphics languages to do the 
architecture because then AI can

586
00:29:08,680 --> 00:29:12,600
make the architecture for you, 
help you to ask questions of the

587
00:29:12,600 --> 00:29:16,680
architecture. 
I have a plant UML diagram of a 

588
00:29:16,680 --> 00:29:19,640
very complicated embedded DevOps
course that we have. 

589
00:29:19,960 --> 00:29:23,360
And that course has minimum aths
through for virtual only 

590
00:29:23,360 --> 00:29:26,920
hardware or real hardware and a 
bunch of optional modules that 

591
00:29:26,920 --> 00:29:29,280
emphasize different things like 
software, supply chain, 

592
00:29:29,280 --> 00:29:32,520
security, compliance. 
And so you can actually talk to 

593
00:29:32,520 --> 00:29:34,720
it. 
And if you take a plant UML 

594
00:29:34,720 --> 00:29:37,120
diagram that's well done, you 
can just ask AI what is this? 

595
00:29:37,120 --> 00:29:39,720
And they'll just accurately 
describe exactly what it is. 

596
00:29:39,960 --> 00:29:42,600
And then you can say I want a 
new course or new learning path 

597
00:29:42,600 --> 00:29:46,240
that does emphasizes this and 
draws in at least this topic 

598
00:29:46,240 --> 00:29:48,800
area. 
It'll create a new diagram and a

599
00:29:48,800 --> 00:29:52,400
student, you know, blow by blow 
course learning path. 

600
00:29:52,800 --> 00:29:57,080
And so the power of I think 
extracting that architecture 

601
00:29:57,080 --> 00:30:00,480
information, representing it as 
a diagrams as code language and 

602
00:30:00,480 --> 00:30:03,960
then using that to collaborate 
with AI is really powerful 

603
00:30:03,960 --> 00:30:07,080
because humans get semantic 
information very quickly 

604
00:30:07,080 --> 00:30:09,880
visually and AI gets it very 
quickly from code. 

605
00:30:09,880 --> 00:30:13,200
And this is exactly both. 
Diagrams as code are visually 

606
00:30:13,200 --> 00:30:16,360
represented code until you you 
very quickly get on the same 

607
00:30:16,360 --> 00:30:19,080
page with AI. 
Yeah, this is. 

608
00:30:19,320 --> 00:30:22,240
It's very interesting to hear 
say that, because as it turns 

609
00:30:22,280 --> 00:30:25,680
out, I, you know, I, I think 
you've been sort of secretly 

610
00:30:25,680 --> 00:30:27,520
looking over my shoulder. 
I'm. 

611
00:30:29,720 --> 00:30:35,040
Tapped into your device. 
Exactly like I at at present I'm

612
00:30:35,040 --> 00:30:37,720
working with a customer who has 
essentially exactly this 

613
00:30:37,720 --> 00:30:39,560
problem. 
They've got a, an existing 

614
00:30:39,680 --> 00:30:42,480
embedded systems code base. 
It's like 1.2 million lines of 

615
00:30:42,480 --> 00:30:44,840
code. 
And they, they say, well, we 

616
00:30:44,840 --> 00:30:47,960
wish we had architecture, but 
this thing has been sort of 

617
00:30:47,960 --> 00:30:52,480
growing for the last 30 years. 
And like, this is what we have. 

618
00:30:53,000 --> 00:30:54,440
Yeah. 
And we need to figure out how to

619
00:30:54,440 --> 00:30:57,640
make heads and tails of it 
because like, our supplier has 

620
00:30:58,040 --> 00:31:00,680
has stopped producing the 
hardware we need to, we need to 

621
00:31:00,680 --> 00:31:02,640
put it somewhere, we need to do 
something about it. 

622
00:31:03,080 --> 00:31:05,320
And it is it, it has been very 
interesting. 

623
00:31:05,720 --> 00:31:10,080
And, and in fact, I've been 
experiencing, experiencing a lot

624
00:31:10,080 --> 00:31:13,680
of what you just described. 
Like, you know, it's very easy 

625
00:31:13,680 --> 00:31:16,560
to get an AI to churn through 
this code. 

626
00:31:16,760 --> 00:31:19,160
However, you know, one thing 
that I've observed happening is 

627
00:31:19,160 --> 00:31:21,720
not that AI will then say, oh, I
know what to do. 

628
00:31:21,760 --> 00:31:23,840
We'll do an X-ray off this wall 
and figure out whether there's 

629
00:31:23,840 --> 00:31:26,920
drywall in it or rather whether,
whether there's like electrical 

630
00:31:26,920 --> 00:31:29,320
wires in it. 
If anyone would just say this 

631
00:31:29,320 --> 00:31:31,120
looks like a drywall, let me 
hack into it. 

632
00:31:31,240 --> 00:31:33,360
Yeah. 
Yeah, but you know what? 

633
00:31:33,480 --> 00:31:36,120
So a Gentek AI is starting to 
solve this problem. 

634
00:31:36,440 --> 00:31:38,880
It's starting to be smarter and 
say, let me look at what's here,

635
00:31:38,880 --> 00:31:42,200
let me look at the design. 
The problem though is if you 

636
00:31:42,200 --> 00:31:45,080
always, you're submitting so 
much context, you're driving up 

637
00:31:45,080 --> 00:31:47,120
the cost of AI to the point 
where it's going to be cheaper 

638
00:31:47,120 --> 00:31:49,640
to do with humans. 
If every time you ask for a 

639
00:31:49,640 --> 00:31:52,160
simple change, it's got to 
rethink about the whole 

640
00:31:52,160 --> 00:31:55,600
architecture where you can pull 
that out and treat it as special

641
00:31:55,600 --> 00:31:58,160
knowledge. 
And in a way, and I believe that

642
00:31:58,160 --> 00:32:01,560
architecture as diagrams, as 
code does not need to be 

643
00:32:01,560 --> 00:32:04,360
vectorized, though you could 
play with that if, if higher 

644
00:32:04,360 --> 00:32:07,520
efficiencies are possible with 
it, it's already so schematized.

645
00:32:07,920 --> 00:32:11,680
But once you have that, that 
it's, it's much more immediately

646
00:32:11,680 --> 00:32:14,840
aware and it doesn't have to 
recall the same thing over and 

647
00:32:14,840 --> 00:32:16,600
over. 
I'll give you another example. 

648
00:32:16,600 --> 00:32:21,720
I was working with an AI tool, a
large language model chat with a

649
00:32:21,920 --> 00:32:26,040
spreadsheet, and I said, please 
create a, please create a pie 

650
00:32:26,040 --> 00:32:29,520
chart over this column of 
information that has a number of

651
00:32:29,520 --> 00:32:31,400
instances of certain things or 
two columns. 

652
00:32:31,840 --> 00:32:33,480
And it came back with partial 
pies. 

653
00:32:33,960 --> 00:32:37,640
So pie chart by definition is 
wall 100% of the instances I 

654
00:32:37,640 --> 00:32:38,920
give you. 
And so it should always be a 

655
00:32:38,920 --> 00:32:43,560
full circle with 100%. 
And it made me realize, OK, 

656
00:32:43,560 --> 00:32:46,120
humans learn how to do pie 
charts when they're, I don't 

657
00:32:46,120 --> 00:32:49,880
know, 9-10. 
And when do they forget? 

658
00:32:50,000 --> 00:32:52,000
When do they forget what 1 is? 
And when do they forget? 

659
00:32:52,000 --> 00:32:56,000
When it applies like never, like
many years later. 

660
00:32:56,240 --> 00:33:00,800
And so with AI, if you rely too 
much on non condensed or non 

661
00:33:00,800 --> 00:33:03,600
optimized content. 
So if you don't do like GitLab, 

662
00:33:03,600 --> 00:33:07,120
we have knowledge graph, which 
is going to vectorize your code 

663
00:33:07,120 --> 00:33:09,280
so that it's much more 
navigable, much more 

664
00:33:09,280 --> 00:33:12,080
efficiently. 
If you don't do that, you're not

665
00:33:12,080 --> 00:33:14,400
emulating the human mind. 
And it's like having to teach a 

666
00:33:14,600 --> 00:33:16,680
new person off the street. 
Every time you ask for 

667
00:33:16,680 --> 00:33:18,960
something, you get a new person 
off the street, try to get them 

668
00:33:18,960 --> 00:33:21,240
to understand your software now,
give you an opinion. 

669
00:33:21,480 --> 00:33:23,680
And it's like that's going to be
super expensive. 

670
00:33:23,840 --> 00:33:26,280
You know, once, once you're 
paying the full burden of your 

671
00:33:26,280 --> 00:33:29,520
AI costs of inference costs or 
even model training costs. 

672
00:33:29,520 --> 00:33:30,120
So. 
Yeah. 

673
00:33:30,440 --> 00:33:33,240
And in fact, yeah. 
And in fact, at least you know, 

674
00:33:33,360 --> 00:33:37,160
the models that I've been able 
to use at present, they have, 

675
00:33:37,360 --> 00:33:40,240
you know, they are much better 
at understanding small scope 

676
00:33:40,240 --> 00:33:41,840
than I am. 
They are much quicker and they 

677
00:33:41,840 --> 00:33:45,480
are probably also less less easy
and less prone to making 

678
00:33:45,480 --> 00:33:47,280
mistakes. 
But when it comes to the full 

679
00:33:47,280 --> 00:33:50,320
scope, they are just utterly out
of the depth because they're 

680
00:33:50,320 --> 00:33:52,600
looking at the code through 
essentially like a roll of 

681
00:33:52,600 --> 00:33:57,120
toilet paper and. 
I saw, I saw an AI researcher at

682
00:33:57,120 --> 00:33:59,080
at a conference, I saw an AI 
researcher and they put up a 

683
00:33:59,080 --> 00:34:03,520
diagram and they said these 169 
boxes are roughly the functions 

684
00:34:03,520 --> 00:34:06,360
that scientists and 
psychologists agree the human 

685
00:34:06,360 --> 00:34:08,440
mind has. 
Next slide. 

686
00:34:08,719 --> 00:34:12,040
These are the four that AI 
emulates and it doesn't do a 

687
00:34:12,040 --> 00:34:14,800
very good job compared to what 
you do. 

688
00:34:15,040 --> 00:34:18,639
And so one of those things, I 
think is these very long running

689
00:34:18,760 --> 00:34:21,760
selected contexts, like what is 
a pie chart? 

690
00:34:22,280 --> 00:34:26,920
Why do you never have to be told
when it applies what it looks 

691
00:34:26,920 --> 00:34:29,679
like? 
You know, you, you recognize 

692
00:34:29,679 --> 00:34:31,360
these immediately you go, that's
wrong. 

693
00:34:31,719 --> 00:34:33,840
And and so we have this 
capability as humans. 

694
00:34:33,840 --> 00:34:36,760
I think that we have these long 
running context, maybe hundreds 

695
00:34:36,760 --> 00:34:39,639
of them that selectively pop in 
when they need to, perfectly 

696
00:34:39,639 --> 00:34:42,080
when they need to. 
And we use as much energy as 

697
00:34:42,080 --> 00:34:45,600
whether they say like a, a light
bulb, a dim light bulb to do 

698
00:34:45,600 --> 00:34:47,440
this. 
And so I think it's going to. 

699
00:34:47,440 --> 00:34:55,320
Be dim one in my case. 
Yeah, so I I think I, I think 

700
00:34:55,320 --> 00:34:56,960
it's, it's, it's, it's going to 
take. 

701
00:34:57,400 --> 00:34:59,280
So, So what you said too about. 
Oh yeah. 

702
00:34:59,280 --> 00:35:01,880
When I need a function, it's 
like I can't remember all those 

703
00:35:01,880 --> 00:35:04,640
regexes or get ones that are 
deep. 

704
00:35:04,680 --> 00:35:07,880
Oh my gosh, two hours. 
And I say, hey, I need a regex. 

705
00:35:07,880 --> 00:35:10,640
It does this bang and a lot and 
it's still wrong. 

706
00:35:10,640 --> 00:35:13,400
Like it's, it's too greedy, but 
then you feed it the error 

707
00:35:13,400 --> 00:35:16,080
output into in and again, and it
it gets it right. 

708
00:35:16,080 --> 00:35:18,200
Yeah, that kind of stuff, 
dramatic speed up. 

709
00:35:18,200 --> 00:35:20,600
But as soon as the context gets 
really broad, like you say, 

710
00:35:20,600 --> 00:35:22,200
that's it. 
Yeah. 

711
00:35:22,200 --> 00:35:23,840
It's a really insightful 
observation. 

712
00:35:24,560 --> 00:35:27,200
Yeah, And and I and I think it's
a difficult problem because we 

713
00:35:27,200 --> 00:35:30,160
can't solve it by, as you said, 
by just throwing more computer 

714
00:35:30,160 --> 00:35:32,880
at it and say, well, let's just 
broaden the scope the the the 

715
00:35:32,960 --> 00:35:36,120
the context that doesn't work. 
We just exhaust it anyway. 

716
00:35:36,120 --> 00:35:41,000
So I think this is going to be 
part of the tooling that is 

717
00:35:41,000 --> 00:35:42,880
going to evolve that. 
That's my prediction that over 

718
00:35:42,880 --> 00:35:45,520
the next couple of years, the 
real revolutions won't come from

719
00:35:45,520 --> 00:35:47,760
the models themselves, but 
rather from the tooling around 

720
00:35:47,760 --> 00:35:49,640
it. 
Like what you're building at, at

721
00:35:49,640 --> 00:35:51,880
GitLab, for instance, you know, 
trying to figure out a, a 

722
00:35:52,760 --> 00:35:56,080
vectorized model or something 
like that and sort of make it 

723
00:35:56,240 --> 00:35:59,040
make it, you know, palatable for
an LLM. 

724
00:35:59,040 --> 00:36:02,280
And yeah. 
I think models right now very 

725
00:36:02,280 --> 00:36:05,400
much are reflecting the way that
human expertise is built on a 

726
00:36:05,400 --> 00:36:07,560
team. 
You tend to have an experienced 

727
00:36:07,560 --> 00:36:10,560
expert who's been around the 
block and a lot of patterns and 

728
00:36:10,560 --> 00:36:14,040
they help folks who have a more 
narrow scope at and are super 

729
00:36:14,040 --> 00:36:20,080
sharp at putting together that. 
And so until we see until we see

730
00:36:20,080 --> 00:36:24,600
the the abilities evolve to a 
place where we can really have 

731
00:36:24,600 --> 00:36:27,880
that all those contexts held 
similar to human, we can still 

732
00:36:27,880 --> 00:36:31,600
get tons of value out of AII, 
use it all the time, every day. 

733
00:36:31,600 --> 00:36:35,200
I do believe anyone who has, you
know, a career in coding or 

734
00:36:35,200 --> 00:36:38,200
systems engineering needs to be 
engaging it as soon as possible.

735
00:36:38,520 --> 00:36:40,960
But the concept that it's going 
to replace an experienced 

736
00:36:40,960 --> 00:36:44,640
engineer overnight is the part 
that is sometimes overplayed 

737
00:36:44,640 --> 00:36:47,480
quite a bit. 
I think so, but but maybe this 

738
00:36:47,480 --> 00:36:50,720
is a good opportunity to sort of
pull it back to what can we do 

739
00:36:50,720 --> 00:36:54,600
now, especially in terms of of 
systems engineering, like what 

740
00:36:54,600 --> 00:37:00,360
are powerful ways to to really 
help us in real world systems? 

741
00:37:00,760 --> 00:37:03,280
Yeah, I'm, you know, as 
fantastic as the flashlight 

742
00:37:03,280 --> 00:37:08,280
example isn't as instructive as 
it is, but we use sicimel for 

743
00:37:08,280 --> 00:37:10,840
the for the big scary stuff, 
right. 

744
00:37:10,920 --> 00:37:12,760
How? 
How far can we get there? 

745
00:37:12,760 --> 00:37:15,440
It can do more than just dump 
out a website from scratch. 

746
00:37:15,440 --> 00:37:20,200
What? 
Yeah, I mean, a couple of 

747
00:37:20,200 --> 00:37:21,960
things. 
I, I've seen some really cool 

748
00:37:21,960 --> 00:37:26,840
demos by leaders in this space. 
And one thing is, you know, in 

749
00:37:26,840 --> 00:37:29,760
systems engineering, there's a 
lot of querying of is the model 

750
00:37:29,760 --> 00:37:31,400
complete? 
Are all the requirements here? 

751
00:37:31,400 --> 00:37:34,120
Are there, are there system 
components that fulfill every 

752
00:37:34,120 --> 00:37:37,720
stated requirement? 
And those kind of queries are, 

753
00:37:38,080 --> 00:37:42,000
they're a little easier. 
But another thing to do is 

754
00:37:42,000 --> 00:37:47,280
instead of having the, you know,
the, the inexactness of AI 

755
00:37:47,280 --> 00:37:51,000
directly analyzing things for 
you, you can actually have it 

756
00:37:51,000 --> 00:37:55,560
create a, a much more structured
code to do that. 

757
00:37:55,560 --> 00:37:59,200
So if you asked AI, please 
create code for me that will 

758
00:37:59,200 --> 00:38:01,240
analyze if my requirements are 
complete. 

759
00:38:01,640 --> 00:38:04,240
Now you have, you know, 
something that's not so 

760
00:38:04,240 --> 00:38:06,680
indirect. 
It's not trying to understand 

761
00:38:06,680 --> 00:38:09,520
what a requirement is, trying to
understand what elements in the 

762
00:38:09,520 --> 00:38:11,680
diagram. 
Now you have Python code that is

763
00:38:11,920 --> 00:38:15,280
traversing a systems engineering
model and you can clearly see 

764
00:38:15,280 --> 00:38:17,560
that it's missing something and 
you can keep updating it. 

765
00:38:17,560 --> 00:38:22,040
So that's that's one way to do 
to go from, you know, to a more 

766
00:38:22,040 --> 00:38:25,400
deterministic approach is to 
actually get it to create code 

767
00:38:25,400 --> 00:38:28,080
to do the job for you. 
And then that code, you save a 

768
00:38:28,080 --> 00:38:31,680
ton of time trying to write 
maybe custom code for a report 

769
00:38:31,680 --> 00:38:34,840
to do something like that. 
I think also AI is very good at 

770
00:38:35,040 --> 00:38:39,240
summarizing existing things 
versus coming up with net new 

771
00:38:39,240 --> 00:38:42,080
ideas as far as systems 
engineering goes. 

772
00:38:42,720 --> 00:38:46,280
And then also one thing that I 
see people constantly do, which 

773
00:38:46,280 --> 00:38:50,720
is really weird is they'll ask 
AIA question that if you asked 5

774
00:38:50,720 --> 00:38:53,600
human experts, you'd get 7 
opinions and they would they 

775
00:38:53,640 --> 00:38:55,200
would ask a lot of qualifying 
questions. 

776
00:38:55,400 --> 00:38:58,200
They'll ask AI, then they'll 
assume what comes out is the 

777
00:38:58,200 --> 00:39:00,560
Uber. 
If if you ask 7 humans, do they 

778
00:39:00,560 --> 00:39:03,360
assume that what comes out is 
the aggregate of what 7 humans 

779
00:39:03,360 --> 00:39:04,680
would say? 
And it's like, no, it's just 

780
00:39:04,840 --> 00:39:08,640
another non deterministic 
opinion just like you expect 

781
00:39:08,640 --> 00:39:10,640
from human experts. 
So when you ask it those kind of

782
00:39:11,040 --> 00:39:14,680
expertise oriented questions 
you're getting, if you asked a 

783
00:39:14,680 --> 00:39:17,280
human on the street or you asked
even 3 human experts, you would 

784
00:39:17,280 --> 00:39:19,720
take that information and go, 
that person might be missing 

785
00:39:19,720 --> 00:39:22,120
this part of the perspective 
that I have from our particular 

786
00:39:22,120 --> 00:39:23,920
work. 
And so that's another thing is 

787
00:39:23,920 --> 00:39:28,360
you can't expect AI to have like
deterministic wisdom. 

788
00:39:28,400 --> 00:39:30,200
That wisdom is not 
deterministic. 

789
00:39:30,200 --> 00:39:32,520
It is by nature opinion 
oriented. 

790
00:39:32,520 --> 00:39:35,520
And it's OK if a is opinion is 
one of many. 

791
00:39:35,640 --> 00:39:38,560
It can still be valuable. 
Those expert opinions are still 

792
00:39:38,560 --> 00:39:39,960
valuable. 
It's just that you don't take 

793
00:39:39,960 --> 00:39:41,320
them. 
And just like, oh, OK, that's 

794
00:39:41,480 --> 00:39:43,640
absolutely the perfect 
deterministic truth. 

795
00:39:43,640 --> 00:39:44,640
Apply it. 
Right. 

796
00:39:45,160 --> 00:39:47,080
So yeah. 
Yeah, that's, that's a good 

797
00:39:47,080 --> 00:39:48,200
point. 
And it's particularly 

798
00:39:48,200 --> 00:39:53,200
treacherous I guess because AI 
literally cannot know how solid 

799
00:39:53,200 --> 00:39:55,640
its knowledge is. 
It it has no concept of like 

800
00:39:55,640 --> 00:39:59,480
vagueness or uncertainty or I 
don't know. 

801
00:39:59,960 --> 00:40:02,560
So whatever it says, it will say
with this annoying voice of 

802
00:40:02,560 --> 00:40:06,680
authority and. 
That gives you no, no way of 

803
00:40:06,680 --> 00:40:08,520
gauging how how correct the 
answer is. 

804
00:40:08,520 --> 00:40:10,160
You know, maybe, maybe it's an 
excellent answer. 

805
00:40:10,160 --> 00:40:13,520
And yeah, human experts would 
agree. 

806
00:40:13,840 --> 00:40:16,480
But at least if you ask a human 
expert, do you know about this? 

807
00:40:16,480 --> 00:40:18,480
And they'll say, yeah, I'm, I'm 
not certain. 

808
00:40:18,560 --> 00:40:20,960
Like you should go somebody ask 
somebody else. 

809
00:40:21,200 --> 00:40:23,960
Oh my, my favorite, my favorite 
is the IT. 

810
00:40:24,040 --> 00:40:26,360
It dumps out a thing. 
It very, very firmly and 

811
00:40:26,360 --> 00:40:29,120
confidently dumps out some of 
the code and then you and then 

812
00:40:29,120 --> 00:40:31,800
I, and then you say like, wait, 
so this doesn't work. 

813
00:40:31,880 --> 00:40:33,360
You're right, this doesn't work 
at all. 

814
00:40:34,160 --> 00:40:36,080
I know. 
Or or or. 

815
00:40:36,080 --> 00:40:38,400
My favorite is. 
It dumps out a whole bunch of 

816
00:40:38,400 --> 00:40:41,600
code and it works. 
And I'm like, I, I say, this is 

817
00:40:41,600 --> 00:40:44,000
way too complicated. 
This should be doable in about 

818
00:40:44,000 --> 00:40:46,760
25% of the lines. 
It's like, oh, OK. 

819
00:40:47,320 --> 00:40:49,840
And then it creates the code 
expected to the first time it 

820
00:40:49,840 --> 00:40:51,600
creates the code of an 
experienced person. 

821
00:40:51,880 --> 00:40:54,680
And, and so it, it, it 
consolidated things where it can

822
00:40:54,680 --> 00:40:59,000
be very verbose, like like a, a 
new person in a career, right? 

823
00:40:59,000 --> 00:41:01,960
They, they tend to be more 
verbose in textbook examples. 

824
00:41:01,960 --> 00:41:05,520
But if you force it and you say,
look, that's way too much code. 

825
00:41:05,520 --> 00:41:09,640
I need you to condense it by 30%
or 60% and and not lose any 

826
00:41:09,640 --> 00:41:12,000
functionality and it'll do it. 
It looks like code that you 

827
00:41:12,000 --> 00:41:13,640
would have written. 
That's one of my favourites. 

828
00:41:13,800 --> 00:41:17,640
I I just I I almost wanted to be
like, oh, I didn't think of 

829
00:41:17,640 --> 00:41:19,280
that. 
Like instead of just agreeing 

830
00:41:19,280 --> 00:41:21,960
with me automatically or like, 
you know, it, it it's never 

831
00:41:21,960 --> 00:41:23,480
self. 
How is it? 

832
00:41:23,840 --> 00:41:27,000
Well, it self duplicating. 
It's like, oh, I didn't think of

833
00:41:27,000 --> 00:41:28,760
that. 
No, you it just says you're 

834
00:41:28,760 --> 00:41:33,040
right. 
I'm an idiot being sycophantic I

835
00:41:33,040 --> 00:41:35,680
think, but I've noticed with as 
as. 

836
00:41:36,240 --> 00:41:39,520
Our products have gone more 
agentic and all the other LMS 

837
00:41:39,520 --> 00:41:41,400
have gone more agentic. 
It's better at that. 

838
00:41:41,400 --> 00:41:45,440
It, it, it does. 
It does because Agentic doesn't 

839
00:41:45,440 --> 00:41:49,280
just simply generate. 
I, I always say we, I, we, I 

840
00:41:49,280 --> 00:41:50,600
have a colleague who critiqued 
it. 

841
00:41:50,600 --> 00:41:53,600
It will never say, oh, what you 
got is good enough. 

842
00:41:53,720 --> 00:41:56,280
But now with Agentic, it is 
getting better at that. 

843
00:41:56,640 --> 00:41:59,120
But it's also getting more 
expensive than a single, you 

844
00:41:59,120 --> 00:42:01,800
know, single query to a, a, a 
chat. 

845
00:42:02,920 --> 00:42:05,880
Yeah. 
OK, so let's, let's talk a 

846
00:42:05,880 --> 00:42:08,800
little bit about kind of 
specifically, like we'll give 

847
00:42:08,800 --> 00:42:10,920
you a little soapbox here and 
talk a little bit about what Git

848
00:42:10,920 --> 00:42:13,320
Labs doing specifically to kind 
of address some of the things we

849
00:42:13,320 --> 00:42:15,160
talked about today. 
You know, you, you're very 

850
00:42:15,160 --> 00:42:18,240
involved and very excited and 
passionate about the work you're

851
00:42:18,240 --> 00:42:20,000
doing to Git Labs. 
So let's let's talk a little bit

852
00:42:20,000 --> 00:42:22,920
about like what Git Labs doing 
to kind of address some of the 

853
00:42:22,920 --> 00:42:25,200
stuff we talked about. 
Sure, Yeah. 

854
00:42:25,200 --> 00:42:27,680
And some of these things are 
things that are intersections 

855
00:42:27,680 --> 00:42:30,960
between what Git Lab is building
his features and the embedded 

856
00:42:30,960 --> 00:42:35,320
space. 
So in embedded we see two big 

857
00:42:35,320 --> 00:42:38,440
themes. 
One is edge AI or embedded AI 

858
00:42:38,440 --> 00:42:40,480
into my product. 
So the engineer has to think 

859
00:42:40,480 --> 00:42:42,080
about how do I prepare a 
language model. 

860
00:42:42,080 --> 00:42:45,960
Machine vision is obviously the 
the big example embedded and get

861
00:42:45,960 --> 00:42:48,240
it to run really efficiently. 
So it runs at the edge. 

862
00:42:48,800 --> 00:42:53,200
Then there is code generation or
sort of like developers doing 

863
00:42:53,200 --> 00:42:57,880
their their embedded product 
code and having AI suggest to 

864
00:42:57,880 --> 00:42:59,480
it. 
But one of the interesting 

865
00:42:59,480 --> 00:43:02,360
things is GitLab has taken a 
platform approach to AI. 

866
00:43:02,360 --> 00:43:05,480
So we didn't just focus on code 
Gen. we put it all through the 

867
00:43:05,480 --> 00:43:07,880
platform. 
And so one thing I've realized 

868
00:43:07,880 --> 00:43:12,080
is embedded engineers are trying
to still step up to agile DevOps

869
00:43:12,440 --> 00:43:16,080
and into the people, process and
technology of DevOps. 

870
00:43:16,640 --> 00:43:20,160
And it's cognitive load for them
that isn't informing the 

871
00:43:20,160 --> 00:43:21,560
product. 
It's helping the product get 

872
00:43:21,560 --> 00:43:24,120
done quicker. 
But it's an embedded engineer 

873
00:43:24,120 --> 00:43:27,320
that is really great at creating
awesome customer experiences. 

874
00:43:27,320 --> 00:43:32,760
On edge AI is then distracted by
50% trying to get into dev OPS. 

875
00:43:32,760 --> 00:43:34,560
Then you take a hit, right? 
Yeah. 

876
00:43:34,560 --> 00:43:38,360
So with AI throughout a 
platform, you can ask it to 

877
00:43:38,360 --> 00:43:41,400
explain things that you don't 
have to be an expert in. 

878
00:43:41,400 --> 00:43:44,800
You can be just in time expert 
with just enough information at 

879
00:43:44,800 --> 00:43:46,560
just the time you encounter the 
new thing. 

880
00:43:47,000 --> 00:43:49,640
I'll give you an example. 
I have created a Git lab CI 

881
00:43:49,640 --> 00:43:52,680
component that add that manages 
SEM versions for you. 

882
00:43:52,800 --> 00:43:54,840
It's wrapped around something 
called Git version. 

883
00:43:55,040 --> 00:43:58,440
Super flexible ability to 
generate unique SEM versions 

884
00:43:58,440 --> 00:44:02,000
across an entire busy repository
that might end up being the 

885
00:44:02,000 --> 00:44:05,760
production one. 
Very configurable, but it's just

886
00:44:05,760 --> 00:44:08,080
it looks like magic in a 
pipeline because you include A1 

887
00:44:08,080 --> 00:44:10,960
line include and all of a sudden
the first job in the pipeline 

888
00:44:10,960 --> 00:44:13,640
publishes a SEM version to the 
whole pipeline and you can 

889
00:44:13,640 --> 00:44:16,600
encode it into anything 
packages, firmware, whatever you

890
00:44:16,600 --> 00:44:18,680
want. 
Well, for them it's like, what's

891
00:44:18,680 --> 00:44:21,320
this magic job doing? 
You know, and and I don't 

892
00:44:21,320 --> 00:44:24,760
understand how it's pushing 
variables into the rest of the 

893
00:44:24,760 --> 00:44:26,400
pipeline. 
They can go and get lab and they

894
00:44:26,400 --> 00:44:29,040
can say explain even just from 
the log. 

895
00:44:29,040 --> 00:44:30,640
They don't even. 
Have to explain. 

896
00:44:30,800 --> 00:44:35,680
Explain this what the code of 
this successful CI log is doing 

897
00:44:36,000 --> 00:44:38,640
and it explains it's wrapping 
something called git version. 

898
00:44:38,840 --> 00:44:42,520
It is determining the next most 
likely version for you. 

899
00:44:42,760 --> 00:44:45,640
It's operating against a very 
simple default, but you can 

900
00:44:45,800 --> 00:44:49,040
figure it to be crazy detailed 
about how you want your SEM 

901
00:44:49,040 --> 00:44:52,120
versions to be determined on 
feature branches and final 

902
00:44:52,120 --> 00:44:56,160
branches and release branches, 
and so that developer 

903
00:44:57,000 --> 00:44:59,920
demystifies it for them. 
But they didn't have to go learn

904
00:44:59,920 --> 00:45:03,960
how to find the CI code for the 
component, read it, understand 

905
00:45:03,960 --> 00:45:07,080
GitLab CI in order to understand
what's going on. 

906
00:45:07,400 --> 00:45:09,880
And then there's a few in, in 
YAML, of course, there's a lot 

907
00:45:09,880 --> 00:45:11,880
of abstraction. 
So there's abstraction in 

908
00:45:11,880 --> 00:45:15,960
Gitlabs that if I create a a dot
env artifact, it gets imported 

909
00:45:15,960 --> 00:45:18,560
as a pipeline variable. 
That's very hard to see as a 

910
00:45:18,560 --> 00:45:22,160
first time reader of GitLab CI 
that, oh, it outputted that that

911
00:45:22,160 --> 00:45:24,680
data into an env file. 
And then when I consumed it, it 

912
00:45:24,680 --> 00:45:27,120
became a pipeline variable. 
It looks like it's once again a 

913
00:45:27,560 --> 00:45:30,360
abstraction magic. 
And so the, the embedded 

914
00:45:30,360 --> 00:45:31,920
developer never has to know any 
of that stuff. 

915
00:45:31,920 --> 00:45:35,720
They just asked to explain. 
You can do that for Mrs. issues.

916
00:45:36,120 --> 00:45:39,760
Once you're inside of code, you 
can ask it explain the code and 

917
00:45:39,760 --> 00:45:43,240
then CI failures where you don't
know whether did I actually 

918
00:45:43,240 --> 00:45:47,440
create a code change that caused
the compiler to choke or am I 

919
00:45:47,440 --> 00:45:50,200
doing something new in the code 
that's valid but our CI 

920
00:45:50,200 --> 00:45:53,560
capability is not taking an 
extra parameter it needs or I 

921
00:45:53,560 --> 00:45:57,200
gave it a wrong parameter so now
you can quickly disambiguate Is 

922
00:45:57,200 --> 00:45:59,200
it my code? 
Or is it the runner just 

923
00:45:59,200 --> 00:46:00,520
crashed? 
Did the runner just crash 

924
00:46:00,520 --> 00:46:03,280
because of, I don't know, Sonic 
Boom somewhere nearby? 

925
00:46:03,280 --> 00:46:05,960
Like right? 
Just rerun the job, yeah. 

926
00:46:06,920 --> 00:46:10,040
I think this is I think the 
avoidance of cognitive load of 

927
00:46:10,040 --> 00:46:14,560
onboarding Agile and DevOps into
embedded is substantial with the

928
00:46:14,560 --> 00:46:17,280
fact that we embedded it in the 
platform and we have this 

929
00:46:17,280 --> 00:46:19,120
explain capability just that 
alone. 

930
00:46:19,120 --> 00:46:22,640
If a team doesn't have any edge 
AI and they are in a situation 

931
00:46:22,640 --> 00:46:25,440
where they don't want to have 
non deterministic code 

932
00:46:25,440 --> 00:46:29,040
generation, they're like not 
that they can still benefit and 

933
00:46:29,040 --> 00:46:31,840
step up to agile and DevOps 
because AI is built right into 

934
00:46:31,840 --> 00:46:34,280
the platform. 
So that's a huge one. 

935
00:46:34,440 --> 00:46:38,160
Another huge 1 is a lot of folks
don't know that they can tailor 

936
00:46:38,480 --> 00:46:41,960
the GitLab agents at a 
repository or project level. 

937
00:46:41,960 --> 00:46:46,080
So we have dot GitLab slash duo 
chat rules is like a system 

938
00:46:46,080 --> 00:46:48,240
prompt for just that particular 
project. 

939
00:46:48,480 --> 00:46:53,000
And then Mr. rules dot yaml is 
the rules that the GitLab when 

940
00:46:53,000 --> 00:46:56,280
you add GitLab Duo as an Mr. 
reviewer, it will apply and an 

941
00:46:56,280 --> 00:47:00,400
MCP Jason is MCP servers. 
So I've I've created a, a 

942
00:47:00,600 --> 00:47:05,160
particular configuration that's 
for embedded C built with make 

943
00:47:05,160 --> 00:47:10,320
and Cmake that is running on ARM
on Metal that is. 

944
00:47:10,320 --> 00:47:14,400
And then I also inject all the 
GitLab CI pointers so that as an

945
00:47:14,400 --> 00:47:16,920
embedded engineer, you don't 
have to know GitLab CI. 

946
00:47:16,920 --> 00:47:18,920
It will be able to tell you, 
hey, you changed that code, but 

947
00:47:18,920 --> 00:47:20,880
that implies ACI change over 
here. 

948
00:47:21,400 --> 00:47:25,120
And then the Mr. rules. 
So that is during code Gen. the 

949
00:47:25,120 --> 00:47:28,200
Mr. rules, the code generator 
can't read the Mr. rules because

950
00:47:28,200 --> 00:47:32,040
you want a proper separation of 
agents from generation and 

951
00:47:32,040 --> 00:47:34,240
verification. 
Mr. rules are only readable by 

952
00:47:34,240 --> 00:47:37,480
the Mr. when you add Duo as an 
Mr. agent and so that it can 

953
00:47:37,480 --> 00:47:40,840
validate the work. 
And then one of the really cool 

954
00:47:40,840 --> 00:47:43,800
things is once I have a working 
set of these for one platform, I

955
00:47:43,800 --> 00:47:46,440
can use Duo to make them for 
another platform. 

956
00:47:46,440 --> 00:47:49,880
So let's say now I want Zephyr 
running on Risk V on the 

957
00:47:50,240 --> 00:47:53,920
Raspberry Pi Pico 2, which has 
RISC 5 cores. 

958
00:47:54,320 --> 00:47:57,920
I could say, hey, let's redo 
these dual configuration files. 

959
00:47:57,920 --> 00:48:00,560
Give me the best shot you have 
at doing the exact same thing 

960
00:48:00,560 --> 00:48:03,480
for those platforms. 
And then I can embed that into 

961
00:48:03,480 --> 00:48:08,160
that repository and go forward. 
So this capability really allows

962
00:48:08,160 --> 00:48:12,000
you to inject some context level
expertise. 

963
00:48:12,000 --> 00:48:15,520
It's better to have MCP servers.
It's the providers of any of 

964
00:48:15,520 --> 00:48:18,880
that technology have them, but 
if they don't, you can give it a

965
00:48:18,880 --> 00:48:22,040
lot of guidance through this 
prompt and these Mr. rules and 

966
00:48:22,040 --> 00:48:26,200
the and the MCPJ son file. 
So this is I'm starting inside 

967
00:48:26,200 --> 00:48:28,920
of the GitLab accelerates 
embedded top level group at 

968
00:48:28,920 --> 00:48:31,200
gitlab.com. 
GitLab Dash accelerates Dash 

969
00:48:31,200 --> 00:48:33,560
embedded. 
I've started a place where I'm 

970
00:48:33,560 --> 00:48:36,720
going to host these snippets for
each stack so that people can 

971
00:48:36,720 --> 00:48:39,200
start going in there. 
And if they the stack I just 

972
00:48:39,200 --> 00:48:41,320
mentioned, they can just grab 
that and merge it in with their 

973
00:48:41,320 --> 00:48:45,200
files, or they can go in and 
start asking Duo to help them 

974
00:48:45,200 --> 00:48:47,840
make a set of files for their 
actual platform stack for 

975
00:48:47,840 --> 00:48:50,520
embedded. 
So that's, that's some of the 

976
00:48:51,040 --> 00:48:55,200
really cool things we have where
you wouldn't expect GitLab to 

977
00:48:55,200 --> 00:48:58,440
start to be able to be embedded 
oriented that quickly. 

978
00:48:58,440 --> 00:49:00,520
But because of these 
configuration capabilities, we 

979
00:49:00,520 --> 00:49:02,240
can. 
And then we also have something 

980
00:49:02,240 --> 00:49:05,480
called Knowledge Graph, which 
will allow you to read and sort 

981
00:49:05,480 --> 00:49:10,640
of vectorize as many cross 
projects as you want and then 

982
00:49:10,640 --> 00:49:12,800
have an MCP server where you 
interact with that. 

983
00:49:12,800 --> 00:49:16,200
So you can learn that, hey, 
someone in another team is using

984
00:49:16,200 --> 00:49:20,680
the same MCU as me, did some 
very similar code and I might as

985
00:49:20,680 --> 00:49:24,520
well comply with that versus a 
generic example, because it's 

986
00:49:24,520 --> 00:49:28,320
probably more compliant with how
we code here and, and it's gone 

987
00:49:28,320 --> 00:49:30,480
through some of our validations 
and verifications. 

988
00:49:30,480 --> 00:49:33,560
And so you can give awareness to
cross your code base with with 

989
00:49:33,560 --> 00:49:35,160
Knowledge Graph. 
Yeah. 

990
00:49:35,160 --> 00:49:37,000
So those are some of the just 
some of the things that we're 

991
00:49:37,000 --> 00:49:39,000
doing. 
We've also got embedded DevOps 

992
00:49:39,000 --> 00:49:40,680
workshop. 
We've got software in the loop 

993
00:49:40,680 --> 00:49:42,560
working, we've got hardware in 
the loop working. 

994
00:49:42,920 --> 00:49:46,320
We've got a special capability 
called environments and they 

995
00:49:46,320 --> 00:49:48,640
have a life cycle that lives 
with the merge request. 

996
00:49:48,640 --> 00:49:52,040
So some of these complicated 
virtualization technologies like

997
00:49:52,040 --> 00:49:56,280
Mathworks models or Synopsis, 
BCS you can encapsulate those so

998
00:49:56,280 --> 00:49:58,840
that when you start a branch in 
a merge request, it sets that 

999
00:49:58,840 --> 00:50:01,400
all up for you. 
But then it also auto deletes it

1000
00:50:01,600 --> 00:50:03,920
at the end. 
One of the places where we're 

1001
00:50:03,920 --> 00:50:07,600
going to start repeating a cycle
from cloud is where we set up 

1002
00:50:07,600 --> 00:50:09,840
these. 
We get developers to be allowed 

1003
00:50:09,840 --> 00:50:13,400
to deploy environments, but we 
don't close the loop with a 

1004
00:50:13,400 --> 00:50:16,880
managed life cycle. 
And I worked at one organization

1005
00:50:17,320 --> 00:50:20,720
where we deployed the ability 
for developers to freely set up 

1006
00:50:20,720 --> 00:50:23,600
environments and we never closed
the loop on when can we delete 

1007
00:50:23,600 --> 00:50:28,320
it and make it deleted. 
And within three years, the pre 

1008
00:50:28,320 --> 00:50:31,600
production development 
environments were costing US10X 

1009
00:50:31,600 --> 00:50:36,560
what production cost of. 
And so I, I feel like this is 

1010
00:50:36,560 --> 00:50:38,120
going to repeat and embedded 
because you're like, oh, wow, 

1011
00:50:38,200 --> 00:50:39,800
virtualized environments, It's 
so cool. 

1012
00:50:39,960 --> 00:50:43,600
But if you don't clear managed 
life cycle, if you don't say, 

1013
00:50:43,600 --> 00:50:46,520
hey, we've got to be sure we get
the right signals and we delete 

1014
00:50:46,520 --> 00:50:49,160
it at the right time and make it
easy for them to be created and 

1015
00:50:49,160 --> 00:50:50,800
deleted. 
Then you're going to get in the 

1016
00:50:50,800 --> 00:50:53,720
situation where someone's like, 
hey, our cloud bills like 10X 

1017
00:50:54,200 --> 00:50:56,160
what it was last year, What's 
going on? 

1018
00:50:56,160 --> 00:50:57,880
Yeah, no. 
Oh my gosh. 

1019
00:50:57,880 --> 00:50:59,680
Have you thought? 
It doesn't sound like you're 

1020
00:50:59,680 --> 00:51:00,960
very busy. 
Have you thought about getting 

1021
00:51:00,960 --> 00:51:06,240
some hobbies like? 
Yeah, yeah, I can occasionally 

1022
00:51:06,240 --> 00:51:07,880
get accused of not having enough
fun. 

1023
00:51:07,880 --> 00:51:13,360
Non-technical hobbies. 
Lifelong problem there. 

1024
00:51:13,480 --> 00:51:17,720
Yeah, no kidding. 
Right, But I think, uh, you 

1025
00:51:17,720 --> 00:51:20,200
know, this is, this is 
essentially this, this also of 

1026
00:51:20,200 --> 00:51:22,720
my, my Christmas shopping. 
I guess I I know what I'm what 

1027
00:51:22,720 --> 00:51:24,200
toys I'm going to have this 
year. 

1028
00:51:25,280 --> 00:51:28,160
There you go, it's just a matter
of you better provide a direct 

1029
00:51:28,160 --> 00:51:30,360
link because all your family 
members are not going to know 

1030
00:51:30,360 --> 00:51:34,320
the difference between Raspberry
pie pico 2 and 2 W very 

1031
00:51:34,320 --> 00:51:39,160
different like. 
Right, All right. 

1032
00:51:39,880 --> 00:51:42,280
No, this has been, this has been
really fantastic. 

1033
00:51:42,720 --> 00:51:46,000
Thank you so much, Darwin and I,
you know, deal deal listeners, 

1034
00:51:46,000 --> 00:51:51,000
we had a pre show conversation 
that was so fascinating that I, 

1035
00:51:51,600 --> 00:51:55,000
I feel this is not the last time
we've heard of, of, of Darwin. 

1036
00:51:56,680 --> 00:52:00,080
It'd be great to be back again. 
We're showing up at Embedded 

1037
00:52:00,080 --> 00:52:02,880
World both in Europe and 
America. 

1038
00:52:02,880 --> 00:52:05,160
So come find us at our booth. 
We have sessions. 

1039
00:52:05,160 --> 00:52:08,160
I actually have a four hour 
version of our Embedded DevOps 

1040
00:52:08,160 --> 00:52:09,720
workshop. 
We'll be at Embedded World 

1041
00:52:09,720 --> 00:52:13,760
Germany, so invite everyone to 
come out and connect with us and

1042
00:52:13,760 --> 00:52:16,400
Embedded, we have embedded 
workshop that's also self-paced,

1043
00:52:16,400 --> 00:52:19,640
so you can just start to learn 
what can be done with off your 

1044
00:52:19,640 --> 00:52:22,240
desk without, without being 
everything tethered to your desk

1045
00:52:22,240 --> 00:52:26,200
and so. 
And I, and I will say, you know,

1046
00:52:26,720 --> 00:52:31,480
I am, I am very, I'm very happy 
that they, they git git lab has 

1047
00:52:31,480 --> 00:52:34,720
invested what it has in the in 
embedded space specifically 

1048
00:52:34,720 --> 00:52:37,560
because there are other 
providers out there that that 

1049
00:52:37,560 --> 00:52:41,240
embedded is just, you know, 
it's, it's not a priority, let's

1050
00:52:41,240 --> 00:52:45,840
say, right. 
So, yeah. 

1051
00:52:47,160 --> 00:52:49,720
All right, thank you Darwin for 
coming and hanging out with us. 

1052
00:52:49,720 --> 00:52:52,360
It was very insightful and I 
really appreciate it and I had a

1053
00:52:52,360 --> 00:52:54,760
great time chatting with you so.
Yeah, likewise. 

1054
00:52:54,760 --> 00:52:56,160
Thanks for. 
Talking again soon. 

1055
00:52:56,600 --> 00:52:58,840
All right, This has been the 
Embedded AI Podcast. 

1056
00:52:58,920 --> 00:53:01,320
I'm Ryan Torvik. 
And I'm Luca and Jenny. 

1057
00:53:01,800 --> 00:53:03,800
And we'll see you next time. 
See ya. 

1058
00:53:06,600 --> 00:53:09,240
Hi, Luca here. 
I have a quick announcement. 

1059
00:53:09,560 --> 00:53:12,600
I've just launched one more new 
training platform, the Embedded 

1060
00:53:12,640 --> 00:53:15,560
AI Academy at Embedded AI dot 
Academy. 

1061
00:53:15,960 --> 00:53:18,520
It feels like up I've seen in 
the market training that 

1062
00:53:18,520 --> 00:53:21,480
approaches AI specifically from 
an embedded systems angle. 

1063
00:53:21,840 --> 00:53:23,920
If you're listening to this 
podcast, it should be right up 

1064
00:53:23,920 --> 00:53:27,800
your alley and you get 25% off 
any booking made through the end

1065
00:53:27,800 --> 00:53:33,240
of 2025 if you use the code 
Embedded AI Podcast 25 all in 

1066
00:53:33,240 --> 00:53:36,120
capital letters. 
Again, the website is at 

1067
00:53:36,320 --> 00:53:38,080
Embedded AI dot Academy.
