ТРАНСКРИПЦИЯ 🔗
WEBVTT
1
00:00:05.200 --> 00:00:08.800
Hey, folks, welcome back to another episode of JavaScript Jabber.
2
00:00:09.039 --> 00:00:13.199
This week, on our panel, we have Steve Edwards.
3
00:00:12.080 --> 00:00:15.960
Yo yo yo, coming at you from away too warm Portland.
4
00:00:17.359 --> 00:00:20.920
I'm Charles Maxwood from Top End devs. Well, I'm too
5
00:00:20.960 --> 00:00:23.120
far west for that big cold storm. But it's still
6
00:00:23.160 --> 00:00:23.600
cold here.
7
00:00:24.480 --> 00:00:28.719
It's maybe too warm. Man. Our snowpack sucks. Yeah, been
8
00:00:28.800 --> 00:00:31.600
able to get any skiing is just awful.
9
00:00:31.839 --> 00:00:34.119
Yeah, same here. People are worried about water. I live
10
00:00:34.119 --> 00:00:37.159
in Utah. If you're not aware, we have a special
11
00:00:37.159 --> 00:00:41.799
guest though this week. That is Valeri Karpov. Do you
12
00:00:41.840 --> 00:00:44.039
want to introduce yourself. I know we've had you on before,
13
00:00:44.079 --> 00:00:45.399
but just remind people who you are.
14
00:00:46.000 --> 00:00:48.719
Yeah, Hi everyone. My name is Belle. I'm the maintainer
15
00:00:48.719 --> 00:00:52.320
of Mongers. I'm popular ODM for no JS and Mongo dB,
16
00:00:53.079 --> 00:00:56.159
and I do freelance web development. I'm based in Miami, Florida,
17
00:00:56.200 --> 00:00:59.280
which is much colder than expected. I had to turn
18
00:00:59.320 --> 00:01:01.520
on the heat for the first time. I'm telling Chuck,
19
00:01:02.000 --> 00:01:04.560
first time turning the seats. I moved to Miami about
20
00:01:04.560 --> 00:01:06.439
seven years ago. That's brutal.
21
00:01:06.599 --> 00:01:11.079
Yeah, I feel your pain. Yeah, my son's on a
22
00:01:11.120 --> 00:01:14.400
mission for the church. In South Carolina, and yeah, apparently
23
00:01:14.400 --> 00:01:16.680
people don't deal well with cold there either, so.
24
00:01:17.920 --> 00:01:20.840
No, not used to it. I mean, yeah, I have
25
00:01:21.040 --> 00:01:23.400
never seen Miami. I haven't seen Miami break into the
26
00:01:23.439 --> 00:01:25.920
thirties before since it's been a while.
27
00:01:26.680 --> 00:01:28.760
Yeah, I was accused of not teaching him how to
28
00:01:28.840 --> 00:01:32.599
drive on the ice, which I know isn't true. So anyway,
29
00:01:33.400 --> 00:01:37.920
let's dive in. Let's talk about Mongoose. I'm assuming that
30
00:01:37.959 --> 00:01:40.400
people have some idea of what it is, and I
31
00:01:40.560 --> 00:01:44.920
really want to get more into you know, features, functions,
32
00:01:45.159 --> 00:01:47.760
you know, it seems like a lot more adoption of AI.
33
00:01:47.920 --> 00:01:50.159
Where does it? Where does mongoos get us from there?
34
00:01:50.560 --> 00:01:53.200
But just kind of set the stage to get us going,
35
00:01:53.239 --> 00:01:56.040
like what is mongoose And at a high level what
36
00:01:56.079 --> 00:01:56.920
does it do for people?
37
00:01:57.879 --> 00:01:59.560
But a high level, it's like an O R M
38
00:01:59.840 --> 00:02:03.280
or O D M and no sql land or for
39
00:02:03.400 --> 00:02:06.120
no jas and malgaib so it provides you like the
40
00:02:06.280 --> 00:02:10.680
M and MBC or for working with mafugedd B. We
41
00:02:10.800 --> 00:02:15.159
recently released Mongoose nine, big breaking release, first major release
42
00:02:15.159 --> 00:02:17.520
that we've had in two years. Got a few a
43
00:02:17.520 --> 00:02:20.560
few cool new features there, and then we're also working
44
00:02:20.680 --> 00:02:24.280
on a mungo centric muggedy b gooy called Magus Studio
45
00:02:24.759 --> 00:02:27.039
that would like to take some time to talk about.
46
00:02:28.159 --> 00:02:30.719
And then yeah, there's something else that you want to
47
00:02:30.759 --> 00:02:34.719
talk about. We also are we've been working on a
48
00:02:35.120 --> 00:02:38.639
kind of a plug in with with the data Stacks team.
49
00:02:38.680 --> 00:02:41.719
I guess now they're IBM that what's mongoose talked to
50
00:02:41.919 --> 00:02:46.400
a patche Cassandra via Data Stacks data API. So those
51
00:02:46.439 --> 00:02:49.680
are kind of like three topics that I think we
52
00:02:49.719 --> 00:02:52.280
can discuss related to Magus that are a little bit
53
00:02:52.280 --> 00:02:54.400
of a little bit newer and a little bit less
54
00:02:55.280 --> 00:02:57.360
less of the standard mongoose stuff. If you want to
55
00:02:57.400 --> 00:03:00.400
talk about kind of high level what mongoose isn't one out,
56
00:03:00.439 --> 00:03:02.479
we can talk about that before we can talk about
57
00:03:02.520 --> 00:03:06.759
one of the three new things that are going on.
58
00:03:07.960 --> 00:03:11.319
Yeah, I think like O rms and you know, or
59
00:03:11.319 --> 00:03:13.840
in this case ODMs, which I'm assuming D stands for
60
00:03:13.919 --> 00:03:19.439
document instead of relation, are probably pretty well understood, and
61
00:03:19.479 --> 00:03:22.319
I'm assuming that you provide a lot of the standard
62
00:03:22.319 --> 00:03:26.479
features you see from other O rms or or like libraries.
63
00:03:27.000 --> 00:03:30.000
So let's let's dive into the new features and if
64
00:03:30.000 --> 00:03:31.919
people want to learn more they can go pick up.
65
00:03:32.120 --> 00:03:34.199
I think we've had you on before to talk about Mongoose,
66
00:03:34.240 --> 00:03:36.080
and so they can probably go find an older episode
67
00:03:36.159 --> 00:03:38.719
that gets into the fundamentals of what Mongoose is.
68
00:03:39.879 --> 00:03:42.639
Yeah. I think I've probably been on JavaScript Chad at
69
00:03:42.719 --> 00:03:46.520
least work times in the last twelve years, give or take.
70
00:03:47.039 --> 00:03:49.080
Yeah, we did views on View twice too. I was
71
00:03:49.120 --> 00:03:49.840
just looking that up.
72
00:03:50.039 --> 00:03:52.439
Yeah, yeah, I might need to do views on View
73
00:03:52.479 --> 00:03:55.520
again because Mama's Studio
Load full transcript
also built a view so that
74
00:03:55.560 --> 00:03:57.919
could be a fun Oh is it really? Oh cool?
75
00:03:58.120 --> 00:04:01.520
Yeah, I'm not doing that podcast anymore, but so we
76
00:04:01.520 --> 00:04:03.479
can talk about it here if you want to. This
77
00:04:03.560 --> 00:04:05.240
is where we try to squeeze in a little bit
78
00:04:05.280 --> 00:04:06.479
of view in job the script here.
79
00:04:07.360 --> 00:04:10.400
Okay, Yeah, that's something we can talk about too. Yeah.
80
00:04:10.879 --> 00:04:13.599
I pretty much all of my software developed in view
81
00:04:13.680 --> 00:04:18.240
these days, unless unless I'm working for a client that
82
00:04:18.279 --> 00:04:22.360
has a strong front end preference. I cool.
83
00:04:22.879 --> 00:04:25.040
So what's new and exciting in mongoos will now.
84
00:04:26.199 --> 00:04:31.040
So Mongsteine, it's less about kind of like flashy features
85
00:04:31.040 --> 00:04:36.399
and more about producing long term friction and specifically to
86
00:04:36.759 --> 00:04:40.279
type script. I think one of the things one of
87
00:04:40.319 --> 00:04:44.360
the major changes that we made was before we had it,
88
00:04:44.399 --> 00:04:48.879
so that's functions like find, which is the general way
89
00:04:48.920 --> 00:04:51.600
that you execute a query to load some documents. In Mongoose,
90
00:04:52.160 --> 00:04:55.240
the typescript types there were very permissive and just let
91
00:04:55.279 --> 00:04:59.319
you pass in whatever you wanted. We for Mongus nine,
92
00:04:59.319 --> 00:05:01.680
we made that more script and made it so that's okay,
93
00:05:01.720 --> 00:05:06.079
we have explicitly strong types or for what parameters you
94
00:05:06.079 --> 00:05:09.600
can pass into a query filter. The advantage there is
95
00:05:09.639 --> 00:05:16.600
twofold and in one one that helps typeescript catch typos
96
00:05:16.680 --> 00:05:19.639
and whatnot. And for developers that don't use type script
97
00:05:19.759 --> 00:05:24.439
very much like me, it helps with autocomplete because before
98
00:05:25.839 --> 00:05:28.680
the fact that it just gave you the fact that
99
00:05:28.720 --> 00:05:32.439
the types where just any object goes into find, that
100
00:05:32.560 --> 00:05:36.319
meant that tools like visual Studio code could figure out,
101
00:05:36.319 --> 00:05:39.680
like what are the properties that you should autocomplete, So
102
00:05:39.759 --> 00:05:42.519
now you actually get nice little auto complete drop downs
103
00:05:42.879 --> 00:05:47.279
or for query filters and the other The other big
104
00:05:47.279 --> 00:05:50.079
thing that we added was was like full a stinc
105
00:05:50.480 --> 00:05:53.319
a sink stack traces support in the sense that we
106
00:05:53.439 --> 00:05:57.439
used we had so longos was originally very callback heavy.
107
00:05:57.920 --> 00:06:02.720
We introduced promises support in twenty fourteen, twenty fifteen, and
108
00:06:02.879 --> 00:06:06.920
now in with our last release. Our previous breaking release
109
00:06:07.000 --> 00:06:10.879
Monkeys eight we got rid of the user facing callback
110
00:06:10.920 --> 00:06:14.920
support in all but one important case, and Alan Mongus
111
00:06:15.000 --> 00:06:18.199
nine there's no more user facing callback support. It's all
112
00:06:18.240 --> 00:06:20.920
a sink a weight, which means you get ACNC stack traces,
113
00:06:21.120 --> 00:06:21.680
which is great.
114
00:06:22.240 --> 00:06:24.160
Okay, I'm still trying to wrap my head around this.
115
00:06:24.240 --> 00:06:24.879
So what do you mean?
116
00:06:25.079 --> 00:06:25.439
Yeah?
117
00:06:26.480 --> 00:06:29.240
I understand that. So I'm I'm always big into debugging
118
00:06:29.319 --> 00:06:32.279
and being able to get you know, traces, or I'm
119
00:06:32.319 --> 00:06:36.439
more of the breakpoint debugger type of person. Uh, whenever possible.
120
00:06:36.839 --> 00:06:43.759
So what's an acyinc stack trace as compared to the alternative.
121
00:06:44.720 --> 00:06:47.879
But if you've worked with stack tracings and JavaScript, you've
122
00:06:47.879 --> 00:06:51.519
probably seen things like processed next tick and rejection or
123
00:06:51.680 --> 00:06:55.439
list not on timeouts. Those kind of stack traces where
124
00:06:55.759 --> 00:06:58.759
you just where the stack trace doesn't show you the
125
00:06:58.800 --> 00:06:59.920
actual calling code.
126
00:07:01.000 --> 00:07:01.800
That could be a problem.
127
00:07:02.399 --> 00:07:05.160
I've gotten gotten probably a few of those, and the
128
00:07:05.639 --> 00:07:09.439
reason for that is is the asik nature of JavaScript.
129
00:07:09.519 --> 00:07:13.319
Right when you pass a when you pass a call
130
00:07:13.360 --> 00:07:16.000
back into like a set time out function, for instance,
131
00:07:17.399 --> 00:07:21.240
you're losing You're losing your call stack when set time
132
00:07:21.279 --> 00:07:24.480
out calls the function that the callback function that you
133
00:07:24.560 --> 00:07:28.560
passed into set time out. You'll if that function throws
134
00:07:28.560 --> 00:07:33.480
an error, you'll see a stack trace that includes Note internals,
135
00:07:33.680 --> 00:07:38.720
let say okay, and calling it on timeout, you won't
136
00:07:38.800 --> 00:07:42.480
see your code that actually called the set timeout. And
137
00:07:42.519 --> 00:07:46.920
this was especially problematic with the callback based code because
138
00:07:47.720 --> 00:07:50.680
callback based code, you know, runs a synchronously, right, so
139
00:07:51.399 --> 00:07:55.399
you don't see the code that actually called whatever function
140
00:07:55.560 --> 00:08:00.000
is getting the callback, and that may debugging Note apps
141
00:08:00.399 --> 00:08:03.160
for a very very long time basically made every stack
142
00:08:03.199 --> 00:08:04.319
trace and industry.
143
00:08:06.160 --> 00:08:08.560
Yeah, other words, you're
getting everything but what you want,
144
00:08:08.639 --> 00:08:12.519
right and getting and you're not.
145
00:08:12.560 --> 00:08:17.199
Getting your own code. Oh yeah, with a six stack traces,
146
00:08:17.560 --> 00:08:20.759
it's pretty sure. Yeah, A six stack traces is like
147
00:08:20.800 --> 00:08:23.160
a V eight feature, so it also works in Chrome.
148
00:08:24.680 --> 00:08:27.399
But the idea is that if you're calling a sync
149
00:08:27.480 --> 00:08:32.799
functions all the way down, even if the actual error
150
00:08:33.039 --> 00:08:37.279
is a synchrons, you still get the full stack trace
151
00:08:37.399 --> 00:08:40.879
of the actink functions that you call. So let's say
152
00:08:40.919 --> 00:08:43.080
you know, you I'm in function I'm in an AC
153
00:08:43.240 --> 00:08:46.519
function called A. I call an AC function called B,
154
00:08:46.759 --> 00:08:51.200
which calls an ACC function called C, which has a timeout,
155
00:08:51.240 --> 00:08:55.720
and then throws an error after five seconds. The stack
156
00:08:55.799 --> 00:08:59.519
trace for that error will include ABC, it won't include
157
00:08:59.559 --> 00:09:01.919
any I won't to cleave like the known internals for
158
00:09:02.159 --> 00:09:03.360
on timeout or whatnot.
159
00:09:04.679 --> 00:09:08.720
Well that's really handy, Yeah, but there.
160
00:09:08.159 --> 00:09:10.480
Is you need to You need to make sure you're
161
00:09:10.480 --> 00:09:13.960
calling ACYNC functions all the way down. So the instant that,
162
00:09:14.080 --> 00:09:18.159
like somewhere in your internals you start calling something that's
163
00:09:18.200 --> 00:09:22.679
callback based or call a set time out, you're going
164
00:09:22.679 --> 00:09:24.519
to lose the A six stack traits and then you're
165
00:09:24.559 --> 00:09:28.440
back to where you started. So the work of there
166
00:09:28.639 --> 00:09:30.840
for Mongoose was to get rid of all of our
167
00:09:30.879 --> 00:09:36.279
callback based internals pain point there was like the one
168
00:09:36.320 --> 00:09:39.799
of the primary ways that you wrote Mangoose middleware was
169
00:09:39.799 --> 00:09:45.639
was using callbacks specifically gang like you would say Schema
170
00:09:45.679 --> 00:09:50.039
dot pre save. You would get a next callback, kind
171
00:09:50.039 --> 00:09:53.000
of similar to Express middleware, where you would call next
172
00:09:53.000 --> 00:09:55.159
in order to kick off the next middleware and the chain.
173
00:09:56.320 --> 00:09:58.720
We had to remove that in order to properly support
174
00:09:58.759 --> 00:10:00.480
acing stack traces all way through it.
175
00:10:03.840 --> 00:10:06.799
Gotcha. So is there anything you have to do specifically
176
00:10:06.840 --> 00:10:09.039
to get this to work? Or you just upgrade to
177
00:10:09.080 --> 00:10:10.639
Mangouse nine and then you're good to go.
178
00:10:11.399 --> 00:10:15.039
Yeah, upgrade to Margus nine. Any plugins or middleware
that
179
00:10:15.279 --> 00:10:20.399
uses that use it next needs to be rewritten. Thankfully,
180
00:10:20.759 --> 00:10:25.679
hopefully that's not too many right now. But yeah, but
181
00:10:25.960 --> 00:10:28.279
in the age of AI, it's much easier to refactor
182
00:10:28.679 --> 00:10:31.159
this sort of thing. Yeah, so I'm a little bit more,
183
00:10:31.480 --> 00:10:35.480
a little bit less concerned. Actually, that was pretty much
184
00:10:35.480 --> 00:10:40.159
like my first foray into AI code generation a long
185
00:10:40.200 --> 00:10:45.639
time ago was was refactoring some of Mogus's callback based
186
00:10:45.679 --> 00:10:54.080
code into put into using a Sika weight. This was probably,
187
00:10:54.120 --> 00:10:58.840
i want to say, early twenty twenty three. This was
188
00:10:58.840 --> 00:11:02.559
like before pers or anything where you could easily select
189
00:11:02.600 --> 00:11:05.559
a bunch of code and pass it into pass into
190
00:11:05.919 --> 00:11:11.440
open AI. What I did was I I wrote some
191
00:11:11.480 --> 00:11:14.759
code to basically parse out some of Maugus's test suites
192
00:11:15.200 --> 00:11:19.080
into individual tests and then would pass those tests one
193
00:11:19.080 --> 00:11:22.000
by one into open ai is a book API, and
194
00:11:22.000 --> 00:11:25.039
tell it, tell it to refactor this into into a
195
00:11:25.159 --> 00:11:28.480
synco weight based code. And even back then it did
196
00:11:28.519 --> 00:11:30.919
a really good job, got like probably ninety percent of
197
00:11:30.960 --> 00:11:33.799
the test suite done, and it took me. It was
198
00:11:33.840 --> 00:11:37.279
a like this whole the whole project of refactoring all
199
00:11:37.320 --> 00:11:40.519
the tests, like we have thousands of tests, and I
200
00:11:40.639 --> 00:11:44.279
was working like eight hours a day for several days
201
00:11:44.320 --> 00:11:46.200
straight trying to read back through all this, and then
202
00:11:46.240 --> 00:11:48.759
I just was like, I'd even tooled for the piss.
203
00:11:48.840 --> 00:11:53.200
This is getting insane. So uh yeah, I tried open
204
00:11:53.279 --> 00:11:57.120
AI and Opening I did a great job. That made
205
00:11:57.120 --> 00:11:59.159
it a one day project as opposed to a multi
206
00:11:59.200 --> 00:11:59.960
week project.
207
00:12:01.200 --> 00:12:04.360
Yep, yeah, I'll have to I have to say that
208
00:12:04.399 --> 00:12:07.000
I've used some of those same kinds of features for
209
00:12:07.080 --> 00:12:10.399
a number of things, just just to increase my test
210
00:12:10.440 --> 00:12:14.240
coverage or hey, you know I need to yeah, rework this,
211
00:12:14.519 --> 00:12:17.480
or you know, rethink that, or even add a feature,
212
00:12:18.320 --> 00:12:22.360
and yeah it it does a pretty decent job. Usually
213
00:12:22.399 --> 00:12:25.159
I have to go in and refine a handful of
214
00:12:25.159 --> 00:12:27.320
things and I have to look over the code
make
215
00:12:27.360 --> 00:12:31.159
sure I didn't do anything stupid. But it's amazing what
216
00:12:31.240 --> 00:12:33.840
you can get done with AI these days.
217
00:12:34.519 --> 00:12:41.759
Yeah, I am the other. A couple of weeks ago,
218
00:12:41.879 --> 00:12:44.320
I gave a demo of some new map features we
219
00:12:44.360 --> 00:12:47.000
built in Mongoo Studio, and one of the things that
220
00:12:47.039 --> 00:12:51.600
I demoed was was the ability to just like, so,
221
00:12:52.000 --> 00:12:55.000
I have a one of my clients has a region model, right,
222
00:12:55.120 --> 00:13:00.799
It's a region is like a geopolygon forever defining just
223
00:13:00.840 --> 00:13:02.840
like a region where they have operations. You draw a
224
00:13:02.879 --> 00:13:06.279
polygon in a map that represents Dallas, and this kind
225
00:13:06.360 --> 00:13:10.120
represents the boundary of what the company's operations thinks of
226
00:13:10.200 --> 00:13:14.519
as Dallas. So creating new regions can be annoying because well,
227
00:13:14.600 --> 00:13:16.759
you need to figure out a way to get all
228
00:13:16.799 --> 00:13:20.960
the DFAs on points. But I demoed a way where
229
00:13:21.000 --> 00:13:24.639
you just lai, like, hey, create a create a region
230
00:13:25.159 --> 00:13:28.879
representing Boston. And while it didn't do a perfect job,
231
00:13:29.039 --> 00:13:31.799
Mugus Studio's willing to go into Maungus Studio and drag
232
00:13:31.919 --> 00:13:35.879
the other urgencies around. But like, yeah, I just like
233
00:13:36.399 --> 00:13:38.679
basic models already know off the top of their heads,
234
00:13:38.919 --> 00:13:43.919
like where like the approximate lads to longitude of Boston, Massachusetts,
235
00:13:44.480 --> 00:13:48.120
or or boise iaho or any pretty much any major city.
236
00:13:49.679 --> 00:13:53.799
So it makes things, Yeah, a lot of if you
237
00:13:53.840 --> 00:13:56.000
do a lot of really amazing things or amazing seeming
238
00:13:56.039 --> 00:13:58.279
things with models there just off the shelf, if you
239
00:13:58.399 --> 00:14:01.799
let them, and they do give you a good enough
240
00:14:01.879 --> 00:14:03.240
job to at least get you started.
241
00:14:04.639 --> 00:14:06.720
Yeah, if you give them a function that'll let them
242
00:14:06.759 --> 00:14:08.919
talk to the internet too. Sometimes if they don't know
243
00:14:08.960 --> 00:14:11.559
the answer that they have enough context to go and
244
00:14:11.559 --> 00:14:15.120
look it up somewhere, and so that that's the other
245
00:14:15.159 --> 00:14:17.720
piece to that that I found is Okay, here's how
246
00:14:17.759 --> 00:14:22.480
you here's how you make a call, and it's like, oh, okay,
247
00:14:22.679 --> 00:14:24.080
so what is mango studio.
248
00:14:25.159 --> 00:14:28.759
So MUGAs studio is a gooey for magaritib that's a
249
00:14:28.799 --> 00:14:32.559
little bit more higher level than than a traditional database viewer.
250
00:14:33.639 --> 00:14:37.600
It's got we're trying to make it one more schema
251
00:14:37.639 --> 00:14:42.480
a whare in the sense that in magerty B or
252
00:14:42.799 --> 00:14:45.360
maggityb gooies typically don't have a notion of a schema
253
00:14:45.440 --> 00:14:49.360
right because doesn't really have schemas by default. But magis
254
00:14:49.360 --> 00:14:51.720
who do have a schema, and that lets you fill
255
00:14:51.759 --> 00:14:55.480
in things like autocomplete and auto suggest so like auto
256
00:14:55.919 --> 00:15:01.080
field names when you're typing in the life or filter
257
00:15:01.159 --> 00:15:05.679
input for why. We're also adding a bunch of AI
258
00:15:06.159 --> 00:15:12.000
elements in the sense that you can good concrete example,
259
00:15:12.879 --> 00:15:14.279
what do you try when you want to create a
260
00:15:14.320 --> 00:15:16.720
new document in your database. There's like a nice button
261
00:15:16.720 --> 00:15:20.000
you clip to insert in your document, right, and then
262
00:15:20.039 --> 00:15:22.840
you get a code input that tells that what you
263
00:15:23.039 --> 00:15:25.919
enter in. Okay, I'm going to enter get a creative
264
00:15:25.919 --> 00:15:30.919
documents properties, but that can be a little annoying to
265
00:15:31.080 --> 00:15:33.440
type out manually. So we also have an AI input
266
00:15:33.480 --> 00:15:36.320
there where you say, okay, let's let's ask the AI
267
00:15:36.440 --> 00:15:39.879
to generate a document right there without having to go
268
00:15:39.919 --> 00:15:44.840
anywhere els And that's kind of how the Boise Idaho
269
00:15:45.000 --> 00:15:48.360
region example worked, just you know, instead of instead of
270
00:15:48.440 --> 00:15:51.879
typing out the entire all the details for the Boise
271
00:15:52.000 --> 00:15:55.399
Idaho region, I just have a quick little AI input
272
00:15:55.759 --> 00:15:59.759
that already has the context of what the schema definition
273
00:15:59.919 --> 00:16:04.240
is for this particular document, as well as what the
274
00:16:04.360 --> 00:16:08.000
user is asking, create me a region with for representing
275
00:16:08.120 --> 00:16:11.840
plays of Idaho, and then the AI just goes in
276
00:16:11.879 --> 00:16:15.519
and generates the generates the output, the user confirms or
277
00:16:15.559 --> 00:16:18.679
rejects and can edit it a little bit extra selves
278
00:16:19.000 --> 00:16:23.799
looks create. So there's that, and then we're also working
279
00:16:23.919 --> 00:16:27.879
on things like MCP server. So if you have a
280
00:16:27.919 --> 00:16:31.600
production deployment, well you'll have an MCP server that you
281
00:16:31.639 --> 00:16:36.039
can connect Claud too that lets you do have a
282
00:16:36.240 --> 00:16:40.200
controlled code sandbox access like you can let Claud have
283
00:16:40.399 --> 00:16:44.120
say read only access to your production data or or
284
00:16:45.080 --> 00:16:49.919
access to write certain collections but not others. For a
285
00:16:49.919 --> 00:16:51.120
little bit more security.
286
00:16:53.240 --> 00:16:55.519
Yeah, that makes sense, I mean, and we're seeing this
287
00:16:55.559 --> 00:16:58.000
more and more right where people are integrating AI into
288
00:16:58.039 --> 00:17:05.319
their setup, right, and you know, whether it's taking user input,
289
00:17:05.559 --> 00:17:09.799
so the user essentially is chatting with the AI system
290
00:17:10.079 --> 00:17:12.880
or at least giving it some kind of prompt or
291
00:17:12.960 --> 00:17:19.519
sometimes I've seen folks just basically say the LLM is
292
00:17:19.559 --> 00:17:21.599
going to do a good enough job if I ask
293
00:17:21.640 --> 00:17:23.720
it to do this job that I don't actually have
294
00:17:23.759 --> 00:17:27.839
to write explicit code and cover all the edge cases
295
00:17:27.960 --> 00:17:29.559
and make sure that it does the thing that I
296
00:17:29.599 --> 00:17:32.640
needed to do. And so both of those scenarios sound
297
00:17:32.640 --> 00:17:35.799
really really helpful with something like Mongoose, where you can
298
00:17:36.000 --> 00:17:39.640
essentially say all right, you know, yeah, here are the
299
00:17:39.680 --> 00:17:45.279
credentials for getting information from my data or you know,
300
00:17:45.319 --> 00:17:49.240
here's how you query my data, and then yeah, effectively,
301
00:17:49.319 --> 00:17:52.680
then it has much better information to go off of
302
00:17:53.480 --> 00:17:56.720
to solve the particular problems that my system or my
303
00:17:56.839 --> 00:17:57.559
app is solving.
304
00:17:58.319 --> 00:18:02.640
Yeah, exactly the longer. In addition to having your STEMA definition,
305
00:18:02.799 --> 00:18:05.839
we also have access to things like methods and statics
306
00:18:05.839 --> 00:18:10.279
that you define on your on your models, right, So
307
00:18:10.359 --> 00:18:14.000
that means that well, Mungas Studio can be aware to
308
00:18:14.000 --> 00:18:16.960
some extent of how you write your code and how
309
00:18:16.960 --> 00:18:22.160
your application works. But it's a more application centric or
310
00:18:22.200 --> 00:18:26.640
developer centric database SCOUI. That's meant that's meant to help
311
00:18:26.680 --> 00:18:30.720
developers do their jobs and be less kind of DBA centric,
312
00:18:31.039 --> 00:18:33.519
which I find a lot of whether database scoes to be.
313
00:18:35.160 --> 00:18:38.240
So does it just send a list of available functions
314
00:18:38.279 --> 00:18:42.680
to claude when it you know, kind of like MCP,
315
00:18:43.559 --> 00:18:45.920
or it doesn't have to be MCP. Sometimes you send
316
00:18:45.920 --> 00:18:46.839
a list of functions.
317
00:18:47.960 --> 00:18:52.160
So we have so for cases like the like the
318
00:18:52.240 --> 00:18:55.480
creat input and the chat tab places where we have
319
00:18:56.559 --> 00:19:01.640
AI inputs in the UI, there we we call we
320
00:19:01.759 --> 00:19:04.119
call out to either like the Gemini a p I
321
00:19:04.160 --> 00:19:07.839
and the chat API or prop a KPI, and we
322
00:19:08.119 --> 00:19:11.359
pull the context like we have a collect or. We
323
00:19:11.400 --> 00:19:17.400
have internal storage that stores just descriptions of the users models,
324
00:19:17.880 --> 00:19:23.359
including including the bodies of statics and methods, including STEMA definitions. Okay,
325
00:19:23.960 --> 00:19:27.559
so that data gets passed over there for the m
326
00:19:27.680 --> 00:19:34.440
CP server. What we do with the server, uh, well there,
327
00:19:34.480 --> 00:19:36.279
I think what we passed back is more along the
328
00:19:36.279 --> 00:19:41.599
line of like a typescript definition of what models are available.
329
00:19:43.160 --> 00:19:45.200
Right, and then it just comes back and calls into
330
00:19:45.240 --> 00:19:46.920
whatever it needs in order to do what it needs
331
00:19:46.960 --> 00:19:47.200
to do.
332
00:19:48.480 --> 00:19:51.599
Yeah, exactly what the MCP server what we're experimenting with
333
00:19:51.880 --> 00:19:54.680
is kind of like a code sandbox effectively for the
334
00:19:55.000 --> 00:19:59.160
for the l l M. So we're so like the
335
00:19:59.200 --> 00:20:01.240
way that our MP server works is more long the
336
00:20:01.240 --> 00:20:04.279
lives of here. The MCP tool is here, execute this
337
00:20:04.400 --> 00:20:08.279
code in your sandbox, right, and the AI just kind
338
00:20:08.279 --> 00:20:10.480
of gets the context of like this is what's available
339
00:20:10.519 --> 00:20:15.680
on the sandbox. So that's what we're experimenting with, trying
340
00:20:15.720 --> 00:20:18.039
to figure out how that can work. The other option
341
00:20:18.160 --> 00:20:20.400
that we're thinking of is almost like a CLI tool.
342
00:20:21.559 --> 00:20:24.039
That's something I've been debating on Twitter and to make
343
00:20:24.079 --> 00:20:27.119
it back myself as to whether whether I go the
344
00:20:27.240 --> 00:20:30.319
m CP route with the code sandbox, whether I just
345
00:20:30.359 --> 00:20:33.400
have like a c l I or where the line
346
00:20:33.759 --> 00:20:35.160
it's a CLI to do stuff.
347
00:20:36.519 --> 00:20:40.359
Yep makes sense.
348
00:20:44.799 --> 00:20:46.400
Yeah, I was just going to say, where has I've
349
00:20:46.400 --> 00:20:49.759
been doing some searching where's the Mango U? I keep
350
00:20:49.799 --> 00:20:51.960
finding the Mango studio what you call it? Because I
351
00:20:52.000 --> 00:20:53.200
keep finding studio three T.
352
00:20:54.200 --> 00:21:02.359
Many planks for on the website is mongoostudio dot app? Yeah?
353
00:21:02.559 --> 00:21:03.279
All one word.
354
00:21:06.359 --> 00:21:08.880
Yeah, I keep forgetting about these new TLDs we have.
355
00:21:11.039 --> 00:21:14.160
Yeah, and this is so is this something that I
356
00:21:14.160 --> 00:21:17.200
can post on my own? Oh I see in
your
357
00:21:17.480 --> 00:21:22.480
video example on here that it's it's got to dot versell. Yeah,
358
00:21:23.000 --> 00:21:24.599
so it looks like you can. You can play it
359
00:21:24.640 --> 00:21:25.960
out to wherever you need.
360
00:21:26.160 --> 00:21:30.839
Yeah, exactly. We support Brusell Netlify and express right now.
361
00:21:33.680 --> 00:21:37.200
So if you have a Verseell deployment, yeah, you don't
362
00:21:37.240 --> 00:21:38.680
even need next j ask them to think of it.
363
00:21:38.720 --> 00:21:42.039
If you have a versall mangu Studio as a sidecar
364
00:21:42.119 --> 00:21:45.920
alongside your interesting application, or you can just run Mungu
365
00:21:46.000 --> 00:21:50.920
studio for local usage and you still get mostly all
366
00:21:50.960 --> 00:21:53.400
the features. I think a couple of things that are
367
00:21:53.440 --> 00:21:57.119
missing or we don't support dashboards for local development. All
368
00:21:57.200 --> 00:22:00.279
we do support have like the basic database you were
369
00:22:00.319 --> 00:22:04.720
and the chat chat tab is our kind like a
370
00:22:04.799 --> 00:22:10.119
chat GPT interface for generating for generating scripts that execute
371
00:22:10.160 --> 00:22:17.160
in the momy studio code sandbox, and I think that one.
372
00:22:17.480 --> 00:22:22.039
The chat tab also gives addresses like one limitation I've
373
00:22:22.039 --> 00:22:26.200
seen with MCP which may not be as relevant after
374
00:22:26.440 --> 00:22:30.640
last week when they announced MCP apps, but before MCP
375
00:22:30.759 --> 00:22:33.160
apps came out like about a week ago, there was
376
00:22:33.200 --> 00:22:36.240
no way for MCP to really generate like non trivially.
377
00:22:36.400 --> 00:22:39.279
Why so, one of the things that I wanted from
378
00:22:39.319 --> 00:22:41.400
the chat tab from the very beginning is the ability
379
00:22:41.440 --> 00:22:44.599
to generate scripts or to generate charts and maps from
380
00:22:44.880 --> 00:22:48.759
from after language. So the ability to say things like,
381
00:22:49.000 --> 00:22:51.799
give me a chart of users created by day for
382
00:22:52.079 --> 00:22:57.599
the last two weeks. Being able to do that is
383
00:22:57.759 --> 00:23:01.359
what the chattab is good at. But MCP did not
384
00:23:01.480 --> 00:23:03.759
really have any meaningful way to do that up until
385
00:23:03.839 --> 00:23:07.000
very recent So we're figuring out how to do the
386
00:23:07.720 --> 00:23:10.000
MSP app side.
387
00:23:10.960 --> 00:23:16.880
Cool. Yeah, I'm just looking at this and thinking to myself,
388
00:23:17.440 --> 00:23:21.079
I typically use a relational database, but if I were
389
00:23:21.160 --> 00:23:25.319
using Mango TIB, I mean, having something like this just
390
00:23:28.000 --> 00:23:30.000
it makes it easier because you get to the place
391
00:23:30.039 --> 00:23:33.160
where being able to visualize a lot of this stuff,
392
00:23:34.519 --> 00:23:36.279
it just it allows you to think about it in
393
00:23:36.279 --> 00:23:38.759
a different way rather than being stuck in your CLI
394
00:23:38.960 --> 00:23:39.319
or something.
395
00:23:40.000 --> 00:23:42.640
Yeah. Absolutely, And you'd be surprised how many times like
396
00:23:43.400 --> 00:23:45.839
a bug is difficult to spot when you're looking at
397
00:23:45.880 --> 00:23:48.400
a traditional kind of like rods and tables data. Basically
398
00:23:48.519 --> 00:23:50.559
the gids that you look at a chart, You're like, oh,
399
00:23:50.599 --> 00:23:55.200
that's a bug I actually spotted, Like from one of
400
00:23:55.240 --> 00:23:57.119
my clients, I spotted a bug that was costing them
401
00:23:57.240 --> 00:24:01.200
thousands of dollars just by together a quick chart I
402
00:24:01.200 --> 00:24:03.599
look at. I'm like, there's an extreme outlier on this chart.
403
00:24:03.640 --> 00:24:08.119
What's going on there? And well, yeah, we've never caught that.
404
00:24:08.200 --> 00:24:10.240
If I had to look at that one charm and
405
00:24:10.400 --> 00:24:12.200
on that chart you just look at, it's like that's
406
00:24:12.200 --> 00:24:14.119
squaringly obvious. Thing is wrong there.
407
00:24:16.240 --> 00:24:19.240
So I was paying you on commission on those bugs, right,
408
00:24:19.440 --> 00:24:21.359
six thousands of dollars a month. They have to pay
409
00:24:21.400 --> 00:24:22.039
you ten percent.
410
00:24:22.799 --> 00:24:24.599
Well, if I caused the bug at the first place.
411
00:24:27.759 --> 00:24:30.480
So when I was working with Mango on Atlas, so
412
00:24:30.480 --> 00:24:34.119
I used like a guy called Studio three T. That
413
00:24:34.240 --> 00:24:37.720
was just what my company used. How does Mango's studio
414
00:24:37.880 --> 00:24:39.759
different from that? Is it just that it's web based
415
00:24:39.839 --> 00:24:43.759
versus like a separate app or what's the differences between
416
00:24:43.839 --> 00:24:44.599
those two.
417
00:24:46.000 --> 00:24:48.519
A couple of things. Web based is one big thing
418
00:24:50.880 --> 00:24:54.400
for production deployments. In particular, we like to we like
419
00:24:54.480 --> 00:24:57.480
to have Mangoo's studio as something that you log into
420
00:24:59.279 --> 00:25:03.160
through through UH through either Gmail a lot through Get
421
00:25:03.160 --> 00:25:07.119
Help a lot instead of passing around connection strings. So
422
00:25:07.240 --> 00:25:09.559
one of the things that we've seen that small medium
423
00:25:09.559 --> 00:25:13.839
businesses do is like when a new engineer joins and
424
00:25:13.880 --> 00:25:16.400
you want to give them production database access, we just
425
00:25:16.519 --> 00:25:21.240
send them like a shared credential or shared connection string
426
00:25:21.279 --> 00:25:24.240
and slack and then ask them to hook up put
427
00:25:24.240 --> 00:25:27.440
that connection strain in your studio at threep and that
428
00:25:27.759 --> 00:25:39.400
can be No, that's a little bit insecure, yeah, Dice, Yeah, yeah.
429
00:25:39.680 --> 00:25:42.079
What you should do is at least have a share
430
00:25:42.279 --> 00:25:46.480
or a separate connection strength for each individual developer, so
431
00:25:46.519 --> 00:25:51.319
you can easily onboard off board people rotate it probably
432
00:25:51.400 --> 00:25:55.200
once every year at least, but nobody does that because
433
00:25:55.240 --> 00:25:59.680
it's it's tedious, it's a thankless job. Just everyone finds
434
00:25:59.720 --> 00:26:01.680
it a union and annoyance. No, but he does it.
435
00:26:02.440 --> 00:26:05.720
With Mango's studio, we do things a little differently in
436
00:26:05.720 --> 00:26:09.160
the sense that you deploy, deploy mongke you studio as
437
00:26:09.200 --> 00:26:11.839
a web application, and then people log in by a
438
00:26:11.839 --> 00:26:15.559
GitHub or Gmail. So if you onboard or off board someone,
439
00:26:16.440 --> 00:26:21.279
you offboard someone, they lose access to their they're no
440
00:26:21.319 --> 00:26:23.880
longer part of your GitHub organization, and they lose access
441
00:26:23.920 --> 00:26:27.200
to the company email. Then they're automatically removed from Monkey
442
00:26:27.279 --> 00:26:32.119
studio as well. So those are two big differences, the
443
00:26:32.160 --> 00:26:37.480
production deployments and the well on the web based side
444
00:26:37.480 --> 00:26:44.480
of things, Yeah, another big thing is well, uh being
445
00:26:44.519 --> 00:26:47.720
mongt centric and knowing about your Monkey's schemas gives you
446
00:26:47.839 --> 00:26:51.799
access to things like schema level autocomplete, where again it
447
00:26:52.119 --> 00:26:55.160
uh monbu studio knows that your users have a first
448
00:26:55.200 --> 00:26:59.079
name property studio three T doesn't necessarily know that it
449
00:26:59.200 --> 00:27:02.559
can infer it from the shape of existing documents, but
450
00:27:02.640 --> 00:27:06.440
it's it's not going to be one accurate that way.
451
00:27:08.119 --> 00:27:10.839
Another detail is like, we're trying to make all of
452
00:27:10.839 --> 00:27:16.319
your studio a little bit more, a little bit more
453
00:27:16.359 --> 00:27:18.799
higher level. I'm a little bit more developer focused in
454
00:27:18.839 --> 00:27:21.240
the sense that we want to show data less as
455
00:27:21.400 --> 00:27:25.440
rose and columns and as plain text and more as
456
00:27:25.680 --> 00:27:28.680
the data that you want, the data that you actually
457
00:27:28.720 --> 00:27:32.039
want to see in a useful way. So, for example,
458
00:27:32.200 --> 00:27:35.279
for things that look like GeoJSON, we actually have the
459
00:27:35.319 --> 00:27:39.599
ability to show the GeoJSON points as mapps. Nice. So
460
00:27:40.200 --> 00:27:43.039
if you go into looking a particular at a particular
461
00:27:43.119 --> 00:27:47.079
document and it has like
a geok song polygon or points,
462
00:27:47.839 --> 00:27:50.079
you can actually click to show that on a map.
463
00:27:51.599 --> 00:27:54.480
A couple of other visualizations that we're adding is for
464
00:27:54.799 --> 00:27:57.839
image fields we want to actually visualize or have the
465
00:27:57.880 --> 00:28:02.480
option to this as an image and then or for
466
00:28:02.720 --> 00:28:04.920
vector data, that's something that would give you worked out
467
00:28:05.000 --> 00:28:09.920
pretty cool, and so is showing a projection of the
468
00:28:10.039 --> 00:28:13.359
of the vector data or at least making it easier
469
00:28:13.400 --> 00:28:16.920
to visualize a bunch of vectors just in your database.
470
00:28:16.960 --> 00:28:20.519
You are, so, I'm assuming you can also view the
471
00:28:20.599 --> 00:28:23.240
data and it's raw format right in your.
472
00:28:23.319 --> 00:28:26.839
Yeah, the format is the default. But if you but
473
00:28:26.880 --> 00:28:29.359
if you want to just quickly look at something a
474
00:28:29.440 --> 00:28:34.240
GJ song data point on a map, click a button,
475
00:28:34.480 --> 00:28:39.000
don't even have to leave studio, which is nice. Is
476
00:28:39.000 --> 00:28:42.880
a frequent pain point for for me. I've been working
477
00:28:42.880 --> 00:28:45.640
with geo Data and mal aib for a long long time.
478
00:28:45.880 --> 00:28:49.039
Just having that all faked into one database food that's
479
00:28:49.079 --> 00:28:52.079
been huge. I no longer have to worry about what
480
00:28:52.119 --> 00:28:54.160
I used to have was I had like a script
481
00:28:54.240 --> 00:28:58.160
that would take in a would take in latitude longitude
482
00:28:58.160 --> 00:29:00.920
points and just give me a Google Maps output that
483
00:29:00.960 --> 00:29:03.960
I could copy for account Google Maps that I could
484
00:29:03.960 --> 00:29:07.440
copy paste into my grouder to view where this to
485
00:29:07.559 --> 00:29:10.319
be where this was, or to view where a point was.
486
00:29:10.960 --> 00:29:13.839
And then for polygons there there was pretty much nothing
487
00:29:14.000 --> 00:29:17.400
I guess I could generate like a Google Maps does
488
00:29:17.440 --> 00:29:20.960
have like this static image generators, so that's what I
489
00:29:20.960 --> 00:29:24.119
would probably use, was I would just take a polygon
490
00:29:24.119 --> 00:29:26.519
and just generate a Google Maps image from a script.
491
00:29:27.000 --> 00:29:30.359
But that was an elegant and inconvenience, much easier to
492
00:29:30.400 --> 00:29:33.039
just I'm already and day. Basically I click a button
493
00:29:33.079 --> 00:29:36.559
to view on the map again, a nice little leaflet
494
00:29:36.599 --> 00:29:38.000
map that I can edit drag.
495
00:29:39.880 --> 00:29:41.519
That was my next question. I was curious to see
496
00:29:41.519 --> 00:29:43.759
what library you're using to generate your maps. If you're
497
00:29:43.799 --> 00:29:46.920
not using Google Maps anymore.
498
00:29:47.440 --> 00:29:52.640
It's Sleep. But for for Google Maps, I was talking
499
00:29:52.640 --> 00:29:56.200
more about their Google Maps has like this api for
500
00:29:56.440 --> 00:30:00.640
generating static map images, which is actually really useful.
501
00:30:01.559 --> 00:30:03.319
Yeah, if you just want like a screenshot of a
502
00:30:03.359 --> 00:30:06.000
map or a one time view as compared to something
503
00:30:06.000 --> 00:30:08.240
that you can zoom and pan and that kind of stuff.
504
00:30:07.960 --> 00:30:11.079
Right, yeah, exactly, or if you wants something that's easier
505
00:30:11.079 --> 00:30:14.759
to share in a place like Slack that will support
506
00:30:15.640 --> 00:30:19.559
the whole Google Maps experience. Paying the image it's very important.
507
00:30:20.400 --> 00:30:24.200
So what's coming next for Mongoose or Mongoose Studio.
508
00:30:25.960 --> 00:30:28.880
For Mongoose, we're probably going to have one more another
509
00:30:29.000 --> 00:30:33.640
breaking release this year. We will see about exact timing
510
00:30:33.799 --> 00:30:37.200
and scope, but it's going to be our Mongoose ten
511
00:30:37.279 --> 00:30:40.480
release if I want to make sure that there's something
512
00:30:40.559 --> 00:30:43.519
interesting in there. I just haven't settled on exactly what
513
00:30:43.599 --> 00:30:47.680
I want, but one thing I want is more of
514
00:30:47.720 --> 00:30:51.119
a switch towards using proxies internally for change tracking as
515
00:30:51.119 --> 00:30:54.759
opposed to project of defined property, kind of going more
516
00:30:54.799 --> 00:30:57.359
along the lines of how View does change tracking, whether
517
00:30:58.240 --> 00:31:02.440
how Magos does change tracking. Now I was gonna say,
518
00:31:03.039 --> 00:31:07.359
like views, Yeah, now, View and Mongoose have a lot
519
00:31:07.400 --> 00:31:10.720
of similarities internally in terms of the problems that they
520
00:31:10.720 --> 00:31:14.279
try to solve. Again, one of the uh one of
521
00:31:14.319 --> 00:31:19.599
the core parts of Mongoose is is has changed tracking
522
00:31:19.599 --> 00:31:22.039
in the sense that you load a document from the database,
523
00:31:22.319 --> 00:31:24.759
you assigned some properties to the document, and then you
524
00:31:24.839 --> 00:31:28.359
type save. Mongoose tracks the changes that you made and
525
00:31:28.640 --> 00:31:31.200
only sends the changes that you made the database, as
526
00:31:31.240 --> 00:31:33.720
opposed to trying to write the whole document.
527
00:31:34.880 --> 00:31:37.559
So now where is I was going back and listening
528
00:31:37.599 --> 00:31:44.640
to simpots from past episodes like twenty twenty twenty twenty
529
00:31:44.680 --> 00:31:48.160
one on Views on View where we were talking about
530
00:31:48.599 --> 00:31:52.799
Mangos mongoose. So I know Dino's you know, has been
531
00:31:52.799 --> 00:31:55.000
around for a while a few more years since then,
532
00:31:55.720 --> 00:31:59.119
is uh this mongoose compatible with Dino?
533
00:32:00.720 --> 00:32:04.799
Yeah, I think we technically still have a helpful support
534
00:32:04.839 --> 00:32:07.759
for Dino, and we do. We have been testing on
535
00:32:07.839 --> 00:32:11.599
Dino for several years, so I think it's reasonably stable.
536
00:32:11.680 --> 00:32:14.200
But I haven't really used Dino very much, to be
537
00:32:15.200 --> 00:32:19.200
perfectly frank like, I am not sufficiently confident, and I
538
00:32:19.240 --> 00:32:23.680
haven't seen enough enough interest in using mortgage with Dino
539
00:32:23.799 --> 00:32:26.599
to than justifys saying like, hey, this is like an
540
00:32:26.599 --> 00:32:31.839
officially supported thing. I'm seeing more usage for BUN, so
541
00:32:31.880 --> 00:32:34.720
I'm kind of curious to tinker with how Moggy's works
542
00:32:34.759 --> 00:32:38.000
on the bond, But I haven't had time to work
543
00:32:38.000 --> 00:32:38.599
on that either.
544
00:32:40.680 --> 00:32:43.640
Now it was, but I'm I've you heard about bun
545
00:32:43.839 --> 00:32:45.640
and see a list? Is that more just a run
546
00:32:45.680 --> 00:32:47.519
time or is that something you would write apps in
547
00:32:48.319 --> 00:32:49.160
like you would Node?
548
00:32:51.359 --> 00:32:54.960
From what I gather you, yes, you would write and
549
00:32:55.000 --> 00:32:57.880
you would write applications and fun I've heard of some
550
00:32:58.599 --> 00:33:01.839
interesting app frameworks that are specific to BUN. I think
551
00:33:01.960 --> 00:33:06.079
there's Alicia JS something like that. I think that one
552
00:33:06.559 --> 00:33:09.799
down there. I think that one is very BUN specific,
553
00:33:10.039 --> 00:33:13.319
and I've heard very good reviews about it. I think
554
00:33:13.359 --> 00:33:19.200
one thing I liked when I reviewed Alicia Elisia. I'm
555
00:33:19.440 --> 00:33:22.599
going to sorry if I'm butchering the pronunciation. One thing
556
00:33:22.640 --> 00:33:24.880
I really liked about that Express does not support is
557
00:33:24.880 --> 00:33:28.920
Alisia has good support for server sent events, kind of
558
00:33:29.000 --> 00:33:31.839
right out of the box. So if you pass it in,
559
00:33:32.680 --> 00:33:35.960
it gives the other developer experience that I've always wanted
560
00:33:35.960 --> 00:33:38.720
for service sent events, which is you pass in a
561
00:33:38.720 --> 00:33:44.960
acink generator function and then whatever your acin generator function
562
00:33:45.119 --> 00:33:50.039
yields that that gets admitted as a server event, which
563
00:33:50.079 --> 00:33:53.480
is really cool. Love that I actually use that pattern
564
00:33:53.519 --> 00:33:56.519
in the Malgi studio back end as well. Yeah. One
565
00:33:57.279 --> 00:34:00.000
UI decision that we made probably a couple of months
566
00:34:00.039 --> 00:34:02.480
ago in Mugu Studio that has paid huge dividends is,
567
00:34:03.400 --> 00:34:08.320
like traditional database viewers, you frequently load query results in pages.
568
00:34:09.119 --> 00:34:12.440
So you would so if you execute a query, you
569
00:34:12.519 --> 00:34:16.679
get twenty results back you get or there's let's how
570
00:34:16.719 --> 00:34:20.039
you execute a query and there's forty results you typically
571
00:34:20.079 --> 00:34:23.800
get twenty results at a time as a page, but
572
00:34:23.920 --> 00:34:28.400
the query, but when you execute the query, you don't
573
00:34:28.400 --> 00:34:30.000
get to see the results one at a time. If
574
00:34:30.039 --> 00:34:33.880
you wear uh, the the gooey waits until it gets
575
00:34:33.880 --> 00:34:38.400
all twenty results and then displays the twenty. With Mogus Studio,
576
00:34:38.400 --> 00:34:41.199
we've actually made it so that we use server sent
577
00:34:41.280 --> 00:34:43.960
events to stream the results as they come at in
578
00:34:44.239 --> 00:34:48.000
so even though you load twenty at a time, you
579
00:34:48.119 --> 00:34:50.440
get kind of like, okay, the instant that this document
580
00:34:50.519 --> 00:34:52.719
is available, we stream it to the front end, and
581
00:34:52.760 --> 00:34:54.519
the front end gets it to you kind of see
582
00:34:54.639 --> 00:34:57.599
like more of a smooth loading effect. And then there's
583
00:34:57.639 --> 00:35:00.400
infinite scroll back then too, so of course you if
584
00:35:00.400 --> 00:35:02.519
you want to scroll and view more data, well you
585
00:35:02.599 --> 00:35:05.239
get kind of a smoother experience where you're running one
586
00:35:05.360 --> 00:35:07.760
documents one at a time as opposed to kind of
587
00:35:07.800 --> 00:35:13.320
like gang Chunks twenty twenty twenty. And it really is important,
588
00:35:13.400 --> 00:35:16.239
especially in cases where you have a very slow running query,
589
00:35:16.639 --> 00:35:18.960
like if you're filtering logs or something like that, where
590
00:35:19.000 --> 00:35:23.039
you expects, okay, I may get like one or two
591
00:35:23.079 --> 00:35:26.039
log results really quickly, but then it may take twenty
592
00:35:26.079 --> 00:35:28.760
seconds to get all the log results, so it's more
593
00:35:28.920 --> 00:35:31.119
it's important to kind of get some of the data
594
00:35:31.400 --> 00:35:34.440
first or get the results as they come in case
595
00:35:34.480 --> 00:35:38.239
with long running queries. Service centerventsive great for that. Ye
596
00:35:38.360 --> 00:35:40.679
have you guys been working with with the Dino or
597
00:35:40.840 --> 00:35:42.880
bun at all? I have it.
598
00:35:43.000 --> 00:35:47.119
Most of my back end, I generally focus on PHPU
599
00:35:47.159 --> 00:35:51.280
and label just because that's been you know, where I
600
00:35:51.280 --> 00:35:54.199
started on the server side. So no, I haven't had
601
00:35:54.280 --> 00:35:58.960
much
opportunity to work with with Note or mon Ordino itself.
602
00:35:59.079 --> 00:36:01.639
Like I said, just Mango in the context of a
603
00:36:01.760 --> 00:36:03.159
large letter bill view application.
604
00:36:03.920 --> 00:36:05.960
Yeah, and I mostly do Ruby on rails on the
605
00:36:06.000 --> 00:36:06.599
back end, So.
606
00:36:07.079 --> 00:36:09.559
Yeah, I guess I'm in the minority as someone that
607
00:36:09.679 --> 00:36:15.239
does server side jobscript pretty much exclusively. And like all,
608
00:36:15.400 --> 00:36:17.480
I describe myself as like a back end heavy full
609
00:36:17.519 --> 00:36:20.320
stack de alter in SnSe that in my team, we
610
00:36:20.639 --> 00:36:23.719
typically focus more on the back end and build pieces
611
00:36:23.800 --> 00:36:27.719
en upfront ends. Our frontucts are not our shrunk suit,
612
00:36:28.000 --> 00:36:29.079
but we do.
613
00:36:29.159 --> 00:36:35.360
Sound like me. Yeah, when it comes to the JavaScript
614
00:36:35.440 --> 00:36:39.039
side of things, I'm really good at you know, if
615
00:36:39.039 --> 00:36:41.519
I'm handling data, you know, communicating with the back end
616
00:36:41.519 --> 00:36:44.960
and getting data, displaying and data and that kind of stuff.
617
00:36:45.000 --> 00:36:47.239
You know, one of the data management type of application
618
00:36:47.320 --> 00:36:49.480
A pretty good when it comes to the UI and
619
00:36:49.519 --> 00:36:52.320
making it really pretty and design and stuff not so much.
620
00:36:55.199 --> 00:36:58.599
Yeah, well, these days the AI does a pretty decent
621
00:36:58.679 --> 00:37:05.039
job of that. Oh ish. One thing I've seen is that,
622
00:37:05.119 --> 00:37:07.280
like you know, the AI tools are still not quite
623
00:37:07.360 --> 00:37:11.440
as good as people as like spurts in that space. Right,
624
00:37:11.679 --> 00:37:14.679
So you know, if I if I build something, just
625
00:37:14.840 --> 00:37:17.119
if I just have clawed one try to one shot something,
626
00:37:17.159 --> 00:37:19.599
it's not going to be as good as the tailwe
627
00:37:19.639 --> 00:37:23.960
guy built some spoke lay up for me, but it'll
628
00:37:24.000 --> 00:37:27.000
be it'll be probably like seventy percent is good and
629
00:37:27.800 --> 00:37:29.800
maybe that's good enough. Yeah, exactly.
630
00:37:29.840 --> 00:37:32.039
I've been trying to play around and find some different
631
00:37:32.039 --> 00:37:34.960
tools that would be good at at creating like a
632
00:37:35.119 --> 00:37:37.119
you know, some sort of UI template you know, that
633
00:37:37.159 --> 00:37:39.199
I could implement on the front end at least looks
634
00:37:39.320 --> 00:37:42.400
decent and better than what I would come with on
635
00:37:42.440 --> 00:37:42.800
my own.
636
00:37:43.400 --> 00:37:45.840
Cool. Well, is there anything else that we should dive
637
00:37:45.880 --> 00:37:46.400
into here?
638
00:37:46.679 --> 00:37:48.360
Well, there was one topic that we want to talk
639
00:37:48.400 --> 00:37:52.360
about I mentioned earlier, the data API at Cassandra Integration.
640
00:37:53.079 --> 00:37:57.559
Oh yeah, that's something that's interesting. Oh, so yeah, we're
641
00:37:58.079 --> 00:38:02.280
for probably the last year two we've been we've been
642
00:38:02.320 --> 00:38:05.639
working with what Data Stacks, which recently got acquired by
643
00:38:05.639 --> 00:38:08.480
IBM to build a plug in that. Let's mongoose talk
644
00:38:08.639 --> 00:38:11.039
to the stack of Data API, which is kind of
645
00:38:11.039 --> 00:38:13.639
like an HDT layer on top of the Patrick Cassandra.
646
00:38:14.760 --> 00:38:16.320
So one of the neat things you can do with
647
00:38:16.360 --> 00:38:21.280
mongous now is you can actually or you can actually
648
00:38:21.320 --> 00:38:24.840
like just find wright molecuse code dropping a couple of
649
00:38:24.920 --> 00:38:28.679
lines of figuration and habit talk to Patrick Cassandra with
650
00:38:29.039 --> 00:38:33.039
with some pasttrisks as opposed for features that are supported
651
00:38:33.079 --> 00:38:36.079
and whatnot. And then now the neat things you can
652
00:38:36.119 --> 00:38:38.960
do like Magus is populate, which is kind of like
653
00:38:39.039 --> 00:38:43.199
Malgus's application level level joins gosh. I use that to
654
00:38:43.199 --> 00:38:45.480
take data from Manga to be populates some data from
655
00:38:45.519 --> 00:38:50.199
Cassandra or vice versa. It's pretty cool thing, I think.
656
00:38:51.000 --> 00:38:53.679
So for the uninitiated, can you explain what Cassandra is
657
00:38:53.679 --> 00:38:55.880
because I didn't know myself until I went and.
658
00:38:55.920 --> 00:39:02.079
Looked Patrick Cassandra is. It's a no SQL database but
659
00:39:02.239 --> 00:39:04.440
quite different from malgady B in the sense that like
660
00:39:04.480 --> 00:39:07.199
it still stores data and what kind of looks like
661
00:39:07.280 --> 00:39:09.519
Rosen columns, but it is like what's called a y
662
00:39:09.639 --> 00:39:14.039
columns store. I think the big selling point for Cassandra
663
00:39:14.280 --> 00:39:18.880
is it is it's good for massive right throughput, like
664
00:39:19.960 --> 00:39:23.519
the classic. The big example of probably the biggest Cassandra
665
00:39:23.599 --> 00:39:25.480
deployment that I could think of off the top of my
666
00:39:25.519 --> 00:39:28.639
head is is Apple iCloud. So let's say every time
667
00:39:28.679 --> 00:39:32.639
that you take a photo on your iPhone, metadata associated
668
00:39:32.679 --> 00:39:35.519
with that photo, like who took it, when they took it,
669
00:39:35.800 --> 00:39:38.920
that gets dumped into a two hundred and fifty thousand
670
00:39:39.079 --> 00:39:41.800
last I checked, no Cassandra cluster, or at least the
671
00:39:41.880 --> 00:39:44.960
last time I read about this. Yeah, Apple iCloud is
672
00:39:45.000 --> 00:39:49.599
one big deployments discord
messages for a long time. We're
673
00:39:49.840 --> 00:39:54.039
we're also in a Patrick Cassandra and pretty much like name,
674
00:39:54.159 --> 00:39:56.880
like a major tech company that's not Google, they probably
675
00:39:56.920 --> 00:40:00.360
have a Cassandra deployment. Like Cassandra is actually originally written
676
00:40:00.360 --> 00:40:05.760
by Facebook. The open source de debated. I think it
677
00:40:05.800 --> 00:40:09.559
was like originally written to ah as like the back
678
00:40:09.639 --> 00:40:12.400
end store for the timeline view, but.
679
00:40:12.440 --> 00:40:14.519
It sounds like it's more it's not like something to
680
00:40:14.559 --> 00:40:17.000
use for small laps. It's more of an enterprise, huge
681
00:40:18.199 --> 00:40:21.679
implementation type application, right.
682
00:40:22.639 --> 00:40:27.159
Yeah, exactly. Now, one of the things they're trying or
683
00:40:27.920 --> 00:40:29.400
that they're trying to do is like make the Sandra
684
00:40:29.519 --> 00:40:32.679
more accessible using that data API, and Mongoose is part
685
00:40:32.719 --> 00:40:35.239
of that as well. There's a lot of content out
686
00:40:35.239 --> 00:40:38.360
there on how to use monkeys. The munguse kind of
687
00:40:38.400 --> 00:40:41.960
like plugs neatly into into the the sex data API,
688
00:40:42.039 --> 00:40:44.519
which kind of exposes like a Mango like layer on
689
00:40:44.559 --> 00:40:45.360
top of Sandra.
690
00:40:46.440 --> 00:40:48.199
Yeah, I've done a little bit with the Cassandra and
691
00:40:48.239 --> 00:40:51.960
it's it's kind of an interesting set up with the
692
00:40:52.039 --> 00:40:54.639
column near focus and things like that.
693
00:40:54.679 --> 00:40:58.360
But so it's no SQL because it's not SQL. But
694
00:40:58.400 --> 00:41:00.320
it's different than mongo ters or.
695
00:41:00.280 --> 00:41:03.400
How in the sense that they have, like they have
696
00:41:03.440 --> 00:41:07.679
a language called CQL Cassandra Corry language, which is similar
697
00:41:07.719 --> 00:41:10.880
to SQ well but heavily simplified.
698
00:41:13.440 --> 00:41:18.280
And they strictly speaking don't have a rigid schema kind
699
00:41:18.280 --> 00:41:28.199
of like what Mango does. But yeah, their performance characteristics
700
00:41:28.239 --> 00:41:30.639
are different and they kind of focus in a different
701
00:41:30.719 --> 00:41:32.639
way of thinking about your data. So depending on what
702
00:41:32.639 --> 00:41:37.360
you're doing, you would pick Cassandra over mongo I'm not
703
00:41:37.360 --> 00:41:39.119
sure I'm the right person to explain when you would
704
00:41:39.119 --> 00:41:39.920
pick one over the other.
705
00:41:40.760 --> 00:41:44.079
But yeah, I think historically I'm not sure like how
706
00:41:44.079 --> 00:41:46.400
accurate this is right now, but historically them was like,
707
00:41:46.519 --> 00:41:50.800
if if you have for read heavy data or data
708
00:41:50.840 --> 00:41:55.760
where you're incrementing a counter where like it's crementing data
709
00:41:55.840 --> 00:41:59.079
in place, you would probably use manga to be And
710
00:41:59.119 --> 00:42:01.639
if you have something where you're just writing something as
711
00:42:01.679 --> 00:42:05.280
fast as you can, you would use at Sandra m
712
00:42:06.199 --> 00:42:08.239
I'm not sure how accurate that is right now, but
713
00:42:08.320 --> 00:42:10.559
that tends to be the way that I think about things,
714
00:42:11.559 --> 00:42:14.519
although recently I've also been using Cassandra more or data
715
00:42:14.559 --> 00:42:17.199
api more for vector search, because one of the things
716
00:42:17.159 --> 00:42:20.000
that I really I think Cassandra did really well recently
717
00:42:20.079 --> 00:42:22.880
is they have they've taken vector search and made it
718
00:42:22.960 --> 00:42:27.840
a part of the core Cassandra and now that's exposed
719
00:42:27.840 --> 00:42:31.239
throughout through data Api as well, Whereas with muggerity b
720
00:42:31.360 --> 00:42:35.519
it's still like h vector search is still like an
721
00:42:35.559 --> 00:42:39.119
Atlas only thing. Like you if you're running muggity B
722
00:42:39.280 --> 00:42:44.119
by itself locally, you don't get ex your search, which
723
00:42:44.199 --> 00:42:49.360
is not not a complete deal breaker in the sense
724
00:42:49.480 --> 00:42:52.239
that for the most part you're going to be running
725
00:42:52.280 --> 00:42:56.159
production deployments and outlets like even I don't run even
726
00:42:56.199 --> 00:42:59.000
I don't run my o mugity Be closers anymore, but
727
00:42:59.039 --> 00:43:01.079
it does kind of. It is a bit of a
728
00:43:01.079 --> 00:43:03.280
pain point in terms of local development.
729
00:43:03.920 --> 00:43:06.199
So basically you can unless you're like hosting it on
730
00:43:06.280 --> 00:43:09.119
Atlas or something like that, unless.
731
00:43:10.400 --> 00:43:14.559
Or or running manga to be locally via the Atlas
732
00:43:14.559 --> 00:43:18.639
cl I. However, like running it locally by the Atlas
733
00:43:18.639 --> 00:43:22.760
cl I also comes with caveats and restrictions that you
734
00:43:22.800 --> 00:43:26.480
don't have if you're you're running you're running one mangity
735
00:43:26.519 --> 00:43:29.760
be locally, there's there's caveats there.
736
00:43:30.400 --> 00:43:33.360
Cool, Well, I've got about ten minutes before I have
737
00:43:33.360 --> 00:43:35.199
to jump off. Or are there other things that you
738
00:43:35.199 --> 00:43:37.679
guys want to keep talking about or should we do picks?
739
00:43:37.880 --> 00:43:40.000
But just real quick, the one question I had was
740
00:43:40.079 --> 00:43:43.599
you admit now you mentioned at the beginning that you
741
00:43:43.760 --> 00:43:47.559
use view whenever you have to whenever you need, you know,
742
00:43:47.719 --> 00:43:50.239
job to script front end. So is that just in
743
00:43:50.239 --> 00:43:55.880
in the UH, the UI or where else do you
744
00:43:55.960 --> 00:43:58.159
use view at least with Mango.
745
00:44:00.199 --> 00:44:03.800
For front endy wise, either either your service side rendering
746
00:44:04.039 --> 00:44:07.559
or single page app Another thing that we use viewfore
747
00:44:07.639 --> 00:44:12.039
is email temple, but we'll send emails we are email
748
00:44:12.079 --> 00:44:13.239
templates are also in view.
749
00:44:13.800 --> 00:44:17.159
Oh okay, you just have to use some single file
750
00:44:17.239 --> 00:44:20.960
components that format your your email.
751
00:44:21.360 --> 00:44:25.639
Not single file components, and we typically use were typically
752
00:44:25.679 --> 00:44:27.559
used two file components in the sense that we have
753
00:44:27.639 --> 00:44:31.719
JavaScript in HTML, so our emails look more along the
754
00:44:31.760 --> 00:44:35.079
lines that there's like there's order confirmation dot JS and
755
00:44:35.239 --> 00:44:39.360
order confirmation dot HTML. And that defines a component that
756
00:44:39.639 --> 00:44:45.480
renders a that renders our order confirmation. So I can
757
00:44:45.480 --> 00:44:49.639
we write out we define our uh, we define the
758
00:44:50.199 --> 00:44:54.639
layout in an HTML file. Historically, we found that easier.
759
00:44:54.880 --> 00:44:57.760
I have considered switching to single file components in recent
760
00:44:57.840 --> 00:45:00.119
years because I think that as I thought that way,
761
00:45:00.159 --> 00:45:02.320
I could do a better job with single files. But
762
00:45:02.400 --> 00:45:06.440
we're still sticking the separate JS and htmail files for
763
00:45:06.559 --> 00:45:10.800
now and then just to find to find emails in
764
00:45:10.880 --> 00:45:14.360
each GM because we found the comput is really good
765
00:45:14.440 --> 00:45:19.320
at just beef work things like that, like basic loops
766
00:45:19.519 --> 00:45:23.039
computer properties. That makes email rendering much easier.
767
00:45:23.719 --> 00:45:26.840
Mm hm cool, Well, I'm gonna I'm gonna push us
768
00:45:26.880 --> 00:45:31.320
into picks, so, uh, Steve, do you want to start
769
00:45:31.360 --> 00:45:32.880
us off with picks?
770
00:45:32.920 --> 00:45:38.880
Certainly, nothing really pickwise other than the high point of
771
00:45:39.039 --> 00:45:41.000
all of repros. That's the dad jokes of the week,
772
00:45:41.800 --> 00:45:45.639
So I'll dive right into those real quick. So when
773
00:45:45.679 --> 00:45:48.159
I was growing up, one of my favorite memories of
774
00:45:48.199 --> 00:45:52.119
my childhood was I used to build sand castles, you know,
775
00:45:52.159 --> 00:45:55.079
with my grandmother, and then my mom took the urn
776
00:45:55.119 --> 00:46:01.360
away from me, right, I sort of like the joke
777
00:46:01.360 --> 00:46:03.159
about where I was at washing cars with my son
778
00:46:03.199 --> 00:46:06.000
and he's like, Dad, can we just use a sponge?
779
00:46:06.400 --> 00:46:12.480
But and then people say, when people say you look
780
00:46:12.519 --> 00:46:15.440
so familiar, do I know you? I find that if
781
00:46:15.480 --> 00:46:18.079
I say were we in prison together? Really ends the
782
00:46:18.079 --> 00:46:25.639
conversation every time. And then finally I was talking to
783
00:46:25.679 --> 00:46:27.480
my insurance age and I said, I hit an animal
784
00:46:27.480 --> 00:46:30.880
and my car is total on my copboard. He goes, yeah,
785
00:46:30.920 --> 00:46:35.440
what'd you hit? And I said a fish? And that
786
00:46:35.559 --> 00:46:37.199
joke sort of comes with the car in the water.
787
00:46:37.400 --> 00:46:40.360
Maybe it's a little more of a visual joke, but anyway,
788
00:46:40.519 --> 00:46:41.800
those are the dad jokes of the week.
789
00:46:41.880 --> 00:46:44.639
All right, I'm going to jump in here with some
790
00:46:45.079 --> 00:46:49.480
pisure really quickly. So I'm going to pick a game
791
00:46:49.519 --> 00:46:52.360
I've been playing a lot lately with my buddies. I
792
00:46:52.400 --> 00:46:54.039
know I've picked it before, but I'm just gonna pick
793
00:46:54.039 --> 00:46:56.760
it again because I didn't have time to look one up.
794
00:46:57.039 --> 00:47:01.119
It's called the Gang. Play it in like fifteen to
795
00:47:01.119 --> 00:47:08.800
twenty minutes. It's essentially group poker, like cooperative poker. And
796
00:47:08.840 --> 00:47:11.239
so what you do is you have chips that are
797
00:47:11.320 --> 00:47:14.400
numbered from one to however many players are playing it
798
00:47:14.440 --> 00:47:17.719
has up to six, and then you deal everybody out
799
00:47:17.760 --> 00:47:20.360
their whole cards or their pocket cards, you know, the
800
00:47:20.400 --> 00:47:23.239
two cards you start with in Texas. Hold them, and
801
00:47:23.280 --> 00:47:30.760
then everybody grabs a chip and you try and get
802
00:47:30.960 --> 00:47:33.159
it in order of who has the best hand down
803
00:47:33.199 --> 00:47:36.480
to who has the worst hand, and then you flip
804
00:47:36.519 --> 00:47:39.639
the flop and you do it again right, and then
805
00:47:41.079 --> 00:47:44.320
you flip the turn, and then you you know, do
806
00:47:44.400 --> 00:47:46.679
the same thing, and they flip the river, and after
807
00:47:46.719 --> 00:47:52.559
the river on the red chips. Then whoever has the
808
00:47:52.639 --> 00:47:54.760
number one chip flips theirs over first. They should have
809
00:47:54.760 --> 00:47:57.639
the worst hand. Whoever has the number two should have
810
00:47:58.280 --> 00:48:00.960
a better hand, three, four, five, and all the way
811
00:48:01.000 --> 00:48:03.119
up to six, or if you're only playing with three people,
812
00:48:03.119 --> 00:48:04.199
you know, all the way up to three. I was
813
00:48:04.239 --> 00:48:07.840
playing it with my kids the other day and yeah.
814
00:48:07.880 --> 00:48:10.400
So the only
other rule is is you can talk
815
00:48:10.400 --> 00:48:12.519
about everybody else's hand, but you can't talk about your own.
816
00:48:13.360 --> 00:48:19.000
So at one point, for example, we had flipped the
817
00:48:19.039 --> 00:48:23.000
turn card, and so which is the fourth card in texas?
818
00:48:23.039 --> 00:48:26.920
Hold him? And it was a ten, and so my
819
00:48:27.039 --> 00:48:29.119
son grabbed the number three chip because of whatever the
820
00:48:29.159 --> 00:48:32.679
three of us playing, because he in his whole cards
821
00:48:32.679 --> 00:48:34.239
he had a ten, and so he had a pair
822
00:48:34.280 --> 00:48:38.599
of tens. And so I looked at him and I said,
823
00:48:38.920 --> 00:48:41.960
if you matched, just now, you have a pair of tens.
824
00:48:42.039 --> 00:48:44.079
And then I grabbed the three chip and put it
825
00:48:44.119 --> 00:48:45.880
in front of me because I had a pair of
826
00:48:45.960 --> 00:48:50.280
jacks from the flop, and so that told him. So
827
00:48:50.320 --> 00:48:53.199
I didn't talk about my hand, but I indicated him
828
00:48:53.199 --> 00:48:54.840
I know what you have and I have a better hand.
829
00:48:55.480 --> 00:48:58.199
And so anyway, so that's kind of the way you
830
00:48:58.239 --> 00:49:00.639
do it. If there are more pople you tend to
831
00:49:00.719 --> 00:49:03.920
talk through a lot more things. With my buddies, we
832
00:49:03.960 --> 00:49:06.360
also like to call out you know, for example, if
833
00:49:06.400 --> 00:49:08.840
you have two clubs, then you have a flush, right
834
00:49:08.880 --> 00:49:12.480
because there are three clubs cards in the you know,
835
00:49:12.519 --> 00:49:16.519
in the in the shared cards. Or if you have
836
00:49:16.559 --> 00:49:19.639
a two and then six, then you have a you
837
00:49:19.679 --> 00:49:23.119
have a straight right, which is a run of five
838
00:49:23.559 --> 00:49:26.400
cards in number order. And so anyway, so it's a
839
00:49:26.440 --> 00:49:29.079
lot of fun and like I said, we you know,
840
00:49:29.119 --> 00:49:31.599
we just you know, you can play through pretty quick.
841
00:49:31.960 --> 00:49:35.599
You're trying to get three correct before you get three incorrect,
842
00:49:36.440 --> 00:49:38.239
and that's how you win the game. And yeah, like
843
00:49:38.280 --> 00:49:40.840
this it takes like twenty minutes. So I'm going to
844
00:49:40.880 --> 00:49:45.599
pick that for the game. I've also wanted to really quickly.
845
00:49:45.639 --> 00:49:48.760
I was texting. I've started this thing where I start
846
00:49:48.800 --> 00:49:50.800
texting people that I haven't talked to in a while.
847
00:49:51.519 --> 00:49:55.239
And so one person that I texted, let me find
848
00:49:55.239 --> 00:49:56.559
the text because I told him I was going to
849
00:49:56.559 --> 00:50:00.800
share some stuff. But I was texting with can Kent
850
00:50:02.280 --> 00:50:07.000
Kent Dodds, and I might just have to search it
here.
851
00:50:07.000 --> 00:50:08.360
Wow, talk about name dropping.
852
00:50:10.079 --> 00:50:14.280
Well he lives out here and so periodically, well you know,
853
00:50:15.159 --> 00:50:21.400
hang out or whatever. But yeah, so he said that
854
00:50:21.480 --> 00:50:24.440
he's been doing a couple of things, so I'm just
855
00:50:24.480 --> 00:50:27.320
going to shout out his websites. He has epic ai
856
00:50:27.360 --> 00:50:31.519
dot Pro, so he's been teaching people to do AI stuff.
857
00:50:32.559 --> 00:50:34.920
He's also got epic web dot dev, which is kind
858
00:50:34.920 --> 00:50:41.360
of his full stack preferred stack, and so I don't
859
00:50:41.360 --> 00:50:46.039
know if he's still doing remix, but you know, that
860
00:50:46.159 --> 00:50:47.199
used to be a big part of it. And then
861
00:50:47.199 --> 00:50:48.480
he had a whole bunch of other stuff that hed
862
00:50:48.480 --> 00:50:50.880
pull in. And then he also has epic React dot dev.
863
00:50:50.960 --> 00:50:54.760
So if you're looking to learn stuff about React, JavaScript
864
00:50:54.960 --> 00:50:59.079
or AI, then he's got He's got some resources out
865
00:50:59.079 --> 00:51:02.119
there that you go check out. I find that his stuff
866
00:51:02.159 --> 00:51:06.519
is reasonably easy to follow along with, and so I
867
00:51:06.519 --> 00:51:10.079
don't have any problem shouting that out. So I'm doing that,
868
00:51:10.400 --> 00:51:12.400
and yeah, I'm also just going to shout out the
869
00:51:12.440 --> 00:51:16.159
idea of, you know, find for people to reach out
870
00:51:16.159 --> 00:51:18.519
to every day. I mean, I do it with family members,
871
00:51:18.519 --> 00:51:21.400
I do it with people in the tech community. It's
872
00:51:21.480 --> 00:51:23.480
kind of fun because sometimes I haven't heard from him
873
00:51:23.480 --> 00:51:25.039
in a couple of years, like I had. I don't
874
00:51:25.039 --> 00:51:29.159
think I've really talked to Kent in a couple of years, right,
875
00:51:29.199 --> 00:51:30.599
and so it was like, oh, hey, and so we're
876
00:51:30.639 --> 00:51:35.920
catching up on kids and things like that. Anyway, So yeah,
877
00:51:35.920 --> 00:51:38.840
that's kind of what I've been doing. And I picked
878
00:51:38.840 --> 00:51:42.280
that up from Jordan Harbinger. I was listening to him
879
00:51:42.360 --> 00:51:44.599
do an interview with somebody and he said that he
880
00:51:44.639 --> 00:51:46.519
does that, and I was like, there are a lot
881
00:51:46.519 --> 00:51:48.840
of people I want to stay connected to that I don't,
882
00:51:49.039 --> 00:51:52.400
And so anyway, I'm going to shout that out as well.
883
00:51:52.440 --> 00:51:54.880
What are you think I reached out to Jordan? I
884
00:51:54.880 --> 00:51:56.840
haven't spoken him in a few years.
885
00:51:57.519 --> 00:52:01.039
Yeah, I haven't either. Last time I talked to him,
886
00:52:01.039 --> 00:52:02.440
I had to drop some money.
887
00:52:02.519 --> 00:52:04.519
So we should get Can on the podcast again.
888
00:52:05.000 --> 00:52:07.760
We should. I'll ping him and see if he wants
889
00:52:07.760 --> 00:52:13.239
to come on. All right, Val, what are your picks?
890
00:52:14.159 --> 00:52:18.119
Yeah, check out Magus Studio, Mangu studio dot app Alicia J.
891
00:52:18.400 --> 00:52:25.519
S Alsos dot com worth worth checking out. Actually it's
892
00:52:25.559 --> 00:52:28.599
in the public chat already. But is the L y
893
00:52:29.159 --> 00:52:33.679
s I a J S dot Okay? Yeah, yeah, that's yeah.
894
00:52:33.960 --> 00:52:35.920
I told you I was going to butcher the pronunciation,
895
00:52:36.039 --> 00:52:39.559
so sorry in advance. I tend to like not listen
896
00:52:39.599 --> 00:52:42.840
to video. I tend to read things so frequently I
897
00:52:43.000 --> 00:52:47.360
read things and I just don't know how sorry about that.
898
00:52:48.480 --> 00:52:50.760
So yeah, that that one. I haven't actually played with
899
00:52:50.800 --> 00:52:53.000
it yet, but it's got some interesting patterns and I
900
00:52:53.039 --> 00:52:57.039
think I'll looking into thinking about especially related to servers
901
00:52:57.280 --> 00:53:01.159
events and then yeah, recently, I've been using to do
902
00:53:01.239 --> 00:53:03.760
list a lot more. I've kind of gone back and
903
00:53:03.800 --> 00:53:07.719
forth on like DIF to do list tools, and I
904
00:53:07.760 --> 00:53:11.280
just keep coming back to this one or specifically for
905
00:53:11.440 --> 00:53:16.960
like personal tasks. So it's it's a great replacement for
906
00:53:17.480 --> 00:53:19.960
just for like having a to do dot t x
907
00:53:20.039 --> 00:53:22.760
T or for having sticky notes or something. So I
908
00:53:22.880 --> 00:53:25.239
like having kind of like three, like a list of
909
00:53:25.280 --> 00:53:27.559
three or four tasks, like these are the important things
910
00:53:27.599 --> 00:53:30.239
I need to get done today. And it can be
911
00:53:30.280 --> 00:53:32.920
work related, it can be just like if I have
912
00:53:33.000 --> 00:53:35.360
Valentine's Day gift for my wife, which is still on
913
00:53:35.400 --> 00:53:38.920
my on my list right now, so you got reminding me.
914
00:53:40.519 --> 00:53:41.000
That one read.
915
00:53:41.159 --> 00:53:44.320
Yeah, just having like a list of things that that
916
00:53:44.360 --> 00:53:46.360
I want to be front center, like these are the
917
00:53:46.400 --> 00:53:49.079
things I need to get done. To do US is
918
00:53:49.119 --> 00:53:51.800
a great way for that because they got, oh they
919
00:53:51.880 --> 00:53:53.760
got a great web app, they got a great mobile app,
920
00:53:54.119 --> 00:53:56.480
and they have a nice, little simple user interface that
921
00:53:56.679 --> 00:53:59.320
encourages you to only have a handful of things on
922
00:53:59.440 --> 00:54:04.000
your list. So it's never going to replace like a
923
00:54:04.039 --> 00:54:08.119
linear
or Gira or something for managing a long backlog task,
924
00:54:08.639 --> 00:54:10.400
but it is a good way to just kind of
925
00:54:10.400 --> 00:54:13.880
have like a quick sticky notes thing for yourself to
926
00:54:14.000 --> 00:54:16.079
keep track of important things.
927
00:54:16.440 --> 00:54:19.199
So are you still doing the mastering JS at all?
928
00:54:19.199 --> 00:54:20.280
I don't think know if I've seen.
929
00:54:20.199 --> 00:54:22.840
Lee in a while, I have been not working on
930
00:54:22.880 --> 00:54:25.599
it as much. Actually, I've been kind of like letting that,
931
00:54:25.960 --> 00:54:29.840
laying that run, because the idea like mastering JS was
932
00:54:29.920 --> 00:54:35.079
kind of more about like get it like a tech
933
00:54:35.119 --> 00:54:38.000
tutorial se O, which is a game that has become
934
00:54:38.360 --> 00:54:41.800
very played out in the post AI era. People don't
935
00:54:41.840 --> 00:54:45.719
go to Google for code questions as much anymore. To
936
00:54:46.079 --> 00:54:53.159
traffic for that website has fallen substantially since the yeah
937
00:54:53.440 --> 00:54:57.960
you saw the if you saw the tailwind stuff, it's
938
00:54:58.039 --> 00:55:01.679
not that fairly similar in the sunset. Yeah, Like with
939
00:55:01.360 --> 00:55:04.559
the traffic to mangus jas dot com and mastering js
940
00:55:04.559 --> 00:55:08.679
dot io pretty much peaked exactly in August September twenty
941
00:55:08.760 --> 00:55:13.760
twenty two, and then it's been at the client sets,
942
00:55:14.800 --> 00:55:19.440
which hasn't affected us that much right now, but we
943
00:55:19.480 --> 00:55:22.840
don't really rely on the ad revenue right there, but
944
00:55:22.880 --> 00:55:25.960
it's definitely been definitely been something that we've noticed in.
945
00:55:25.960 --> 00:55:30.239
The thought about Yeah, interesting that Jeffrey Ray is the
946
00:55:30.280 --> 00:55:32.440
guy that does Leerraic cass He put out a video
947
00:55:32.519 --> 00:55:35.880
here in the past week. We're so talking about that
948
00:55:35.960 --> 00:55:39.039
and the impact that AI has had on his site
949
00:55:40.159 --> 00:55:42.119
in their courses and stuff like that too. It's an
950
00:55:42.119 --> 00:55:43.039
interesting listen.
951
00:55:44.280 --> 00:55:47.880
Yeah, the the impact of AI on our industry is
952
00:55:49.639 --> 00:55:53.960
it's it's gonna be. It's still happening. It's it's huge
953
00:55:54.000 --> 00:55:56.519
so far, and it's gonna keep getting bigger, so we
954
00:55:57.559 --> 00:56:02.480
I honestly, it's somewhat exciting. It's an exciting but somewhat
955
00:56:02.480 --> 00:56:06.719
scary time to be in software engineering because, Aslee, no
956
00:56:06.840 --> 00:56:08.559
idea what our industry is going to look like in
957
00:56:08.599 --> 00:56:11.880
five years. I agree with DH on that, on that assessment.
958
00:56:13.360 --> 00:56:15.679
Yeah, someone who's job hunting right now, I can vouch
959
00:56:15.679 --> 00:56:17.480
for that. It's pretty brutal out there.
960
00:56:18.320 --> 00:56:20.760
Yeah, all right, I've got to jump off. I've got
961
00:56:20.760 --> 00:56:23.159
a work meeting. But thanks for coming, Val.
962
00:56:24.119 --> 00:56:25.920
Yeah, thank you for having me, Chuck, It's always great
963
00:56:25.960 --> 00:56:26.320
to see you.
964
00:56:26.960 --> 00:56:32.880
Yeah, you too, And yeah, until next time, folks. Max
965
00:56:32.880 --> 00:56:33.079
out