WEBVTT
1
00:00:04.639 --> 00:00:08.919
Hey folks, welcome back to another Ruby Rogues episode. This
2
00:00:08.960 --> 00:00:11.800
week on a panel, we have Valentino Stole and now
3
00:00:12.439 --> 00:00:15.640
I'm Charles Maxwood from Top End Devs. And yeah, we
4
00:00:15.640 --> 00:00:17.839
were talking before the show. We had our guest canceled
5
00:00:17.839 --> 00:00:19.960
on this last minute. So if you're trying to watch
6
00:00:20.000 --> 00:00:22.120
this on YouTube and you're like, you're not talking about
7
00:00:22.120 --> 00:00:27.719
solid cash, no we are not. We were chatting and
8
00:00:28.079 --> 00:00:29.359
just to give a little bit of context, and I
9
00:00:29.359 --> 00:00:32.840
explained this to Valentino before the show. You know, I've
10
00:00:32.880 --> 00:00:34.759
been using some of these AI tools that are out
11
00:00:34.759 --> 00:00:37.119
there for a while, but just kind of at a
12
00:00:37.159 --> 00:00:41.560
low level. And what I had essentially figured out a
13
00:00:41.600 --> 00:00:46.159
while back was that like co pilot will suggest snippets
14
00:00:46.159 --> 00:00:50.320
and stuff in visual studio code, which is handy, right
15
00:00:50.359 --> 00:00:53.039
because a lot of times it suggests stuff that it's like, yeah,
16
00:00:53.079 --> 00:00:55.799
that's what I want, and if I'm doing the same
17
00:00:56.119 --> 00:00:59.280
structure in a couple of places, it was really good
18
00:00:59.280 --> 00:01:02.039
at figuring that out right, It's like, oh, okay, same structure,
19
00:01:02.119 --> 00:01:08.000
different variables with But I'd also use like chat, GPT
20
00:01:08.239 --> 00:01:10.200
and some other tools for some of this stuff. And
21
00:01:10.239 --> 00:01:15.040
so one thing that I wound up doing was last night,
22
00:01:15.159 --> 00:01:19.400
I was working on adding a new audio player to
23
00:01:19.680 --> 00:01:23.040
the member area of top end Devs because I'm basically
24
00:01:23.040 --> 00:01:25.760
revamping it because it's it's not what I wanted, and
25
00:01:25.840 --> 00:01:29.480
I found I figured out how to get at least
26
00:01:29.840 --> 00:01:32.079
much more close to what I want. So I was
27
00:01:32.120 --> 00:01:34.000
putting that in there right so that it you know,
28
00:01:34.000 --> 00:01:35.640
it kind of floats at the bottom of the screen
29
00:01:35.719 --> 00:01:38.000
and does a bunch of stuff. And I'd already done
30
00:01:38.040 --> 00:01:40.480
all the styling for that, and so I was telling,
31
00:01:40.599 --> 00:01:42.280
you know, I was using it that basically as a
32
00:01:42.319 --> 00:01:44.079
look up. So it's like, hey, what are the audio
33
00:01:44.200 --> 00:01:47.640
APIs in the browser that I can use right to
34
00:01:48.760 --> 00:01:51.480
put a nice looking player in controls. And I was
35
00:01:51.519 --> 00:01:56.920
just kind of, you know, putting it together. And just
36
00:01:57.000 --> 00:02:00.439
on a whim, I had been listening to a and
37
00:02:00.439 --> 00:02:02.159
I can't remember which one it was. It was one
38
00:02:02.159 --> 00:02:06.120
of the AI podcasts that I've recently picked up, but
39
00:02:06.159 --> 00:02:08.960
they were talking about how they were using it to
40
00:02:09.039 --> 00:02:11.479
actually either generate code or get checks on their code,
41
00:02:11.479 --> 00:02:14.639
and I was like, I wonder if I can just
42
00:02:14.680 --> 00:02:17.680
tell it to write me an audio player right, like
43
00:02:17.840 --> 00:02:19.800
just boom. I want an audio player that I can
44
00:02:19.800 --> 00:02:23.000
put in my browser. And so I tell it that,
45
00:02:23.120 --> 00:02:27.120
and it it writes one right, and I'm like, okay, well,
46
00:02:27.199 --> 00:02:29.800
let's see how good this is. So I turn around, right,
47
00:02:29.840 --> 00:02:32.479
because in chat GPT you can tell it to refine
48
00:02:32.840 --> 00:02:34.879
the answer, right, So I tell it, okay, well, I'm
49
00:02:34.919 --> 00:02:40.039
using stimulus. I want the play and pause button to
50
00:02:40.039 --> 00:02:42.960
toggle to play or pause when I hit play or pause,
51
00:02:45.280 --> 00:02:47.520
you know, I want I want the progress bar to
52
00:02:48.120 --> 00:02:48.479
you know.
53
00:02:48.520 --> 00:02:49.919
To change as it plays.
54
00:02:50.800 --> 00:02:52.599
I can't remember what else I told it, but I
55
00:02:52.639 --> 00:02:56.120
also told it I wanted it to be controlled through stimulus,
56
00:02:56.680 --> 00:02:59.800
and that I was using tailwind, and that I wanted
57
00:02:59.800 --> 00:03:02.199
the play and pause buttons to not have words in them.
58
00:03:02.240 --> 00:03:06.840
I wanted to use font awesome for the icons, and
59
00:03:07.080 --> 00:03:08.479
it spit the whole thing out.
60
00:03:09.000 --> 00:03:12.080
So then what I did is I was like, I know,
61
00:03:12.120 --> 00:03:14.039
there are more features than I want on this, I
62
00:03:14.080 --> 00:03:16.520
just can't think of what they are. And so I
63
00:03:16.560 --> 00:03:18.439
asked it, I said, what other features should I be
64
00:03:18.520 --> 00:03:20.879
putting in this thing? And it turns around and it
65
00:03:20.879 --> 00:03:23.400
gives me a list of like sixteen things, right, and
66
00:03:23.520 --> 00:03:26.879
like ten of them were features that I might want
67
00:03:27.240 --> 00:03:30.800
if I wasn't just playing one episode. But there were
68
00:03:30.840 --> 00:03:32.360
like four or five of them that I was like,
69
00:03:32.439 --> 00:03:35.000
oh yeah, I want that too, I forgot and so
70
00:03:35.039 --> 00:03:38.199
I put all those in and you know, and so
71
00:03:38.280 --> 00:03:40.039
it's giving me a player. So I put it into
72
00:03:40.080 --> 00:03:42.240
the page and it was like it was a big
73
00:03:42.280 --> 00:03:44.719
square that took up like half the screen. And so
74
00:03:44.800 --> 00:03:48.240
I said, hey, I'm putting this into a bottom banner
75
00:03:48.240 --> 00:03:51.240
that has to fit into an H dash thirty two
76
00:03:52.080 --> 00:03:56.120
sized space in the you know, in the page. And
77
00:03:56.159 --> 00:04:00.319
so it condensed it and so I picked it up
78
00:04:00.360 --> 00:04:05.319
and I put it into my Rails app, and you know,
79
00:04:05.439 --> 00:04:08.159
I'm thinking, okay, you know, I you know, I had
80
00:04:08.159 --> 00:04:12.759
my developer tools open with the console and I'm already
81
00:04:12.800 --> 00:04:18.480
to to you know, to debug it right, and you know,
82
00:04:18.600 --> 00:04:22.000
because it probably got something wrong. And would you believe it,
83
00:04:22.040 --> 00:04:24.519
the thing just worked like it literally like I tested
84
00:04:24.519 --> 00:04:26.680
every feature and it did exactly what it was supposed
85
00:04:26.680 --> 00:04:26.879
to do.
86
00:04:27.480 --> 00:04:30.160
So then so then I had to tweak the layout
87
00:04:30.199 --> 00:04:30.439
on it a.
88
00:04:30.439 --> 00:04:32.120
Little bit because it did look a little bit weird.
89
00:04:33.120 --> 00:04:35.399
But I mean literally, it was just came, move this
90
00:04:35.519 --> 00:04:39.360
up here, make that wider. You know, Okay, now it
91
00:04:39.399 --> 00:04:42.439
looks now, it looks decent. Right, I'm not sure I'm
92
00:04:42.439 --> 00:04:44.920
completely satisfied with the layout on it, but it works
93
00:04:44.920 --> 00:04:46.279
and it looks it looks fine.
94
00:04:47.079 --> 00:04:52.879
So now I'm thinking, Okay, what else is out there? Right?
95
00:04:52.920 --> 00:04:54.800
And I've picked up some other tips and tricks.
96
00:04:55.240 --> 00:04:58.399
But we were talking before the show and I kind
97
00:04:58.399 --> 00:05:00.839
of told this to Valentino and he's going, oh, yeah,
98
00:05:00.879 --> 00:05:02.879
I've got all kinds of tricks that I use, And
99
00:05:02.959 --> 00:05:06.600
so this is probably gonna be more me picking your brain,
100
00:05:06.720 --> 00:05:11.519
Valentino than offering any you know, awesome ideas or solutions.
101
00:05:12.079 --> 00:05:14.959
But it seems like there's a whole breadth of things
102
00:05:15.439 --> 00:05:17.439
that I'm just kind of opening up my mind to
103
00:05:17.519 --> 00:05:23.160
at this point. So so yeah, So, I mean, I
104
00:05:23.199 --> 00:05:26.079
guess my first question is is did you already know
105
00:05:26.160 --> 00:05:28.360
that chat GPT would do this kind of a thing?
106
00:05:28.560 --> 00:05:32.000
And what else am I not even.
107
00:05:31.800 --> 00:05:34.480
Seeing in the wide world of hey, make my code
108
00:05:34.519 --> 00:05:35.279
process better?
109
00:05:37.240 --> 00:05:41.040
Yeah? There's so many things here. Yeah, I guess like
110
00:05:42.160 --> 00:05:45.279
if we take a step back and just like focus
111
00:05:45.319 --> 00:05:49.639
on like what we're trying to accomplish as like software developers, right,
112
00:05:49.800 --> 00:05:53.160
Like it kind of like breaks down into two things,
113
00:05:53.199 --> 00:05:58.240
like one like abstractly thinking about concepts and how to
114
00:05:58.279 --> 00:06:02.279
like design things, and the second would be like implementation
115
00:06:02.399 --> 00:06:06.600
detail and so like there's two like avenues that I
116
00:06:06.600 --> 00:06:09.600
always like break things down to based off of that,
117
00:06:10.399 --> 00:06:13.160
and so like we just focus on like the design aspects.
118
00:06:13.199 --> 00:06:17.920
Like that's just great as like a GPT like and
119
00:06:18.000 --> 00:06:20.000
for those that don't know, it's like a plugin for
120
00:06:20.199 --> 00:06:24.959
chat GPT even like I have one based on the
121
00:06:25.000 --> 00:06:28.680
stack that I use, which is Rails specific with Ruby
122
00:06:28.759 --> 00:06:32.360
and like x y z design books that I've just
123
00:06:32.360 --> 00:06:36.199
like uploaded to the GPT, right, so like I have
124
00:06:36.319 --> 00:06:41.519
like ninety nine bottles from Sandy Mets and like some
125
00:06:41.639 --> 00:06:42.920
AI specific ones.
126
00:06:44.279 --> 00:06:47.720
Hang on, so what when you're saying like design books
127
00:06:47.759 --> 00:06:51.639
and you're you're talking about like kind of it sounds
128
00:06:51.639 --> 00:06:54.199
like you're kind of setting up the context for where
129
00:06:54.240 --> 00:06:55.160
you're asking your question.
130
00:06:55.279 --> 00:06:58.399
Yeah yeah, so like yeah, maybe we should apreciate that.
131
00:06:58.519 --> 00:07:02.720
Like what is a GPT YEA And honestly, like I'm
132
00:07:02.759 --> 00:07:07.319
surprised this is totally like open a eyes like miss
133
00:07:07.319 --> 00:07:11.759
here in marketing, Right, It's because gpds are incredible, right,
134
00:07:11.879 --> 00:07:15.399
Like it's like a way of like encapsulating a purpose
135
00:07:15.839 --> 00:07:19.079
to all of the to chat GPT, right, so you
136
00:07:19.120 --> 00:07:23.079
get your like blanket features of chat GPT of being
137
00:07:23.120 --> 00:07:26.120
able to be a general purpose utility to do anything.
138
00:07:27.199 --> 00:07:29.800
And so it's great at code related stuff. But if
139
00:07:29.920 --> 00:07:34.399
like let's say, like you want to like make super
140
00:07:34.600 --> 00:07:40.360
object oriented Ruby and Rail's work, like that's prime candidate
141
00:07:40.399 --> 00:07:43.399
for making a very specific plug in the chat GPT,
142
00:07:44.199 --> 00:07:48.600
and you can basically give it context like documents that
143
00:07:48.639 --> 00:07:52.759
it can use as reference, and you can also give
144
00:07:52.800 --> 00:07:56.360
it like custom instructions to follow so you don't have
145
00:07:56.439 --> 00:07:59.120
to like re say those things over and over again.
146
00:07:59.199 --> 00:08:01.759
So like, let's you have a prompt that you always
147
00:08:01.800 --> 00:08:05.480
go to that's like, hey, like pretend you're an expert
148
00:08:05.600 --> 00:08:11.639
in object oriented design and Ruby, right, and I want
149
00:08:11.680 --> 00:08:15.639
you to follow these principles. You know, if you're generating
150
00:08:16.360 --> 00:08:23.879
Ruby code, follow this like you know, like linter related thing.
151
00:08:24.680 --> 00:08:27.000
And you can like reuse these prompts over and over
152
00:08:27.040 --> 00:08:29.439
again to get get it to output the things how
153
00:08:29.439 --> 00:08:33.200
you want it to rather than just like chatting through it.
154
00:08:33.480 --> 00:08:35.960
And so with a GPT, you can like frontload all
155
00:08:36.039 --> 00:08:38.399
that work and just have something reusable that you can
156
00:08:38.440 --> 00:08:42.360
go back to. And so I have this open GPT
157
00:08:42.759 --> 00:08:46.679
called the Software architect Mentor, and I use it all
158
00:08:46.720 --> 00:08:49.679
the time, and it's like my abstract go to for
159
00:08:49.879 --> 00:08:54.960
just like, Okay, I'm designing something in Ruby sometimes rails,
160
00:08:56.000 --> 00:08:59.559
doing AI stuff like, use all of that context to
161
00:08:59.720 --> 00:09:04.559
just help me design something or refactor something or do
162
00:09:04.799 --> 00:09:07.840
these things in an abstract way so that way I
163
00:09:07.840 --> 00:09:10.320
don't have to worry about the implementation. I can focus
164
00:09:10.320 --> 00:09:10.879
on design.
165
00:09:11.879 --> 00:09:16.840
So how do you get that into chat GPT? And
166
00:09:16.919 --> 00:09:19.679
maybe I'm just you know, I haven't played with it enough.
167
00:09:21.799 --> 00:09:25.919
So they know they have. There's like an explorer GPTs
168
00:09:26.240 --> 00:09:30.519
okay sidebar, and you could just like start a chat
169
00:09:30.559 --> 00:09:31.440
with any one of those.
170
00:09:32.840 --> 00:09:35.279
Oh okay, so I could actually instead of because I'm
171
00:09:35.320 --> 00:09:39.480
just using the generic chat GPT. I mean that's what
172
00:09:39.600 --> 00:09:41.759
built my player for me. You're telling me I could
173
00:09:41.759 --> 00:09:43.240
have because I clicked on it and I'm seeing like
174
00:09:43.960 --> 00:09:47.639
a website generator or a code copilot. So I could
175
00:09:47.799 --> 00:09:50.679
used the code code pilot and what would have been
176
00:09:50.759 --> 00:09:52.879
faster or better or.
177
00:09:53.320 --> 00:09:55.840
Yeah, it would be more focused. So I guess like
178
00:09:55.960 --> 00:10:02.039
faster and better are you know, kind of dependent on
179
00:10:02.080 --> 00:10:04.399
the use case, but it might narrow the scope of
180
00:10:04.399 --> 00:10:08.360
the scope. Like as an example, if like, okay, well
181
00:10:08.440 --> 00:10:11.039
let's say you're working on you know, I don't know,
182
00:10:11.080 --> 00:10:13.799
go code or something like that. Like, you know, there
183
00:10:13.799 --> 00:10:17.200
may be some conventions that could be useful, like using
184
00:10:17.200 --> 00:10:21.159
a very ghost specific GBT in the same way that
185
00:10:21.279 --> 00:10:26.159
using a ghost specific prompt can help guide the generation
186
00:10:26.279 --> 00:10:28.840
of that. Right, Like if you just say, hey, like
187
00:10:28.919 --> 00:10:34.840
chat GPT, generate a you know program that like shows
188
00:10:34.840 --> 00:10:38.679
me a calendar, It'll just like use whatever its preference
189
00:10:38.799 --> 00:10:41.960
is based on your chat history with it. So like
190
00:10:43.600 --> 00:10:46.279
that could be any number of languages, could be any
191
00:10:46.399 --> 00:10:49.120
number of implementations. But if you like, open up a
192
00:10:49.120 --> 00:10:50.679
go GPT, it's going to use go.
193
00:10:51.440 --> 00:10:59.399
Right, Right, So do they have a Ruby GPT in here.
194
00:10:59.360 --> 00:11:06.080
Or did you There's a lot of people that that
195
00:11:06.200 --> 00:11:08.840
have gpds published there kind of just have to search
196
00:11:08.879 --> 00:11:12.559
through stuff. I just have my own because I found
197
00:11:12.559 --> 00:11:13.440
it very useful.
198
00:11:13.799 --> 00:11:15.519
Uh, yeah, there are a bunch in here.
199
00:11:15.960 --> 00:11:22.519
Yeah, you can you basically can give it knowledge and
200
00:11:22.559 --> 00:11:26.720
that knowledge will be used to generate stuff with and
201
00:11:26.759 --> 00:11:30.919
so like I personally have very specific like resources that
202
00:11:31.000 --> 00:11:34.200
I like to like have it reference. Uh and I
203
00:11:34.200 --> 00:11:37.080
imagine other people do too, Right, Like you have your
204
00:11:37.159 --> 00:11:41.480
books that you favored the design principles from, or how
205
00:11:41.519 --> 00:11:46.279
you like code implemented in specific ways, uh, based on.
206
00:11:46.759 --> 00:11:48.639
You know, it doesn't have to be books. It could
207
00:11:48.679 --> 00:11:53.200
be websites. Uh, you know, whatever resources that you use
208
00:11:53.279 --> 00:11:57.840
the code with, you can use it can use.
209
00:11:58.559 --> 00:12:05.240
So when you're pulling them in, because my mind's already blown, right,
210
00:12:05.360 --> 00:12:07.360
it's like, Okay, I'm gonna go down the rabbit hole
211
00:12:07.399 --> 00:12:08.200
on this stuff real.
212
00:12:08.120 --> 00:12:10.360
Hard here after we're done.
213
00:12:10.480 --> 00:12:14.320
But because because I could see, you know, you create
214
00:12:14.399 --> 00:12:16.360
GPTs for other things, it sounds like that.
215
00:12:17.879 --> 00:12:18.559
In a way.
216
00:12:18.600 --> 00:12:20.639
That's kind of what when we talk to Obie what
217
00:12:20.720 --> 00:12:23.159
he was talking about with Ray right, where you're essentially
218
00:12:23.600 --> 00:12:26.600
you're giving it all that context and then yeah, you're
219
00:12:26.600 --> 00:12:27.840
doing some prompt engineering too.
220
00:12:27.879 --> 00:12:29.600
I want to response to books like this or something
221
00:12:29.639 --> 00:12:29.799
like that.
222
00:12:29.919 --> 00:12:33.720
But I mean the rest of it is, you know, yeah,
223
00:12:33.759 --> 00:12:36.279
then you ask it a question and from everything that
224
00:12:36.320 --> 00:12:40.679
you've told it, it gives you the focused or more
225
00:12:40.679 --> 00:12:45.519
correct answer. So when you're telling it, hey, I favor
226
00:12:45.679 --> 00:12:48.440
ideas from I don't know, you know, ninety nine bottles
227
00:12:49.120 --> 00:12:52.480
or you know, maybe it's the Pewter book the What
228
00:12:52.639 --> 00:12:55.960
Principles of Object Oriented Design and Ruby or something like that.
229
00:12:57.000 --> 00:12:58.240
How do you reference that in?
230
00:12:59.480 --> 00:13:02.039
Do you just give it a r L or I
231
00:13:02.080 --> 00:13:07.440
just upload the document. Okay, right, you just yeah, you know,
232
00:13:08.360 --> 00:13:11.879
you go, I buy the book and then I get
233
00:13:11.919 --> 00:13:15.720
the PDF from it and I upload it, right, and
234
00:13:15.759 --> 00:13:19.960
then I can have it generating based off of that, right, Like.
235
00:13:20.200 --> 00:13:23.080
Okay, so how big is its brain? How much stuff
236
00:13:23.080 --> 00:13:23.919
can I cram in there?
237
00:13:24.039 --> 00:13:28.600
I honestly haven't tested that, although I have gone through
238
00:13:28.639 --> 00:13:31.759
and just uploaded all the books that I've read, like
239
00:13:31.879 --> 00:13:37.240
from like my programming experience, and that I've found does
240
00:13:37.360 --> 00:13:43.000
not help. Giving it more context doesn't help it. And
241
00:13:43.039 --> 00:13:45.639
to be honest, like that makes a lot of sense
242
00:13:45.679 --> 00:13:47.960
to me, because like the whole point of of like
243
00:13:48.000 --> 00:13:51.360
this honed agent is like you know that it's narrow
244
00:13:51.360 --> 00:13:55.000
in scope, right, right, And so like the more that
245
00:13:55.039 --> 00:13:57.320
you can narrow that scope to like the very specific
246
00:13:57.360 --> 00:13:59.080
tasks that you plan to use it for, like the
247
00:13:59.120 --> 00:14:01.919
better and I like, you know, going back to OBI
248
00:14:02.080 --> 00:14:04.320
when we had them on like that narrowing of the
249
00:14:04.399 --> 00:14:07.559
path is like the best way to think about like
250
00:14:08.480 --> 00:14:12.480
programming or like designing things with AI is like, yeah,
251
00:14:12.519 --> 00:14:15.159
creating the very specific thing that you want it to do,
252
00:14:15.600 --> 00:14:18.480
and like all of your instructions and knowledge and things
253
00:14:18.480 --> 00:14:20.240
that you're giving it are like honed in on that.
254
00:14:21.360 --> 00:14:25.840
Yeah, it seems like, Yeah, when we were talking to Obi,
255
00:14:26.519 --> 00:14:28.240
the thing that kind of stood out to me was
256
00:14:28.759 --> 00:14:32.200
because the Chat GPT, you know, the GPT model that
257
00:14:32.200 --> 00:14:36.320
you're using, it has everything in it, right, So it
258
00:14:36.360 --> 00:14:40.799
does baking, it does auto repair, and it does it
259
00:14:40.840 --> 00:14:44.200
has Ruby stuff in it, right. And so if I
260
00:14:44.279 --> 00:14:46.320
tell it, hey, I need you to help me write
261
00:14:46.360 --> 00:14:49.039
better code, then if I use a term that is
262
00:14:49.080 --> 00:14:51.960
also used in baking, me narrowing the path is just
263
00:14:52.000 --> 00:14:54.480
telling it I only want the stuff that's relevant to
264
00:14:54.480 --> 00:15:00.840
programming in Ruby and so, right, and then and then
265
00:15:00.879 --> 00:15:03.639
there's other training in there too that might be and
266
00:15:03.720 --> 00:15:06.039
I'm looking for things formatted this way, and I'm looking for,
267
00:15:06.480 --> 00:15:08.759
you know, ideas in this vein or things like that.
268
00:15:11.799 --> 00:15:15.519
I've also heard from people the idea that essentially you
269
00:15:15.879 --> 00:15:18.919
can and I've seen some other people do this where
270
00:15:19.039 --> 00:15:21.639
they have they've like uploaded all the content that they've
271
00:15:21.679 --> 00:15:25.360
made about a topic, and then they essentially have a
272
00:15:26.200 --> 00:15:29.399
like I could create a Chuck GPT right, and it
273
00:15:29.440 --> 00:15:32.440
would be you know, hey, this is all the knowledge
274
00:15:32.480 --> 00:15:35.279
that Chuck has ever put out about whatever. And I've
275
00:15:35.279 --> 00:15:37.399
thought about doing that for like a Ruby rogues, right,
276
00:15:37.480 --> 00:15:40.240
and so I could upload the audio and you know,
277
00:15:40.519 --> 00:15:44.399
or upload transcription transcriptions or something. But my worry is
278
00:15:44.399 --> 00:15:46.480
is we've been doing this show for like thirteen years,
279
00:15:47.159 --> 00:15:49.399
and so some of the stuff we talked about thirteen
280
00:15:49.480 --> 00:15:51.679
years is very relevant, and some of the stuff we
281
00:15:51.720 --> 00:15:55.240
talked about thirteen years ago is not very relevant. And
282
00:15:55.320 --> 00:15:58.360
so I worry that then it's going to go, oh, well,
283
00:15:59.320 --> 00:16:02.360
I consider, you know, the thirteen year old content is
284
00:16:02.399 --> 00:16:06.720
relevant as the right, and so maybe I can tell it, hey,
285
00:16:07.000 --> 00:16:09.679
favor the newer stuff over the older stuff and put
286
00:16:09.679 --> 00:16:13.399
that into the context. But yeah, I've kind of hesitated
287
00:16:13.440 --> 00:16:15.440
on doing that just for that reason.
288
00:16:16.960 --> 00:16:22.200
Yeah, you know, we're like we're edging very very close
289
00:16:22.320 --> 00:16:26.320
to like the retrieval aspect of like AI design, which
290
00:16:26.600 --> 00:16:28.960
maybe off topic a little bit because it's there's so
291
00:16:29.039 --> 00:16:35.879
much there, but yeah, I mean I think we're if
292
00:16:35.879 --> 00:16:38.320
we circle back to like the tools that we're using here,
293
00:16:38.480 --> 00:16:41.480
like there's so much like that you can use out
294
00:16:41.720 --> 00:16:44.879
off the shelf that like if you just use them
295
00:16:45.200 --> 00:16:48.600
in the specific ways, like you can skirt around those issues.
296
00:16:48.720 --> 00:16:48.879
Right.
297
00:16:48.919 --> 00:16:54.720
So, Like as an example, there, there's somebody just released
298
00:16:54.759 --> 00:17:03.639
this rails app called Nausea NSI a dot Ai. Yeah,
299
00:17:03.679 --> 00:17:07.079
and it's like super awesome, runs on a Lama locally
300
00:17:07.599 --> 00:17:10.680
and you can like upload whatever documents you want it
301
00:17:11.279 --> 00:17:14.519
to use and run your own chat sept in a
302
00:17:14.599 --> 00:17:18.440
reals context with all that stuff built in.
303
00:17:18.839 --> 00:17:21.359
Really French or am I looking at the wrong thing?
304
00:17:22.160 --> 00:17:24.680
Yeah? I mean the site I think is in French,
305
00:17:24.759 --> 00:17:26.079
but the repo is in English.
306
00:17:26.480 --> 00:17:34.319
Okay, well in Google translate it. It's it's good at that.
307
00:17:33.759 --> 00:17:37.119
That's right. But yeah, I mean this idea is like
308
00:17:37.200 --> 00:17:39.359
not new, right, Like, there's lots of other tools out
309
00:17:39.400 --> 00:17:42.400
there as well that you can use to kind of
310
00:17:42.440 --> 00:17:46.799
just get a local version of chatchipt running so that
311
00:17:46.880 --> 00:17:50.680
you can do this with like if you have, for example,
312
00:17:50.720 --> 00:17:54.759
you want to narrow the retrieval aspects to only relevant
313
00:17:54.799 --> 00:17:58.359
stuff based on timestamp or something like that, Like that's
314
00:17:58.400 --> 00:18:04.160
gonna require some like alteration. There's not anything built in
315
00:18:04.200 --> 00:18:07.480
the chat GBT to allow that kind of granularity without
316
00:18:07.599 --> 00:18:09.400
like building something on top of its.
317
00:18:09.240 --> 00:18:09.839
A p I S.
318
00:18:12.960 --> 00:18:16.079
But there's a lot more stuff coming out that I like,
319
00:18:16.480 --> 00:18:21.559
uh that's revolves revolves around like the command line aspect
320
00:18:22.200 --> 00:18:28.440
mm HM, where it'll like basically use your current working
321
00:18:28.480 --> 00:18:35.680
directory as like a test bed two like scan for
322
00:18:35.799 --> 00:18:41.759
relevant documents and also like uh, you know, build up.
323
00:18:41.839 --> 00:18:44.079
It's like task at hand.
324
00:18:44.640 --> 00:18:44.799
Uh.
325
00:18:44.880 --> 00:18:47.599
So like one that immediate immediately comes to mind. As
326
00:18:47.599 --> 00:18:51.079
a tool called eight er A I D E R
327
00:18:53.119 --> 00:18:59.720
also runs fully mean to help. Yeah a lot, yeah,
328
00:18:59.759 --> 00:19:02.200
a lot of the French in the AI space. Uh
329
00:19:02.400 --> 00:19:07.200
you know hugging face as an example, definitely French yah
330
00:19:07.720 --> 00:19:11.319
mixedtro right. So so many great AI things come out
331
00:19:11.319 --> 00:19:16.839
of France. Uh. But you know with a tool like
332
00:19:16.839 --> 00:19:20.720
eighter like h it basically uses tree sitter and like
333
00:19:20.839 --> 00:19:22.119
scans through EU repo.
334
00:19:22.400 --> 00:19:22.559
Right.
335
00:19:22.640 --> 00:19:25.759
So if you're like, oh, I want to you know,
336
00:19:26.000 --> 00:19:31.240
like change the you know, contact page to uh, you know,
337
00:19:31.319 --> 00:19:33.960
add another field for this specific thing in my reils app,
338
00:19:34.240 --> 00:19:37.720
it'll go through and it'll scan the rails app locally
339
00:19:38.440 --> 00:19:42.759
and then find what files that it needs to include
340
00:19:42.799 --> 00:19:46.759
as contexts and then walk through like a step by
341
00:19:46.759 --> 00:19:50.079
step process of Okay, what files do we need to touch?
342
00:19:50.720 --> 00:19:52.440
What changes do we need to make to make that
343
00:19:53.119 --> 00:19:53.920
request happen?
344
00:19:54.519 --> 00:19:54.640
Uh?
345
00:19:54.799 --> 00:19:57.400
And you it could even like you know, alter these
346
00:19:57.440 --> 00:20:06.359
files h which is really really exciting because ultimately that's
347
00:20:06.359 --> 00:20:09.359
what that's what I would you know, I'd rather part
348
00:20:09.400 --> 00:20:12.039
of the problem with like just using chat cheapt for
349
00:20:12.240 --> 00:20:17.319
like you know, code generation in general, like it doesn't
350
00:20:17.359 --> 00:20:20.279
have context, and it also like uh, you know, it
351
00:20:20.319 --> 00:20:23.079
makes mistakes like all the time, and then you're like
352
00:20:23.519 --> 00:20:26.359
stuck trying to figure out well, okay, well you know
353
00:20:26.400 --> 00:20:28.559
what mistake is this? Like why is there about here?
354
00:20:28.759 --> 00:20:28.920
Right?
355
00:20:28.960 --> 00:20:31.960
And you can do that in chat cheapt too, but
356
00:20:32.000 --> 00:20:34.359
it's just like it slows things down quite a lot,
357
00:20:35.720 --> 00:20:38.559
and so when you get something that's more like wrapped
358
00:20:38.559 --> 00:20:42.000
around the thing that you're building, it makes it much
359
00:20:42.839 --> 00:20:44.359
like smoother of an experience.
360
00:20:47.440 --> 00:20:52.319
That's awesome. So that that was aider or in French.
361
00:20:52.400 --> 00:20:59.240
DA yeah, yeah, ader. And you know, there's like a
362
00:20:59.240 --> 00:21:01.960
a more pol version of it, if if you will,
363
00:21:02.400 --> 00:21:10.559
called code buff, but you know it's it's expensive, but
364
00:21:10.680 --> 00:21:13.960
you know, uses the more flagship models like from open
365
00:21:14.000 --> 00:21:18.519
ai or you know, anthropic depending on the context. So
366
00:21:18.680 --> 00:21:22.720
like you get better quality outputs from it because of that,
367
00:21:23.480 --> 00:21:26.440
and you could also use you know, open ai for
368
00:21:26.559 --> 00:21:32.359
eight or two, but it's definitely not as polished as
369
00:21:32.359 --> 00:21:33.799
ah as code buff.
370
00:21:34.359 --> 00:21:39.079
Right, yeah, I'm trying to make sure we have all
371
00:21:39.119 --> 00:21:42.880
the links in the like, like folks, if you're looking
372
00:21:42.880 --> 00:21:44.799
for the links there. It's looked it looks like it's
373
00:21:44.799 --> 00:21:50.759
posting it to Facebook, YouTube and Twitch and not Twitter LinkedIn,
374
00:21:51.039 --> 00:21:58.359
so it'll it'll all be in the comments there. So yeah,
375
00:21:58.400 --> 00:22:00.640
I mean that that's helpful just because, yeah, it can
376
00:22:00.680 --> 00:22:04.440
work from the context of the stuff in your actual
377
00:22:04.519 --> 00:22:05.119
code base.
378
00:22:09.559 --> 00:22:12.359
Yeah, and I a lot of the back and forth
379
00:22:12.400 --> 00:22:20.000
stuff with implementation related tasks, right, It's like it can
380
00:22:20.119 --> 00:22:24.920
eat up time, right, Like it just reminds me of like,
381
00:22:28.119 --> 00:22:31.519
you know, some some of the original like code generation stuff,
382
00:22:31.599 --> 00:22:34.799
like even like Reils generators as an example, right, Like
383
00:22:34.839 --> 00:22:37.079
it's just like it'll just dump a ton of code
384
00:22:37.119 --> 00:22:38.799
at you and you're just like, well what do I
385
00:22:38.839 --> 00:22:39.240
do with that?
386
00:22:39.839 --> 00:22:40.079
Right?
387
00:22:40.599 --> 00:22:43.319
Or if like it doesn't do what you want, like
388
00:22:43.519 --> 00:22:45.240
you have to figure out what that is, and like
389
00:22:45.279 --> 00:22:49.160
it doesn't know, right, Like there's no there's no context.
390
00:22:49.240 --> 00:22:52.279
It's not aware of anything, right other than what it's
391
00:22:52.279 --> 00:22:52.880
been trained on.
392
00:22:53.000 --> 00:22:53.440
So, like.
393
00:22:56.599 --> 00:23:01.839
It's definitely a it's a hard experience to like just
394
00:23:01.920 --> 00:23:05.000
go in and I can't imagine like just imagine if
395
00:23:05.039 --> 00:23:07.640
you were like learning reels for the first time, right
396
00:23:07.759 --> 00:23:12.200
or Ruby or like even just like RESTful APIs, right,
397
00:23:12.319 --> 00:23:15.960
Like I just remember those concepts being like, you know,
398
00:23:16.079 --> 00:23:18.519
challenging to understand if you have something like that's just
399
00:23:18.640 --> 00:23:21.920
generating stuff and you don't really understand how it works,
400
00:23:21.960 --> 00:23:25.400
Like you could lose a whole day just like figuring
401
00:23:25.480 --> 00:23:29.920
out a mistake it made. Where if like, you know,
402
00:23:30.000 --> 00:23:34.119
you instead followed some tutorial that somebody wrote, like maybe
403
00:23:34.119 --> 00:23:37.839
you would have a different experience. You know, they still
404
00:23:38.200 --> 00:23:40.559
doing that though you have the same a similar experience
405
00:23:40.599 --> 00:23:43.759
sometimes if you like are missing a package or something
406
00:23:43.799 --> 00:23:48.319
like that, but like definitely more frequent with chat ChiPT.
407
00:23:49.319 --> 00:23:57.720
Yeah so code buff and eight those are on the
408
00:23:57.759 --> 00:23:58.920
command line, right.
409
00:24:01.680 --> 00:24:06.880
Yep, yeah, those are all come in. I mean, you know,
410
00:24:06.880 --> 00:24:11.200
there's so much Ruby stuff out there now, right, we
411
00:24:11.279 --> 00:24:15.440
had Scott Warker from sub Layer. Sub Layer is awesome
412
00:24:15.720 --> 00:24:21.279
like fully Ruby, like developer happiness, like AI helpers, right,
413
00:24:21.400 --> 00:24:24.000
Like you can get it to like watch your file
414
00:24:24.079 --> 00:24:28.279
system and perform actions with AI. You can do all
415
00:24:28.359 --> 00:24:31.279
kinds of crazy stuff with it. I have one where
416
00:24:32.079 --> 00:24:34.319
I'll feed it a Ruby file and it generates a
417
00:24:34.359 --> 00:24:37.839
spec for me. So if I'm like, you know, prototyping
418
00:24:38.480 --> 00:24:41.599
a new module or class or something like that, or
419
00:24:41.640 --> 00:24:44.000
some Ruby code, I could just say if I like
420
00:24:44.039 --> 00:24:45.960
wanted to turn it into something that I wanted to
421
00:24:45.960 --> 00:24:49.640
share with people. I you know, hadn't made a speck yet,
422
00:24:49.759 --> 00:24:52.839
but I was abstracting and just working on design concepts.
423
00:24:52.839 --> 00:24:55.039
And now, all right, I flesh this out, I wanted
424
00:24:55.279 --> 00:24:59.240
like tested, and I'll go and I'll say, hey, here's
425
00:24:59.319 --> 00:25:02.079
a Ruby file, like can you create on our respect
426
00:25:02.119 --> 00:25:05.279
test for this? And I just have a single command
427
00:25:05.279 --> 00:25:07.559
line command and I just feed at the ruby file
428
00:25:07.599 --> 00:25:09.519
and it generates the respect tests for me.
429
00:25:10.680 --> 00:25:14.920
Oh wow, and it's awesome. I've been going through that
430
00:25:15.000 --> 00:25:21.480
with one of my clients deals where like, yeah, they've
431
00:25:21.519 --> 00:25:26.839
got this heinous you know class that has a bunch
432
00:25:26.839 --> 00:25:28.039
of stuff going on in it.
433
00:25:28.799 --> 00:25:31.119
And yeah, it was like, you know, they're.
434
00:25:30.960 --> 00:25:32.599
Like, hey, you got to speed this up, and I'm like,
435
00:25:33.400 --> 00:25:35.480
I am not messing with this thing until I have
436
00:25:35.519 --> 00:25:38.240
a test on it, right, I mean, just just so
437
00:25:38.400 --> 00:25:40.799
that I know that I didn't change the behavior, not
438
00:25:40.839 --> 00:25:45.240
necessarily because the behavior is correct, though I'm sure it's
439
00:25:45.319 --> 00:25:47.079
mostly correct because they've been using it that way for
440
00:25:47.079 --> 00:25:47.519
a while.
441
00:25:49.319 --> 00:25:50.720
So yeah, that sounds really handy.
442
00:25:51.839 --> 00:25:53.759
Yeah, and you know, even two on their I think
443
00:25:53.759 --> 00:25:56.599
on their docks, they have like or maybe it's on YouTube.
444
00:25:57.279 --> 00:26:03.279
Scott has this demo where basically creates a you know,
445
00:26:04.599 --> 00:26:08.720
a tool that like let's tell you can tell it.
446
00:26:09.519 --> 00:26:13.960
Tell the tool. Okay, here's this file. I the tests
447
00:26:13.960 --> 00:26:16.839
are failing, get them to pass, right, and it'll go
448
00:26:16.880 --> 00:26:18.960
through and run through the code and like get the
449
00:26:19.000 --> 00:26:19.680
tests to pass.
450
00:26:20.559 --> 00:26:20.960
Oh wow.
451
00:26:22.400 --> 00:26:25.240
And so like that's a more like advanced kind like
452
00:26:25.559 --> 00:26:29.880
thing you can use it for. But like, yeah, I
453
00:26:29.880 --> 00:26:32.119
mean I feel like we're just kind of starting to
454
00:26:32.160 --> 00:26:33.279
scratch the surface here.
455
00:26:35.319 --> 00:26:35.519
Yeah.
456
00:26:35.519 --> 00:26:40.319
I mean it's hard because like all of these large
457
00:26:40.400 --> 00:26:46.400
language models, they're not trained necessarily on Ruby, right, right,
458
00:26:46.480 --> 00:26:50.960
And so like there there's obviously a small sample in
459
00:26:51.000 --> 00:26:53.400
there or it wouldn't be able to do what it can,
460
00:26:54.599 --> 00:26:57.480
but it definitely will. Like if you're using chat ChiPT heavily,
461
00:26:57.519 --> 00:27:02.640
you'll see it like use Python related standard libraries for Ruby,
462
00:27:03.440 --> 00:27:06.680
right And you're like, wait, that doesn't exist, Like how
463
00:27:06.680 --> 00:27:11.400
did where are you requiring this, like you know, data
464
00:27:11.400 --> 00:27:14.319
frames or something like that, which there are data frames
465
00:27:14.319 --> 00:27:16.799
of Ruby, just not like natively.
466
00:27:16.559 --> 00:27:22.799
Right, Yeah, I asked it to So I basically said, hey,
467
00:27:22.839 --> 00:27:29.920
I want to run whisper locally to get diarized, which
468
00:27:29.960 --> 00:27:32.839
means or a diarized transcript, I should say, so it
469
00:27:32.920 --> 00:27:36.160
transcribes it, but then it assigns, you know, Speaker one
470
00:27:36.200 --> 00:27:42.119
said this, Speaker two said that, and Whisper doesn't do
471
00:27:42.920 --> 00:27:45.319
because I knew that Whisper doesn't do diarization out of
472
00:27:45.319 --> 00:27:48.920
the box. And so yeah, its answer was install these
473
00:27:48.960 --> 00:27:54.880
Python libraries and then call Python for Ruby. Well it's fine,
474
00:27:54.920 --> 00:27:59.160
you know, okay, but you know because because I don't
475
00:27:59.200 --> 00:28:02.160
know that there is a library that'll do it. But yeah,
476
00:28:02.319 --> 00:28:04.440
it was. It was interesting, and in fact, I think
477
00:28:04.440 --> 00:28:09.680
it started out saying, yeah, generating diaries transcripts for a
478
00:28:09.720 --> 00:28:13.319
podcast episode of multiple guests using a local installation of
479
00:28:15.640 --> 00:28:18.680
open ayes Whisper model and Ruby requires the following steps.
480
00:28:18.920 --> 00:28:21.599
Install Whisper locally. Whisper is a Python library, so you
481
00:28:21.640 --> 00:28:25.839
need Python installed and ensure that you have the required dependencies.
482
00:28:25.880 --> 00:28:27.480
So I have to install ffm PEG.
483
00:28:28.119 --> 00:28:31.519
And then it says it doesn't Whisper does not natively
484
00:28:31.519 --> 00:28:34.720
perform speaker diroisation, so you have to use a diroization library,
485
00:28:35.000 --> 00:28:37.680
and it tells you to use piannote dot audio, which
486
00:28:37.720 --> 00:28:41.880
is also a Python library, and then it says integrate
487
00:28:41.920 --> 00:28:45.519
with Ruby and so Yeah, then it's telling you to,
488
00:28:47.559 --> 00:28:50.759
you know, write this quick little Python script and then
489
00:28:51.000 --> 00:28:52.920
call the Python script from Ruby.
490
00:28:53.359 --> 00:28:57.759
When it comes to like doing like larger scale builds, huh.
491
00:28:58.559 --> 00:29:00.559
If you're trying to get chat cheepy t to like
492
00:29:00.880 --> 00:29:05.200
build a full fledged command line application as an example, right, Like,
493
00:29:05.680 --> 00:29:09.000
it's gonna struggle. There's gonna be a lot of back
494
00:29:09.000 --> 00:29:12.279
and forth. You may have multiple chats open. You know,
495
00:29:14.000 --> 00:29:17.839
it's gonna be difficult. The one thing I have us
496
00:29:17.920 --> 00:29:22.160
it's worked well for that kind of thing is honestly
497
00:29:22.359 --> 00:29:27.640
Claud and thropics claud setting up a project for that
498
00:29:27.920 --> 00:29:33.519
specific thing that you're building, creating an overall context with
499
00:29:33.640 --> 00:29:36.400
the purpose that you're using it for to build, and
500
00:29:36.920 --> 00:29:40.119
outlining what all the requirements are in that, and then
501
00:29:40.160 --> 00:29:43.240
you can just start iterating through the chats to implement
502
00:29:43.279 --> 00:29:47.079
the specific features. I use that all the time, and
503
00:29:47.119 --> 00:29:52.400
the code outputs it can like start like building on
504
00:29:52.440 --> 00:29:55.039
top of itself. So it has these things called artifacts,
505
00:29:55.359 --> 00:29:57.599
which are just the files that it generates, and you
506
00:29:57.599 --> 00:30:00.279
can add them to the project as it creates things
507
00:30:00.279 --> 00:30:03.319
that you like, and you can edit in context and
508
00:30:03.400 --> 00:30:05.960
start including it in the project, and it will literally
509
00:30:05.960 --> 00:30:09.759
build the whole application just like in front of you.
510
00:30:11.680 --> 00:30:17.160
And it it's a little funny because there's a there's
511
00:30:17.200 --> 00:30:22.680
this project called e to be Developer where they somebody
512
00:30:22.680 --> 00:30:24.839
has built basically like an open source version of this
513
00:30:25.319 --> 00:30:29.839
of Claude's artifacts. Or again you can like kind of
514
00:30:29.880 --> 00:30:34.519
spin up your own like the last you know, like
515
00:30:34.599 --> 00:30:39.960
a AWS instance and run have like the AI literally
516
00:30:40.359 --> 00:30:43.519
like run files and and create files and run the
517
00:30:43.960 --> 00:30:47.240
scripts and stuff. And so what people do with it
518
00:30:47.400 --> 00:30:49.799
ultimately is like you can you can get it to
519
00:30:50.799 --> 00:30:54.119
literally make like a front end game or like the
520
00:30:54.519 --> 00:30:57.039
if you're building like a web app, it'll like build
521
00:30:57.119 --> 00:30:59.319
the actual app and run it in the browser view.
522
00:31:00.839 --> 00:31:04.759
So I mean this kind of because I mean we talked.
523
00:31:04.799 --> 00:31:07.039
We started talking about, Okay, how do we enhance our
524
00:31:07.119 --> 00:31:13.599
development experience with AI? I talk to people and they're
525
00:31:13.720 --> 00:31:17.559
afraid of AI taking their jobs, and so it sounds
526
00:31:17.640 --> 00:31:21.000
like you're getting real close to saying, you know, somebody
527
00:31:21.039 --> 00:31:24.319
with a minimum level of prompt engineering experience might be
528
00:31:24.359 --> 00:31:26.440
able to do it.
529
00:31:26.519 --> 00:31:31.839
Well, there's a saying in the AI space garbage in,
530
00:31:31.920 --> 00:31:38.640
garbage out, and so there's a yes and note to that, right,
531
00:31:38.759 --> 00:31:43.759
like is it going to take all of our jobs now, right, Like, honestly,
532
00:31:44.000 --> 00:31:49.039
it's like giving people superpowers, right, Like whatever powers you
533
00:31:49.079 --> 00:31:51.559
do have now, like that's all your knowledge and all
534
00:31:51.559 --> 00:31:54.759
your skills that you've accumulated or even if you're just
535
00:31:54.799 --> 00:31:58.240
starting to accumulate them, right, Like, it basically just like
536
00:31:58.279 --> 00:32:03.759
gives it, like amplifies all of that. So like if
537
00:32:04.559 --> 00:32:07.119
if you're you know, if you want to be like
538
00:32:07.160 --> 00:32:11.440
a senior dev, like you can honestly just start today
539
00:32:11.559 --> 00:32:15.759
using AI tools, right, and you'll get pretty close. Right,
540
00:32:15.799 --> 00:32:19.960
Like maybe maybe you know your job won't consider you that,
541
00:32:20.160 --> 00:32:24.759
but like you'll definitely start to see a considerable improvement
542
00:32:24.920 --> 00:32:29.039
in like how quickly you can accomplish things.
543
00:32:29.720 --> 00:32:31.359
Right. I think.
544
00:32:33.400 --> 00:32:35.119
I think the way that I think about it is
545
00:32:35.160 --> 00:32:37.519
more along the lines of like just because you're talking
546
00:32:37.519 --> 00:32:40.440
about it the same way I'm thinking about it, in that, hey,
547
00:32:40.440 --> 00:32:43.599
this is a really really powerful tool, right, and so
548
00:32:43.680 --> 00:32:47.000
it can shortcut a whole bunch of things that we
549
00:32:47.200 --> 00:32:50.039
used to just go and have to kind of reinvent
550
00:32:50.119 --> 00:32:51.640
by hand on a regular basis.
551
00:32:51.920 --> 00:32:52.119
Right.
552
00:32:52.559 --> 00:32:58.319
A perfect example is like the you know, post generator aspect. Right,
553
00:32:58.359 --> 00:33:01.279
Like let's say you do real new and you're really
554
00:33:01.319 --> 00:33:03.680
just trying to like get a page up that's like
555
00:33:04.119 --> 00:33:06.880
let's you see users, right or whatever the resource you
556
00:33:06.920 --> 00:33:10.599
may have. You know, there's a very specific series of
557
00:33:10.640 --> 00:33:12.759
steps you follow just to get to that point where
558
00:33:12.799 --> 00:33:15.279
you can start to crud through. Oh I want to
559
00:33:15.279 --> 00:33:17.400
add this user with this, or I want to add
560
00:33:17.519 --> 00:33:19.680
I want to contact lists, I want to add people.
561
00:33:20.680 --> 00:33:25.440
You know, Like the AI can help like through all
562
00:33:25.440 --> 00:33:27.240
those steps so that you don't have to focus on
563
00:33:27.240 --> 00:33:29.759
all those upfront, right, Like you can just get to
564
00:33:29.799 --> 00:33:32.759
that page and be like okay, great, now, like all
565
00:33:32.799 --> 00:33:36.920
of that initialization configuration aspect which the generators start, but
566
00:33:37.039 --> 00:33:39.920
you have to like finish out. Like that finishing out
567
00:33:40.000 --> 00:33:44.799
portion is done too, right, Like you can sidestep a
568
00:33:44.799 --> 00:33:49.119
lot of the you know, the tidying up that comes
569
00:33:49.160 --> 00:33:51.720
from generators, which is kind of exciting, right because like
570
00:33:52.640 --> 00:33:56.680
that aspect of programming is like widespread, right, Like the
571
00:33:56.759 --> 00:33:59.440
idea of like okay, I have a template that I'm
572
00:33:59.440 --> 00:34:01.839
working off of, and I want to customize it to
573
00:34:01.880 --> 00:34:05.799
get to you know, round zero of my application mm hmm.
574
00:34:06.960 --> 00:34:10.519
And like you have to get through that you know,
575
00:34:10.679 --> 00:34:14.039
series of steps that you're just stepping through, and like
576
00:34:14.519 --> 00:34:17.000
AI is great at that. It's great at stepping through stuff,
577
00:34:17.440 --> 00:34:21.800
especially when all of those requirements are predefined, right like
578
00:34:22.239 --> 00:34:25.719
Reel's new with what right, like you've been reels new
579
00:34:26.039 --> 00:34:28.000
any number of things you could base it off an
580
00:34:28.039 --> 00:34:30.760
existing template you have, you know, if you have a
581
00:34:30.840 --> 00:34:34.760
gem you're building for Ruby, right like bundle gem new,
582
00:34:36.480 --> 00:34:40.119
you know, you have like all of your existing authorships
583
00:34:40.159 --> 00:34:42.679
and like where you're going to publish it to, Like
584
00:34:43.000 --> 00:34:45.639
there's just like a lot of details that you end
585
00:34:45.719 --> 00:34:49.760
up having to add every time that gets old, right,
586
00:34:50.079 --> 00:34:53.480
and it's like repetitive, and like the more things that
587
00:34:53.519 --> 00:34:56.960
you could just like get out of the way and
588
00:34:57.079 --> 00:35:00.280
just start building. Like I bet right now now if
589
00:35:00.280 --> 00:35:02.800
you look at ruby gems dot com, like there would
590
00:35:02.840 --> 00:35:06.639
be a huge spike in published gems. I don't doubt
591
00:35:06.639 --> 00:35:10.920
that right now. And I feel like that's maybe gonna
592
00:35:10.960 --> 00:35:15.960
be where the jobs aspect comes in play here, is
593
00:35:16.000 --> 00:35:18.880
that this is gonna be a lot more maintenance bur right,
594
00:35:19.039 --> 00:35:25.360
Like you know, we can we can create exponentially, and
595
00:35:26.840 --> 00:35:28.760
maintenance is going to drag behind.
596
00:35:28.440 --> 00:35:31.079
There, right. Yeah.
597
00:35:31.119 --> 00:35:33.880
I think the rest of the thought that I was
598
00:35:33.920 --> 00:35:35.480
trying to make, and then I want to kind of
599
00:35:35.519 --> 00:35:38.280
address the other piece that you're talking about here is that, Yeah,
600
00:35:38.400 --> 00:35:43.360
effectively you have these tools that you know, if you're
601
00:35:43.360 --> 00:35:45.159
still going to have to gain experience the same way
602
00:35:45.199 --> 00:35:47.920
the rest of us do. Right, So you're going to
603
00:35:48.079 --> 00:35:52.480
use AI, it's going to generate some stuff and then yeah,
604
00:35:52.519 --> 00:35:54.920
you're you're gonna walk into the same walls that we did.
605
00:35:55.239 --> 00:35:58.000
You just got there a little faster because you didn't
606
00:35:58.000 --> 00:36:00.679
have to go and slog through all the stuff that
607
00:36:00.719 --> 00:36:03.800
you already knew how to do right to get there.
608
00:36:04.000 --> 00:36:07.039
And so I think that's where if you were already
609
00:36:07.079 --> 00:36:10.800
a senior developer and you use these superpowers, then you
610
00:36:10.840 --> 00:36:14.280
can use the tools essentially and say, I need this
611
00:36:14.360 --> 00:36:17.119
refined this way, right, this isn't quite what I'm looking
612
00:36:17.159 --> 00:36:20.280
for because I know that if if it's put together
613
00:36:20.400 --> 00:36:23.159
like this, I'm opening myself up to this problem later.
614
00:36:23.880 --> 00:36:27.480
And so hey, can you handle this too, right? And
615
00:36:27.679 --> 00:36:30.239
and then it can modify the code.
616
00:36:31.000 --> 00:36:32.719
I mean you bring up you bring up a great
617
00:36:32.760 --> 00:36:37.119
point like if you're using AI as a tool and
618
00:36:37.280 --> 00:36:42.760
you're getting hung up on something, then you're using it wrong, right,
619
00:36:42.880 --> 00:36:48.840
Like if uh, if you're using the tool and like
620
00:36:49.480 --> 00:36:52.639
you're kind of banging your head on like getting it
621
00:36:52.679 --> 00:36:56.119
to do what you ask like it's it's more than
622
00:36:56.960 --> 00:37:00.119
likely that it's just like you're you're not using it
623
00:37:00.159 --> 00:37:03.519
the right way. It's like kind of funny because like
624
00:37:03.599 --> 00:37:06.239
that's like a meme, right, Like it's like the holding
625
00:37:06.599 --> 00:37:12.360
you're holding it wrong from Steve Jobs, right, right, But
626
00:37:12.400 --> 00:37:16.719
it's so true, Like you know, like these the AI
627
00:37:16.880 --> 00:37:19.800
tools are built like in very specific ways, and if
628
00:37:19.840 --> 00:37:22.639
like you're not seeing the results you expect, like it's
629
00:37:23.000 --> 00:37:25.760
you're you know, it's not being used in the way
630
00:37:25.760 --> 00:37:26.679
that it should be.
631
00:37:27.000 --> 00:37:29.440
Yeah, you need to give it more context or ask
632
00:37:29.559 --> 00:37:33.000
it in a more specific way or a more appropriate way.
633
00:37:32.920 --> 00:37:35.760
Or approach it completely differently, right, Like there there are
634
00:37:36.119 --> 00:37:38.840
so many ways to get it to do the same thing,
635
00:37:40.039 --> 00:37:44.639
and so like yeah, if you're like that's kind of
636
00:37:44.679 --> 00:37:47.199
like the beauty of AI is like you can literally
637
00:37:47.239 --> 00:37:50.880
scrap everything and start over like pretty quickly, right. And
638
00:37:51.960 --> 00:37:54.800
I would say, if you're like trying trying to explore
639
00:37:55.280 --> 00:37:58.199
the realms of all of this stuff, like use the
640
00:37:59.159 --> 00:38:02.000
interfaces that make the most sense to you, right, because
641
00:38:02.000 --> 00:38:06.880
there are so many and like you're if you're fighting
642
00:38:06.920 --> 00:38:09.000
it early on, you're going to continue to fight it.
643
00:38:09.360 --> 00:38:18.360
Yeah, yep, but I think overall, I guess to a
644
00:38:18.360 --> 00:38:22.400
certain degree, then if it gives developers superpowers, going back
645
00:38:22.400 --> 00:38:26.039
to the idea, is it going to take jobs? If
646
00:38:26.360 --> 00:38:28.519
it gives us superpowers and it makes us that much
647
00:38:28.559 --> 00:38:33.480
more efficient, then and this may be more of a
648
00:38:33.719 --> 00:38:37.360
like a business philosophical question than an actual like practical
649
00:38:38.639 --> 00:38:40.360
you know, are they going to fire developers?
650
00:38:41.360 --> 00:38:42.679
Does that take away jobs?
651
00:38:42.880 --> 00:38:46.000
Or does this just mean that, Hey, look, we've got
652
00:38:46.119 --> 00:38:49.519
ex budget for developers, and so now we if we
653
00:38:49.599 --> 00:38:51.760
train all of our people to use these tools to
654
00:38:51.840 --> 00:38:53.760
enhance what they can do, we can get this much
655
00:38:53.800 --> 00:38:58.480
more done. Right, And so do we actually lose jobs
656
00:38:58.960 --> 00:39:02.679
or maybe do we lose junior developer jobs, which seems
657
00:39:02.760 --> 00:39:06.280
kind of shortsighted because we are going to eventually need
658
00:39:06.320 --> 00:39:10.559
more senior developers. How do you see that shaking out
659
00:39:10.599 --> 00:39:12.800
in the grand scheme of things?
660
00:39:12.840 --> 00:39:13.639
Or do we just not know?
661
00:39:15.360 --> 00:39:17.920
I mean, I see it as more transitional, right, Like
662
00:39:19.480 --> 00:39:24.039
the common analogy that I've heard is like the transition
663
00:39:24.199 --> 00:39:29.480
from horse and buggy to automobiles, right, like very similar
664
00:39:29.840 --> 00:39:34.519
modes of like transport, in that you have wheels right right,
665
00:39:35.199 --> 00:39:39.639
and you have like somebody steering it. It's just a
666
00:39:39.679 --> 00:39:43.159
matter of what's powering it, right, that changes, but the
667
00:39:43.159 --> 00:39:46.239
infrastructure and things related to it and all, like as
668
00:39:46.280 --> 00:39:49.880
an example, whips, Like you know, the accessories around all
669
00:39:49.920 --> 00:39:54.119
of this stuff are just changing shape, right, right, but
670
00:39:54.199 --> 00:39:58.719
the underlying infrastructure around it is still very much the same.
671
00:39:59.239 --> 00:39:59.440
Right.
672
00:40:01.119 --> 00:40:03.400
So we may need less people that shovel poop and
673
00:40:03.440 --> 00:40:07.559
more people that are machinists and auto mechanics exactly.
674
00:40:07.639 --> 00:40:10.960
I think that's ultimately where we're going to get into,
675
00:40:11.159 --> 00:40:16.199
is like more specialized aspects, right, And like that's honestly
676
00:40:16.199 --> 00:40:20.159
what we've been seeing taking shape before AI started, as
677
00:40:20.199 --> 00:40:25.199
like frameworks become more popular, and like Kubernetes as an example, right,
678
00:40:25.280 --> 00:40:28.679
like all of these abstractions, I mean, DH makes a
679
00:40:28.679 --> 00:40:32.679
great point like about abstractions in general. If you get
680
00:40:32.719 --> 00:40:37.960
abstract away like the concepts in a way that you
681
00:40:38.000 --> 00:40:42.199
know makes it so that you have a more straightforward
682
00:40:42.360 --> 00:40:47.519
point of use, right, Like all the details like somebody
683
00:40:47.519 --> 00:40:51.159
else is working on those, right, right, and you can
684
00:40:51.920 --> 00:40:54.679
you know rest assured that you know, those people that
685
00:40:54.719 --> 00:40:57.360
are specialized in it are going to produce you know
686
00:40:57.599 --> 00:41:02.800
that make it easier and more modular and extendable, uh
687
00:41:03.599 --> 00:41:06.119
for your general purpose use right, Right?
688
00:41:07.559 --> 00:41:10.320
So I'm gonna shift gears on you just a little
689
00:41:10.320 --> 00:41:14.880
bit because we've talked about using AI mostly to generate code,
690
00:41:15.280 --> 00:41:17.159
and then you were talking about how you can use
691
00:41:17.280 --> 00:41:25.280
Claude to effectively incrementally generate basically an entire application. Actually,
692
00:41:25.320 --> 00:41:28.039
I'm gonna change my question because it came into my
693
00:41:28.079 --> 00:41:30.239
head as I was talking about this. So if if
694
00:41:30.239 --> 00:41:33.480
you've got something like Claude that can generate pretty much
695
00:41:33.519 --> 00:41:36.719
an entire application, I mean, are there limitations to that?
696
00:41:37.000 --> 00:41:38.920
Like? Are there are there areas.
697
00:41:38.519 --> 00:41:40.920
Where you may tell it you want it to generate
698
00:41:41.960 --> 00:41:44.960
a thing, and it's just not you know, it's not
699
00:41:45.000 --> 00:41:46.639
going to be good at that, or it's good at
700
00:41:46.639 --> 00:41:48.760
to it up, good at it up to a certain point,
701
00:41:48.800 --> 00:41:49.440
and then after that.
702
00:41:50.679 --> 00:41:53.280
Yeah, I mean I definitely see the limitations, right, Like, uh,
703
00:41:53.800 --> 00:41:56.320
it's good up to a point. It's good at like
704
00:41:56.880 --> 00:42:00.880
cobbling together like uh, you know, MVP or like a
705
00:42:00.960 --> 00:42:03.880
first version of something, But as soon as you want
706
00:42:03.920 --> 00:42:06.960
to add something new or make changes to it, it
707
00:42:07.039 --> 00:42:10.880
starts to break down pretty quickly, right, And what you
708
00:42:10.960 --> 00:42:13.000
end up having to do is break it apart. And
709
00:42:13.239 --> 00:42:17.079
I'm honestly very similar to just general software engineering, right
710
00:42:17.199 --> 00:42:19.719
is like you break it apart in the smaller pieces
711
00:42:19.840 --> 00:42:23.920
and then focus on those smaller pieces. Yeah, and I
712
00:42:24.079 --> 00:42:27.719
know Ken Beck has like a great like saying around
713
00:42:27.760 --> 00:42:31.719
this on like, you know, make the change easy and
714
00:42:31.760 --> 00:42:35.159
then make the easy change right, like right, And that's
715
00:42:35.239 --> 00:42:38.360
ultimately what ends up happening as you start to develop
716
00:42:38.800 --> 00:42:42.320
like things with AI on a larger scale.
717
00:42:42.920 --> 00:42:44.880
So you kind of answered the other question I was
718
00:42:44.920 --> 00:42:48.320
going to ask, which was, so, let's say I have
719
00:42:48.880 --> 00:42:50.519
like a bunch of code. I don't want to say
720
00:42:50.599 --> 00:42:53.599
legacy code, because people take that to mean different things. Right,
721
00:42:53.639 --> 00:42:56.480
if you read Michael Feathers, it's just code without tests.
722
00:42:57.800 --> 00:43:01.199
But you know, so you've got this older code that
723
00:43:01.480 --> 00:43:03.719
you know was written I don't know, five years ago
724
00:43:03.840 --> 00:43:08.039
or something that still works, but you find, hey, maybe
725
00:43:08.079 --> 00:43:11.159
I want to refactor it so that it's easier to maintain,
726
00:43:11.239 --> 00:43:13.719
or I want to I want to add a feature
727
00:43:13.719 --> 00:43:18.760
to it. Right, And so I was going to say,
728
00:43:18.800 --> 00:43:21.760
mostly we were talking about generating code, but yeah, what
729
00:43:21.800 --> 00:43:25.960
about modifying code or refactoring code or rethinking code. And
730
00:43:26.039 --> 00:43:28.559
it sounds like the answer to that is, yeah, you
731
00:43:28.559 --> 00:43:32.639
you take the relevant parts out, you tell your large
732
00:43:32.719 --> 00:43:37.199
language model about it. Right here, here's here's my view,
733
00:43:37.280 --> 00:43:40.519
here's my controller, here's my model. You know, here's the
734
00:43:40.559 --> 00:43:44.719
feature that it's supposed to implement. You know, I need
735
00:43:44.760 --> 00:43:46.639
to add this other feature and then see what it
736
00:43:46.679 --> 00:43:47.199
does with it.
737
00:43:47.760 --> 00:43:51.840
Yeah, I mean pretty much. And you know, circling back
738
00:43:51.880 --> 00:43:58.440
to like the more you know, the more point of
739
00:43:58.559 --> 00:44:02.280
use tools like or like code buffer or something like that,
740
00:44:06.079 --> 00:44:09.239
you know, like it can gather that context for you.
741
00:44:09.559 --> 00:44:12.920
Like the most difficult part of the whole were factoring
742
00:44:13.400 --> 00:44:17.440
aspect and making modification. Is like the code, the you
743
00:44:17.440 --> 00:44:21.679
know file spread, right, Like if you have this giant
744
00:44:22.000 --> 00:44:24.519
you know, service class that you've just put everything in
745
00:44:24.639 --> 00:44:28.159
to make the abstraction easier, and it's just becoming too
746
00:44:28.199 --> 00:44:30.400
and wieldly to make changes to it, and you want
747
00:44:30.440 --> 00:44:33.960
to break it apart into smaller pieces so that the
748
00:44:34.000 --> 00:44:38.920
responsibilities are broken out appropriately, right, getting it to extract
749
00:44:38.960 --> 00:44:41.119
those and make new files and things like that, and
750
00:44:41.119 --> 00:44:43.559
getting it to orchestrate all of them, like that kind
751
00:44:43.599 --> 00:44:48.000
of change becomes more difficult, and so like that's where
752
00:44:48.039 --> 00:44:52.440
like again back to the specialists, like you know, that's
753
00:44:52.440 --> 00:44:55.119
why I don't think our jobs are going anywhere necessarily,
754
00:44:56.400 --> 00:45:00.480
is like, you know, it doesn't know how to make
755
00:45:00.719 --> 00:45:06.719
code friendly and easy to read, right, right, and.
756
00:45:05.920 --> 00:45:07.760
It just knows how to make code like what it's
757
00:45:07.800 --> 00:45:08.840
already been trained.
758
00:45:08.960 --> 00:45:12.119
Exactly, and so like let's say even that you get
759
00:45:12.199 --> 00:45:14.320
it to train on a whole bunch of code that
760
00:45:14.320 --> 00:45:17.280
you have that is in a pleasant way, Like it'll
761
00:45:17.320 --> 00:45:20.559
get to a point where, you know, you're trying to
762
00:45:20.639 --> 00:45:24.239
do something novel, You're trying to introduce a new concept,
763
00:45:24.719 --> 00:45:27.079
and like it doesn't know how to break apart the
764
00:45:27.119 --> 00:45:32.480
existing design concepts and apply it to the new novel
765
00:45:32.599 --> 00:45:37.000
approach of implementing something that you're trying to do. So
766
00:45:37.119 --> 00:45:39.719
like it might be able to get like, okay, we
767
00:45:39.760 --> 00:45:44.159
want a service class. We want to you know, encapsulate
768
00:45:44.199 --> 00:45:47.480
this form logic in an object oriented way. It can
769
00:45:47.519 --> 00:45:51.400
do these abstract concepts, but like the actual implementation of
770
00:45:51.480 --> 00:45:54.599
the whole flow starts to break apart, and like it'll
771
00:45:54.639 --> 00:45:57.920
just become messy and like a messy as a human
772
00:45:58.159 --> 00:46:01.480
right to read, where like maybe the code works and
773
00:46:01.519 --> 00:46:05.079
it runs, but you know, the naming conventions may will
774
00:46:05.119 --> 00:46:07.679
start to break down and it won't make sense. It'll
775
00:46:07.679 --> 00:46:10.199
just make sense to like the very specific things that
776
00:46:10.239 --> 00:46:15.360
it's making, right, and it does yeah, I mean it
777
00:46:15.360 --> 00:46:19.119
doesn't have knowledge of the world at every moment, right, Yeah,
778
00:46:19.199 --> 00:46:19.840
that makes sense.
779
00:46:23.000 --> 00:46:24.719
Right, So we go from.
780
00:46:25.960 --> 00:46:29.760
Sort of the you know, like I said, shoveling shoveling
781
00:46:29.800 --> 00:46:33.880
poop right where it's you know, kind of the generic,
782
00:46:34.119 --> 00:46:38.480
easy to pick out cleanups that you know, it may
783
00:46:38.519 --> 00:46:40.679
pick up just because it's got a bunch of code
784
00:46:40.679 --> 00:46:43.679
samples that it was trained on that are reasonably well
785
00:46:43.679 --> 00:46:47.320
written and so it you know, it can adapt a
786
00:46:47.320 --> 00:46:49.840
lot of that stuff out. But yeah, the more involved
787
00:46:49.840 --> 00:46:52.679
re factors and things like that it just does hasn't
788
00:46:52.719 --> 00:46:53.320
been trained on.
789
00:46:53.679 --> 00:46:56.480
I get from here to hear, right, And.
790
00:46:56.480 --> 00:47:00.440
Yeah, I mean it is great for a factor if
791
00:47:00.480 --> 00:47:04.360
you have the narrow enough scope where okay, you have
792
00:47:04.559 --> 00:47:06.800
like even if you have like three files and you're like,
793
00:47:07.199 --> 00:47:09.360
this is just too many files to handle, Like, can
794
00:47:09.440 --> 00:47:12.679
we like reduce the complexity here, Like you can guide
795
00:47:12.719 --> 00:47:15.639
it in a way that it can help you eventually
796
00:47:15.639 --> 00:47:20.599
reach the goal that you're trying to get. But right, like,
797
00:47:20.639 --> 00:47:23.559
if you don't understand how to help it get there,
798
00:47:24.360 --> 00:47:27.320
how to help it help you get there right, right,
799
00:47:29.239 --> 00:47:32.039
then it's going to be more difficult to work with
800
00:47:32.079 --> 00:47:33.920
it than it is. Just you figuring it out.
801
00:47:34.280 --> 00:47:36.239
Right, So so you may be able to handle a
802
00:47:36.320 --> 00:47:39.760
class with five hundred lines in it and say, this
803
00:47:39.840 --> 00:47:42.440
class is too large? What responsibilities do you see here?
804
00:47:42.480 --> 00:47:44.639
And it may may not be able to pick them out,
805
00:47:44.760 --> 00:47:46.920
and then if it does, then maybe you can start
806
00:47:46.960 --> 00:47:51.000
asking it, okay, which methods belong to which responsibility and
807
00:47:51.039 --> 00:47:53.400
then from there you can start to figure out how
808
00:47:53.400 --> 00:47:56.360
to have it help you divvy it up and you know,
809
00:47:56.440 --> 00:47:57.599
extract the class.
810
00:47:58.039 --> 00:48:01.079
Yeah, and I'm hopeful that like all this stuff, like
811
00:48:01.119 --> 00:48:04.480
with these models, a lot of this comes out of there, right,
812
00:48:04.480 --> 00:48:07.719
because like that's ultimately where software like comes in play.
813
00:48:07.840 --> 00:48:12.719
Is like you have these like design you know, buffer
814
00:48:12.840 --> 00:48:16.199
ahead of time that you work through to figure out
815
00:48:16.280 --> 00:48:21.559
ultimately what needs to change or get created, and like
816
00:48:21.639 --> 00:48:27.960
that's very step wise, like and you know that process
817
00:48:28.039 --> 00:48:31.880
is like, okay, I'm thinking about doing this thing. Help
818
00:48:31.960 --> 00:48:36.039
me break out the steps, what approaches are there? And
819
00:48:36.559 --> 00:48:40.840
once you've scattered and then figured out which one pieces
820
00:48:40.880 --> 00:48:45.519
of it that you actually care about, right right, getting
821
00:48:45.559 --> 00:48:51.159
it to identify those things is nice, And then you're
822
00:48:51.199 --> 00:48:54.199
still left with, Okay, well I should make the best
823
00:48:54.280 --> 00:48:58.920
choice in this moment, which you know I'm hopeful that
824
00:48:58.960 --> 00:49:03.559
the future my like focus more around like the selection
825
00:49:04.280 --> 00:49:09.760
aspect of those design choices. But yeah, there's still a
826
00:49:09.800 --> 00:49:13.360
lot of like the reasoning aspect of these things that
827
00:49:14.119 --> 00:49:14.639
is missing.
828
00:49:15.559 --> 00:49:20.119
Right, So are there other tools or approaches that you're using.
829
00:49:22.760 --> 00:49:27.719
Let's see what else is in my toolbox? I mean yeah,
830
00:49:27.760 --> 00:49:31.480
I mean for design stuff, I definitely use that software
831
00:49:31.519 --> 00:49:38.800
architect mentor one. Just to hash through ideas, I use
832
00:49:38.880 --> 00:49:42.719
lane chain a lot. Lange Chain RB has some great
833
00:49:42.760 --> 00:49:52.719
abstractions around working with AI development and integration. We talked
834
00:49:52.719 --> 00:49:56.559
about ray r ai X just great like rails plug
835
00:49:56.559 --> 00:49:59.480
in to just like get your Rails app hooked up
836
00:49:59.519 --> 00:50:03.280
to various AI related design things.
837
00:50:07.039 --> 00:50:10.039
Yeah, and there's Ray and then there's Ray rails. Ye.
838
00:50:10.719 --> 00:50:14.000
So the one is the Ruby extension, the other one
839
00:50:14.039 --> 00:50:14.840
is the race and.
840
00:50:15.199 --> 00:50:17.280
To be honest, lane chain or B they have lane
841
00:50:17.360 --> 00:50:22.320
chain reels which also adds some similar integrations. And then
842
00:50:22.360 --> 00:50:26.440
there's the whole agent side of things too, which.
843
00:50:29.360 --> 00:50:31.360
Isn't that what Ray is kind of focused around, is
844
00:50:31.360 --> 00:50:34.719
building those agents or are you talking about agents that
845
00:50:34.719 --> 00:50:37.440
people have already built for Ruby stuff?
846
00:50:38.480 --> 00:50:41.519
So there's like there's two ways of thinking about it.
847
00:50:41.639 --> 00:50:44.360
Like if you're just like if you want to augment
848
00:50:44.480 --> 00:50:47.280
your applications with AI, like use it as a tool.
849
00:50:47.519 --> 00:50:51.159
Like that's more like Ray or things like that where
850
00:50:51.159 --> 00:50:54.159
you just want to introduce, Hey, I have this model
851
00:50:54.239 --> 00:50:57.239
and I wanted to auto generate stuff based on these
852
00:50:57.320 --> 00:51:00.199
column names, or I have this prompt and I want
853
00:51:00.239 --> 00:51:03.880
to guide through a process and you can create kind
854
00:51:03.920 --> 00:51:06.440
of like these abstractions around those ideas.
855
00:51:07.440 --> 00:51:09.960
That's the level that I'm looking at working in. So,
856
00:51:10.039 --> 00:51:12.920
for example, with what I've built for top end devs,
857
00:51:13.840 --> 00:51:17.079
I'm basically to the point now where I'm starting to
858
00:51:17.119 --> 00:51:20.079
show other people how I run things, and they're telling
859
00:51:20.079 --> 00:51:22.480
me that they want my platform as much as they
860
00:51:22.519 --> 00:51:27.320
want my method, right, and so I'm imagining, yeah, you
861
00:51:27.400 --> 00:51:30.679
have something that you built in Ray, and it's essentially
862
00:51:32.159 --> 00:51:36.000
you know, so like when our guest today almost said
863
00:51:36.039 --> 00:51:37.920
his name, but I don't want to call him out.
864
00:51:37.960 --> 00:51:40.199
He's a great guy and you know that he had
865
00:51:40.199 --> 00:51:43.280
a good reason for canceling today. But right, so if
866
00:51:43.280 --> 00:51:46.079
that happened, right, I would like it to go and
867
00:51:46.119 --> 00:51:49.719
have my agent with has access to the back end,
868
00:51:49.960 --> 00:51:54.480
right say okay, we're gonna we're going to reschedule him
869
00:51:54.639 --> 00:51:58.159
for whenever or you know, we're going to pick another
870
00:51:58.199 --> 00:52:01.039
topic and bring it in right and have it intelligently
871
00:52:01.079 --> 00:52:03.679
do that, but then also have my users be able
872
00:52:03.719 --> 00:52:06.880
to as much as they go in and just modify
873
00:52:06.920 --> 00:52:10.079
stuff in the form right that I built in rails,
874
00:52:10.480 --> 00:52:14.840
but also just say I don't like the title of
875
00:52:14.920 --> 00:52:17.920
episode five hundred and twenty two. I think it needs
876
00:52:17.920 --> 00:52:21.360
to be more focused on this topic or you know,
877
00:52:22.119 --> 00:52:25.159
we use this as an example. So like JavaScript Jabber,
878
00:52:25.679 --> 00:52:28.920
one of the episodes, I kept bringing up examples from
879
00:52:29.000 --> 00:52:33.119
rails to illustrate points, right, And so the AI generated
880
00:52:33.199 --> 00:52:35.599
title that wound up getting put in there without me
881
00:52:35.639 --> 00:52:38.960
catching it had rails in the title, and that wasn't
882
00:52:38.960 --> 00:52:41.519
what the episode was about at all, and so it
883
00:52:41.559 --> 00:52:43.039
would have been nice to be able to just tell
884
00:52:43.079 --> 00:52:46.000
it instead of going in and try and do whatever.
885
00:52:46.119 --> 00:52:49.039
Say I need a title that is less.
886
00:52:48.800 --> 00:52:51.559
Focused on you know, that doesn't include rails and talks
887
00:52:51.559 --> 00:52:54.719
about this topic instead, and then have it smart enough
888
00:52:54.719 --> 00:52:56.920
to go and generate a new title and.
889
00:52:56.840 --> 00:52:58.800
Ask me if that's okay. Kind of thing.
890
00:52:59.800 --> 00:53:02.440
Right where the UI is now, I can either speak
891
00:53:02.440 --> 00:53:04.360
to it or type into a chat and have it
892
00:53:04.400 --> 00:53:07.280
do the right thing. Reschedule this episode Okay, I'm going
893
00:53:07.320 --> 00:53:08.440
to go modify it in the calendar.
894
00:53:08.480 --> 00:53:10.599
I'm gonna go send new invites to the guests.
895
00:53:10.400 --> 00:53:14.159
And the hosts and right do all the other process
896
00:53:14.239 --> 00:53:17.639
things because it has access to the back end of
897
00:53:18.000 --> 00:53:18.599
my system.
898
00:53:18.679 --> 00:53:19.440
Does that make sense?
899
00:53:19.880 --> 00:53:20.840
Yeah, that makes sense.
900
00:53:20.960 --> 00:53:22.880
I get excited about that, And I think that that
901
00:53:23.639 --> 00:53:28.119
is a more intuitive interface for a lot of business
902
00:53:28.159 --> 00:53:31.440
owners that literally just want a content strategy that gets
903
00:53:31.480 --> 00:53:32.199
a business.
904
00:53:32.719 --> 00:53:34.679
Yeah. I mean, if you're just trying to supplement your
905
00:53:34.719 --> 00:53:40.559
existing business, right like using something like ray or lang
906
00:53:40.639 --> 00:53:44.360
Chain or one of these other supplemental libraries, right, Like,
907
00:53:44.559 --> 00:53:46.360
that makes a lot of sense. It just looks right
908
00:53:46.400 --> 00:53:51.400
into it, you know, very minimal modification and like long
909
00:53:51.519 --> 00:53:55.159
term support. Just like it's super easy to modify and
910
00:53:55.519 --> 00:53:57.199
update the prompts pretty easily.
911
00:53:57.400 --> 00:53:57.599
Right.
912
00:53:58.559 --> 00:54:01.079
But if you're trying to get like something more complex
913
00:54:01.199 --> 00:54:04.199
out of like the AI systems, that's kind of where
914
00:54:04.239 --> 00:54:07.280
like agentic system design comes in play.
915
00:54:07.960 --> 00:54:08.199
Uh.
916
00:54:08.239 --> 00:54:11.320
And that's like where you want like, uh, you know,
917
00:54:11.400 --> 00:54:14.199
AI to to do a specific job and like a
918
00:54:14.320 --> 00:54:17.440
chain through a bunch of steps. Uh. And so like
919
00:54:17.480 --> 00:54:22.000
there's tools like active agents as an example, justin Bowen, Uh,
920
00:54:22.039 --> 00:54:26.760
he just released these uh this framework which is pretty
921
00:54:26.760 --> 00:54:34.159
awesome uh for managing agentic system flows like that. And
922
00:54:34.199 --> 00:54:38.519
then there's like you know Alex Rudall, we had him
923
00:54:38.519 --> 00:54:43.199
on He's the Ruby open Ai author, right. He has
924
00:54:43.239 --> 00:54:48.679
AI engine, UH, the AI engine Jim it's with reels
925
00:54:48.679 --> 00:54:51.719
ai dot com uh. And that he has you know
926
00:54:51.800 --> 00:54:57.639
assistance ah, you know framework built in where you can
927
00:54:57.679 --> 00:55:04.800
just hook into uh to get various code like you know,
928
00:55:04.880 --> 00:55:10.199
to do step wise things with there's just like a
929
00:55:10.719 --> 00:55:14.840
it's like if you're looking to cobbled it.
930
00:55:14.960 --> 00:55:15.039
Like.
931
00:55:15.960 --> 00:55:19.239
One of the greatest things I saw was actually from
932
00:55:20.000 --> 00:55:24.719
Toby Luke from Shopify. He gave this like internal like
933
00:55:25.719 --> 00:55:30.800
presentation where it was all developed by AI and he
934
00:55:30.920 --> 00:55:35.960
had basically like made these little agents. He made like
935
00:55:36.000 --> 00:55:39.960
a virtual office and this was the program. And the
936
00:55:40.039 --> 00:55:44.679
virtual office had individual agents, which were basically just people
937
00:55:44.719 --> 00:55:47.679
with a very specific role like a software engineer, a
938
00:55:47.719 --> 00:55:53.599
marketing person, you know, research assistant, you know. And each person,
939
00:55:53.960 --> 00:55:57.679
each agent had a loop and it went through and
940
00:55:57.719 --> 00:56:01.320
it thought about what it had to do. It like
941
00:56:01.599 --> 00:56:04.360
had some tools available to it to perform that task.
942
00:56:05.119 --> 00:56:08.960
And then every periodically all of the agents would get
943
00:56:09.000 --> 00:56:12.119
together and they would like have a meeting, right, and
944
00:56:12.320 --> 00:56:15.440
like they could if they needed information from another agent,
945
00:56:15.719 --> 00:56:17.559
like they could reach out to the other agent and
946
00:56:17.679 --> 00:56:22.639
work together on producing those details. Right. And then you
947
00:56:22.679 --> 00:56:25.119
know what you can do is is you could scale this,
948
00:56:25.360 --> 00:56:29.199
right is you could say, Okay, I want like five
949
00:56:29.280 --> 00:56:33.360
developers agents, right, like I want five marketing people on
950
00:56:33.400 --> 00:56:36.639
this effort, and they would all work together and work
951
00:56:36.639 --> 00:56:42.519
on scaling and then conferring their judgments together for better results.
952
00:56:42.840 --> 00:56:46.559
And if you think about it again, like he basically said, well,
953
00:56:46.559 --> 00:56:49.320
then you can also scale your offices, right Like, so
954
00:56:49.480 --> 00:56:51.320
like let's say I have one office working on this,
955
00:56:51.519 --> 00:56:53.880
I can have many offices working on this, and maybe
956
00:56:54.199 --> 00:56:56.679
they're all working on their own different things, but ultimately
957
00:56:56.679 --> 00:57:00.760
coming together for the business side, like right purpose Uh
958
00:57:00.840 --> 00:57:04.880
And so it's really interesting idea of like these virtualization
959
00:57:05.320 --> 00:57:09.400
like containers of all of these very specific things doing
960
00:57:09.480 --> 00:57:13.360
very specific tasks. And so if you're want to like
961
00:57:14.119 --> 00:57:17.679
build a business around that idea, like you're gonna go
962
00:57:17.920 --> 00:57:23.280
through some kind of agent or assistant p Yeah.
963
00:57:23.400 --> 00:57:25.800
Yeah, And and that's that's what I'm excited about, right.
964
00:57:25.840 --> 00:57:28.960
I just see all kinds of opportunities with that. Was
965
00:57:28.960 --> 00:57:30.840
there anything else that we should dive into here. We've
966
00:57:30.880 --> 00:57:31.800
been talking about an hour.
967
00:57:33.800 --> 00:57:37.280
I mean I could keep going. There's there's so many.
968
00:57:37.199 --> 00:57:38.079
One more things.
969
00:57:38.320 --> 00:57:45.199
Yeah, I mean so the there the Latent Space podcast
970
00:57:45.280 --> 00:57:46.119
is just incredible.
971
00:57:46.400 --> 00:57:48.280
Uh yeah, I just started listening to that.
972
00:57:48.360 --> 00:57:52.559
Oh my gosh. They are just like in it deep right,
973
00:57:52.719 --> 00:57:55.039
Like if you're if you want your mind blown about
974
00:57:55.079 --> 00:57:57.800
like what is happening in the AI space, like they're
975
00:57:57.800 --> 00:57:58.880
exposing it pretty great.
976
00:57:59.119 --> 00:57:59.519
Uh.
977
00:57:59.800 --> 00:58:03.079
And and one one thing that is like frequently talked
978
00:58:03.119 --> 00:58:08.199
about is like the importance of like evaluating the outputs
979
00:58:08.280 --> 00:58:12.679
right and getting benchmarks and so like two of these
980
00:58:12.719 --> 00:58:18.679
concepts are like, uh, you know, the Hugging Face has
981
00:58:18.679 --> 00:58:25.920
a great like library on their evail framework. Let me
982
00:58:25.960 --> 00:58:30.079
see if I can remember what it is. I mean, yeah,
983
00:58:30.199 --> 00:58:35.960
Evail guidebook, and so that they have like basically this like, uh,
984
00:58:37.920 --> 00:58:41.960
you know, how do you get run tests against these
985
00:58:41.960 --> 00:58:45.440
outputs so that you can guarantee that they're doing it
986
00:58:45.480 --> 00:58:48.760
what you what you want of them, right, Because that's
987
00:58:48.800 --> 00:58:50.719
one of the biggest things is like there's so much
988
00:58:50.800 --> 00:58:55.159
variability in their output right, Like uh, it's token by token,
989
00:58:55.280 --> 00:58:57.920
so like if it gets off track at any point,
990
00:58:58.159 --> 00:59:01.639
like it could all of a sudden break down pretty easily.
991
00:59:01.679 --> 00:59:03.840
And if you have that hooked up into a series
992
00:59:03.920 --> 00:59:06.199
of processes that depend on each other, right, like that
993
00:59:06.199 --> 00:59:09.440
falls apart pretty quickly. And so like setting up these
994
00:59:09.480 --> 00:59:13.599
kind of like benchmarks and evaluations is just like there's
995
00:59:13.639 --> 00:59:18.199
a whole industry like focus on this, right, And that's
996
00:59:18.239 --> 00:59:22.599
where you get these like leaderboards that benchmark all of
997
00:59:22.639 --> 00:59:26.480
these models based on different criteria like how well do
998
00:59:26.559 --> 00:59:32.480
they you know one I just saw recently, there's a
999
00:59:32.480 --> 00:59:39.599
an evaluation or a leaderboard for for doing debates, right,
1000
00:59:39.679 --> 00:59:43.280
like how well do the models like argue on a point?
1001
00:59:44.039 --> 00:59:46.920
And so there's like a new leaderboard now where which
1002
00:59:46.960 --> 00:59:49.440
models perform best at this, right, like which which ones
1003
00:59:49.440 --> 00:59:50.239
are most convincing?
1004
00:59:51.239 --> 00:59:51.400
Right?
1005
00:59:52.519 --> 00:59:54.719
And it's it's pretty great. And so like there there
1006
00:59:54.719 --> 00:59:57.039
are a bunch of leaderboards that and that all of
1007
00:59:57.039 --> 00:59:59.719
them are based on these evaluations, right where you have
1008
01:00:00.760 --> 01:00:03.800
output and you give it input and you expected a
1009
01:00:03.920 --> 01:00:10.559
very specific reconstruction of that every time, right. And so
1010
01:00:10.639 --> 01:00:12.599
that's actually something I focus on quite a bit at
1011
01:00:12.599 --> 01:00:17.440
work building stuff for physicians. Right, it's pretty important to
1012
01:00:17.440 --> 01:00:19.800
get it to do exactly what you want.
1013
01:00:20.159 --> 01:00:24.119
Right, That's amazing.
1014
01:00:24.719 --> 01:00:28.119
Yeah, And Layton space is what it swicks or Sean
1015
01:00:28.159 --> 01:00:31.960
Wayne yep and Alesso I can't remember his last.
1016
01:00:31.800 --> 01:00:35.320
Name, but yeah, I mean I would Hugging Face is
1017
01:00:35.360 --> 01:00:39.719
definitely like they are awesome. They're just killing on all
1018
01:00:39.800 --> 01:00:43.039
fronts here, even the robotic stuff. I don't know if
1019
01:00:43.079 --> 01:00:47.159
you play. I have a little They have this thing
1020
01:00:47.239 --> 01:00:51.440
called the robot and it's a robotic arm that you
1021
01:00:51.480 --> 01:00:56.000
can train with AI just like on your MacBook and
1022
01:00:56.039 --> 01:01:01.960
you point a camera at it, and I've built it
1023
01:01:02.119 --> 01:01:04.320
like that. You build two of them, right, like one
1024
01:01:04.599 --> 01:01:07.480
to train it with and one to do things with.
1025
01:01:08.079 --> 01:01:11.599
And it has this thing called telepresence where it repeats
1026
01:01:11.719 --> 01:01:14.199
you know, what you're doing with one robot arm to
1027
01:01:14.280 --> 01:01:18.719
the other, and then it you know, trains and model
1028
01:01:18.760 --> 01:01:20.400
based on that, and so you could train it to
1029
01:01:20.440 --> 01:01:22.280
do different things, so like pick up you know, sort
1030
01:01:22.320 --> 01:01:26.360
Eminem's or sort legos or you know pick up. I'm
1031
01:01:26.360 --> 01:01:28.519
trying to get it to right, like Hello world, right,
1032
01:01:29.280 --> 01:01:30.800
And you could train it to do this just like
1033
01:01:30.880 --> 01:01:35.239
by having it watch itself and repeat those training examples,
1034
01:01:35.280 --> 01:01:37.679
like in a virtual environment. So they have like this
1035
01:01:37.679 --> 01:01:42.440
whole framework they built around that. It's so fascinating. The
1036
01:01:42.519 --> 01:01:45.440
other robotics aspects of all this stuff is pretty wild.
1037
01:01:47.599 --> 01:01:50.239
Yeah, it sounds like a whole different can of worms. Yeah.
1038
01:01:51.679 --> 01:01:53.880
So at the end of the day, if people are
1039
01:01:53.880 --> 01:01:56.760
looking to enhance their.
1040
01:01:58.199 --> 01:02:01.079
You know, their code stuff, and we didn't even get
1041
01:02:01.119 --> 01:02:03.400
into you know, JavaScript in front end, if you're doing
1042
01:02:03.400 --> 01:02:09.320
stuff with that. But you know, beyond kind of the
1043
01:02:09.639 --> 01:02:13.719
stepping stones that we've already talked through, right, are there
1044
01:02:13.760 --> 01:02:15.480
good places for people to just kind of keep an
1045
01:02:15.480 --> 01:02:18.800
eye out and go, you know, see what else kind
1046
01:02:18.800 --> 01:02:19.639
of crops up?
1047
01:02:22.719 --> 01:02:26.559
I mean really just starts small, Like this space is
1048
01:02:26.760 --> 01:02:29.320
always going to change fast, and there's going to be
1049
01:02:29.400 --> 01:02:35.239
new things, but there's like foundational concepts and tools like
1050
01:02:35.760 --> 01:02:40.480
becoming popular, right Like lang chain is like a widely
1051
01:02:40.519 --> 01:02:43.119
popular thing that's just super easy to get set up
1052
01:02:43.119 --> 01:02:43.639
and running with.
1053
01:02:44.480 --> 01:02:44.599
Right.
1054
01:02:44.960 --> 01:02:47.239
Grant is in Python and that's fine, like.
1055
01:02:47.840 --> 01:02:50.840
A yeah, but it looks like, you know, you've got
1056
01:02:50.920 --> 01:02:51.559
link chain RB.
1057
01:02:51.800 --> 01:02:55.440
So it's it's like calling a database or you know,
1058
01:02:55.519 --> 01:02:57.559
another API service or something, right.
1059
01:02:57.639 --> 01:03:00.920
I mean really, it's just like finding those abstractions that
1060
01:03:01.039 --> 01:03:04.239
just help like get to the point and learn the basics, right,
1061
01:03:04.400 --> 01:03:07.760
Like the best tool you can find to do that
1062
01:03:07.840 --> 01:03:11.119
with is going to be the best one, right, because
1063
01:03:11.159 --> 01:03:13.840
like there's so many concepts to learn, like just break
1064
01:03:13.880 --> 01:03:17.519
down like how you chain it all together, right, right,
1065
01:03:17.920 --> 01:03:22.480
and so like start with the very basic small stuff
1066
01:03:22.519 --> 01:03:24.840
like sub layer. If you're in Ruby, Like sub layer
1067
01:03:24.880 --> 01:03:27.119
is a great starting point. Like you open up a
1068
01:03:27.199 --> 01:03:29.719
Ruby fil and you include sub layer and you can
1069
01:03:29.800 --> 01:03:35.440
perform some LLLM magic right, awesome, awesome tool create different actions,
1070
01:03:35.559 --> 01:03:37.679
Like they have a library you can go and just
1071
01:03:37.760 --> 01:03:41.480
like you know, take all you know, the various actions
1072
01:03:41.480 --> 01:03:44.800
that they publish. Right, So if you want it as
1073
01:03:44.840 --> 01:03:48.920
an example, like red Green tests passing, like there's like
1074
01:03:49.039 --> 01:03:51.519
a you know, an agent for that you can download
1075
01:03:51.559 --> 01:03:53.719
and get running just from a URL.
1076
01:03:53.880 --> 01:03:54.320
So like.
1077
01:03:57.239 --> 01:04:00.079
Yeah, I would say, just like pick one tool and
1078
01:04:00.119 --> 01:04:02.719
that like that will get Now that's going to be
1079
01:04:02.719 --> 01:04:03.480
the fastest way.
1080
01:04:05.559 --> 01:04:09.159
Yeah, I guess at this point we'll go ahead and
1081
01:04:09.239 --> 01:04:13.199
do pics. Yeah.
1082
01:04:13.440 --> 01:04:15.000
I mean, I'm just sitting here kind of thinking through
1083
01:04:15.039 --> 01:04:16.719
all the implications of all the stuff we talked about,
1084
01:04:17.840 --> 01:04:19.679
because you know, I knew, I knew that there was
1085
01:04:19.719 --> 01:04:22.239
a whole level of stuff that I hadn't seen.
1086
01:04:24.599 --> 01:04:27.960
And one thing that I'm really wanting to do or
1087
01:04:27.960 --> 01:04:29.400
thinking about doing here is.
1088
01:04:29.400 --> 01:04:33.920
Just putting together essentially tutorial videos on how to do
1089
01:04:33.960 --> 01:04:36.480
a lot of this stuff. Right, It's like, hey, here's
1090
01:04:36.519 --> 01:04:39.920
how you, you know, work through some of these things
1091
01:04:40.000 --> 01:04:42.199
or use some of these tools, just to give people
1092
01:04:42.199 --> 01:04:46.719
an idea or example. Anyway, Yeah, let's go ahead and
1093
01:04:46.760 --> 01:04:48.679
jump in with picks and then we'll wrap up.
1094
01:04:50.840 --> 01:04:52.480
But yeah, we've we've got all kinds.
1095
01:04:52.239 --> 01:04:56.280
Of links in the on the YouTube broadcast that says
1096
01:04:56.280 --> 01:05:00.440
it's about solid cash.
1097
01:05:00.480 --> 01:05:02.159
But yeah, why don't why don't you go ahead and
1098
01:05:02.159 --> 01:05:03.519
go first? What picks do you have?
1099
01:05:05.880 --> 01:05:08.679
Yeah, I mean I have to, you know, call out
1100
01:05:08.679 --> 01:05:14.239
the Ruby I Builders discord. Like awesome. Honestly, if you're
1101
01:05:14.280 --> 01:05:17.119
looking for one thing to like learn all this stuff,
1102
01:05:17.239 --> 01:05:21.920
like just join that discord. You'll learn plenty and people
1103
01:05:21.960 --> 01:05:23.960
are just like so willing to help out and point
1104
01:05:23.960 --> 01:05:27.000
you to to where you need to go and what
1105
01:05:27.039 --> 01:05:31.800
you're looking for. Super helpful. Sublair also has a discord
1106
01:05:32.440 --> 01:05:36.440
if you're looking to drive into that as well. Yeah,
1107
01:05:36.440 --> 01:05:41.639
I mean next to that. Yeah, I'm just chugging away
1108
01:05:41.679 --> 01:05:50.719
on this, like Ruby laying AI project I started, it's
1109
01:05:50.719 --> 01:05:56.480
like very slow progress. Well, ultimately I'm like trying to
1110
01:05:56.760 --> 01:06:00.599
fine tune a model, a very small model, call him
1111
01:06:01.599 --> 01:06:06.360
you know, SML instead of ll M. But I'm trying
1112
01:06:06.400 --> 01:06:10.199
to like fine tune smaller models that are very purpose
1113
01:06:10.239 --> 01:06:14.440
driven for Ruby generate code generation with the ultimate goal
1114
01:06:14.480 --> 01:06:17.199
of being able to, like, you know, further fine tune
1115
01:06:17.239 --> 01:06:20.000
it on existing code basis so that you can get
1116
01:06:20.000 --> 01:06:23.280
it to generate things based on the context of your
1117
01:06:23.920 --> 01:06:28.320
organization's code. And I'm making some pretty good progress. I'm
1118
01:06:28.360 --> 01:06:31.599
trying to use as much Ruby as I can, and
1119
01:06:31.679 --> 01:06:35.800
so I have, you know, this high call library that
1120
01:06:35.840 --> 01:06:40.239
I'm using to ultimately just shell out to Python for
1121
01:06:40.360 --> 01:06:43.199
the things that Ruby can't do yet. But that gap
1122
01:06:43.280 --> 01:06:48.239
is slowly closing in thanks to Andrew Kane, who's just
1123
01:06:48.280 --> 01:06:51.440
like a monster with all of this machine learning stuff
1124
01:06:51.440 --> 01:06:55.280
in Ruby. Yeah, he is just putting out stuff left
1125
01:06:55.320 --> 01:07:00.880
and right. And I guess on that topic, there is
1126
01:07:01.119 --> 01:07:09.360
a gem called informers that he has that lets you
1127
01:07:09.519 --> 01:07:14.519
run inference for Ruby, and it's really great. You can
1128
01:07:14.559 --> 01:07:18.199
basically just like point a hugging face model at it
1129
01:07:18.480 --> 01:07:22.960
and run imprints using Ruby. Super fun stuff to play with.
1130
01:07:23.199 --> 01:07:26.000
If you're just trying to like summarize something as an example, like,
1131
01:07:26.320 --> 01:07:30.960
there are great smaller models that do specifically that and
1132
01:07:31.239 --> 01:07:34.840
they work great. You don't need like to reach out
1133
01:07:34.880 --> 01:07:37.280
to open Ay every time when you just want something
1134
01:07:37.800 --> 01:07:43.239
small that outputs much faster, right, So check that out.
1135
01:07:43.719 --> 01:07:48.800
Yeah, all right, I'm gonna do some picks. We used
1136
01:07:48.800 --> 01:07:52.519
to do the board game pick lately. So last weekend
1137
01:07:52.719 --> 01:07:55.800
I was teaching games at the Game Board Game Convention
1138
01:07:55.920 --> 01:08:01.400
again and so we had five games we were demoing.
1139
01:08:02.440 --> 01:08:04.599
So I'm going to pick some of those over the
1140
01:08:04.679 --> 01:08:07.760
next four or five weeks. One of the games I've
1141
01:08:07.800 --> 01:08:09.679
already picked on this show because I played it at
1142
01:08:09.679 --> 01:08:12.880
Salt Con in March, and so I'm not going to
1143
01:08:12.880 --> 01:08:15.400
pick that. That's Challengers if you haven't checked it out,
1144
01:08:16.800 --> 01:08:19.359
very fun game. The game that I'm going to pick
1145
01:08:19.439 --> 01:08:25.960
today is called Gnome Hollow, and I have to say so,
1146
01:08:26.000 --> 01:08:28.319
there are different aspects of board games. I haven't really
1147
01:08:28.319 --> 01:08:30.399
discussed this much on the show. There are different aspects
1148
01:08:30.399 --> 01:08:31.960
of board games that make them fun, right, So some
1149
01:08:32.000 --> 01:08:33.439
of it is kind of the flow of the game.
1150
01:08:33.920 --> 01:08:36.800
Some of it's you know, how much you have to
1151
01:08:36.840 --> 01:08:38.680
think about what you're doing and how much you have
1152
01:08:38.720 --> 01:08:40.520
to plan ahead, and whether or not you like that
1153
01:08:40.680 --> 01:08:43.239
kind of a game. And you know, and so that's
1154
01:08:43.279 --> 01:08:46.239
down to like complexity or things like that. Not always
1155
01:08:46.279 --> 01:08:50.079
some of it's like like, for example, nome Hollow has
1156
01:08:50.119 --> 01:08:54.760
a pretty simple cadence to each round. It's just it's
1157
01:08:54.840 --> 01:08:57.399
just the thinking ahead, right, because you're you're going to
1158
01:08:57.479 --> 01:08:59.720
build something out and then you're going to capitalize on it,
1159
01:09:00.159 --> 01:09:02.640
and then there's some movement aspect and you have to
1160
01:09:02.640 --> 01:09:04.800
decide what you're going to do every turn. So the
1161
01:09:04.800 --> 01:09:09.039
way that it's played is you're trying to complete mushroom
1162
01:09:09.079 --> 01:09:13.720
rings in the forest, okay, and you know your mushroom
1163
01:09:13.800 --> 01:09:16.000
rings don't have to be round, but they have to
1164
01:09:16.000 --> 01:09:19.359
be a complete loop. So you know, you can build
1165
01:09:19.359 --> 01:09:22.800
a three, A four, A five, six. It's hex tiles
1166
01:09:22.800 --> 01:09:24.520
and so it's the number of hex tiles that are
1167
01:09:24.560 --> 01:09:27.960
on the on the loop that you made, and you
1168
01:09:28.119 --> 01:09:30.640
get you get to move a marker down when you
1169
01:09:30.680 --> 01:09:35.520
complete a ring, right as long as there's a space
1170
01:09:35.560 --> 01:09:37.640
for it. So you can do one three, you can
1171
01:09:37.680 --> 01:09:40.479
do two fours, and then you can do like four fives,
1172
01:09:40.479 --> 01:09:42.399
four six's and four sevens.
1173
01:09:44.039 --> 01:09:45.760
You don't have that many markers.
1174
01:09:46.079 --> 01:09:49.880
And on the sevens, if you move one down, two
1175
01:09:49.880 --> 01:09:51.439
of the rewards on the sevens is you get to
1176
01:09:51.439 --> 01:09:53.720
move a second marker down and get another reward.
1177
01:09:54.359 --> 01:09:56.359
So anyway, it's pretty cool.
1178
01:09:56.399 --> 01:10:00.439
The different rewards either modified the game board or they
1179
01:10:00.520 --> 01:10:02.920
give you some other reward that gets you points. So
1180
01:10:03.920 --> 01:10:06.840
if you complete a loop, for every two loops you
1181
01:10:06.880 --> 01:10:09.399
complete or every two markers you move down it more appropriately,
1182
01:10:10.560 --> 01:10:14.359
you get to discover a wildflower, and then you get
1183
01:10:14.399 --> 01:10:17.279
the wildflower. You get a wild as part of your
1184
01:10:17.319 --> 01:10:20.159
reward for discovering a wildflower, and then the rest of
1185
01:10:20.199 --> 01:10:22.279
them go up for other people to be able to collect,
1186
01:10:22.640 --> 01:10:24.840
and so you get points for every wildflower you collect.
1187
01:10:25.199 --> 01:10:27.439
You get points for every marker you've moved down into
1188
01:10:27.439 --> 01:10:31.039
the reward space, and then you get points when you
1189
01:10:31.079 --> 01:10:34.920
complete the loop or the ring. You get the mushrooms
1190
01:10:35.079 --> 01:10:37.680
that are on the ring, and so then you can
1191
01:10:37.720 --> 01:10:39.680
go to the market and sell the mushrooms. And those
1192
01:10:39.720 --> 01:10:41.560
are the three ways to get points. You add them
1193
01:10:41.560 --> 01:10:46.039
all up at the end that's how you score. So
1194
01:10:46.119 --> 01:10:48.880
then it's just a matter of getting the you know,
1195
01:10:49.159 --> 01:10:51.560
enough of the right kinds of mushrooms to make your
1196
01:10:51.600 --> 01:10:53.760
trip to the market worth it. And then the other
1197
01:10:53.800 --> 01:10:56.439
thing is is if you say you cash in five
1198
01:10:56.680 --> 01:11:02.039
red mushrooms. You actually fill the spot for five red mushrooms,
1199
01:11:02.119 --> 01:11:03.960
and nobody else can do five, they can do six,
1200
01:11:04.199 --> 01:11:06.600
they can do four, they can't do five. And then
1201
01:11:06.600 --> 01:11:10.399
when somebody does six, right, then that is also gone. Right,
1202
01:11:10.439 --> 01:11:13.520
so maybe you go seven or eight. And so the
1203
01:11:13.520 --> 01:11:17.319
different mushrooms are worth different amounts because you have different
1204
01:11:17.399 --> 01:11:20.640
rarity on the hexes you place. You have place two hexes.
1205
01:11:21.560 --> 01:11:24.680
You collect the rewards for completing your loops, and then
1206
01:11:24.720 --> 01:11:27.159
you move your nome and you move your nome to
1207
01:11:27.439 --> 01:11:31.560
reserve a path that will eventually become a loop, or
1208
01:11:31.640 --> 01:11:33.800
you move your nome to a sign, which is one
1209
01:11:33.800 --> 01:11:35.880
of the rewards you get for completing a loop, or
1210
01:11:35.920 --> 01:11:38.319
you can move it up to the market and you know,
1211
01:11:38.520 --> 01:11:40.720
sell mushrooms, or you can go and collect the flower
1212
01:11:41.920 --> 01:11:43.760
and you know, and so then at the end of
1213
01:11:43.800 --> 01:11:47.640
the game, what if you've accrued in the different kinds
1214
01:11:47.680 --> 01:11:54.359
of flowers and stuff, that's how you win. So, you know,
1215
01:11:54.399 --> 01:11:55.880
I played it like three or four times at the
1216
01:11:55.920 --> 01:11:58.279
game convention because that was one of the games that
1217
01:11:58.600 --> 01:12:01.279
people wanted to learn and and anyway, it's a lot
1218
01:12:01.279 --> 01:12:04.000
of fun board game. Geek waits it at two point
1219
01:12:04.079 --> 01:12:07.520
one seven and so you know, kind of your average
1220
01:12:07.560 --> 01:12:10.520
gamer with enough complexity to make the game interesting is
1221
01:12:10.520 --> 01:12:13.800
about a two. So this is just slightly more complicated
1222
01:12:13.800 --> 01:12:18.560
than that. And the complication really is, you know, what
1223
01:12:18.600 --> 01:12:20.800
do I get for completing the loop? How do I
1224
01:12:20.840 --> 01:12:23.119
make the loop large enough to get the reward I want?
1225
01:12:23.199 --> 01:12:23.399
Right?
1226
01:12:23.600 --> 01:12:25.840
Instead of a four, make it a six or seven?
1227
01:12:26.880 --> 01:12:28.479
You know, and you have to plan ahead to make
1228
01:12:28.479 --> 01:12:29.079
your path.
1229
01:12:28.880 --> 01:12:29.560
Go the right way.
1230
01:12:31.720 --> 01:12:33.720
And then you know, yeah, when you move the gnome,
1231
01:12:34.560 --> 01:12:36.880
do I move it to a sign to get more mushrooms?
1232
01:12:36.960 --> 01:12:38.640
Do I move it to the market? Do I move
1233
01:12:38.680 --> 01:12:41.159
it to the thing? And which ones do I sell back?
1234
01:12:41.199 --> 01:12:42.800
And is somebody going to sell back the eight?
1235
01:12:42.880 --> 01:12:43.560
And I have eight?
1236
01:12:43.640 --> 01:12:45.920
So now I can only sell back seven. So that's
1237
01:12:45.960 --> 01:12:49.000
where the complexity is is it's in that play so
1238
01:12:49.039 --> 01:12:51.680
that you're making the right moves to accrue the most points.
1239
01:12:52.439 --> 01:12:56.079
And anyway, super fun game. Takes about forty five minutes
1240
01:12:56.119 --> 01:12:57.880
to play it, which is also great plays up to
1241
01:12:57.920 --> 01:12:58.439
four people.
1242
01:13:00.319 --> 01:13:02.119
I've played it with two, with three and with four.
1243
01:13:02.560 --> 01:13:04.319
I think with three and four people it's more fun
1244
01:13:04.920 --> 01:13:06.399
because you have a lot more going on on the
1245
01:13:06.399 --> 01:13:08.399
board and you have a lot more options that open.
1246
01:13:08.319 --> 01:13:09.159
Up more quickly.
1247
01:13:10.920 --> 01:13:14.079
But yeah, so no hollow And the artwork on this
1248
01:13:14.119 --> 01:13:18.960
one is awesome. It's fun artwork. There are a million
1249
01:13:19.000 --> 01:13:22.720
little pieces. They give you a whole bunch of bags,
1250
01:13:22.760 --> 01:13:24.439
and it's not really clear how you're supposed to get
1251
01:13:24.439 --> 01:13:25.880
it all back into the box. I mean it all
1252
01:13:25.920 --> 01:13:29.399
fits fine, that's not the problem. But it's like, Okay,
1253
01:13:29.399 --> 01:13:32.000
do I separate all out the different kinds of mushrooms?
1254
01:13:32.000 --> 01:13:35.520
And do I separate all the different markers into different bags?
1255
01:13:36.399 --> 01:13:39.279
If I wind up buying the game, I'm just gonna
1256
01:13:39.359 --> 01:13:41.279
bring in my own bags and I'll keep them all
1257
01:13:41.319 --> 01:13:43.600
separate in that way, I can just parcel them out.
1258
01:13:43.640 --> 01:13:45.960
But yeah, we wound up combining a bunch of stuff
1259
01:13:46.000 --> 01:13:47.439
and you wind up having to sort it back out
1260
01:13:47.439 --> 01:13:50.560
when you pull the game out. But it's fun, very
1261
01:13:50.640 --> 01:13:53.439
very fun. The game ends when somebody moves their last
1262
01:13:53.439 --> 01:13:57.319
marker down. You finish out, tell that everybody's had the
1263
01:13:57.319 --> 01:13:59.920
same number of turns, or if you run out of
1264
01:14:00.319 --> 01:14:02.720
to put on the board, and so what you do
1265
01:14:02.800 --> 01:14:08.880
is you put aside two hexes for every player that's playing,
1266
01:14:10.000 --> 01:14:13.159
and that way, if you run out of the hexes
1267
01:14:13.199 --> 01:14:16.520
to play, you just play off of that stack until
1268
01:14:16.560 --> 01:14:17.800
everybody's had the equal.
1269
01:14:17.640 --> 01:14:18.359
Number of turns.
1270
01:14:18.640 --> 01:14:22.159
I think every time that I've played, somebody moved their
1271
01:14:22.199 --> 01:14:26.279
last marker down before we were out of hexes. So anyway,
1272
01:14:26.560 --> 01:14:31.640
super fun game, Really enjoying that. I am working on
1273
01:14:31.720 --> 01:14:34.880
putting together an AI dev boot camp, and that's more
1274
01:14:34.920 --> 01:14:37.079
in the vein of building out the agents like we
1275
01:14:37.119 --> 01:14:40.800
talked about, as opposed to you know, and using some
1276
01:14:40.840 --> 01:14:44.199
of the other tools like Whisper for transit transcriptions and
1277
01:14:44.840 --> 01:14:48.000
text to speech or speech to text and all that
1278
01:14:48.119 --> 01:14:52.680
stuff right that that's offered out there. I'm looking at
1279
01:14:52.920 --> 01:14:55.119
open AI as kind of a baseline, but I am
1280
01:14:55.159 --> 01:14:57.079
looking at some of the other tools like Claude and
1281
01:14:58.039 --> 01:15:01.279
laying Chain and.
1282
01:15:00.520 --> 01:15:03.720
Olama or you know, Lama three and some.
1283
01:15:03.640 --> 01:15:05.640
Of those other tools that are out there, just to
1284
01:15:05.640 --> 01:15:09.479
give people an idea of what their options are. But yeah,
1285
01:15:09.800 --> 01:15:12.119
it's going to get into how do I bring this
1286
01:15:12.159 --> 01:15:14.760
stuff in and what options and services are out there
1287
01:15:14.800 --> 01:15:15.560
that will let.
1288
01:15:15.399 --> 01:15:16.920
Me do it, And so it's going to be.
1289
01:15:18.960 --> 01:15:23.840
I guess more focused on APIs and prompt engineering than
1290
01:15:23.880 --> 01:15:26.079
it is going to be on like how the models
1291
01:15:26.119 --> 01:15:27.760
actually get built and stuff like that.
1292
01:15:28.039 --> 01:15:29.199
I've had a few people ask me.
1293
01:15:29.239 --> 01:15:32.000
Oh, so we're going to do all the data management
1294
01:15:32.119 --> 01:15:35.439
and training our own models, and we might get into
1295
01:15:35.800 --> 01:15:38.039
some of that if I'm showing you how to like
1296
01:15:38.199 --> 01:15:42.600
enhance what Lama or lane chain give you, but not
1297
01:15:42.840 --> 01:15:46.319
a lot. It's really focused on how do you create
1298
01:15:46.399 --> 01:15:50.079
an awesome AI experience for your customers through an agent.
1299
01:15:50.800 --> 01:15:54.119
So anyway, I'm going to be doing that sometime in
1300
01:15:54.199 --> 01:15:57.239
January and so that's going to be at AIDEV boot
1301
01:15:57.279 --> 01:15:58.079
camp dot com.
1302
01:15:58.640 --> 01:16:03.079
And then I picked up a book on Amazon that.
1303
01:16:05.239 --> 01:16:07.199
And it's again, you know, like I said, you know,
1304
01:16:07.239 --> 01:16:09.840
I'm kind of using open open AI and its offerings
1305
01:16:09.880 --> 01:16:12.840
as a baseline, recognizing that there are other systems and
1306
01:16:12.920 --> 01:16:19.119
models that give you a lot of options for doing
1307
01:16:19.159 --> 01:16:20.880
a lot of the same things and maybe better at
1308
01:16:20.880 --> 01:16:25.640
one thing than another. And so I bought a book
1309
01:16:26.000 --> 01:16:30.319
and it's called Building AI Applications with Chat, GPT APIs
1310
01:16:30.800 --> 01:16:32.479
and it shows you how to use.
1311
01:16:35.439 --> 01:16:37.199
And the the.
1312
01:16:36.720 --> 01:16:42.279
Author is Alexander Petrovitch, and it goes into basically all
1313
01:16:42.319 --> 01:16:50.039
of the different API options. Hang on, it's being funny
1314
01:16:50.039 --> 01:16:54.039
on Amazon, but it shows you how to use Whisper,
1315
01:16:54.680 --> 01:16:56.199
it shows you how to use.
1316
01:16:58.800 --> 01:16:59.079
Boy.
1317
01:16:59.119 --> 01:17:00.920
It does not want to pull it up on Amazon,
1318
01:17:02.039 --> 01:17:04.760
but I bought it for the Kindle, and yeah, it
1319
01:17:05.239 --> 01:17:11.960
goes into Whisper, it goes into chat GPT, Yeah, it
1320
01:17:12.000 --> 01:17:13.720
goes into a couple of the other options that you
1321
01:17:13.800 --> 01:17:21.920
have on the open Ai platform. So anyway, and it
1322
01:17:22.279 --> 01:17:24.960
basically walks you through used in their APIs and then
1323
01:17:24.960 --> 01:17:26.560
how to build your prompts to get what you want.
1324
01:17:27.039 --> 01:17:30.840
And so I'm excited to dive into that. So I'm
1325
01:17:30.840 --> 01:17:32.079
going to pick that. And then.
1326
01:17:33.840 --> 01:17:37.600
The last pick I have is I've been I've been
1327
01:17:37.600 --> 01:17:42.279
doing I've been training for triathlons again, and specifically my
1328
01:17:42.399 --> 01:17:46.279
goal is to either do Iron iron Man Maryland in
1329
01:17:46.319 --> 01:17:51.359
September or iron Man Chattanooga in September, and so I've
1330
01:17:51.399 --> 01:17:53.119
been picking my races leading up to that.
1331
01:17:53.159 --> 01:17:54.279
I'm pretty excited about it.
1332
01:17:55.479 --> 01:17:59.199
The workout regimen that I've been following is twofold. One
1333
01:17:59.239 --> 01:18:01.640
of them, I picked up a training system on training
1334
01:18:01.640 --> 01:18:03.520
peaks dot com. So I'm gonna pick training peaks dot
1335
01:18:03.520 --> 01:18:06.479
com and you can buy workout plans. So mine's a
1336
01:18:06.479 --> 01:18:09.199
forty eight week workout plan, right, So I started it
1337
01:18:09.239 --> 01:18:13.199
last month and you know, I'm on track to finish
1338
01:18:13.239 --> 01:18:17.439
it for Maryland and then if I wind up signing
1339
01:18:17.479 --> 01:18:19.680
up for Chattanooga instead, then I'll just tell it to
1340
01:18:20.359 --> 01:18:24.960
adjust my workout schedule by two weeks so that I'm
1341
01:18:25.039 --> 01:18:29.439
ending on the right day in September. And then the
1342
01:18:29.479 --> 01:18:31.520
other one is I've been using the first Form app
1343
01:18:31.560 --> 01:18:36.520
that's one st p h r M First Form and
1344
01:18:36.800 --> 01:18:44.039
I signed up for Transformation Challenge is what they call it,
1345
01:18:44.680 --> 01:18:47.560
and Transformation is also spelled with a pH right because
1346
01:18:47.600 --> 01:18:51.319
of their branding. And as part of the app, you
1347
01:18:51.439 --> 01:18:55.920
get a coach and so she's been helping me figure
1348
01:18:55.960 --> 01:19:01.840
out my you know, all my stuff, and so I
1349
01:19:01.880 --> 01:19:03.960
have a referral code if you want to use my
1350
01:19:04.079 --> 01:19:06.920
coach and sign up. I don't get any kickbacks for this.
1351
01:19:07.560 --> 01:19:10.399
It's literally just hey, I'm having a great experience with this,
1352
01:19:10.520 --> 01:19:13.840
and so you know, you ought to check it out,
1353
01:19:14.760 --> 01:19:21.119
and so let me just air drop it to my
1354
01:19:21.159 --> 01:19:26.479
computer and then I can put it in the chat.
1355
01:19:26.520 --> 01:19:28.039
But yeah, it's it's been awesome.
1356
01:19:28.079 --> 01:19:32.079
So my trainer's name is Andrea, and like I said,
1357
01:19:32.079 --> 01:19:36.760
so I get an announcement every day where she's essentially saying,
1358
01:19:37.560 --> 01:19:37.840
you know.
1359
01:19:37.920 --> 01:19:40.079
Hey, make sure you're getting enough sleep, or.
1360
01:19:41.760 --> 01:19:45.199
Hey, make sure that you're paying attention to this that
1361
01:19:45.399 --> 01:19:47.159
or the other, or you know, all all kinds of
1362
01:19:47.159 --> 01:19:49.479
different things like that, and it's really really been terrific.
1363
01:19:50.319 --> 01:19:53.159
And then yeah, she checks in, Like every week, I
1364
01:19:53.199 --> 01:19:55.760
send an evaluation where I'm saying, you know, I'm a
1365
01:19:55.760 --> 01:19:57.560
little hungry, I've been a little hungry this week, or
1366
01:19:57.600 --> 01:20:01.439
I've been a little tired this week, or you know whatever,
1367
01:20:01.720 --> 01:20:05.199
and then she'll chat back and say, you know, yeah
1368
01:20:05.680 --> 01:20:08.640
you needed you need to schedule more sleep, right, Or
1369
01:20:10.359 --> 01:20:12.640
she'll look at my eating because I track all my
1370
01:20:12.680 --> 01:20:14.439
calories in there too, and she'll say, hey, you need
1371
01:20:14.439 --> 01:20:15.239
eat more vegetables.
1372
01:20:15.960 --> 01:20:17.039
Some she told me the other day.
1373
01:20:17.079 --> 01:20:19.079
She's like, you need to eat more real food and
1374
01:20:19.319 --> 01:20:21.800
you know, less supplements, which is like the protein powders
1375
01:20:21.800 --> 01:20:24.680
and stuff. And yeah, they have a whole bunch of
1376
01:20:24.680 --> 01:20:30.720
different supplements like the protein powders they have. They have
1377
01:20:30.840 --> 01:20:33.520
like a nootropic caffeine mix pre workout.
1378
01:20:33.600 --> 01:20:36.399
They have what else am I using?
1379
01:20:36.439 --> 01:20:38.880
They have like an opti greens is what they call it,
1380
01:20:38.920 --> 01:20:41.439
and it's it's greens that you know, help with your
1381
01:20:41.479 --> 01:20:46.359
digestion and stuff. I've got a couple here. I've got
1382
01:20:46.479 --> 01:20:51.319
basically omega, which is like fish oil, and then I've
1383
01:20:51.319 --> 01:20:54.920
got another one that's glucose disposal agent is what they
1384
01:20:54.920 --> 01:20:56.680
call it, and it just it just helps regulate my
1385
01:20:56.720 --> 01:21:00.239
blood sugar, which is good because I'm diabetic and I
1386
01:21:00.279 --> 01:21:01.880
just take it with all you know, know, with the
1387
01:21:01.920 --> 01:21:05.159
medications that my doctor has given me, and it's it's
1388
01:21:05.159 --> 01:21:13.239
been awesome. So anyway, I'm just going to pick those.
1389
01:21:14.600 --> 01:21:16.800
If you want to do an Iron Man next year
1390
01:21:16.920 --> 01:21:19.119
and you want, you know, it'd be fun.
1391
01:21:19.159 --> 01:21:21.279
I don't know, you know, I don't.
1392
01:21:21.239 --> 01:21:23.640
Know that I go the whole way with you because
1393
01:21:23.640 --> 01:21:25.600
I might swim faster than you or you might bite
1394
01:21:25.600 --> 01:21:29.800
faster than me, but it it'd be fun. So if
1395
01:21:29.800 --> 01:21:31.880
you're interested and you think you might be there, let
1396
01:21:31.960 --> 01:21:35.000
me know. But yeah, those are my picks. Sorry I
1397
01:21:35.039 --> 01:21:42.479
rambled for a long time. But anyway, I think that's
1398
01:21:42.520 --> 01:21:46.680
all I've got, So Valentino, think thanks for being our
1399
01:21:46.720 --> 01:21:47.560
expert this week.
1400
01:21:49.279 --> 01:21:51.119
Yeah, happy to. I love talking about this though.
1401
01:21:51.199 --> 01:21:54.079
Yeah, it's it's cool stuff. What we need to get into,
1402
01:21:54.119 --> 01:21:55.680
some of the stuff that you know, you and I
1403
01:21:55.720 --> 01:21:57.000
are building with AI.
1404
01:21:58.039 --> 01:22:00.000
But maybe that'll be another episode another time.
1405
01:22:02.079 --> 01:22:07.880
And yeah, the next time, folks max out mm hmm.
1
00:00:04.639 --> 00:00:08.919
Hey folks, welcome back to another Ruby Rogues episode. This
2
00:00:08.960 --> 00:00:11.800
week on a panel, we have Valentino Stole and now
3
00:00:12.439 --> 00:00:15.640
I'm Charles Maxwood from Top End Devs. And yeah, we
4
00:00:15.640 --> 00:00:17.839
were talking before the show. We had our guest canceled
5
00:00:17.839 --> 00:00:19.960
on this last minute. So if you're trying to watch
6
00:00:20.000 --> 00:00:22.120
this on YouTube and you're like, you're not talking about
7
00:00:22.120 --> 00:00:27.719
solid cash, no we are not. We were chatting and
8
00:00:28.079 --> 00:00:29.359
just to give a little bit of context, and I
9
00:00:29.359 --> 00:00:32.840
explained this to Valentino before the show. You know, I've
10
00:00:32.880 --> 00:00:34.759
been using some of these AI tools that are out
11
00:00:34.759 --> 00:00:37.119
there for a while, but just kind of at a
12
00:00:37.159 --> 00:00:41.560
low level. And what I had essentially figured out a
13
00:00:41.600 --> 00:00:46.159
while back was that like co pilot will suggest snippets
14
00:00:46.159 --> 00:00:50.320
and stuff in visual studio code, which is handy, right
15
00:00:50.359 --> 00:00:53.039
because a lot of times it suggests stuff that it's like, yeah,
16
00:00:53.079 --> 00:00:55.799
that's what I want, and if I'm doing the same
17
00:00:56.119 --> 00:00:59.280
structure in a couple of places, it was really good
18
00:00:59.280 --> 00:01:02.039
at figuring that out right, It's like, oh, okay, same structure,
19
00:01:02.119 --> 00:01:08.000
different variables with But I'd also use like chat, GPT
20
00:01:08.239 --> 00:01:10.200
and some other tools for some of this stuff. And
21
00:01:10.239 --> 00:01:15.040
so one thing that I wound up doing was last night,
22
00:01:15.159 --> 00:01:19.400
I was working on adding a new audio player to
23
00:01:19.680 --> 00:01:23.040
the member area of top end Devs because I'm basically
24
00:01:23.040 --> 00:01:25.760
revamping it because it's it's not what I wanted, and
25
00:01:25.840 --> 00:01:29.480
I found I figured out how to get at least
26
00:01:29.840 --> 00:01:32.079
much more close to what I want. So I was
27
00:01:32.120 --> 00:01:34.000
putting that in there right so that it you know,
28
00:01:34.000 --> 00:01:35.640
it kind of floats at the bottom of the screen
29
00:01:35.719 --> 00:01:38.000
and does a bunch of stuff. And I'd already done
30
00:01:38.040 --> 00:01:40.480
all the styling for that, and so I was telling,
31
00:01:40.599 --> 00:01:42.280
you know, I was using it that basically as a
32
00:01:42.319 --> 00:01:44.079
look up. So it's like, hey, what are the audio
33
00:01:44.200 --> 00:01:47.640
APIs in the browser that I can use right to
34
00:01:48.760 --> 00:01:51.480
put a nice looking player in controls. And I was
35
00:01:51.519 --> 00:01:56.920
just kind of, you know, putting it together. And just
36
00:01:57.000 --> 00:02:00.439
on a whim, I had been listening to a and
37
00:02:00.439 --> 00:02:02.159
I can't remember which one it was. It was one
38
00:02:02.159 --> 00:02:06.120
of the AI podcasts that I've recently picked up, but
39
00:02:06.159 --> 00:02:08.960
they were talking about how they were using it to
40
00:02:09.039 --> 00:02:11.479
actually either generate code or get checks on their code,
41
00:02:11.479 --> 00:02:14.639
and I was like, I wonder if I can just
42
00:02:14.680 --> 00:02:17.680
tell it to write me an audio player right, like
43
00:02:17.840 --> 00:02:19.800
just boom. I want an audio player that I can
44
00:02:19.800 --> 00:02:23.000
put in my browser. And so I tell it that,
45
00:02:23.120 --> 00:02:27.120
and it it writes one right, and I'm like, okay, well,
46
00:02:27.199 --> 00:02:29.800
let's see how good this is. So I turn around, right,
47
00:02:29.840 --> 00:02:32.479
because in chat GPT you can tell it to refine
48
00:02:32.840 --> 00:02:34.879
the answer, right, So I tell it, okay, well, I'm
49
00:02:34.919 --> 00:02:40.039
using stimulus. I want the play and pause button to
50
00:02:40.039 --> 00:02:42.960
toggle to play or pause when I hit play or pause,
51
00:02:45.280 --> 00:02:47.520
you know, I want I want the progress bar to
52
00:02:48.120 --> 00:02:48.479
you know.
53
00:02:48.520 --> 00:02:49.919
To change as it plays.
54
00:02:50.800 --> 00:02:52.599
I can't remember what else I told it, but I
55
00:02:52.639 --> 00:02:56.120
also told it I wanted it to be controlled through stimulus,
56
00:02:56.680 --> 00:02:59.800
and that I was using tailwind, and that I wanted
57
00:02:59.800 --> 00:03:02.199
the play and pause buttons to not have words in them.
58
00:03:02.240 --> 00:03:06.840
I wanted to use font awesome for the icons, and
59
00:03:07.080 --> 00:03:08.479
it spit the whole thing out.
60
00:03:09.000 --> 00:03:12.080
So then what I did is I was like, I know,
61
00:03:12.120 --> 00:03:14.039
there are more features than I want on this, I
62
00:03:14.080 --> 00:03:16.520
just can't think of what they are. And so I
63
00:03:16.560 --> 00:03:18.439
asked it, I said, what other features should I be
64
00:03:18.520 --> 00:03:20.879
putting in this thing? And it turns around and it
65
00:03:20.879 --> 00:03:23.400
gives me a list of like sixteen things, right, and
66
00:03:23.520 --> 00:03:26.879
like ten of them were features that I might want
67
00:03:27.240 --> 00:03:30.800
if I wasn't just playing one episode. But there were
68
00:03:30.840 --> 00:03:32.360
like four or five of them that I was like,
69
00:03:32.439 --> 00:03:35.000
oh yeah, I want that too, I forgot and so
70
00:03:35.039 --> 00:03:38.199
I put all those in and you know, and so
71
00:03:38.280 --> 00:03:40.039
it's giving me a player. So I put it into
72
00:03:40.080 --> 00:03:42.240
the page and it was like it was a big
73
00:03:42.280 --> 00:03:44.719
square that took up like half the screen. And so
74
00:03:44.800 --> 00:03:48.240
I said, hey, I'm putting this into a bottom banner
75
00:03:48.240 --> 00:03:51.240
that has to fit into an H dash thirty two
76
00:03:52.080 --> 00:03:56.120
sized space in the you know, in the page. And
77
00:03:56.159 --> 00:04:00.319
so it condensed it and so I picked it up
78
00:04:00.360 --> 00:04:05.319
and I put it into my Rails app, and you know,
79
00:04:05.439 --> 00:04:08.159
I'm thinking, okay, you know, I you know, I had
80
00:04:08.159 --> 00:04:12.759
my developer tools open with the console and I'm already
81
00:04:12.800 --> 00:04:18.480
to to you know, to debug it right, and you know,
82
00:04:18.600 --> 00:04:22.000
because it probably got something wrong. And would you believe it,
83
00:04:22.040 --> 00:04:24.519
the thing just worked like it literally like I tested
84
00:04:24.519 --> 00:04:26.680
every feature and it did exactly what it was supposed
85
00:04:26.680 --> 00:04:26.879
to do.
86
00:04:27.480 --> 00:04:30.160
So then so then I had to tweak the layout
87
00:04:30.199 --> 00:04:30.439
on it a.
88
00:04:30.439 --> 00:04:32.120
Little bit because it did look a little bit weird.
89
00:04:33.120 --> 00:04:35.399
But I mean literally, it was just came, move this
90
00:04:35.519 --> 00:04:39.360
up here, make that wider. You know, Okay, now it
91
00:04:39.399 --> 00:04:42.439
looks now, it looks decent. Right, I'm not sure I'm
92
00:04:42.439 --> 00:04:44.920
completely satisfied with the layout on it, but it works
93
00:04:44.920 --> 00:04:46.279
and it looks it looks fine.
94
00:04:47.079 --> 00:04:52.879
So now I'm thinking, Okay, what else is out there? Right?
95
00:04:52.920 --> 00:04:54.800
And I've picked up some other tips and tricks.
96
00:04:55.240 --> 00:04:58.399
But we were talking before the show and I kind
97
00:04:58.399 --> 00:05:00.839
of told this to Valentino and he's going, oh, yeah,
98
00:05:00.879 --> 00:05:02.879
I've got all kinds of tricks that I use, And
99
00:05:02.959 --> 00:05:06.600
so this is probably gonna be more me picking your brain,
100
00:05:06.720 --> 00:05:11.519
Valentino than offering any you know, awesome ideas or solutions.
101
00:05:12.079 --> 00:05:14.959
But it seems like there's a whole breadth of things
102
00:05:15.439 --> 00:05:17.439
that I'm just kind of opening up my mind to
103
00:05:17.519 --> 00:05:23.160
at this point. So so yeah, So, I mean, I
104
00:05:23.199 --> 00:05:26.079
guess my first question is is did you already know
105
00:05:26.160 --> 00:05:28.360
that chat GPT would do this kind of a thing?
106
00:05:28.560 --> 00:05:32.000
And what else am I not even.
107
00:05:31.800 --> 00:05:34.480
Seeing in the wide world of hey, make my code
108
00:05:34.519 --> 00:05:35.279
process better?
109
00:05:37.240 --> 00:05:41.040
Yeah? There's so many things here. Yeah, I guess like
110
00:05:42.160 --> 00:05:45.279
if we take a step back and just like focus
111
00:05:45.319 --> 00:05:49.639
on like what we're trying to accomplish as like software developers, right,
112
00:05:49.800 --> 00:05:53.160
Like it kind of like breaks down into two things,
113
00:05:53.199 --> 00:05:58.240
like one like abstractly thinking about concepts and how to
114
00:05:58.279 --> 00:06:02.279
like design things, and the second would be like implementation
115
00:06:02.399 --> 00:06:06.600
detail and so like there's two like avenues that I
116
00:06:06.600 --> 00:06:09.600
always like break things down to based off of that,
117
00:06:10.399 --> 00:06:13.160
and so like we just focus on like the design aspects.
118
00:06:13.199 --> 00:06:17.920
Like that's just great as like a GPT like and
119
00:06:18.000 --> 00:06:20.000
for those that don't know, it's like a plugin for
120
00:06:20.199 --> 00:06:24.959
chat GPT even like I have one based on the
121
00:06:25.000 --> 00:06:28.680
stack that I use, which is Rails specific with Ruby
122
00:06:28.759 --> 00:06:32.360
and like x y z design books that I've just
123
00:06:32.360 --> 00:06:36.199
like uploaded to the GPT, right, so like I have
124
00:06:36.319 --> 00:06:41.519
like ninety nine bottles from Sandy Mets and like some
125
00:06:41.639 --> 00:06:42.920
AI specific ones.
126
00:06:44.279 --> 00:06:47.720
Hang on, so what when you're saying like design books
127
00:06:47.759 --> 00:06:51.639
and you're you're talking about like kind of it sounds
128
00:06:51.639 --> 00:06:54.199
like you're kind of setting up the context for where
129
00:06:54.240 --> 00:06:55.160
you're asking your question.
130
00:06:55.279 --> 00:06:58.399
Yeah yeah, so like yeah, maybe we should apreciate that.
131
00:06:58.519 --> 00:07:02.720
Like what is a GPT YEA And honestly, like I'm
132
00:07:02.759 --> 00:07:07.319
surprised this is totally like open a eyes like miss
133
00:07:07.319 --> 00:07:11.759
here in marketing, Right, It's because gpds are incredible, right,
134
00:07:11.879 --> 00:07:15.399
Like it's like a way of like encapsulating a purpose
135
00:07:15.839 --> 00:07:19.079
to all of the to chat GPT, right, so you
136
00:07:19.120 --> 00:07:23.079
get your like blanket features of chat GPT of being
137
00:07:23.120 --> 00:07:26.120
able to be a general purpose utility to do anything.
138
00:07:27.199 --> 00:07:29.800
And so it's great at code related stuff. But if
139
00:07:29.920 --> 00:07:34.399
like let's say, like you want to like make super
140
00:07:34.600 --> 00:07:40.360
object oriented Ruby and Rail's work, like that's prime candidate
141
00:07:40.399 --> 00:07:43.399
for making a very specific plug in the chat GPT,
142
00:07:44.199 --> 00:07:48.600
and you can basically give it context like documents that
143
00:07:48.639 --> 00:07:52.759
it can use as reference, and you can also give
144
00:07:52.800 --> 00:07:56.360
it like custom instructions to follow so you don't have
145
00:07:56.439 --> 00:07:59.120
to like re say those things over and over again.
146
00:07:59.199 --> 00:08:01.759
So like, let's you have a prompt that you always
147
00:08:01.800 --> 00:08:05.480
go to that's like, hey, like pretend you're an expert
148
00:08:05.600 --> 00:08:11.639
in object oriented design and Ruby, right, and I want
149
00:08:11.680 --> 00:08:15.639
you to follow these principles. You know, if you're generating
150
00:08:16.360 --> 00:08:23.879
Ruby code, follow this like you know, like linter related thing.
151
00:08:24.680 --> 00:08:27.000
And you can like reuse these prompts over and over
152
00:08:27.040 --> 00:08:29.439
again to get get it to output the things how
153
00:08:29.439 --> 00:08:33.200
you want it to rather than just like chatting through it.
154
00:08:33.480 --> 00:08:35.960
And so with a GPT, you can like frontload all
155
00:08:36.039 --> 00:08:38.399
that work and just have something reusable that you can
156
00:08:38.440 --> 00:08:42.360
go back to. And so I have this open GPT
157
00:08:42.759 --> 00:08:46.679
called the Software architect Mentor, and I use it all
158
00:08:46.720 --> 00:08:49.679
the time, and it's like my abstract go to for
159
00:08:49.879 --> 00:08:54.960
just like, Okay, I'm designing something in Ruby sometimes rails,
160
00:08:56.000 --> 00:08:59.559
doing AI stuff like, use all of that context to
161
00:08:59.720 --> 00:09:04.559
just help me design something or refactor something or do
162
00:09:04.799 --> 00:09:07.840
these things in an abstract way so that way I
163
00:09:07.840 --> 00:09:10.320
don't have to worry about the implementation. I can focus
164
00:09:10.320 --> 00:09:10.879
on design.
165
00:09:11.879 --> 00:09:16.840
So how do you get that into chat GPT? And
166
00:09:16.919 --> 00:09:19.679
maybe I'm just you know, I haven't played with it enough.
167
00:09:21.799 --> 00:09:25.919
So they know they have. There's like an explorer GPTs
168
00:09:26.240 --> 00:09:30.519
okay sidebar, and you could just like start a chat
169
00:09:30.559 --> 00:09:31.440
with any one of those.
170
00:09:32.840 --> 00:09:35.279
Oh okay, so I could actually instead of because I'm
171
00:09:35.320 --> 00:09:39.480
just using the generic chat GPT. I mean that's what
172
00:09:39.600 --> 00:09:41.759
built my player for me. You're telling me I could
173
00:09:41.759 --> 00:09:43.240
have because I clicked on it and I'm seeing like
174
00:09:43.960 --> 00:09:47.639
a website generator or a code copilot. So I could
175
00:09:47.799 --> 00:09:50.679
used the code code pilot and what would have been
176
00:09:50.759 --> 00:09:52.879
faster or better or.
177
00:09:53.320 --> 00:09:55.840
Yeah, it would be more focused. So I guess like
178
00:09:55.960 --> 00:10:02.039
faster and better are you know, kind of dependent on
179
00:10:02.080 --> 00:10:04.399
the use case, but it might narrow the scope of
180
00:10:04.399 --> 00:10:08.360
the scope. Like as an example, if like, okay, well
181
00:10:08.440 --> 00:10:11.039
let's say you're working on you know, I don't know,
182
00:10:11.080 --> 00:10:13.799
go code or something like that. Like, you know, there
183
00:10:13.799 --> 00:10:17.200
may be some conventions that could be useful, like using
184
00:10:17.200 --> 00:10:21.159
a very ghost specific GBT in the same way that
185
00:10:21.279 --> 00:10:26.159
using a ghost specific prompt can help guide the generation
186
00:10:26.279 --> 00:10:28.840
of that. Right, Like if you just say, hey, like
187
00:10:28.919 --> 00:10:34.840
chat GPT, generate a you know program that like shows
188
00:10:34.840 --> 00:10:38.679
me a calendar, It'll just like use whatever its preference
189
00:10:38.799 --> 00:10:41.960
is based on your chat history with it. So like
190
00:10:43.600 --> 00:10:46.279
that could be any number of languages, could be any
191
00:10:46.399 --> 00:10:49.120
number of implementations. But if you like, open up a
192
00:10:49.120 --> 00:10:50.679
go GPT, it's going to use go.
193
00:10:51.440 --> 00:10:59.399
Right, Right, So do they have a Ruby GPT in here.
194
00:10:59.360 --> 00:11:06.080
Or did you There's a lot of people that that
195
00:11:06.200 --> 00:11:08.840
have gpds published there kind of just have to search
196
00:11:08.879 --> 00:11:12.559
through stuff. I just have my own because I found
197
00:11:12.559 --> 00:11:13.440
it very useful.
198
00:11:13.799 --> 00:11:15.519
Uh, yeah, there are a bunch in here.
199
00:11:15.960 --> 00:11:22.519
Yeah, you can you basically can give it knowledge and
200
00:11:22.559 --> 00:11:26.720
that knowledge will be used to generate stuff with and
201
00:11:26.759 --> 00:11:30.919
so like I personally have very specific like resources that
202
00:11:31.000 --> 00:11:34.200
I like to like have it reference. Uh and I
203
00:11:34.200 --> 00:11:37.080
imagine other people do too, Right, Like you have your
204
00:11:37.159 --> 00:11:41.480
books that you favored the design principles from, or how
205
00:11:41.519 --> 00:11:46.279
you like code implemented in specific ways, uh, based on.
206
00:11:46.759 --> 00:11:48.639
You know, it doesn't have to be books. It could
207
00:11:48.679 --> 00:11:53.200
be websites. Uh, you know, whatever resources that you use
208
00:11:53.279 --> 00:11:57.840
the code with, you can use it can use.
209
00:11:58.559 --> 00:12:05.240
So when you're pulling them in, because my mind's already blown, right,
210
00:12:05.360 --> 00:12:07.360
it's like, Okay, I'm gonna go down the rabbit hole
211
00:12:07.399 --> 00:12:08.200
on this stuff real.
212
00:12:08.120 --> 00:12:10.360
Hard here after we're done.
213
00:12:10.480 --> 00:12:14.320
But because because I could see, you know, you create
214
00:12:14.399 --> 00:12:16.360
GPTs for other things, it sounds like that.
215
00:12:17.879 --> 00:12:18.559
In a way.
216
00:12:18.600 --> 00:12:20.639
That's kind of what when we talk to Obie what
217
00:12:20.720 --> 00:12:23.159
he was talking about with Ray right, where you're essentially
218
00:12:23.600 --> 00:12:26.600
you're giving it all that context and then yeah, you're
219
00:12:26.600 --> 00:12:27.840
doing some prompt engineering too.
220
00:12:27.879 --> 00:12:29.600
I want to response to books like this or something
221
00:12:29.639 --> 00:12:29.799
like that.
222
00:12:29.919 --> 00:12:33.720
But I mean the rest of it is, you know, yeah,
223
00:12:33.759 --> 00:12:36.279
then you ask it a question and from everything that
224
00:12:36.320 --> 00:12:40.679
you've told it, it gives you the focused or more
225
00:12:40.679 --> 00:12:45.519
correct answer. So when you're telling it, hey, I favor
226
00:12:45.679 --> 00:12:48.440
ideas from I don't know, you know, ninety nine bottles
227
00:12:49.120 --> 00:12:52.480
or you know, maybe it's the Pewter book the What
228
00:12:52.639 --> 00:12:55.960
Principles of Object Oriented Design and Ruby or something like that.
229
00:12:57.000 --> 00:12:58.240
How do you reference that in?
230
00:12:59.480 --> 00:13:02.039
Do you just give it a r L or I
231
00:13:02.080 --> 00:13:07.440
just upload the document. Okay, right, you just yeah, you know,
232
00:13:08.360 --> 00:13:11.879
you go, I buy the book and then I get
233
00:13:11.919 --> 00:13:15.720
the PDF from it and I upload it, right, and
234
00:13:15.759 --> 00:13:19.960
then I can have it generating based off of that, right, Like.
235
00:13:20.200 --> 00:13:23.080
Okay, so how big is its brain? How much stuff
236
00:13:23.080 --> 00:13:23.919
can I cram in there?
237
00:13:24.039 --> 00:13:28.600
I honestly haven't tested that, although I have gone through
238
00:13:28.639 --> 00:13:31.759
and just uploaded all the books that I've read, like
239
00:13:31.879 --> 00:13:37.240
from like my programming experience, and that I've found does
240
00:13:37.360 --> 00:13:43.000
not help. Giving it more context doesn't help it. And
241
00:13:43.039 --> 00:13:45.639
to be honest, like that makes a lot of sense
242
00:13:45.679 --> 00:13:47.960
to me, because like the whole point of of like
243
00:13:48.000 --> 00:13:51.360
this honed agent is like you know that it's narrow
244
00:13:51.360 --> 00:13:55.000
in scope, right, right, And so like the more that
245
00:13:55.039 --> 00:13:57.320
you can narrow that scope to like the very specific
246
00:13:57.360 --> 00:13:59.080
tasks that you plan to use it for, like the
247
00:13:59.120 --> 00:14:01.919
better and I like, you know, going back to OBI
248
00:14:02.080 --> 00:14:04.320
when we had them on like that narrowing of the
249
00:14:04.399 --> 00:14:07.559
path is like the best way to think about like
250
00:14:08.480 --> 00:14:12.480
programming or like designing things with AI is like, yeah,
251
00:14:12.519 --> 00:14:15.159
creating the very specific thing that you want it to do,
252
00:14:15.600 --> 00:14:18.480
and like all of your instructions and knowledge and things
253
00:14:18.480 --> 00:14:20.240
that you're giving it are like honed in on that.
254
00:14:21.360 --> 00:14:25.840
Yeah, it seems like, Yeah, when we were talking to Obi,
255
00:14:26.519 --> 00:14:28.240
the thing that kind of stood out to me was
256
00:14:28.759 --> 00:14:32.200
because the Chat GPT, you know, the GPT model that
257
00:14:32.200 --> 00:14:36.320
you're using, it has everything in it, right, So it
258
00:14:36.360 --> 00:14:40.799
does baking, it does auto repair, and it does it
259
00:14:40.840 --> 00:14:44.200
has Ruby stuff in it, right. And so if I
260
00:14:44.279 --> 00:14:46.320
tell it, hey, I need you to help me write
261
00:14:46.360 --> 00:14:49.039
better code, then if I use a term that is
262
00:14:49.080 --> 00:14:51.960
also used in baking, me narrowing the path is just
263
00:14:52.000 --> 00:14:54.480
telling it I only want the stuff that's relevant to
264
00:14:54.480 --> 00:15:00.840
programming in Ruby and so, right, and then and then
265
00:15:00.879 --> 00:15:03.639
there's other training in there too that might be and
266
00:15:03.720 --> 00:15:06.039
I'm looking for things formatted this way, and I'm looking for,
267
00:15:06.480 --> 00:15:08.759
you know, ideas in this vein or things like that.
268
00:15:11.799 --> 00:15:15.519
I've also heard from people the idea that essentially you
269
00:15:15.879 --> 00:15:18.919
can and I've seen some other people do this where
270
00:15:19.039 --> 00:15:21.639
they have they've like uploaded all the content that they've
271
00:15:21.679 --> 00:15:25.360
made about a topic, and then they essentially have a
272
00:15:26.200 --> 00:15:29.399
like I could create a Chuck GPT right, and it
273
00:15:29.440 --> 00:15:32.440
would be you know, hey, this is all the knowledge
274
00:15:32.480 --> 00:15:35.279
that Chuck has ever put out about whatever. And I've
275
00:15:35.279 --> 00:15:37.399
thought about doing that for like a Ruby rogues, right,
276
00:15:37.480 --> 00:15:40.240
and so I could upload the audio and you know,
277
00:15:40.519 --> 00:15:44.399
or upload transcription transcriptions or something. But my worry is
278
00:15:44.399 --> 00:15:46.480
is we've been doing this show for like thirteen years,
279
00:15:47.159 --> 00:15:49.399
and so some of the stuff we talked about thirteen
280
00:15:49.480 --> 00:15:51.679
years is very relevant, and some of the stuff we
281
00:15:51.720 --> 00:15:55.240
talked about thirteen years ago is not very relevant. And
282
00:15:55.320 --> 00:15:58.360
so I worry that then it's going to go, oh, well,
283
00:15:59.320 --> 00:16:02.360
I consider, you know, the thirteen year old content is
284
00:16:02.399 --> 00:16:06.720
relevant as the right, and so maybe I can tell it, hey,
285
00:16:07.000 --> 00:16:09.679
favor the newer stuff over the older stuff and put
286
00:16:09.679 --> 00:16:13.399
that into the context. But yeah, I've kind of hesitated
287
00:16:13.440 --> 00:16:15.440
on doing that just for that reason.
288
00:16:16.960 --> 00:16:22.200
Yeah, you know, we're like we're edging very very close
289
00:16:22.320 --> 00:16:26.320
to like the retrieval aspect of like AI design, which
290
00:16:26.600 --> 00:16:28.960
maybe off topic a little bit because it's there's so
291
00:16:29.039 --> 00:16:35.879
much there, but yeah, I mean I think we're if
292
00:16:35.879 --> 00:16:38.320
we circle back to like the tools that we're using here,
293
00:16:38.480 --> 00:16:41.480
like there's so much like that you can use out
294
00:16:41.720 --> 00:16:44.879
off the shelf that like if you just use them
295
00:16:45.200 --> 00:16:48.600
in the specific ways, like you can skirt around those issues.
296
00:16:48.720 --> 00:16:48.879
Right.
297
00:16:48.919 --> 00:16:54.720
So, Like as an example, there, there's somebody just released
298
00:16:54.759 --> 00:17:03.639
this rails app called Nausea NSI a dot Ai. Yeah,
299
00:17:03.679 --> 00:17:07.079
and it's like super awesome, runs on a Lama locally
300
00:17:07.599 --> 00:17:10.680
and you can like upload whatever documents you want it
301
00:17:11.279 --> 00:17:14.519
to use and run your own chat sept in a
302
00:17:14.599 --> 00:17:18.440
reals context with all that stuff built in.
303
00:17:18.839 --> 00:17:21.359
Really French or am I looking at the wrong thing?
304
00:17:22.160 --> 00:17:24.680
Yeah? I mean the site I think is in French,
305
00:17:24.759 --> 00:17:26.079
but the repo is in English.
306
00:17:26.480 --> 00:17:34.319
Okay, well in Google translate it. It's it's good at that.
307
00:17:33.759 --> 00:17:37.119
That's right. But yeah, I mean this idea is like
308
00:17:37.200 --> 00:17:39.359
not new, right, Like, there's lots of other tools out
309
00:17:39.400 --> 00:17:42.400
there as well that you can use to kind of
310
00:17:42.440 --> 00:17:46.799
just get a local version of chatchipt running so that
311
00:17:46.880 --> 00:17:50.680
you can do this with like if you have, for example,
312
00:17:50.720 --> 00:17:54.759
you want to narrow the retrieval aspects to only relevant
313
00:17:54.799 --> 00:17:58.359
stuff based on timestamp or something like that, Like that's
314
00:17:58.400 --> 00:18:04.160
gonna require some like alteration. There's not anything built in
315
00:18:04.200 --> 00:18:07.480
the chat GBT to allow that kind of granularity without
316
00:18:07.599 --> 00:18:09.400
like building something on top of its.
317
00:18:09.240 --> 00:18:09.839
A p I S.
318
00:18:12.960 --> 00:18:16.079
But there's a lot more stuff coming out that I like,
319
00:18:16.480 --> 00:18:21.559
uh that's revolves revolves around like the command line aspect
320
00:18:22.200 --> 00:18:28.440
mm HM, where it'll like basically use your current working
321
00:18:28.480 --> 00:18:35.680
directory as like a test bed two like scan for
322
00:18:35.799 --> 00:18:41.759
relevant documents and also like uh, you know, build up.
323
00:18:41.839 --> 00:18:44.079
It's like task at hand.
324
00:18:44.640 --> 00:18:44.799
Uh.
325
00:18:44.880 --> 00:18:47.599
So like one that immediate immediately comes to mind. As
326
00:18:47.599 --> 00:18:51.079
a tool called eight er A I D E R
327
00:18:53.119 --> 00:18:59.720
also runs fully mean to help. Yeah a lot, yeah,
328
00:18:59.759 --> 00:19:02.200
a lot of the French in the AI space. Uh
329
00:19:02.400 --> 00:19:07.200
you know hugging face as an example, definitely French yah
330
00:19:07.720 --> 00:19:11.319
mixedtro right. So so many great AI things come out
331
00:19:11.319 --> 00:19:16.839
of France. Uh. But you know with a tool like
332
00:19:16.839 --> 00:19:20.720
eighter like h it basically uses tree sitter and like
333
00:19:20.839 --> 00:19:22.119
scans through EU repo.
334
00:19:22.400 --> 00:19:22.559
Right.
335
00:19:22.640 --> 00:19:25.759
So if you're like, oh, I want to you know,
336
00:19:26.000 --> 00:19:31.240
like change the you know, contact page to uh, you know,
337
00:19:31.319 --> 00:19:33.960
add another field for this specific thing in my reils app,
338
00:19:34.240 --> 00:19:37.720
it'll go through and it'll scan the rails app locally
339
00:19:38.440 --> 00:19:42.759
and then find what files that it needs to include
340
00:19:42.799 --> 00:19:46.759
as contexts and then walk through like a step by
341
00:19:46.759 --> 00:19:50.079
step process of Okay, what files do we need to touch?
342
00:19:50.720 --> 00:19:52.440
What changes do we need to make to make that
343
00:19:53.119 --> 00:19:53.920
request happen?
344
00:19:54.519 --> 00:19:54.640
Uh?
345
00:19:54.799 --> 00:19:57.400
And you it could even like you know, alter these
346
00:19:57.440 --> 00:20:06.359
files h which is really really exciting because ultimately that's
347
00:20:06.359 --> 00:20:09.359
what that's what I would you know, I'd rather part
348
00:20:09.400 --> 00:20:12.039
of the problem with like just using chat cheapt for
349
00:20:12.240 --> 00:20:17.319
like you know, code generation in general, like it doesn't
350
00:20:17.359 --> 00:20:20.279
have context, and it also like uh, you know, it
351
00:20:20.319 --> 00:20:23.079
makes mistakes like all the time, and then you're like
352
00:20:23.519 --> 00:20:26.359
stuck trying to figure out well, okay, well you know
353
00:20:26.400 --> 00:20:28.559
what mistake is this? Like why is there about here?
354
00:20:28.759 --> 00:20:28.920
Right?
355
00:20:28.960 --> 00:20:31.960
And you can do that in chat cheapt too, but
356
00:20:32.000 --> 00:20:34.359
it's just like it slows things down quite a lot,
357
00:20:35.720 --> 00:20:38.559
and so when you get something that's more like wrapped
358
00:20:38.559 --> 00:20:42.000
around the thing that you're building, it makes it much
359
00:20:42.839 --> 00:20:44.359
like smoother of an experience.
360
00:20:47.440 --> 00:20:52.319
That's awesome. So that that was aider or in French.
361
00:20:52.400 --> 00:20:59.240
DA yeah, yeah, ader. And you know, there's like a
362
00:20:59.240 --> 00:21:01.960
a more pol version of it, if if you will,
363
00:21:02.400 --> 00:21:10.559
called code buff, but you know it's it's expensive, but
364
00:21:10.680 --> 00:21:13.960
you know, uses the more flagship models like from open
365
00:21:14.000 --> 00:21:18.519
ai or you know, anthropic depending on the context. So
366
00:21:18.680 --> 00:21:22.720
like you get better quality outputs from it because of that,
367
00:21:23.480 --> 00:21:26.440
and you could also use you know, open ai for
368
00:21:26.559 --> 00:21:32.359
eight or two, but it's definitely not as polished as
369
00:21:32.359 --> 00:21:33.799
ah as code buff.
370
00:21:34.359 --> 00:21:39.079
Right, yeah, I'm trying to make sure we have all
371
00:21:39.119 --> 00:21:42.880
the links in the like, like folks, if you're looking
372
00:21:42.880 --> 00:21:44.799
for the links there. It's looked it looks like it's
373
00:21:44.799 --> 00:21:50.759
posting it to Facebook, YouTube and Twitch and not Twitter LinkedIn,
374
00:21:51.039 --> 00:21:58.359
so it'll it'll all be in the comments there. So yeah,
375
00:21:58.400 --> 00:22:00.640
I mean that that's helpful just because, yeah, it can
376
00:22:00.680 --> 00:22:04.440
work from the context of the stuff in your actual
377
00:22:04.519 --> 00:22:05.119
code base.
378
00:22:09.559 --> 00:22:12.359
Yeah, and I a lot of the back and forth
379
00:22:12.400 --> 00:22:20.000
stuff with implementation related tasks, right, It's like it can
380
00:22:20.119 --> 00:22:24.920
eat up time, right, Like it just reminds me of like,
381
00:22:28.119 --> 00:22:31.519
you know, some some of the original like code generation stuff,
382
00:22:31.599 --> 00:22:34.799
like even like Reils generators as an example, right, Like
383
00:22:34.839 --> 00:22:37.079
it's just like it'll just dump a ton of code
384
00:22:37.119 --> 00:22:38.799
at you and you're just like, well what do I
385
00:22:38.839 --> 00:22:39.240
do with that?
386
00:22:39.839 --> 00:22:40.079
Right?
387
00:22:40.599 --> 00:22:43.319
Or if like it doesn't do what you want, like
388
00:22:43.519 --> 00:22:45.240
you have to figure out what that is, and like
389
00:22:45.279 --> 00:22:49.160
it doesn't know, right, Like there's no there's no context.
390
00:22:49.240 --> 00:22:52.279
It's not aware of anything, right other than what it's
391
00:22:52.279 --> 00:22:52.880
been trained on.
392
00:22:53.000 --> 00:22:53.440
So, like.
393
00:22:56.599 --> 00:23:01.839
It's definitely a it's a hard experience to like just
394
00:23:01.920 --> 00:23:05.000
go in and I can't imagine like just imagine if
395
00:23:05.039 --> 00:23:07.640
you were like learning reels for the first time, right
396
00:23:07.759 --> 00:23:12.200
or Ruby or like even just like RESTful APIs, right,
397
00:23:12.319 --> 00:23:15.960
Like I just remember those concepts being like, you know,
398
00:23:16.079 --> 00:23:18.519
challenging to understand if you have something like that's just
399
00:23:18.640 --> 00:23:21.920
generating stuff and you don't really understand how it works,
400
00:23:21.960 --> 00:23:25.400
Like you could lose a whole day just like figuring
401
00:23:25.480 --> 00:23:29.920
out a mistake it made. Where if like, you know,
402
00:23:30.000 --> 00:23:34.119
you instead followed some tutorial that somebody wrote, like maybe
403
00:23:34.119 --> 00:23:37.839
you would have a different experience. You know, they still
404
00:23:38.200 --> 00:23:40.559
doing that though you have the same a similar experience
405
00:23:40.599 --> 00:23:43.759
sometimes if you like are missing a package or something
406
00:23:43.799 --> 00:23:48.319
like that, but like definitely more frequent with chat ChiPT.
407
00:23:49.319 --> 00:23:57.720
Yeah so code buff and eight those are on the
408
00:23:57.759 --> 00:23:58.920
command line, right.
409
00:24:01.680 --> 00:24:06.880
Yep, yeah, those are all come in. I mean, you know,
410
00:24:06.880 --> 00:24:11.200
there's so much Ruby stuff out there now, right, we
411
00:24:11.279 --> 00:24:15.440
had Scott Warker from sub Layer. Sub Layer is awesome
412
00:24:15.720 --> 00:24:21.279
like fully Ruby, like developer happiness, like AI helpers, right,
413
00:24:21.400 --> 00:24:24.000
Like you can get it to like watch your file
414
00:24:24.079 --> 00:24:28.279
system and perform actions with AI. You can do all
415
00:24:28.359 --> 00:24:31.279
kinds of crazy stuff with it. I have one where
416
00:24:32.079 --> 00:24:34.319
I'll feed it a Ruby file and it generates a
417
00:24:34.359 --> 00:24:37.839
spec for me. So if I'm like, you know, prototyping
418
00:24:38.480 --> 00:24:41.599
a new module or class or something like that, or
419
00:24:41.640 --> 00:24:44.000
some Ruby code, I could just say if I like
420
00:24:44.039 --> 00:24:45.960
wanted to turn it into something that I wanted to
421
00:24:45.960 --> 00:24:49.640
share with people. I you know, hadn't made a speck yet,
422
00:24:49.759 --> 00:24:52.839
but I was abstracting and just working on design concepts.
423
00:24:52.839 --> 00:24:55.039
And now, all right, I flesh this out, I wanted
424
00:24:55.279 --> 00:24:59.240
like tested, and I'll go and I'll say, hey, here's
425
00:24:59.319 --> 00:25:02.079
a Ruby file, like can you create on our respect
426
00:25:02.119 --> 00:25:05.279
test for this? And I just have a single command
427
00:25:05.279 --> 00:25:07.559
line command and I just feed at the ruby file
428
00:25:07.599 --> 00:25:09.519
and it generates the respect tests for me.
429
00:25:10.680 --> 00:25:14.920
Oh wow, and it's awesome. I've been going through that
430
00:25:15.000 --> 00:25:21.480
with one of my clients deals where like, yeah, they've
431
00:25:21.519 --> 00:25:26.839
got this heinous you know class that has a bunch
432
00:25:26.839 --> 00:25:28.039
of stuff going on in it.
433
00:25:28.799 --> 00:25:31.119
And yeah, it was like, you know, they're.
434
00:25:30.960 --> 00:25:32.599
Like, hey, you got to speed this up, and I'm like,
435
00:25:33.400 --> 00:25:35.480
I am not messing with this thing until I have
436
00:25:35.519 --> 00:25:38.240
a test on it, right, I mean, just just so
437
00:25:38.400 --> 00:25:40.799
that I know that I didn't change the behavior, not
438
00:25:40.839 --> 00:25:45.240
necessarily because the behavior is correct, though I'm sure it's
439
00:25:45.319 --> 00:25:47.079
mostly correct because they've been using it that way for
440
00:25:47.079 --> 00:25:47.519
a while.
441
00:25:49.319 --> 00:25:50.720
So yeah, that sounds really handy.
442
00:25:51.839 --> 00:25:53.759
Yeah, and you know, even two on their I think
443
00:25:53.759 --> 00:25:56.599
on their docks, they have like or maybe it's on YouTube.
444
00:25:57.279 --> 00:26:03.279
Scott has this demo where basically creates a you know,
445
00:26:04.599 --> 00:26:08.720
a tool that like let's tell you can tell it.
446
00:26:09.519 --> 00:26:13.960
Tell the tool. Okay, here's this file. I the tests
447
00:26:13.960 --> 00:26:16.839
are failing, get them to pass, right, and it'll go
448
00:26:16.880 --> 00:26:18.960
through and run through the code and like get the
449
00:26:19.000 --> 00:26:19.680
tests to pass.
450
00:26:20.559 --> 00:26:20.960
Oh wow.
451
00:26:22.400 --> 00:26:25.240
And so like that's a more like advanced kind like
452
00:26:25.559 --> 00:26:29.880
thing you can use it for. But like, yeah, I
453
00:26:29.880 --> 00:26:32.119
mean I feel like we're just kind of starting to
454
00:26:32.160 --> 00:26:33.279
scratch the surface here.
455
00:26:35.319 --> 00:26:35.519
Yeah.
456
00:26:35.519 --> 00:26:40.319
I mean it's hard because like all of these large
457
00:26:40.400 --> 00:26:46.400
language models, they're not trained necessarily on Ruby, right, right,
458
00:26:46.480 --> 00:26:50.960
And so like there there's obviously a small sample in
459
00:26:51.000 --> 00:26:53.400
there or it wouldn't be able to do what it can,
460
00:26:54.599 --> 00:26:57.480
but it definitely will. Like if you're using chat ChiPT heavily,
461
00:26:57.519 --> 00:27:02.640
you'll see it like use Python related standard libraries for Ruby,
462
00:27:03.440 --> 00:27:06.680
right And you're like, wait, that doesn't exist, Like how
463
00:27:06.680 --> 00:27:11.400
did where are you requiring this, like you know, data
464
00:27:11.400 --> 00:27:14.319
frames or something like that, which there are data frames
465
00:27:14.319 --> 00:27:16.799
of Ruby, just not like natively.
466
00:27:16.559 --> 00:27:22.799
Right, Yeah, I asked it to So I basically said, hey,
467
00:27:22.839 --> 00:27:29.920
I want to run whisper locally to get diarized, which
468
00:27:29.960 --> 00:27:32.839
means or a diarized transcript, I should say, so it
469
00:27:32.920 --> 00:27:36.160
transcribes it, but then it assigns, you know, Speaker one
470
00:27:36.200 --> 00:27:42.119
said this, Speaker two said that, and Whisper doesn't do
471
00:27:42.920 --> 00:27:45.319
because I knew that Whisper doesn't do diarization out of
472
00:27:45.319 --> 00:27:48.920
the box. And so yeah, its answer was install these
473
00:27:48.960 --> 00:27:54.880
Python libraries and then call Python for Ruby. Well it's fine,
474
00:27:54.920 --> 00:27:59.160
you know, okay, but you know because because I don't
475
00:27:59.200 --> 00:28:02.160
know that there is a library that'll do it. But yeah,
476
00:28:02.319 --> 00:28:04.440
it was. It was interesting, and in fact, I think
477
00:28:04.440 --> 00:28:09.680
it started out saying, yeah, generating diaries transcripts for a
478
00:28:09.720 --> 00:28:13.319
podcast episode of multiple guests using a local installation of
479
00:28:15.640 --> 00:28:18.680
open ayes Whisper model and Ruby requires the following steps.
480
00:28:18.920 --> 00:28:21.599
Install Whisper locally. Whisper is a Python library, so you
481
00:28:21.640 --> 00:28:25.839
need Python installed and ensure that you have the required dependencies.
482
00:28:25.880 --> 00:28:27.480
So I have to install ffm PEG.
483
00:28:28.119 --> 00:28:31.519
And then it says it doesn't Whisper does not natively
484
00:28:31.519 --> 00:28:34.720
perform speaker diroisation, so you have to use a diroization library,
485
00:28:35.000 --> 00:28:37.680
and it tells you to use piannote dot audio, which
486
00:28:37.720 --> 00:28:41.880
is also a Python library, and then it says integrate
487
00:28:41.920 --> 00:28:45.519
with Ruby and so Yeah, then it's telling you to,
488
00:28:47.559 --> 00:28:50.759
you know, write this quick little Python script and then
489
00:28:51.000 --> 00:28:52.920
call the Python script from Ruby.
490
00:28:53.359 --> 00:28:57.759
When it comes to like doing like larger scale builds, huh.
491
00:28:58.559 --> 00:29:00.559
If you're trying to get chat cheepy t to like
492
00:29:00.880 --> 00:29:05.200
build a full fledged command line application as an example, right, Like,
493
00:29:05.680 --> 00:29:09.000
it's gonna struggle. There's gonna be a lot of back
494
00:29:09.000 --> 00:29:12.279
and forth. You may have multiple chats open. You know,
495
00:29:14.000 --> 00:29:17.839
it's gonna be difficult. The one thing I have us
496
00:29:17.920 --> 00:29:22.160
it's worked well for that kind of thing is honestly
497
00:29:22.359 --> 00:29:27.640
Claud and thropics claud setting up a project for that
498
00:29:27.920 --> 00:29:33.519
specific thing that you're building, creating an overall context with
499
00:29:33.640 --> 00:29:36.400
the purpose that you're using it for to build, and
500
00:29:36.920 --> 00:29:40.119
outlining what all the requirements are in that, and then
501
00:29:40.160 --> 00:29:43.240
you can just start iterating through the chats to implement
502
00:29:43.279 --> 00:29:47.079
the specific features. I use that all the time, and
503
00:29:47.119 --> 00:29:52.400
the code outputs it can like start like building on
504
00:29:52.440 --> 00:29:55.039
top of itself. So it has these things called artifacts,
505
00:29:55.359 --> 00:29:57.599
which are just the files that it generates, and you
506
00:29:57.599 --> 00:30:00.279
can add them to the project as it creates things
507
00:30:00.279 --> 00:30:03.319
that you like, and you can edit in context and
508
00:30:03.400 --> 00:30:05.960
start including it in the project, and it will literally
509
00:30:05.960 --> 00:30:09.759
build the whole application just like in front of you.
510
00:30:11.680 --> 00:30:17.160
And it it's a little funny because there's a there's
511
00:30:17.200 --> 00:30:22.680
this project called e to be Developer where they somebody
512
00:30:22.680 --> 00:30:24.839
has built basically like an open source version of this
513
00:30:25.319 --> 00:30:29.839
of Claude's artifacts. Or again you can like kind of
514
00:30:29.880 --> 00:30:34.519
spin up your own like the last you know, like
515
00:30:34.599 --> 00:30:39.960
a AWS instance and run have like the AI literally
516
00:30:40.359 --> 00:30:43.519
like run files and and create files and run the
517
00:30:43.960 --> 00:30:47.240
scripts and stuff. And so what people do with it
518
00:30:47.400 --> 00:30:49.799
ultimately is like you can you can get it to
519
00:30:50.799 --> 00:30:54.119
literally make like a front end game or like the
520
00:30:54.519 --> 00:30:57.039
if you're building like a web app, it'll like build
521
00:30:57.119 --> 00:30:59.319
the actual app and run it in the browser view.
522
00:31:00.839 --> 00:31:04.759
So I mean this kind of because I mean we talked.
523
00:31:04.799 --> 00:31:07.039
We started talking about, Okay, how do we enhance our
524
00:31:07.119 --> 00:31:13.599
development experience with AI? I talk to people and they're
525
00:31:13.720 --> 00:31:17.559
afraid of AI taking their jobs, and so it sounds
526
00:31:17.640 --> 00:31:21.000
like you're getting real close to saying, you know, somebody
527
00:31:21.039 --> 00:31:24.319
with a minimum level of prompt engineering experience might be
528
00:31:24.359 --> 00:31:26.440
able to do it.
529
00:31:26.519 --> 00:31:31.839
Well, there's a saying in the AI space garbage in,
530
00:31:31.920 --> 00:31:38.640
garbage out, and so there's a yes and note to that, right,
531
00:31:38.759 --> 00:31:43.759
like is it going to take all of our jobs now, right, Like, honestly,
532
00:31:44.000 --> 00:31:49.039
it's like giving people superpowers, right, Like whatever powers you
533
00:31:49.079 --> 00:31:51.559
do have now, like that's all your knowledge and all
534
00:31:51.559 --> 00:31:54.759
your skills that you've accumulated or even if you're just
535
00:31:54.799 --> 00:31:58.240
starting to accumulate them, right, Like, it basically just like
536
00:31:58.279 --> 00:32:03.759
gives it, like amplifies all of that. So like if
537
00:32:04.559 --> 00:32:07.119
if you're you know, if you want to be like
538
00:32:07.160 --> 00:32:11.440
a senior dev, like you can honestly just start today
539
00:32:11.559 --> 00:32:15.759
using AI tools, right, and you'll get pretty close. Right,
540
00:32:15.799 --> 00:32:19.960
Like maybe maybe you know your job won't consider you that,
541
00:32:20.160 --> 00:32:24.759
but like you'll definitely start to see a considerable improvement
542
00:32:24.920 --> 00:32:29.039
in like how quickly you can accomplish things.
543
00:32:29.720 --> 00:32:31.359
Right. I think.
544
00:32:33.400 --> 00:32:35.119
I think the way that I think about it is
545
00:32:35.160 --> 00:32:37.519
more along the lines of like just because you're talking
546
00:32:37.519 --> 00:32:40.440
about it the same way I'm thinking about it, in that, hey,
547
00:32:40.440 --> 00:32:43.599
this is a really really powerful tool, right, and so
548
00:32:43.680 --> 00:32:47.000
it can shortcut a whole bunch of things that we
549
00:32:47.200 --> 00:32:50.039
used to just go and have to kind of reinvent
550
00:32:50.119 --> 00:32:51.640
by hand on a regular basis.
551
00:32:51.920 --> 00:32:52.119
Right.
552
00:32:52.559 --> 00:32:58.319
A perfect example is like the you know, post generator aspect. Right,
553
00:32:58.359 --> 00:33:01.279
Like let's say you do real new and you're really
554
00:33:01.319 --> 00:33:03.680
just trying to like get a page up that's like
555
00:33:04.119 --> 00:33:06.880
let's you see users, right or whatever the resource you
556
00:33:06.920 --> 00:33:10.599
may have. You know, there's a very specific series of
557
00:33:10.640 --> 00:33:12.759
steps you follow just to get to that point where
558
00:33:12.799 --> 00:33:15.279
you can start to crud through. Oh I want to
559
00:33:15.279 --> 00:33:17.400
add this user with this, or I want to add
560
00:33:17.519 --> 00:33:19.680
I want to contact lists, I want to add people.
561
00:33:20.680 --> 00:33:25.440
You know, Like the AI can help like through all
562
00:33:25.440 --> 00:33:27.240
those steps so that you don't have to focus on
563
00:33:27.240 --> 00:33:29.759
all those upfront, right, Like you can just get to
564
00:33:29.799 --> 00:33:32.759
that page and be like okay, great, now, like all
565
00:33:32.799 --> 00:33:36.920
of that initialization configuration aspect which the generators start, but
566
00:33:37.039 --> 00:33:39.920
you have to like finish out. Like that finishing out
567
00:33:40.000 --> 00:33:44.799
portion is done too, right, Like you can sidestep a
568
00:33:44.799 --> 00:33:49.119
lot of the you know, the tidying up that comes
569
00:33:49.160 --> 00:33:51.720
from generators, which is kind of exciting, right because like
570
00:33:52.640 --> 00:33:56.680
that aspect of programming is like widespread, right, Like the
571
00:33:56.759 --> 00:33:59.440
idea of like okay, I have a template that I'm
572
00:33:59.440 --> 00:34:01.839
working off of, and I want to customize it to
573
00:34:01.880 --> 00:34:05.799
get to you know, round zero of my application mm hmm.
574
00:34:06.960 --> 00:34:10.519
And like you have to get through that you know,
575
00:34:10.679 --> 00:34:14.039
series of steps that you're just stepping through, and like
576
00:34:14.519 --> 00:34:17.000
AI is great at that. It's great at stepping through stuff,
577
00:34:17.440 --> 00:34:21.800
especially when all of those requirements are predefined, right like
578
00:34:22.239 --> 00:34:25.719
Reel's new with what right, like you've been reels new
579
00:34:26.039 --> 00:34:28.000
any number of things you could base it off an
580
00:34:28.039 --> 00:34:30.760
existing template you have, you know, if you have a
581
00:34:30.840 --> 00:34:34.760
gem you're building for Ruby, right like bundle gem new,
582
00:34:36.480 --> 00:34:40.119
you know, you have like all of your existing authorships
583
00:34:40.159 --> 00:34:42.679
and like where you're going to publish it to, Like
584
00:34:43.000 --> 00:34:45.639
there's just like a lot of details that you end
585
00:34:45.719 --> 00:34:49.760
up having to add every time that gets old, right,
586
00:34:50.079 --> 00:34:53.480
and it's like repetitive, and like the more things that
587
00:34:53.519 --> 00:34:56.960
you could just like get out of the way and
588
00:34:57.079 --> 00:35:00.280
just start building. Like I bet right now now if
589
00:35:00.280 --> 00:35:02.800
you look at ruby gems dot com, like there would
590
00:35:02.840 --> 00:35:06.639
be a huge spike in published gems. I don't doubt
591
00:35:06.639 --> 00:35:10.920
that right now. And I feel like that's maybe gonna
592
00:35:10.960 --> 00:35:15.960
be where the jobs aspect comes in play here, is
593
00:35:16.000 --> 00:35:18.880
that this is gonna be a lot more maintenance bur right,
594
00:35:19.039 --> 00:35:25.360
Like you know, we can we can create exponentially, and
595
00:35:26.840 --> 00:35:28.760
maintenance is going to drag behind.
596
00:35:28.440 --> 00:35:31.079
There, right. Yeah.
597
00:35:31.119 --> 00:35:33.880
I think the rest of the thought that I was
598
00:35:33.920 --> 00:35:35.480
trying to make, and then I want to kind of
599
00:35:35.519 --> 00:35:38.280
address the other piece that you're talking about here is that, Yeah,
600
00:35:38.400 --> 00:35:43.360
effectively you have these tools that you know, if you're
601
00:35:43.360 --> 00:35:45.159
still going to have to gain experience the same way
602
00:35:45.199 --> 00:35:47.920
the rest of us do. Right, So you're going to
603
00:35:48.079 --> 00:35:52.480
use AI, it's going to generate some stuff and then yeah,
604
00:35:52.519 --> 00:35:54.920
you're you're gonna walk into the same walls that we did.
605
00:35:55.239 --> 00:35:58.000
You just got there a little faster because you didn't
606
00:35:58.000 --> 00:36:00.679
have to go and slog through all the stuff that
607
00:36:00.719 --> 00:36:03.800
you already knew how to do right to get there.
608
00:36:04.000 --> 00:36:07.039
And so I think that's where if you were already
609
00:36:07.079 --> 00:36:10.800
a senior developer and you use these superpowers, then you
610
00:36:10.840 --> 00:36:14.280
can use the tools essentially and say, I need this
611
00:36:14.360 --> 00:36:17.119
refined this way, right, this isn't quite what I'm looking
612
00:36:17.159 --> 00:36:20.280
for because I know that if if it's put together
613
00:36:20.400 --> 00:36:23.159
like this, I'm opening myself up to this problem later.
614
00:36:23.880 --> 00:36:27.480
And so hey, can you handle this too, right? And
615
00:36:27.679 --> 00:36:30.239
and then it can modify the code.
616
00:36:31.000 --> 00:36:32.719
I mean you bring up you bring up a great
617
00:36:32.760 --> 00:36:37.119
point like if you're using AI as a tool and
618
00:36:37.280 --> 00:36:42.760
you're getting hung up on something, then you're using it wrong, right,
619
00:36:42.880 --> 00:36:48.840
Like if uh, if you're using the tool and like
620
00:36:49.480 --> 00:36:52.639
you're kind of banging your head on like getting it
621
00:36:52.679 --> 00:36:56.119
to do what you ask like it's it's more than
622
00:36:56.960 --> 00:37:00.119
likely that it's just like you're you're not using it
623
00:37:00.159 --> 00:37:03.519
the right way. It's like kind of funny because like
624
00:37:03.599 --> 00:37:06.239
that's like a meme, right, Like it's like the holding
625
00:37:06.599 --> 00:37:12.360
you're holding it wrong from Steve Jobs, right, right, But
626
00:37:12.400 --> 00:37:16.719
it's so true, Like you know, like these the AI
627
00:37:16.880 --> 00:37:19.800
tools are built like in very specific ways, and if
628
00:37:19.840 --> 00:37:22.639
like you're not seeing the results you expect, like it's
629
00:37:23.000 --> 00:37:25.760
you're you know, it's not being used in the way
630
00:37:25.760 --> 00:37:26.679
that it should be.
631
00:37:27.000 --> 00:37:29.440
Yeah, you need to give it more context or ask
632
00:37:29.559 --> 00:37:33.000
it in a more specific way or a more appropriate way.
633
00:37:32.920 --> 00:37:35.760
Or approach it completely differently, right, Like there there are
634
00:37:36.119 --> 00:37:38.840
so many ways to get it to do the same thing,
635
00:37:40.039 --> 00:37:44.639
and so like yeah, if you're like that's kind of
636
00:37:44.679 --> 00:37:47.199
like the beauty of AI is like you can literally
637
00:37:47.239 --> 00:37:50.880
scrap everything and start over like pretty quickly, right. And
638
00:37:51.960 --> 00:37:54.800
I would say, if you're like trying trying to explore
639
00:37:55.280 --> 00:37:58.199
the realms of all of this stuff, like use the
640
00:37:59.159 --> 00:38:02.000
interfaces that make the most sense to you, right, because
641
00:38:02.000 --> 00:38:06.880
there are so many and like you're if you're fighting
642
00:38:06.920 --> 00:38:09.000
it early on, you're going to continue to fight it.
643
00:38:09.360 --> 00:38:18.360
Yeah, yep, but I think overall, I guess to a
644
00:38:18.360 --> 00:38:22.400
certain degree, then if it gives developers superpowers, going back
645
00:38:22.400 --> 00:38:26.039
to the idea, is it going to take jobs? If
646
00:38:26.360 --> 00:38:28.519
it gives us superpowers and it makes us that much
647
00:38:28.559 --> 00:38:33.480
more efficient, then and this may be more of a
648
00:38:33.719 --> 00:38:37.360
like a business philosophical question than an actual like practical
649
00:38:38.639 --> 00:38:40.360
you know, are they going to fire developers?
650
00:38:41.360 --> 00:38:42.679
Does that take away jobs?
651
00:38:42.880 --> 00:38:46.000
Or does this just mean that, Hey, look, we've got
652
00:38:46.119 --> 00:38:49.519
ex budget for developers, and so now we if we
653
00:38:49.599 --> 00:38:51.760
train all of our people to use these tools to
654
00:38:51.840 --> 00:38:53.760
enhance what they can do, we can get this much
655
00:38:53.800 --> 00:38:58.480
more done. Right, And so do we actually lose jobs
656
00:38:58.960 --> 00:39:02.679
or maybe do we lose junior developer jobs, which seems
657
00:39:02.760 --> 00:39:06.280
kind of shortsighted because we are going to eventually need
658
00:39:06.320 --> 00:39:10.559
more senior developers. How do you see that shaking out
659
00:39:10.599 --> 00:39:12.800
in the grand scheme of things?
660
00:39:12.840 --> 00:39:13.639
Or do we just not know?
661
00:39:15.360 --> 00:39:17.920
I mean, I see it as more transitional, right, Like
662
00:39:19.480 --> 00:39:24.039
the common analogy that I've heard is like the transition
663
00:39:24.199 --> 00:39:29.480
from horse and buggy to automobiles, right, like very similar
664
00:39:29.840 --> 00:39:34.519
modes of like transport, in that you have wheels right right,
665
00:39:35.199 --> 00:39:39.639
and you have like somebody steering it. It's just a
666
00:39:39.679 --> 00:39:43.159
matter of what's powering it, right, that changes, but the
667
00:39:43.159 --> 00:39:46.239
infrastructure and things related to it and all, like as
668
00:39:46.280 --> 00:39:49.880
an example, whips, Like you know, the accessories around all
669
00:39:49.920 --> 00:39:54.119
of this stuff are just changing shape, right, right, but
670
00:39:54.199 --> 00:39:58.719
the underlying infrastructure around it is still very much the same.
671
00:39:59.239 --> 00:39:59.440
Right.
672
00:40:01.119 --> 00:40:03.400
So we may need less people that shovel poop and
673
00:40:03.440 --> 00:40:07.559
more people that are machinists and auto mechanics exactly.
674
00:40:07.639 --> 00:40:10.960
I think that's ultimately where we're going to get into,
675
00:40:11.159 --> 00:40:16.199
is like more specialized aspects, right, And like that's honestly
676
00:40:16.199 --> 00:40:20.159
what we've been seeing taking shape before AI started, as
677
00:40:20.199 --> 00:40:25.199
like frameworks become more popular, and like Kubernetes as an example, right,
678
00:40:25.280 --> 00:40:28.679
like all of these abstractions, I mean, DH makes a
679
00:40:28.679 --> 00:40:32.679
great point like about abstractions in general. If you get
680
00:40:32.719 --> 00:40:37.960
abstract away like the concepts in a way that you
681
00:40:38.000 --> 00:40:42.199
know makes it so that you have a more straightforward
682
00:40:42.360 --> 00:40:47.519
point of use, right, Like all the details like somebody
683
00:40:47.519 --> 00:40:51.159
else is working on those, right, right, and you can
684
00:40:51.920 --> 00:40:54.679
you know rest assured that you know, those people that
685
00:40:54.719 --> 00:40:57.360
are specialized in it are going to produce you know
686
00:40:57.599 --> 00:41:02.800
that make it easier and more modular and extendable, uh
687
00:41:03.599 --> 00:41:06.119
for your general purpose use right, Right?
688
00:41:07.559 --> 00:41:10.320
So I'm gonna shift gears on you just a little
689
00:41:10.320 --> 00:41:14.880
bit because we've talked about using AI mostly to generate code,
690
00:41:15.280 --> 00:41:17.159
and then you were talking about how you can use
691
00:41:17.280 --> 00:41:25.280
Claude to effectively incrementally generate basically an entire application. Actually,
692
00:41:25.320 --> 00:41:28.039
I'm gonna change my question because it came into my
693
00:41:28.079 --> 00:41:30.239
head as I was talking about this. So if if
694
00:41:30.239 --> 00:41:33.480
you've got something like Claude that can generate pretty much
695
00:41:33.519 --> 00:41:36.719
an entire application, I mean, are there limitations to that?
696
00:41:37.000 --> 00:41:38.920
Like? Are there are there areas.
697
00:41:38.519 --> 00:41:40.920
Where you may tell it you want it to generate
698
00:41:41.960 --> 00:41:44.960
a thing, and it's just not you know, it's not
699
00:41:45.000 --> 00:41:46.639
going to be good at that, or it's good at
700
00:41:46.639 --> 00:41:48.760
to it up, good at it up to a certain point,
701
00:41:48.800 --> 00:41:49.440
and then after that.
702
00:41:50.679 --> 00:41:53.280
Yeah, I mean I definitely see the limitations, right, Like, uh,
703
00:41:53.800 --> 00:41:56.320
it's good up to a point. It's good at like
704
00:41:56.880 --> 00:42:00.880
cobbling together like uh, you know, MVP or like a
705
00:42:00.960 --> 00:42:03.880
first version of something, But as soon as you want
706
00:42:03.920 --> 00:42:06.960
to add something new or make changes to it, it
707
00:42:07.039 --> 00:42:10.880
starts to break down pretty quickly, right, And what you
708
00:42:10.960 --> 00:42:13.000
end up having to do is break it apart. And
709
00:42:13.239 --> 00:42:17.079
I'm honestly very similar to just general software engineering, right
710
00:42:17.199 --> 00:42:19.719
is like you break it apart in the smaller pieces
711
00:42:19.840 --> 00:42:23.920
and then focus on those smaller pieces. Yeah, and I
712
00:42:24.079 --> 00:42:27.719
know Ken Beck has like a great like saying around
713
00:42:27.760 --> 00:42:31.719
this on like, you know, make the change easy and
714
00:42:31.760 --> 00:42:35.159
then make the easy change right, like right, And that's
715
00:42:35.239 --> 00:42:38.360
ultimately what ends up happening as you start to develop
716
00:42:38.800 --> 00:42:42.320
like things with AI on a larger scale.
717
00:42:42.920 --> 00:42:44.880
So you kind of answered the other question I was
718
00:42:44.920 --> 00:42:48.320
going to ask, which was, so, let's say I have
719
00:42:48.880 --> 00:42:50.519
like a bunch of code. I don't want to say
720
00:42:50.599 --> 00:42:53.599
legacy code, because people take that to mean different things. Right,
721
00:42:53.639 --> 00:42:56.480
if you read Michael Feathers, it's just code without tests.
722
00:42:57.800 --> 00:43:01.199
But you know, so you've got this older code that
723
00:43:01.480 --> 00:43:03.719
you know was written I don't know, five years ago
724
00:43:03.840 --> 00:43:08.039
or something that still works, but you find, hey, maybe
725
00:43:08.079 --> 00:43:11.159
I want to refactor it so that it's easier to maintain,
726
00:43:11.239 --> 00:43:13.719
or I want to I want to add a feature
727
00:43:13.719 --> 00:43:18.760
to it. Right, And so I was going to say,
728
00:43:18.800 --> 00:43:21.760
mostly we were talking about generating code, but yeah, what
729
00:43:21.800 --> 00:43:25.960
about modifying code or refactoring code or rethinking code. And
730
00:43:26.039 --> 00:43:28.559
it sounds like the answer to that is, yeah, you
731
00:43:28.559 --> 00:43:32.639
you take the relevant parts out, you tell your large
732
00:43:32.719 --> 00:43:37.199
language model about it. Right here, here's here's my view,
733
00:43:37.280 --> 00:43:40.519
here's my controller, here's my model. You know, here's the
734
00:43:40.559 --> 00:43:44.719
feature that it's supposed to implement. You know, I need
735
00:43:44.760 --> 00:43:46.639
to add this other feature and then see what it
736
00:43:46.679 --> 00:43:47.199
does with it.
737
00:43:47.760 --> 00:43:51.840
Yeah, I mean pretty much. And you know, circling back
738
00:43:51.880 --> 00:43:58.440
to like the more you know, the more point of
739
00:43:58.559 --> 00:44:02.280
use tools like or like code buffer or something like that,
740
00:44:06.079 --> 00:44:09.239
you know, like it can gather that context for you.
741
00:44:09.559 --> 00:44:12.920
Like the most difficult part of the whole were factoring
742
00:44:13.400 --> 00:44:17.440
aspect and making modification. Is like the code, the you
743
00:44:17.440 --> 00:44:21.679
know file spread, right, Like if you have this giant
744
00:44:22.000 --> 00:44:24.519
you know, service class that you've just put everything in
745
00:44:24.639 --> 00:44:28.159
to make the abstraction easier, and it's just becoming too
746
00:44:28.199 --> 00:44:30.400
and wieldly to make changes to it, and you want
747
00:44:30.440 --> 00:44:33.960
to break it apart into smaller pieces so that the
748
00:44:34.000 --> 00:44:38.920
responsibilities are broken out appropriately, right, getting it to extract
749
00:44:38.960 --> 00:44:41.119
those and make new files and things like that, and
750
00:44:41.119 --> 00:44:43.559
getting it to orchestrate all of them, like that kind
751
00:44:43.599 --> 00:44:48.000
of change becomes more difficult, and so like that's where
752
00:44:48.039 --> 00:44:52.440
like again back to the specialists, like you know, that's
753
00:44:52.440 --> 00:44:55.119
why I don't think our jobs are going anywhere necessarily,
754
00:44:56.400 --> 00:45:00.480
is like, you know, it doesn't know how to make
755
00:45:00.719 --> 00:45:06.719
code friendly and easy to read, right, right, and.
756
00:45:05.920 --> 00:45:07.760
It just knows how to make code like what it's
757
00:45:07.800 --> 00:45:08.840
already been trained.
758
00:45:08.960 --> 00:45:12.119
Exactly, and so like let's say even that you get
759
00:45:12.199 --> 00:45:14.320
it to train on a whole bunch of code that
760
00:45:14.320 --> 00:45:17.280
you have that is in a pleasant way, Like it'll
761
00:45:17.320 --> 00:45:20.559
get to a point where, you know, you're trying to
762
00:45:20.639 --> 00:45:24.239
do something novel, You're trying to introduce a new concept,
763
00:45:24.719 --> 00:45:27.079
and like it doesn't know how to break apart the
764
00:45:27.119 --> 00:45:32.480
existing design concepts and apply it to the new novel
765
00:45:32.599 --> 00:45:37.000
approach of implementing something that you're trying to do. So
766
00:45:37.119 --> 00:45:39.719
like it might be able to get like, okay, we
767
00:45:39.760 --> 00:45:44.159
want a service class. We want to you know, encapsulate
768
00:45:44.199 --> 00:45:47.480
this form logic in an object oriented way. It can
769
00:45:47.519 --> 00:45:51.400
do these abstract concepts, but like the actual implementation of
770
00:45:51.480 --> 00:45:54.599
the whole flow starts to break apart, and like it'll
771
00:45:54.639 --> 00:45:57.920
just become messy and like a messy as a human
772
00:45:58.159 --> 00:46:01.480
right to read, where like maybe the code works and
773
00:46:01.519 --> 00:46:05.079
it runs, but you know, the naming conventions may will
774
00:46:05.119 --> 00:46:07.679
start to break down and it won't make sense. It'll
775
00:46:07.679 --> 00:46:10.199
just make sense to like the very specific things that
776
00:46:10.239 --> 00:46:15.360
it's making, right, and it does yeah, I mean it
777
00:46:15.360 --> 00:46:19.119
doesn't have knowledge of the world at every moment, right, Yeah,
778
00:46:19.199 --> 00:46:19.840
that makes sense.
779
00:46:23.000 --> 00:46:24.719
Right, So we go from.
780
00:46:25.960 --> 00:46:29.760
Sort of the you know, like I said, shoveling shoveling
781
00:46:29.800 --> 00:46:33.880
poop right where it's you know, kind of the generic,
782
00:46:34.119 --> 00:46:38.480
easy to pick out cleanups that you know, it may
783
00:46:38.519 --> 00:46:40.679
pick up just because it's got a bunch of code
784
00:46:40.679 --> 00:46:43.679
samples that it was trained on that are reasonably well
785
00:46:43.679 --> 00:46:47.320
written and so it you know, it can adapt a
786
00:46:47.320 --> 00:46:49.840
lot of that stuff out. But yeah, the more involved
787
00:46:49.840 --> 00:46:52.679
re factors and things like that it just does hasn't
788
00:46:52.719 --> 00:46:53.320
been trained on.
789
00:46:53.679 --> 00:46:56.480
I get from here to hear, right, And.
790
00:46:56.480 --> 00:47:00.440
Yeah, I mean it is great for a factor if
791
00:47:00.480 --> 00:47:04.360
you have the narrow enough scope where okay, you have
792
00:47:04.559 --> 00:47:06.800
like even if you have like three files and you're like,
793
00:47:07.199 --> 00:47:09.360
this is just too many files to handle, Like, can
794
00:47:09.440 --> 00:47:12.679
we like reduce the complexity here, Like you can guide
795
00:47:12.719 --> 00:47:15.639
it in a way that it can help you eventually
796
00:47:15.639 --> 00:47:20.599
reach the goal that you're trying to get. But right, like,
797
00:47:20.639 --> 00:47:23.559
if you don't understand how to help it get there,
798
00:47:24.360 --> 00:47:27.320
how to help it help you get there right, right,
799
00:47:29.239 --> 00:47:32.039
then it's going to be more difficult to work with
800
00:47:32.079 --> 00:47:33.920
it than it is. Just you figuring it out.
801
00:47:34.280 --> 00:47:36.239
Right, So so you may be able to handle a
802
00:47:36.320 --> 00:47:39.760
class with five hundred lines in it and say, this
803
00:47:39.840 --> 00:47:42.440
class is too large? What responsibilities do you see here?
804
00:47:42.480 --> 00:47:44.639
And it may may not be able to pick them out,
805
00:47:44.760 --> 00:47:46.920
and then if it does, then maybe you can start
806
00:47:46.960 --> 00:47:51.000
asking it, okay, which methods belong to which responsibility and
807
00:47:51.039 --> 00:47:53.400
then from there you can start to figure out how
808
00:47:53.400 --> 00:47:56.360
to have it help you divvy it up and you know,
809
00:47:56.440 --> 00:47:57.599
extract the class.
810
00:47:58.039 --> 00:48:01.079
Yeah, and I'm hopeful that like all this stuff, like
811
00:48:01.119 --> 00:48:04.480
with these models, a lot of this comes out of there, right,
812
00:48:04.480 --> 00:48:07.719
because like that's ultimately where software like comes in play.
813
00:48:07.840 --> 00:48:12.719
Is like you have these like design you know, buffer
814
00:48:12.840 --> 00:48:16.199
ahead of time that you work through to figure out
815
00:48:16.280 --> 00:48:21.559
ultimately what needs to change or get created, and like
816
00:48:21.639 --> 00:48:27.960
that's very step wise, like and you know that process
817
00:48:28.039 --> 00:48:31.880
is like, okay, I'm thinking about doing this thing. Help
818
00:48:31.960 --> 00:48:36.039
me break out the steps, what approaches are there? And
819
00:48:36.559 --> 00:48:40.840
once you've scattered and then figured out which one pieces
820
00:48:40.880 --> 00:48:45.519
of it that you actually care about, right right, getting
821
00:48:45.559 --> 00:48:51.159
it to identify those things is nice, And then you're
822
00:48:51.199 --> 00:48:54.199
still left with, Okay, well I should make the best
823
00:48:54.280 --> 00:48:58.920
choice in this moment, which you know I'm hopeful that
824
00:48:58.960 --> 00:49:03.559
the future my like focus more around like the selection
825
00:49:04.280 --> 00:49:09.760
aspect of those design choices. But yeah, there's still a
826
00:49:09.800 --> 00:49:13.360
lot of like the reasoning aspect of these things that
827
00:49:14.119 --> 00:49:14.639
is missing.
828
00:49:15.559 --> 00:49:20.119
Right, So are there other tools or approaches that you're using.
829
00:49:22.760 --> 00:49:27.719
Let's see what else is in my toolbox? I mean yeah,
830
00:49:27.760 --> 00:49:31.480
I mean for design stuff, I definitely use that software
831
00:49:31.519 --> 00:49:38.800
architect mentor one. Just to hash through ideas, I use
832
00:49:38.880 --> 00:49:42.719
lane chain a lot. Lange Chain RB has some great
833
00:49:42.760 --> 00:49:52.719
abstractions around working with AI development and integration. We talked
834
00:49:52.719 --> 00:49:56.559
about ray r ai X just great like rails plug
835
00:49:56.559 --> 00:49:59.480
in to just like get your Rails app hooked up
836
00:49:59.519 --> 00:50:03.280
to various AI related design things.
837
00:50:07.039 --> 00:50:10.039
Yeah, and there's Ray and then there's Ray rails. Ye.
838
00:50:10.719 --> 00:50:14.000
So the one is the Ruby extension, the other one
839
00:50:14.039 --> 00:50:14.840
is the race and.
840
00:50:15.199 --> 00:50:17.280
To be honest, lane chain or B they have lane
841
00:50:17.360 --> 00:50:22.320
chain reels which also adds some similar integrations. And then
842
00:50:22.360 --> 00:50:26.440
there's the whole agent side of things too, which.
843
00:50:29.360 --> 00:50:31.360
Isn't that what Ray is kind of focused around, is
844
00:50:31.360 --> 00:50:34.719
building those agents or are you talking about agents that
845
00:50:34.719 --> 00:50:37.440
people have already built for Ruby stuff?
846
00:50:38.480 --> 00:50:41.519
So there's like there's two ways of thinking about it.
847
00:50:41.639 --> 00:50:44.360
Like if you're just like if you want to augment
848
00:50:44.480 --> 00:50:47.280
your applications with AI, like use it as a tool.
849
00:50:47.519 --> 00:50:51.159
Like that's more like Ray or things like that where
850
00:50:51.159 --> 00:50:54.159
you just want to introduce, Hey, I have this model
851
00:50:54.239 --> 00:50:57.239
and I wanted to auto generate stuff based on these
852
00:50:57.320 --> 00:51:00.199
column names, or I have this prompt and I want
853
00:51:00.239 --> 00:51:03.880
to guide through a process and you can create kind
854
00:51:03.920 --> 00:51:06.440
of like these abstractions around those ideas.
855
00:51:07.440 --> 00:51:09.960
That's the level that I'm looking at working in. So,
856
00:51:10.039 --> 00:51:12.920
for example, with what I've built for top end devs,
857
00:51:13.840 --> 00:51:17.079
I'm basically to the point now where I'm starting to
858
00:51:17.119 --> 00:51:20.079
show other people how I run things, and they're telling
859
00:51:20.079 --> 00:51:22.480
me that they want my platform as much as they
860
00:51:22.519 --> 00:51:27.320
want my method, right, and so I'm imagining, yeah, you
861
00:51:27.400 --> 00:51:30.679
have something that you built in Ray, and it's essentially
862
00:51:32.159 --> 00:51:36.000
you know, so like when our guest today almost said
863
00:51:36.039 --> 00:51:37.920
his name, but I don't want to call him out.
864
00:51:37.960 --> 00:51:40.199
He's a great guy and you know that he had
865
00:51:40.199 --> 00:51:43.280
a good reason for canceling today. But right, so if
866
00:51:43.280 --> 00:51:46.079
that happened, right, I would like it to go and
867
00:51:46.119 --> 00:51:49.719
have my agent with has access to the back end,
868
00:51:49.960 --> 00:51:54.480
right say okay, we're gonna we're going to reschedule him
869
00:51:54.639 --> 00:51:58.159
for whenever or you know, we're going to pick another
870
00:51:58.199 --> 00:52:01.039
topic and bring it in right and have it intelligently
871
00:52:01.079 --> 00:52:03.679
do that, but then also have my users be able
872
00:52:03.719 --> 00:52:06.880
to as much as they go in and just modify
873
00:52:06.920 --> 00:52:10.079
stuff in the form right that I built in rails,
874
00:52:10.480 --> 00:52:14.840
but also just say I don't like the title of
875
00:52:14.920 --> 00:52:17.920
episode five hundred and twenty two. I think it needs
876
00:52:17.920 --> 00:52:21.360
to be more focused on this topic or you know,
877
00:52:22.119 --> 00:52:25.159
we use this as an example. So like JavaScript Jabber,
878
00:52:25.679 --> 00:52:28.920
one of the episodes, I kept bringing up examples from
879
00:52:29.000 --> 00:52:33.119
rails to illustrate points, right, And so the AI generated
880
00:52:33.199 --> 00:52:35.599
title that wound up getting put in there without me
881
00:52:35.639 --> 00:52:38.960
catching it had rails in the title, and that wasn't
882
00:52:38.960 --> 00:52:41.519
what the episode was about at all, and so it
883
00:52:41.559 --> 00:52:43.039
would have been nice to be able to just tell
884
00:52:43.079 --> 00:52:46.000
it instead of going in and try and do whatever.
885
00:52:46.119 --> 00:52:49.039
Say I need a title that is less.
886
00:52:48.800 --> 00:52:51.559
Focused on you know, that doesn't include rails and talks
887
00:52:51.559 --> 00:52:54.719
about this topic instead, and then have it smart enough
888
00:52:54.719 --> 00:52:56.920
to go and generate a new title and.
889
00:52:56.840 --> 00:52:58.800
Ask me if that's okay. Kind of thing.
890
00:52:59.800 --> 00:53:02.440
Right where the UI is now, I can either speak
891
00:53:02.440 --> 00:53:04.360
to it or type into a chat and have it
892
00:53:04.400 --> 00:53:07.280
do the right thing. Reschedule this episode Okay, I'm going
893
00:53:07.320 --> 00:53:08.440
to go modify it in the calendar.
894
00:53:08.480 --> 00:53:10.599
I'm gonna go send new invites to the guests.
895
00:53:10.400 --> 00:53:14.159
And the hosts and right do all the other process
896
00:53:14.239 --> 00:53:17.639
things because it has access to the back end of
897
00:53:18.000 --> 00:53:18.599
my system.
898
00:53:18.679 --> 00:53:19.440
Does that make sense?
899
00:53:19.880 --> 00:53:20.840
Yeah, that makes sense.
900
00:53:20.960 --> 00:53:22.880
I get excited about that, And I think that that
901
00:53:23.639 --> 00:53:28.119
is a more intuitive interface for a lot of business
902
00:53:28.159 --> 00:53:31.440
owners that literally just want a content strategy that gets
903
00:53:31.480 --> 00:53:32.199
a business.
904
00:53:32.719 --> 00:53:34.679
Yeah. I mean, if you're just trying to supplement your
905
00:53:34.719 --> 00:53:40.559
existing business, right like using something like ray or lang
906
00:53:40.639 --> 00:53:44.360
Chain or one of these other supplemental libraries, right, Like,
907
00:53:44.559 --> 00:53:46.360
that makes a lot of sense. It just looks right
908
00:53:46.400 --> 00:53:51.400
into it, you know, very minimal modification and like long
909
00:53:51.519 --> 00:53:55.159
term support. Just like it's super easy to modify and
910
00:53:55.519 --> 00:53:57.199
update the prompts pretty easily.
911
00:53:57.400 --> 00:53:57.599
Right.
912
00:53:58.559 --> 00:54:01.079
But if you're trying to get like something more complex
913
00:54:01.199 --> 00:54:04.199
out of like the AI systems, that's kind of where
914
00:54:04.239 --> 00:54:07.280
like agentic system design comes in play.
915
00:54:07.960 --> 00:54:08.199
Uh.
916
00:54:08.239 --> 00:54:11.320
And that's like where you want like, uh, you know,
917
00:54:11.400 --> 00:54:14.199
AI to to do a specific job and like a
918
00:54:14.320 --> 00:54:17.440
chain through a bunch of steps. Uh. And so like
919
00:54:17.480 --> 00:54:22.000
there's tools like active agents as an example, justin Bowen, Uh,
920
00:54:22.039 --> 00:54:26.760
he just released these uh this framework which is pretty
921
00:54:26.760 --> 00:54:34.159
awesome uh for managing agentic system flows like that. And
922
00:54:34.199 --> 00:54:38.519
then there's like you know Alex Rudall, we had him
923
00:54:38.519 --> 00:54:43.199
on He's the Ruby open Ai author, right. He has
924
00:54:43.239 --> 00:54:48.679
AI engine, UH, the AI engine Jim it's with reels
925
00:54:48.679 --> 00:54:51.719
ai dot com uh. And that he has you know
926
00:54:51.800 --> 00:54:57.639
assistance ah, you know framework built in where you can
927
00:54:57.679 --> 00:55:04.800
just hook into uh to get various code like you know,
928
00:55:04.880 --> 00:55:10.199
to do step wise things with there's just like a
929
00:55:10.719 --> 00:55:14.840
it's like if you're looking to cobbled it.
930
00:55:14.960 --> 00:55:15.039
Like.
931
00:55:15.960 --> 00:55:19.239
One of the greatest things I saw was actually from
932
00:55:20.000 --> 00:55:24.719
Toby Luke from Shopify. He gave this like internal like
933
00:55:25.719 --> 00:55:30.800
presentation where it was all developed by AI and he
934
00:55:30.920 --> 00:55:35.960
had basically like made these little agents. He made like
935
00:55:36.000 --> 00:55:39.960
a virtual office and this was the program. And the
936
00:55:40.039 --> 00:55:44.679
virtual office had individual agents, which were basically just people
937
00:55:44.719 --> 00:55:47.679
with a very specific role like a software engineer, a
938
00:55:47.719 --> 00:55:53.599
marketing person, you know, research assistant, you know. And each person,
939
00:55:53.960 --> 00:55:57.679
each agent had a loop and it went through and
940
00:55:57.719 --> 00:56:01.320
it thought about what it had to do. It like
941
00:56:01.599 --> 00:56:04.360
had some tools available to it to perform that task.
942
00:56:05.119 --> 00:56:08.960
And then every periodically all of the agents would get
943
00:56:09.000 --> 00:56:12.119
together and they would like have a meeting, right, and
944
00:56:12.320 --> 00:56:15.440
like they could if they needed information from another agent,
945
00:56:15.719 --> 00:56:17.559
like they could reach out to the other agent and
946
00:56:17.679 --> 00:56:22.639
work together on producing those details. Right. And then you
947
00:56:22.679 --> 00:56:25.119
know what you can do is is you could scale this,
948
00:56:25.360 --> 00:56:29.199
right is you could say, Okay, I want like five
949
00:56:29.280 --> 00:56:33.360
developers agents, right, like I want five marketing people on
950
00:56:33.400 --> 00:56:36.639
this effort, and they would all work together and work
951
00:56:36.639 --> 00:56:42.519
on scaling and then conferring their judgments together for better results.
952
00:56:42.840 --> 00:56:46.559
And if you think about it again, like he basically said, well,
953
00:56:46.559 --> 00:56:49.320
then you can also scale your offices, right Like, so
954
00:56:49.480 --> 00:56:51.320
like let's say I have one office working on this,
955
00:56:51.519 --> 00:56:53.880
I can have many offices working on this, and maybe
956
00:56:54.199 --> 00:56:56.679
they're all working on their own different things, but ultimately
957
00:56:56.679 --> 00:57:00.760
coming together for the business side, like right purpose Uh
958
00:57:00.840 --> 00:57:04.880
And so it's really interesting idea of like these virtualization
959
00:57:05.320 --> 00:57:09.400
like containers of all of these very specific things doing
960
00:57:09.480 --> 00:57:13.360
very specific tasks. And so if you're want to like
961
00:57:14.119 --> 00:57:17.679
build a business around that idea, like you're gonna go
962
00:57:17.920 --> 00:57:23.280
through some kind of agent or assistant p Yeah.
963
00:57:23.400 --> 00:57:25.800
Yeah, And and that's that's what I'm excited about, right.
964
00:57:25.840 --> 00:57:28.960
I just see all kinds of opportunities with that. Was
965
00:57:28.960 --> 00:57:30.840
there anything else that we should dive into here. We've
966
00:57:30.880 --> 00:57:31.800
been talking about an hour.
967
00:57:33.800 --> 00:57:37.280
I mean I could keep going. There's there's so many.
968
00:57:37.199 --> 00:57:38.079
One more things.
969
00:57:38.320 --> 00:57:45.199
Yeah, I mean so the there the Latent Space podcast
970
00:57:45.280 --> 00:57:46.119
is just incredible.
971
00:57:46.400 --> 00:57:48.280
Uh yeah, I just started listening to that.
972
00:57:48.360 --> 00:57:52.559
Oh my gosh. They are just like in it deep right,
973
00:57:52.719 --> 00:57:55.039
Like if you're if you want your mind blown about
974
00:57:55.079 --> 00:57:57.800
like what is happening in the AI space, like they're
975
00:57:57.800 --> 00:57:58.880
exposing it pretty great.
976
00:57:59.119 --> 00:57:59.519
Uh.
977
00:57:59.800 --> 00:58:03.079
And and one one thing that is like frequently talked
978
00:58:03.119 --> 00:58:08.199
about is like the importance of like evaluating the outputs
979
00:58:08.280 --> 00:58:12.679
right and getting benchmarks and so like two of these
980
00:58:12.719 --> 00:58:18.679
concepts are like, uh, you know, the Hugging Face has
981
00:58:18.679 --> 00:58:25.920
a great like library on their evail framework. Let me
982
00:58:25.960 --> 00:58:30.079
see if I can remember what it is. I mean, yeah,
983
00:58:30.199 --> 00:58:35.960
Evail guidebook, and so that they have like basically this like, uh,
984
00:58:37.920 --> 00:58:41.960
you know, how do you get run tests against these
985
00:58:41.960 --> 00:58:45.440
outputs so that you can guarantee that they're doing it
986
00:58:45.480 --> 00:58:48.760
what you what you want of them, right, Because that's
987
00:58:48.800 --> 00:58:50.719
one of the biggest things is like there's so much
988
00:58:50.800 --> 00:58:55.159
variability in their output right, Like uh, it's token by token,
989
00:58:55.280 --> 00:58:57.920
so like if it gets off track at any point,
990
00:58:58.159 --> 00:59:01.639
like it could all of a sudden break down pretty easily.
991
00:59:01.679 --> 00:59:03.840
And if you have that hooked up into a series
992
00:59:03.920 --> 00:59:06.199
of processes that depend on each other, right, like that
993
00:59:06.199 --> 00:59:09.440
falls apart pretty quickly. And so like setting up these
994
00:59:09.480 --> 00:59:13.599
kind of like benchmarks and evaluations is just like there's
995
00:59:13.639 --> 00:59:18.199
a whole industry like focus on this, right, And that's
996
00:59:18.239 --> 00:59:22.599
where you get these like leaderboards that benchmark all of
997
00:59:22.639 --> 00:59:26.480
these models based on different criteria like how well do
998
00:59:26.559 --> 00:59:32.480
they you know one I just saw recently, there's a
999
00:59:32.480 --> 00:59:39.599
an evaluation or a leaderboard for for doing debates, right,
1000
00:59:39.679 --> 00:59:43.280
like how well do the models like argue on a point?
1001
00:59:44.039 --> 00:59:46.920
And so there's like a new leaderboard now where which
1002
00:59:46.960 --> 00:59:49.440
models perform best at this, right, like which which ones
1003
00:59:49.440 --> 00:59:50.239
are most convincing?
1004
00:59:51.239 --> 00:59:51.400
Right?
1005
00:59:52.519 --> 00:59:54.719
And it's it's pretty great. And so like there there
1006
00:59:54.719 --> 00:59:57.039
are a bunch of leaderboards that and that all of
1007
00:59:57.039 --> 00:59:59.719
them are based on these evaluations, right where you have
1008
01:00:00.760 --> 01:00:03.800
output and you give it input and you expected a
1009
01:00:03.920 --> 01:00:10.559
very specific reconstruction of that every time, right. And so
1010
01:00:10.639 --> 01:00:12.599
that's actually something I focus on quite a bit at
1011
01:00:12.599 --> 01:00:17.440
work building stuff for physicians. Right, it's pretty important to
1012
01:00:17.440 --> 01:00:19.800
get it to do exactly what you want.
1013
01:00:20.159 --> 01:00:24.119
Right, That's amazing.
1014
01:00:24.719 --> 01:00:28.119
Yeah, And Layton space is what it swicks or Sean
1015
01:00:28.159 --> 01:00:31.960
Wayne yep and Alesso I can't remember his last.
1016
01:00:31.800 --> 01:00:35.320
Name, but yeah, I mean I would Hugging Face is
1017
01:00:35.360 --> 01:00:39.719
definitely like they are awesome. They're just killing on all
1018
01:00:39.800 --> 01:00:43.039
fronts here, even the robotic stuff. I don't know if
1019
01:00:43.079 --> 01:00:47.159
you play. I have a little They have this thing
1020
01:00:47.239 --> 01:00:51.440
called the robot and it's a robotic arm that you
1021
01:00:51.480 --> 01:00:56.000
can train with AI just like on your MacBook and
1022
01:00:56.039 --> 01:01:01.960
you point a camera at it, and I've built it
1023
01:01:02.119 --> 01:01:04.320
like that. You build two of them, right, like one
1024
01:01:04.599 --> 01:01:07.480
to train it with and one to do things with.
1025
01:01:08.079 --> 01:01:11.599
And it has this thing called telepresence where it repeats
1026
01:01:11.719 --> 01:01:14.199
you know, what you're doing with one robot arm to
1027
01:01:14.280 --> 01:01:18.719
the other, and then it you know, trains and model
1028
01:01:18.760 --> 01:01:20.400
based on that, and so you could train it to
1029
01:01:20.440 --> 01:01:22.280
do different things, so like pick up you know, sort
1030
01:01:22.320 --> 01:01:26.360
Eminem's or sort legos or you know pick up. I'm
1031
01:01:26.360 --> 01:01:28.519
trying to get it to right, like Hello world, right,
1032
01:01:29.280 --> 01:01:30.800
And you could train it to do this just like
1033
01:01:30.880 --> 01:01:35.239
by having it watch itself and repeat those training examples,
1034
01:01:35.280 --> 01:01:37.679
like in a virtual environment. So they have like this
1035
01:01:37.679 --> 01:01:42.440
whole framework they built around that. It's so fascinating. The
1036
01:01:42.519 --> 01:01:45.440
other robotics aspects of all this stuff is pretty wild.
1037
01:01:47.599 --> 01:01:50.239
Yeah, it sounds like a whole different can of worms. Yeah.
1038
01:01:51.679 --> 01:01:53.880
So at the end of the day, if people are
1039
01:01:53.880 --> 01:01:56.760
looking to enhance their.
1040
01:01:58.199 --> 01:02:01.079
You know, their code stuff, and we didn't even get
1041
01:02:01.119 --> 01:02:03.400
into you know, JavaScript in front end, if you're doing
1042
01:02:03.400 --> 01:02:09.320
stuff with that. But you know, beyond kind of the
1043
01:02:09.639 --> 01:02:13.719
stepping stones that we've already talked through, right, are there
1044
01:02:13.760 --> 01:02:15.480
good places for people to just kind of keep an
1045
01:02:15.480 --> 01:02:18.800
eye out and go, you know, see what else kind
1046
01:02:18.800 --> 01:02:19.639
of crops up?
1047
01:02:22.719 --> 01:02:26.559
I mean really just starts small, Like this space is
1048
01:02:26.760 --> 01:02:29.320
always going to change fast, and there's going to be
1049
01:02:29.400 --> 01:02:35.239
new things, but there's like foundational concepts and tools like
1050
01:02:35.760 --> 01:02:40.480
becoming popular, right Like lang chain is like a widely
1051
01:02:40.519 --> 01:02:43.119
popular thing that's just super easy to get set up
1052
01:02:43.119 --> 01:02:43.639
and running with.
1053
01:02:44.480 --> 01:02:44.599
Right.
1054
01:02:44.960 --> 01:02:47.239
Grant is in Python and that's fine, like.
1055
01:02:47.840 --> 01:02:50.840
A yeah, but it looks like, you know, you've got
1056
01:02:50.920 --> 01:02:51.559
link chain RB.
1057
01:02:51.800 --> 01:02:55.440
So it's it's like calling a database or you know,
1058
01:02:55.519 --> 01:02:57.559
another API service or something, right.
1059
01:02:57.639 --> 01:03:00.920
I mean really, it's just like finding those abstractions that
1060
01:03:01.039 --> 01:03:04.239
just help like get to the point and learn the basics, right,
1061
01:03:04.400 --> 01:03:07.760
Like the best tool you can find to do that
1062
01:03:07.840 --> 01:03:11.119
with is going to be the best one, right, because
1063
01:03:11.159 --> 01:03:13.840
like there's so many concepts to learn, like just break
1064
01:03:13.880 --> 01:03:17.519
down like how you chain it all together, right, right,
1065
01:03:17.920 --> 01:03:22.480
and so like start with the very basic small stuff
1066
01:03:22.519 --> 01:03:24.840
like sub layer. If you're in Ruby, Like sub layer
1067
01:03:24.880 --> 01:03:27.119
is a great starting point. Like you open up a
1068
01:03:27.199 --> 01:03:29.719
Ruby fil and you include sub layer and you can
1069
01:03:29.800 --> 01:03:35.440
perform some LLLM magic right, awesome, awesome tool create different actions,
1070
01:03:35.559 --> 01:03:37.679
Like they have a library you can go and just
1071
01:03:37.760 --> 01:03:41.480
like you know, take all you know, the various actions
1072
01:03:41.480 --> 01:03:44.800
that they publish. Right, So if you want it as
1073
01:03:44.840 --> 01:03:48.920
an example, like red Green tests passing, like there's like
1074
01:03:49.039 --> 01:03:51.519
a you know, an agent for that you can download
1075
01:03:51.559 --> 01:03:53.719
and get running just from a URL.
1076
01:03:53.880 --> 01:03:54.320
So like.
1077
01:03:57.239 --> 01:04:00.079
Yeah, I would say, just like pick one tool and
1078
01:04:00.119 --> 01:04:02.719
that like that will get Now that's going to be
1079
01:04:02.719 --> 01:04:03.480
the fastest way.
1080
01:04:05.559 --> 01:04:09.159
Yeah, I guess at this point we'll go ahead and
1081
01:04:09.239 --> 01:04:13.199
do pics. Yeah.
1082
01:04:13.440 --> 01:04:15.000
I mean, I'm just sitting here kind of thinking through
1083
01:04:15.039 --> 01:04:16.719
all the implications of all the stuff we talked about,
1084
01:04:17.840 --> 01:04:19.679
because you know, I knew, I knew that there was
1085
01:04:19.719 --> 01:04:22.239
a whole level of stuff that I hadn't seen.
1086
01:04:24.599 --> 01:04:27.960
And one thing that I'm really wanting to do or
1087
01:04:27.960 --> 01:04:29.400
thinking about doing here is.
1088
01:04:29.400 --> 01:04:33.920
Just putting together essentially tutorial videos on how to do
1089
01:04:33.960 --> 01:04:36.480
a lot of this stuff. Right, It's like, hey, here's
1090
01:04:36.519 --> 01:04:39.920
how you, you know, work through some of these things
1091
01:04:40.000 --> 01:04:42.199
or use some of these tools, just to give people
1092
01:04:42.199 --> 01:04:46.719
an idea or example. Anyway, Yeah, let's go ahead and
1093
01:04:46.760 --> 01:04:48.679
jump in with picks and then we'll wrap up.
1094
01:04:50.840 --> 01:04:52.480
But yeah, we've we've got all kinds.
1095
01:04:52.239 --> 01:04:56.280
Of links in the on the YouTube broadcast that says
1096
01:04:56.280 --> 01:05:00.440
it's about solid cash.
1097
01:05:00.480 --> 01:05:02.159
But yeah, why don't why don't you go ahead and
1098
01:05:02.159 --> 01:05:03.519
go first? What picks do you have?
1099
01:05:05.880 --> 01:05:08.679
Yeah, I mean I have to, you know, call out
1100
01:05:08.679 --> 01:05:14.239
the Ruby I Builders discord. Like awesome. Honestly, if you're
1101
01:05:14.280 --> 01:05:17.119
looking for one thing to like learn all this stuff,
1102
01:05:17.239 --> 01:05:21.920
like just join that discord. You'll learn plenty and people
1103
01:05:21.960 --> 01:05:23.960
are just like so willing to help out and point
1104
01:05:23.960 --> 01:05:27.000
you to to where you need to go and what
1105
01:05:27.039 --> 01:05:31.800
you're looking for. Super helpful. Sublair also has a discord
1106
01:05:32.440 --> 01:05:36.440
if you're looking to drive into that as well. Yeah,
1107
01:05:36.440 --> 01:05:41.639
I mean next to that. Yeah, I'm just chugging away
1108
01:05:41.679 --> 01:05:50.719
on this, like Ruby laying AI project I started, it's
1109
01:05:50.719 --> 01:05:56.480
like very slow progress. Well, ultimately I'm like trying to
1110
01:05:56.760 --> 01:06:00.599
fine tune a model, a very small model, call him
1111
01:06:01.599 --> 01:06:06.360
you know, SML instead of ll M. But I'm trying
1112
01:06:06.400 --> 01:06:10.199
to like fine tune smaller models that are very purpose
1113
01:06:10.239 --> 01:06:14.440
driven for Ruby generate code generation with the ultimate goal
1114
01:06:14.480 --> 01:06:17.199
of being able to, like, you know, further fine tune
1115
01:06:17.239 --> 01:06:20.000
it on existing code basis so that you can get
1116
01:06:20.000 --> 01:06:23.280
it to generate things based on the context of your
1117
01:06:23.920 --> 01:06:28.320
organization's code. And I'm making some pretty good progress. I'm
1118
01:06:28.360 --> 01:06:31.599
trying to use as much Ruby as I can, and
1119
01:06:31.679 --> 01:06:35.800
so I have, you know, this high call library that
1120
01:06:35.840 --> 01:06:40.239
I'm using to ultimately just shell out to Python for
1121
01:06:40.360 --> 01:06:43.199
the things that Ruby can't do yet. But that gap
1122
01:06:43.280 --> 01:06:48.239
is slowly closing in thanks to Andrew Kane, who's just
1123
01:06:48.280 --> 01:06:51.440
like a monster with all of this machine learning stuff
1124
01:06:51.440 --> 01:06:55.280
in Ruby. Yeah, he is just putting out stuff left
1125
01:06:55.320 --> 01:07:00.880
and right. And I guess on that topic, there is
1126
01:07:01.119 --> 01:07:09.360
a gem called informers that he has that lets you
1127
01:07:09.519 --> 01:07:14.519
run inference for Ruby, and it's really great. You can
1128
01:07:14.559 --> 01:07:18.199
basically just like point a hugging face model at it
1129
01:07:18.480 --> 01:07:22.960
and run imprints using Ruby. Super fun stuff to play with.
1130
01:07:23.199 --> 01:07:26.000
If you're just trying to like summarize something as an example, like,
1131
01:07:26.320 --> 01:07:30.960
there are great smaller models that do specifically that and
1132
01:07:31.239 --> 01:07:34.840
they work great. You don't need like to reach out
1133
01:07:34.880 --> 01:07:37.280
to open Ay every time when you just want something
1134
01:07:37.800 --> 01:07:43.239
small that outputs much faster, right, So check that out.
1135
01:07:43.719 --> 01:07:48.800
Yeah, all right, I'm gonna do some picks. We used
1136
01:07:48.800 --> 01:07:52.519
to do the board game pick lately. So last weekend
1137
01:07:52.719 --> 01:07:55.800
I was teaching games at the Game Board Game Convention
1138
01:07:55.920 --> 01:08:01.400
again and so we had five games we were demoing.
1139
01:08:02.440 --> 01:08:04.599
So I'm going to pick some of those over the
1140
01:08:04.679 --> 01:08:07.760
next four or five weeks. One of the games I've
1141
01:08:07.800 --> 01:08:09.679
already picked on this show because I played it at
1142
01:08:09.679 --> 01:08:12.880
Salt Con in March, and so I'm not going to
1143
01:08:12.880 --> 01:08:15.400
pick that. That's Challengers if you haven't checked it out,
1144
01:08:16.800 --> 01:08:19.359
very fun game. The game that I'm going to pick
1145
01:08:19.439 --> 01:08:25.960
today is called Gnome Hollow, and I have to say so,
1146
01:08:26.000 --> 01:08:28.319
there are different aspects of board games. I haven't really
1147
01:08:28.319 --> 01:08:30.399
discussed this much on the show. There are different aspects
1148
01:08:30.399 --> 01:08:31.960
of board games that make them fun, right, So some
1149
01:08:32.000 --> 01:08:33.439
of it is kind of the flow of the game.
1150
01:08:33.920 --> 01:08:36.800
Some of it's you know, how much you have to
1151
01:08:36.840 --> 01:08:38.680
think about what you're doing and how much you have
1152
01:08:38.720 --> 01:08:40.520
to plan ahead, and whether or not you like that
1153
01:08:40.680 --> 01:08:43.239
kind of a game. And you know, and so that's
1154
01:08:43.279 --> 01:08:46.239
down to like complexity or things like that. Not always
1155
01:08:46.279 --> 01:08:50.079
some of it's like like, for example, nome Hollow has
1156
01:08:50.119 --> 01:08:54.760
a pretty simple cadence to each round. It's just it's
1157
01:08:54.840 --> 01:08:57.399
just the thinking ahead, right, because you're you're going to
1158
01:08:57.479 --> 01:08:59.720
build something out and then you're going to capitalize on it,
1159
01:09:00.159 --> 01:09:02.640
and then there's some movement aspect and you have to
1160
01:09:02.640 --> 01:09:04.800
decide what you're going to do every turn. So the
1161
01:09:04.800 --> 01:09:09.039
way that it's played is you're trying to complete mushroom
1162
01:09:09.079 --> 01:09:13.720
rings in the forest, okay, and you know your mushroom
1163
01:09:13.800 --> 01:09:16.000
rings don't have to be round, but they have to
1164
01:09:16.000 --> 01:09:19.359
be a complete loop. So you know, you can build
1165
01:09:19.359 --> 01:09:22.800
a three, A four, A five, six. It's hex tiles
1166
01:09:22.800 --> 01:09:24.520
and so it's the number of hex tiles that are
1167
01:09:24.560 --> 01:09:27.960
on the on the loop that you made, and you
1168
01:09:28.119 --> 01:09:30.640
get you get to move a marker down when you
1169
01:09:30.680 --> 01:09:35.520
complete a ring, right as long as there's a space
1170
01:09:35.560 --> 01:09:37.640
for it. So you can do one three, you can
1171
01:09:37.680 --> 01:09:40.479
do two fours, and then you can do like four fives,
1172
01:09:40.479 --> 01:09:42.399
four six's and four sevens.
1173
01:09:44.039 --> 01:09:45.760
You don't have that many markers.
1174
01:09:46.079 --> 01:09:49.880
And on the sevens, if you move one down, two
1175
01:09:49.880 --> 01:09:51.439
of the rewards on the sevens is you get to
1176
01:09:51.439 --> 01:09:53.720
move a second marker down and get another reward.
1177
01:09:54.359 --> 01:09:56.359
So anyway, it's pretty cool.
1178
01:09:56.399 --> 01:10:00.439
The different rewards either modified the game board or they
1179
01:10:00.520 --> 01:10:02.920
give you some other reward that gets you points. So
1180
01:10:03.920 --> 01:10:06.840
if you complete a loop, for every two loops you
1181
01:10:06.880 --> 01:10:09.399
complete or every two markers you move down it more appropriately,
1182
01:10:10.560 --> 01:10:14.359
you get to discover a wildflower, and then you get
1183
01:10:14.399 --> 01:10:17.279
the wildflower. You get a wild as part of your
1184
01:10:17.319 --> 01:10:20.159
reward for discovering a wildflower, and then the rest of
1185
01:10:20.199 --> 01:10:22.279
them go up for other people to be able to collect,
1186
01:10:22.640 --> 01:10:24.840
and so you get points for every wildflower you collect.
1187
01:10:25.199 --> 01:10:27.439
You get points for every marker you've moved down into
1188
01:10:27.439 --> 01:10:31.039
the reward space, and then you get points when you
1189
01:10:31.079 --> 01:10:34.920
complete the loop or the ring. You get the mushrooms
1190
01:10:35.079 --> 01:10:37.680
that are on the ring, and so then you can
1191
01:10:37.720 --> 01:10:39.680
go to the market and sell the mushrooms. And those
1192
01:10:39.720 --> 01:10:41.560
are the three ways to get points. You add them
1193
01:10:41.560 --> 01:10:46.039
all up at the end that's how you score. So
1194
01:10:46.119 --> 01:10:48.880
then it's just a matter of getting the you know,
1195
01:10:49.159 --> 01:10:51.560
enough of the right kinds of mushrooms to make your
1196
01:10:51.600 --> 01:10:53.760
trip to the market worth it. And then the other
1197
01:10:53.800 --> 01:10:56.439
thing is is if you say you cash in five
1198
01:10:56.680 --> 01:11:02.039
red mushrooms. You actually fill the spot for five red mushrooms,
1199
01:11:02.119 --> 01:11:03.960
and nobody else can do five, they can do six,
1200
01:11:04.199 --> 01:11:06.600
they can do four, they can't do five. And then
1201
01:11:06.600 --> 01:11:10.399
when somebody does six, right, then that is also gone. Right,
1202
01:11:10.439 --> 01:11:13.520
so maybe you go seven or eight. And so the
1203
01:11:13.520 --> 01:11:17.319
different mushrooms are worth different amounts because you have different
1204
01:11:17.399 --> 01:11:20.640
rarity on the hexes you place. You have place two hexes.
1205
01:11:21.560 --> 01:11:24.680
You collect the rewards for completing your loops, and then
1206
01:11:24.720 --> 01:11:27.159
you move your nome and you move your nome to
1207
01:11:27.439 --> 01:11:31.560
reserve a path that will eventually become a loop, or
1208
01:11:31.640 --> 01:11:33.800
you move your nome to a sign, which is one
1209
01:11:33.800 --> 01:11:35.880
of the rewards you get for completing a loop, or
1210
01:11:35.920 --> 01:11:38.319
you can move it up to the market and you know,
1211
01:11:38.520 --> 01:11:40.720
sell mushrooms, or you can go and collect the flower
1212
01:11:41.920 --> 01:11:43.760
and you know, and so then at the end of
1213
01:11:43.800 --> 01:11:47.640
the game, what if you've accrued in the different kinds
1214
01:11:47.680 --> 01:11:54.359
of flowers and stuff, that's how you win. So, you know,
1215
01:11:54.399 --> 01:11:55.880
I played it like three or four times at the
1216
01:11:55.920 --> 01:11:58.279
game convention because that was one of the games that
1217
01:11:58.600 --> 01:12:01.279
people wanted to learn and and anyway, it's a lot
1218
01:12:01.279 --> 01:12:04.000
of fun board game. Geek waits it at two point
1219
01:12:04.079 --> 01:12:07.520
one seven and so you know, kind of your average
1220
01:12:07.560 --> 01:12:10.520
gamer with enough complexity to make the game interesting is
1221
01:12:10.520 --> 01:12:13.800
about a two. So this is just slightly more complicated
1222
01:12:13.800 --> 01:12:18.560
than that. And the complication really is, you know, what
1223
01:12:18.600 --> 01:12:20.800
do I get for completing the loop? How do I
1224
01:12:20.840 --> 01:12:23.119
make the loop large enough to get the reward I want?
1225
01:12:23.199 --> 01:12:23.399
Right?
1226
01:12:23.600 --> 01:12:25.840
Instead of a four, make it a six or seven?
1227
01:12:26.880 --> 01:12:28.479
You know, and you have to plan ahead to make
1228
01:12:28.479 --> 01:12:29.079
your path.
1229
01:12:28.880 --> 01:12:29.560
Go the right way.
1230
01:12:31.720 --> 01:12:33.720
And then you know, yeah, when you move the gnome,
1231
01:12:34.560 --> 01:12:36.880
do I move it to a sign to get more mushrooms?
1232
01:12:36.960 --> 01:12:38.640
Do I move it to the market? Do I move
1233
01:12:38.680 --> 01:12:41.159
it to the thing? And which ones do I sell back?
1234
01:12:41.199 --> 01:12:42.800
And is somebody going to sell back the eight?
1235
01:12:42.880 --> 01:12:43.560
And I have eight?
1236
01:12:43.640 --> 01:12:45.920
So now I can only sell back seven. So that's
1237
01:12:45.960 --> 01:12:49.000
where the complexity is is it's in that play so
1238
01:12:49.039 --> 01:12:51.680
that you're making the right moves to accrue the most points.
1239
01:12:52.439 --> 01:12:56.079
And anyway, super fun game. Takes about forty five minutes
1240
01:12:56.119 --> 01:12:57.880
to play it, which is also great plays up to
1241
01:12:57.920 --> 01:12:58.439
four people.
1242
01:13:00.319 --> 01:13:02.119
I've played it with two, with three and with four.
1243
01:13:02.560 --> 01:13:04.319
I think with three and four people it's more fun
1244
01:13:04.920 --> 01:13:06.399
because you have a lot more going on on the
1245
01:13:06.399 --> 01:13:08.399
board and you have a lot more options that open.
1246
01:13:08.319 --> 01:13:09.159
Up more quickly.
1247
01:13:10.920 --> 01:13:14.079
But yeah, so no hollow And the artwork on this
1248
01:13:14.119 --> 01:13:18.960
one is awesome. It's fun artwork. There are a million
1249
01:13:19.000 --> 01:13:22.720
little pieces. They give you a whole bunch of bags,
1250
01:13:22.760 --> 01:13:24.439
and it's not really clear how you're supposed to get
1251
01:13:24.439 --> 01:13:25.880
it all back into the box. I mean it all
1252
01:13:25.920 --> 01:13:29.399
fits fine, that's not the problem. But it's like, Okay,
1253
01:13:29.399 --> 01:13:32.000
do I separate all out the different kinds of mushrooms?
1254
01:13:32.000 --> 01:13:35.520
And do I separate all the different markers into different bags?
1255
01:13:36.399 --> 01:13:39.279
If I wind up buying the game, I'm just gonna
1256
01:13:39.359 --> 01:13:41.279
bring in my own bags and I'll keep them all
1257
01:13:41.319 --> 01:13:43.600
separate in that way, I can just parcel them out.
1258
01:13:43.640 --> 01:13:45.960
But yeah, we wound up combining a bunch of stuff
1259
01:13:46.000 --> 01:13:47.439
and you wind up having to sort it back out
1260
01:13:47.439 --> 01:13:50.560
when you pull the game out. But it's fun, very
1261
01:13:50.640 --> 01:13:53.439
very fun. The game ends when somebody moves their last
1262
01:13:53.439 --> 01:13:57.319
marker down. You finish out, tell that everybody's had the
1263
01:13:57.319 --> 01:13:59.920
same number of turns, or if you run out of
1264
01:14:00.319 --> 01:14:02.720
to put on the board, and so what you do
1265
01:14:02.800 --> 01:14:08.880
is you put aside two hexes for every player that's playing,
1266
01:14:10.000 --> 01:14:13.159
and that way, if you run out of the hexes
1267
01:14:13.199 --> 01:14:16.520
to play, you just play off of that stack until
1268
01:14:16.560 --> 01:14:17.800
everybody's had the equal.
1269
01:14:17.640 --> 01:14:18.359
Number of turns.
1270
01:14:18.640 --> 01:14:22.159
I think every time that I've played, somebody moved their
1271
01:14:22.199 --> 01:14:26.279
last marker down before we were out of hexes. So anyway,
1272
01:14:26.560 --> 01:14:31.640
super fun game, Really enjoying that. I am working on
1273
01:14:31.720 --> 01:14:34.880
putting together an AI dev boot camp, and that's more
1274
01:14:34.920 --> 01:14:37.079
in the vein of building out the agents like we
1275
01:14:37.119 --> 01:14:40.800
talked about, as opposed to you know, and using some
1276
01:14:40.840 --> 01:14:44.199
of the other tools like Whisper for transit transcriptions and
1277
01:14:44.840 --> 01:14:48.000
text to speech or speech to text and all that
1278
01:14:48.119 --> 01:14:52.680
stuff right that that's offered out there. I'm looking at
1279
01:14:52.920 --> 01:14:55.119
open AI as kind of a baseline, but I am
1280
01:14:55.159 --> 01:14:57.079
looking at some of the other tools like Claude and
1281
01:14:58.039 --> 01:15:01.279
laying Chain and.
1282
01:15:00.520 --> 01:15:03.720
Olama or you know, Lama three and some.
1283
01:15:03.640 --> 01:15:05.640
Of those other tools that are out there, just to
1284
01:15:05.640 --> 01:15:09.479
give people an idea of what their options are. But yeah,
1285
01:15:09.800 --> 01:15:12.119
it's going to get into how do I bring this
1286
01:15:12.159 --> 01:15:14.760
stuff in and what options and services are out there
1287
01:15:14.800 --> 01:15:15.560
that will let.
1288
01:15:15.399 --> 01:15:16.920
Me do it, And so it's going to be.
1289
01:15:18.960 --> 01:15:23.840
I guess more focused on APIs and prompt engineering than
1290
01:15:23.880 --> 01:15:26.079
it is going to be on like how the models
1291
01:15:26.119 --> 01:15:27.760
actually get built and stuff like that.
1292
01:15:28.039 --> 01:15:29.199
I've had a few people ask me.
1293
01:15:29.239 --> 01:15:32.000
Oh, so we're going to do all the data management
1294
01:15:32.119 --> 01:15:35.439
and training our own models, and we might get into
1295
01:15:35.800 --> 01:15:38.039
some of that if I'm showing you how to like
1296
01:15:38.199 --> 01:15:42.600
enhance what Lama or lane chain give you, but not
1297
01:15:42.840 --> 01:15:46.319
a lot. It's really focused on how do you create
1298
01:15:46.399 --> 01:15:50.079
an awesome AI experience for your customers through an agent.
1299
01:15:50.800 --> 01:15:54.119
So anyway, I'm going to be doing that sometime in
1300
01:15:54.199 --> 01:15:57.239
January and so that's going to be at AIDEV boot
1301
01:15:57.279 --> 01:15:58.079
camp dot com.
1302
01:15:58.640 --> 01:16:03.079
And then I picked up a book on Amazon that.
1303
01:16:05.239 --> 01:16:07.199
And it's again, you know, like I said, you know,
1304
01:16:07.239 --> 01:16:09.840
I'm kind of using open open AI and its offerings
1305
01:16:09.880 --> 01:16:12.840
as a baseline, recognizing that there are other systems and
1306
01:16:12.920 --> 01:16:19.119
models that give you a lot of options for doing
1307
01:16:19.159 --> 01:16:20.880
a lot of the same things and maybe better at
1308
01:16:20.880 --> 01:16:25.640
one thing than another. And so I bought a book
1309
01:16:26.000 --> 01:16:30.319
and it's called Building AI Applications with Chat, GPT APIs
1310
01:16:30.800 --> 01:16:32.479
and it shows you how to use.
1311
01:16:35.439 --> 01:16:37.199
And the the.
1312
01:16:36.720 --> 01:16:42.279
Author is Alexander Petrovitch, and it goes into basically all
1313
01:16:42.319 --> 01:16:50.039
of the different API options. Hang on, it's being funny
1314
01:16:50.039 --> 01:16:54.039
on Amazon, but it shows you how to use Whisper,
1315
01:16:54.680 --> 01:16:56.199
it shows you how to use.
1316
01:16:58.800 --> 01:16:59.079
Boy.
1317
01:16:59.119 --> 01:17:00.920
It does not want to pull it up on Amazon,
1318
01:17:02.039 --> 01:17:04.760
but I bought it for the Kindle, and yeah, it
1319
01:17:05.239 --> 01:17:11.960
goes into Whisper, it goes into chat GPT, Yeah, it
1320
01:17:12.000 --> 01:17:13.720
goes into a couple of the other options that you
1321
01:17:13.800 --> 01:17:21.920
have on the open Ai platform. So anyway, and it
1322
01:17:22.279 --> 01:17:24.960
basically walks you through used in their APIs and then
1323
01:17:24.960 --> 01:17:26.560
how to build your prompts to get what you want.
1324
01:17:27.039 --> 01:17:30.840
And so I'm excited to dive into that. So I'm
1325
01:17:30.840 --> 01:17:32.079
going to pick that. And then.
1326
01:17:33.840 --> 01:17:37.600
The last pick I have is I've been I've been
1327
01:17:37.600 --> 01:17:42.279
doing I've been training for triathlons again, and specifically my
1328
01:17:42.399 --> 01:17:46.279
goal is to either do Iron iron Man Maryland in
1329
01:17:46.319 --> 01:17:51.359
September or iron Man Chattanooga in September, and so I've
1330
01:17:51.399 --> 01:17:53.119
been picking my races leading up to that.
1331
01:17:53.159 --> 01:17:54.279
I'm pretty excited about it.
1332
01:17:55.479 --> 01:17:59.199
The workout regimen that I've been following is twofold. One
1333
01:17:59.239 --> 01:18:01.640
of them, I picked up a training system on training
1334
01:18:01.640 --> 01:18:03.520
peaks dot com. So I'm gonna pick training peaks dot
1335
01:18:03.520 --> 01:18:06.479
com and you can buy workout plans. So mine's a
1336
01:18:06.479 --> 01:18:09.199
forty eight week workout plan, right, So I started it
1337
01:18:09.239 --> 01:18:13.199
last month and you know, I'm on track to finish
1338
01:18:13.239 --> 01:18:17.439
it for Maryland and then if I wind up signing
1339
01:18:17.479 --> 01:18:19.680
up for Chattanooga instead, then I'll just tell it to
1340
01:18:20.359 --> 01:18:24.960
adjust my workout schedule by two weeks so that I'm
1341
01:18:25.039 --> 01:18:29.439
ending on the right day in September. And then the
1342
01:18:29.479 --> 01:18:31.520
other one is I've been using the first Form app
1343
01:18:31.560 --> 01:18:36.520
that's one st p h r M First Form and
1344
01:18:36.800 --> 01:18:44.039
I signed up for Transformation Challenge is what they call it,
1345
01:18:44.680 --> 01:18:47.560
and Transformation is also spelled with a pH right because
1346
01:18:47.600 --> 01:18:51.319
of their branding. And as part of the app, you
1347
01:18:51.439 --> 01:18:55.920
get a coach and so she's been helping me figure
1348
01:18:55.960 --> 01:19:01.840
out my you know, all my stuff, and so I
1349
01:19:01.880 --> 01:19:03.960
have a referral code if you want to use my
1350
01:19:04.079 --> 01:19:06.920
coach and sign up. I don't get any kickbacks for this.
1351
01:19:07.560 --> 01:19:10.399
It's literally just hey, I'm having a great experience with this,
1352
01:19:10.520 --> 01:19:13.840
and so you know, you ought to check it out,
1353
01:19:14.760 --> 01:19:21.119
and so let me just air drop it to my
1354
01:19:21.159 --> 01:19:26.479
computer and then I can put it in the chat.
1355
01:19:26.520 --> 01:19:28.039
But yeah, it's it's been awesome.
1356
01:19:28.079 --> 01:19:32.079
So my trainer's name is Andrea, and like I said,
1357
01:19:32.079 --> 01:19:36.760
so I get an announcement every day where she's essentially saying,
1358
01:19:37.560 --> 01:19:37.840
you know.
1359
01:19:37.920 --> 01:19:40.079
Hey, make sure you're getting enough sleep, or.
1360
01:19:41.760 --> 01:19:45.199
Hey, make sure that you're paying attention to this that
1361
01:19:45.399 --> 01:19:47.159
or the other, or you know, all all kinds of
1362
01:19:47.159 --> 01:19:49.479
different things like that, and it's really really been terrific.
1363
01:19:50.319 --> 01:19:53.159
And then yeah, she checks in, Like every week, I
1364
01:19:53.199 --> 01:19:55.760
send an evaluation where I'm saying, you know, I'm a
1365
01:19:55.760 --> 01:19:57.560
little hungry, I've been a little hungry this week, or
1366
01:19:57.600 --> 01:20:01.439
I've been a little tired this week, or you know whatever,
1367
01:20:01.720 --> 01:20:05.199
and then she'll chat back and say, you know, yeah
1368
01:20:05.680 --> 01:20:08.640
you needed you need to schedule more sleep, right, Or
1369
01:20:10.359 --> 01:20:12.640
she'll look at my eating because I track all my
1370
01:20:12.680 --> 01:20:14.439
calories in there too, and she'll say, hey, you need
1371
01:20:14.439 --> 01:20:15.239
eat more vegetables.
1372
01:20:15.960 --> 01:20:17.039
Some she told me the other day.
1373
01:20:17.079 --> 01:20:19.079
She's like, you need to eat more real food and
1374
01:20:19.319 --> 01:20:21.800
you know, less supplements, which is like the protein powders
1375
01:20:21.800 --> 01:20:24.680
and stuff. And yeah, they have a whole bunch of
1376
01:20:24.680 --> 01:20:30.720
different supplements like the protein powders they have. They have
1377
01:20:30.840 --> 01:20:33.520
like a nootropic caffeine mix pre workout.
1378
01:20:33.600 --> 01:20:36.399
They have what else am I using?
1379
01:20:36.439 --> 01:20:38.880
They have like an opti greens is what they call it,
1380
01:20:38.920 --> 01:20:41.439
and it's it's greens that you know, help with your
1381
01:20:41.479 --> 01:20:46.359
digestion and stuff. I've got a couple here. I've got
1382
01:20:46.479 --> 01:20:51.319
basically omega, which is like fish oil, and then I've
1383
01:20:51.319 --> 01:20:54.920
got another one that's glucose disposal agent is what they
1384
01:20:54.920 --> 01:20:56.680
call it, and it just it just helps regulate my
1385
01:20:56.720 --> 01:21:00.239
blood sugar, which is good because I'm diabetic and I
1386
01:21:00.279 --> 01:21:01.880
just take it with all you know, know, with the
1387
01:21:01.920 --> 01:21:05.159
medications that my doctor has given me, and it's it's
1388
01:21:05.159 --> 01:21:13.239
been awesome. So anyway, I'm just going to pick those.
1389
01:21:14.600 --> 01:21:16.800
If you want to do an Iron Man next year
1390
01:21:16.920 --> 01:21:19.119
and you want, you know, it'd be fun.
1391
01:21:19.159 --> 01:21:21.279
I don't know, you know, I don't.
1392
01:21:21.239 --> 01:21:23.640
Know that I go the whole way with you because
1393
01:21:23.640 --> 01:21:25.600
I might swim faster than you or you might bite
1394
01:21:25.600 --> 01:21:29.800
faster than me, but it it'd be fun. So if
1395
01:21:29.800 --> 01:21:31.880
you're interested and you think you might be there, let
1396
01:21:31.960 --> 01:21:35.000
me know. But yeah, those are my picks. Sorry I
1397
01:21:35.039 --> 01:21:42.479
rambled for a long time. But anyway, I think that's
1398
01:21:42.520 --> 01:21:46.680
all I've got, So Valentino, think thanks for being our
1399
01:21:46.720 --> 01:21:47.560
expert this week.
1400
01:21:49.279 --> 01:21:51.119
Yeah, happy to. I love talking about this though.
1401
01:21:51.199 --> 01:21:54.079
Yeah, it's it's cool stuff. What we need to get into,
1402
01:21:54.119 --> 01:21:55.680
some of the stuff that you know, you and I
1403
01:21:55.720 --> 01:21:57.000
are building with AI.
1404
01:21:58.039 --> 01:22:00.000
But maybe that'll be another episode another time.
1405
01:22:02.079 --> 01:22:07.880
And yeah, the next time, folks max out mm hmm.