1
00:00:14,599 --> 00:00:18,839
All right, what's going on,
y'all? Welcome to another episode of Adventures

2
00:00:18,839 --> 00:00:23,480
in dev Ops. I'm your host
for today, Will Button and joining me

3
00:00:23,719 --> 00:00:28,679
for his second attempt, which is
always exciting because you know, I wasn't

4
00:00:28,679 --> 00:00:31,480
sure he was going to come back. I actually had a job one time

5
00:00:31,559 --> 00:00:36,039
where at the end of my first
day, my boss said, hey,

6
00:00:36,079 --> 00:00:39,679
thanks for showing up. It was
great working with you. Hope to see

7
00:00:39,679 --> 00:00:45,200
you tomorrow, but if not,
enjoy your new laptop. But welcoming back

8
00:00:45,280 --> 00:00:49,200
to the studio my new co host, Warren. Hey, Warren, what's

9
00:00:49,240 --> 00:00:52,880
going on? Oh? Thanks?
Well, you know, I definitely plan

10
00:00:52,960 --> 00:00:58,479
on being here for at least one
more session after this. I think i'll

11
00:00:58,479 --> 00:01:03,079
have I think i'll have, you
know, beat by maybe a couple of

12
00:01:03,159 --> 00:01:06,480
days. But you know, thanks
for welcoming me. Yeah, for sure.

13
00:01:06,599 --> 00:01:11,239
I like that you put a commitment
out there, but not a huge

14
00:01:11,239 --> 00:01:14,799
commitment. You're like, I'll be
here for at least one more episode and

15
00:01:14,840 --> 00:01:18,920
then we'll reevaluate. You know.
I have a whole talk on this,

16
00:01:19,000 --> 00:01:26,760
but I think achievable goals are really
important. Also joining us in the studio

17
00:01:26,879 --> 00:01:33,159
today, I'm looking forward to this. I have Mike Bauer's chief architect at

18
00:01:33,400 --> 00:01:40,040
Faircom Corporation, and he he's got
quite the background here. We were talking

19
00:01:40,079 --> 00:01:45,680
before I hit the record button.
He's actually got a little bit more experienced

20
00:01:45,680 --> 00:01:49,799
in this industry than I do,
which is rare when you get to my

21
00:01:49,959 --> 00:01:55,400
age. So I'm excited about that. He works on high performance no SQL,

22
00:01:55,439 --> 00:02:00,359
SQL databases, IoT platforms. He's
the author of pro cs s and

23
00:02:00,640 --> 00:02:05,400
HTML design patterns and this is super
cool. A member of the i n

24
00:02:05,560 --> 00:02:12,360
C I t S Technical Technical Committee
that develops the standards for SEQL and GQUL

25
00:02:12,719 --> 00:02:16,639
the graph Querry language, and that's
super cool. And then if we have

26
00:02:16,759 --> 00:02:21,879
time, one thing I do want
to get into here, just from looking

27
00:02:21,919 --> 00:02:24,919
at your background. You are the
principal architect at the LDS Church, and

28
00:02:24,960 --> 00:02:30,759
I just think that's got to be
a super cool, fascinating job where you

29
00:02:30,800 --> 00:02:36,759
get like those two industries melding together. But anyway, rambling aside, welcome

30
00:02:36,800 --> 00:02:40,280
Mike, glad to be here.
Yeah, it's it's fun. You guys

31
00:02:40,280 --> 00:02:46,639
are blast already cool. Well,
like I tell my wife, if nothing

32
00:02:46,680 --> 00:02:53,879
else, I'm entertaining, No thanks
for thanks for being on the show.

33
00:02:53,000 --> 00:02:58,280
So let's talk a little bit about
your background. You know, like I

34
00:02:58,280 --> 00:03:02,479
mentioned, you've been doing this for
a a minute or two, and you

35
00:03:02,840 --> 00:03:10,439
you appear to have built a lot
of your expertise in the domain of databases.

36
00:03:10,719 --> 00:03:14,800
So tell me a little bit about
how you got to that point.

37
00:03:15,039 --> 00:03:16,599
Hey, folks, this is Charles
Maxwell. I've been talking to whole bunch

38
00:03:16,599 --> 00:03:22,360
of people that want to update their
resume and find a better job, and

39
00:03:22,479 --> 00:03:24,159
I figure, well, why not
just share my resume. So you if

40
00:03:24,199 --> 00:03:29,919
you go to top endevs dot com
slash resume, enter your name and email

41
00:03:29,960 --> 00:03:32,719
address, then you'll get a copy
of the resume that I use that I've

42
00:03:32,800 --> 00:03:38,439
used through freelancing through most of my
career, as I've kind of refined it

43
00:03:38,479 --> 00:03:42,159
and tweaked it to get me the
jobs that I want. Like I said,

44
00:03:42,199 --> 00:03:46,080
topendevs dot com slash resume, we'll
get you that and you can just

45
00:03:46,120 --> 00:03:50,000
kind of use the formatting. It
comes in word and pages formats and you

46
00:03:50,000 --> 00:03:53,479
can just fill it in from there. Yeah. I started out as a

47
00:03:53,520 --> 00:04:00,280
software developer and did that over twenty
years and had a variety of experience is

48
00:04:00,639 --> 00:04:05,960
writing software for consulting firms, and
then moved into manufacturing and built software solutions

49
00:04:06,080 --> 00:04:11,759
and integrated factories like in the silicon
industry. I wore the buddy suit going

50
00:04:11,759 --> 00:04:15,160
into the fabs, you know,
like the Intel commercial they're dancing that was.

51
00:04:15,480 --> 00:04:17,800
I'm not in the commercial, but
I was in the I was definitely

52
00:04:17,839 --> 00:04:25,040
in the fabs, integrating these expensive
million dollars pieces of equipment and learning all

53
00:04:25,079 --> 00:04:32,319
their protocols. And then from there
I moved into working like at Freightliner and

54
00:04:32,480 --> 00:04:38,040
helping them automate their systems. You
know the sprinter van that everybody gets and

55
00:04:38,360 --> 00:04:42,800
either rebuilds it so they can do
campers out of it, and they're like,

56
00:04:42,800 --> 00:04:46,680
this's the Mercedes van and the Mercedes
Freightliner van. That van has a

57
00:04:46,720 --> 00:04:50,879
computer in it. And I wrote
the program that the compiler and the system

58
00:04:50,920 --> 00:04:58,160
that programs that whole thing. So
that was that was really fun. That's

59
00:04:58,160 --> 00:05:01,959
cool, And that's got to be
some interesting constraints there, just knowing that

60
00:05:03,399 --> 00:05:10,399
once that thing leaves the factory,
you've got limited options for getting updates or

61
00:05:10,399 --> 00:05:13,839
communication to in front it. Right. Oh yeah, you got to take

62
00:05:13,839 --> 00:05:16,279
it back into the service system and
they'll plug it in and then then you

63
00:05:16,319 --> 00:05:21,920
can update it with the new electronic
parameters. But that's actually a real computer

64
00:05:23,120 --> 00:05:28,800
with it's completely The engineer that designed
it wanted it to be one hundred percent

65
00:05:28,839 --> 00:05:31,319
programmable, which is unusual. Usually
you just have these little parameters, turn

66
00:05:31,399 --> 00:05:34,399
on, the heated mirrors, turn
on, you know this other feature.

67
00:05:34,879 --> 00:05:40,199
But he wanted it completely programmable,
and so I had to write a compiler,

68
00:05:40,360 --> 00:05:45,480
a true compiler that compiles down to
buy machine code to program that thing.

69
00:05:46,519 --> 00:05:48,160
That's one of those things that I
feel like you'd be able to look

70
00:05:48,199 --> 00:05:51,480
back later and be like that was
either a really great idea or that was

71
00:05:51,600 --> 00:05:58,319
a really bad idea. Right,
Well, I think the spinner bands still

72
00:05:58,399 --> 00:06:01,399
doing well, so I guess it
was a good idea. But my fear

73
00:06:01,600 --> 00:06:05,480
was, you know, I would
have a bug in there, and people's

74
00:06:05,519 --> 00:06:09,360
lives would be at risk because you
know, if there's a bug, bands

75
00:06:09,399 --> 00:06:14,480
can crash, So that was kind
of scary. But no, it's been

76
00:06:14,560 --> 00:06:18,439
really good. There's the vehicle's great. And it was hard the electrical engineers

77
00:06:18,439 --> 00:06:23,000
who were his peers. I was
in the meetings with them and they were

78
00:06:23,079 --> 00:06:28,519
criticizing him like crazy because they couldn't
understand what he was doing. Because he

79
00:06:28,560 --> 00:06:32,040
made the thing programmable. No one
does that. But he wanted flexibility.

80
00:06:32,040 --> 00:06:34,439
He wanted a system that would last
forever. That you, of course,

81
00:06:34,480 --> 00:06:39,079
if you're programmable, you can then
make it do anything in the future.

82
00:06:39,800 --> 00:06:43,959
And so in the meetings they were
killing the project because no one could understand

83
00:06:43,959 --> 00:06:46,360
it. But I was getting what
he was saying, and I thought,

84
00:06:46,439 --> 00:06:48,040
I can do this. I can
write the competitor to program this thing.

85
00:06:48,680 --> 00:06:53,319
And so he talked to him and
I switched my role from building the system

86
00:06:53,360 --> 00:06:59,000
that the web system that would actually
send down the electronic parameters. I built

87
00:06:59,000 --> 00:07:00,959
most of that already, and then
we switched gears to writing the compiler,

88
00:07:01,000 --> 00:07:03,439
and I spent a year on that
and got that going. So yeah,

89
00:07:03,439 --> 00:07:09,160
I think it was good. Beach
did talk to Freightliner see if they thought

90
00:07:09,199 --> 00:07:13,920
it it's still good. That's a
good question, you know, because they

91
00:07:13,920 --> 00:07:15,319
had to pay another firm to take
over when I left, I was a

92
00:07:15,360 --> 00:07:19,720
consultant, and so that firm has
to maintain it, so we'll see.

93
00:07:20,399 --> 00:07:28,399
I don't know. But then from
there I went to I was watching all

94
00:07:28,519 --> 00:07:32,639
these people that were DBAs making a
lot of money at the time, right

95
00:07:32,680 --> 00:07:36,279
back in the two thousand era,
the DBAs made more money than developers,

96
00:07:36,759 --> 00:07:42,800
and I was also frustrated that Microsoft
had shifted their whole tool set and I

97
00:07:42,800 --> 00:07:46,040
had become an expert in certain tools
and they completely pulled us out from under

98
00:07:46,079 --> 00:07:49,399
me, and I was frustrated,
and I thought, Okay, more money.

99
00:07:49,680 --> 00:07:54,199
I love databases. I love data. So I kind of decided I

100
00:07:54,240 --> 00:07:57,759
wanted to become an Oracle DBA because
they made the most money for sure,

101
00:07:57,800 --> 00:08:03,399
And so then I decided to switch
careers and move into that area. And

102
00:08:03,439 --> 00:08:07,920
then is from there that I got
employed at the Eldis Church. And I

103
00:08:07,959 --> 00:08:13,800
started out as an Oracle DBA and
the person who hired me wanted me to

104
00:08:13,839 --> 00:08:16,360
do that for a little bit and
then become a manager of the team,

105
00:08:16,839 --> 00:08:20,439
and I went from and I did
that, and then I I was a

106
00:08:20,519 --> 00:08:24,439
dB Oracle DBA for about a year
and I managed the Oracle DBA team that

107
00:08:24,519 --> 00:08:30,360
the core team that supported cour teams
with twelve engineers, and we supported over

108
00:08:30,480 --> 00:08:35,519
sixty database engineers, so DBAs south
through organization, we had on thousands of

109
00:08:35,639 --> 00:08:41,440
databases. And then from there I
became the data architect for the entire organization,

110
00:08:41,879 --> 00:08:48,759
which is a multi billion dollar international
organization, so it's very large with

111
00:08:50,440 --> 00:08:58,879
thousands of developers. You think the
church, but it's it's an international organization

112
00:08:58,000 --> 00:09:03,440
that builds lots of software for its
members to do membership like things. Like

113
00:09:03,480 --> 00:09:09,519
one of these systems was an international
banking system because the church brings in tithing

114
00:09:09,639 --> 00:09:16,039
from all over the world and they
need they it's very important to keep this

115
00:09:16,200 --> 00:09:20,960
money safeguarded. Right there is no
international banking system that you can just buy.

116
00:09:22,799 --> 00:09:24,519
You just can't. You know,
that doesn't exist, So we had

117
00:09:24,519 --> 00:09:28,000
to build it. So I was
the lead on the data side for that

118
00:09:28,080 --> 00:09:33,799
whole project to build a brand new
international banking system from the ground up.

119
00:09:33,879 --> 00:09:37,200
So that's the kind of stuff I
did there. And while I was there,

120
00:09:37,240 --> 00:09:41,639
I looked into these no SQL databases, so we brought in everyone you

121
00:09:41,679 --> 00:09:46,759
could think of. This was right
during the whole revolution between the sequel and

122
00:09:46,799 --> 00:09:48,039
the no sequel, and so I
was right in the middle of all that,

123
00:09:48,519 --> 00:09:56,000
and I became an expert in mark
Logic, Mango dB Cassandra, and

124
00:09:56,600 --> 00:10:01,759
then we had a bunch of and
of course the Oracle sequel server and then

125
00:10:01,799 --> 00:10:05,679
mark Logic, which is an XML
database, and so those databases were on

126
00:10:05,679 --> 00:10:11,679
my team, and I was the
architect for helping people decide which databases to

127
00:10:11,799 --> 00:10:16,159
choose. So I became really good
at each of those technologies and supporting them

128
00:10:16,440 --> 00:10:20,279
as a developer. Right as a
developer, why would you choose one of

129
00:10:20,320 --> 00:10:22,559
these databases that I invised the whole
you know, Like I said, we

130
00:10:22,600 --> 00:10:26,840
had a several thousand developers, so
I was advising them on which database do

131
00:10:26,840 --> 00:10:31,559
you want to choose for your next
project? So that was that's where I

132
00:10:31,600 --> 00:10:33,919
became. I went to conferences,
I started presenting a conferences, and that's

133
00:10:33,919 --> 00:10:39,039
where Faircom saw me and they go, well, we want you to become

134
00:10:39,080 --> 00:10:45,559
our chief architect because Faircom builds as
for forty years has built a database product

135
00:10:46,639 --> 00:10:50,200
and they are the Fundamentally, Faircom
is a no SQL database, but it

136
00:10:50,240 --> 00:10:56,879
has SQL capabilities, and they wanted
to make their no SQL features more modern.

137
00:10:56,960 --> 00:11:01,440
They had a forty year old ISAM
technology which is actually amazingly fast and

138
00:11:01,600 --> 00:11:05,759
efficient but very hard to program,
and they wanted to modernize that. So

139
00:11:05,840 --> 00:11:11,240
I was brought on board to turn
Faircom dB into a JSON database and a

140
00:11:11,240 --> 00:11:16,559
SQL database and an M database at
the same time on the same data.

141
00:11:18,639 --> 00:11:22,240
So you could have three APIs that
are completely different on the same data and

142
00:11:22,320 --> 00:11:28,120
give you three advantages like the sequel
as universal standardized works with everything, and

143
00:11:28,879 --> 00:11:31,320
the M is super fast, bare
metal. A record on disc is a

144
00:11:31,399 --> 00:11:35,720
record in memory in your process,
no layers in between. Nothing can beat

145
00:11:35,720 --> 00:11:39,960
the performance of that layer. It's
just you have to program it. You

146
00:11:39,000 --> 00:11:43,480
have a lot of programming to do. And then I added a JSON layer,

147
00:11:43,759 --> 00:11:48,679
so you can create with JSON and
get data back as JSON and it's

148
00:11:48,679 --> 00:11:50,120
the same data we get in SQL, the same data we get in the

149
00:11:50,320 --> 00:11:54,639
ICM. So that's what for the
last five years, that's what I've been

150
00:11:54,639 --> 00:11:58,840
working on, and we're delivering here
in March a brand new version that has

151
00:12:00,039 --> 00:12:05,000
full Jason capabilities like Mango or couch
Base plus these other two layers, which

152
00:12:05,039 --> 00:12:07,120
the other with couch Base has a
SQL plus plus, so they have a

153
00:12:07,120 --> 00:12:13,519
sequel like solution we treat. We
have true ant CI squel solution Faircom does

154
00:12:13,600 --> 00:12:18,080
with the Jason with this low level
API, so when your queries can't get

155
00:12:18,120 --> 00:12:22,159
fast enough, you can go inside
the machine, inside the engine with that

156
00:12:22,240 --> 00:12:28,799
ISM layer and get incredible performance.
And I'm not exaggerating when I say faster

157
00:12:28,000 --> 00:12:31,960
than anything else on the market.
I got a machine doing a million inserts

158
00:12:33,000 --> 00:12:37,840
per second, and Oracle would and
I twoed Oracle database. I built Oracle

159
00:12:37,879 --> 00:12:43,679
exit data replacements at the Ilias Church. I design those and built them faster

160
00:12:43,759 --> 00:12:48,200
than Oracle exit data runs using an
Oracle database. So I know what speed

161
00:12:48,240 --> 00:12:50,320
is and how fast the Oracle can
go. And this blows Oracle away.

162
00:12:52,440 --> 00:12:54,559
It's just the level of programming you
have to do is about four or four

163
00:12:54,799 --> 00:13:01,559
times harder at that ISM layer than
sequel is. So the underlying data is

164
00:13:01,600 --> 00:13:07,240
the same in any case, it's
just you choose which of those three options

165
00:13:07,279 --> 00:13:11,039
you want to use to get the
data exactly. Wow, that's pretty good.

166
00:13:11,080 --> 00:13:16,120
Yeah, so fun. The Jason
is. I love the document database

167
00:13:16,200 --> 00:13:20,639
world. You know, I as
a developer. I was. I was

168
00:13:20,679 --> 00:13:24,480
a developer first before I became a
DBA and before I became a data architect.

169
00:13:24,279 --> 00:13:30,440
So I love building software. I
love doing it quickly, and I

170
00:13:30,519 --> 00:13:33,879
know I don't hate. I hate
to spend days on the low level stuff

171
00:13:33,919 --> 00:13:37,120
twiddling, you know, finding reading
this spec and figuring out okay, well

172
00:13:37,120 --> 00:13:39,960
that bit, oh yeah, that
bit's the one that makes it work.

173
00:13:39,000 --> 00:13:43,840
You know. The Jason changes everything. You get up and running in no

174
00:13:43,000 --> 00:13:48,159
time. You're building solutions so fast. It's so simple, and and it

175
00:13:48,200 --> 00:13:52,799
still has the core engine speed of
our core ISAM. It's just it has

176
00:13:52,840 --> 00:13:58,039
the translation layer tuned from Jason.
So it's fast and it's easy and it's

177
00:13:58,200 --> 00:14:01,919
fun. So yeah, Jason is
one of my favorites, so of course,

178
00:14:01,960 --> 00:14:05,679
but I love SQL. Like I'm
on the Insights Committee, like you

179
00:14:05,720 --> 00:14:09,120
said, I part of the Equal
Standards Group. The sequel is a great

180
00:14:09,200 --> 00:14:13,159
language, and we're enhancing it,
like to do more things. And GQUL

181
00:14:13,279 --> 00:14:18,120
is a graph queer language, right, so we're enhancing that and so those

182
00:14:18,159 --> 00:14:24,000
are so I really am a fan
of those technologies. But it's not It

183
00:14:24,039 --> 00:14:28,639
shouldn't be one game in town.
Your database shouldn't lock you into just I'm

184
00:14:28,639 --> 00:14:31,759
a SQL database, that's all I
do. Or I'm a even stranger,

185
00:14:31,799 --> 00:14:35,080
I'm an ISAM database, which is
what fair Come has been for until the

186
00:14:35,159 --> 00:14:39,480
last until now. And then of
course the Jason is like, well we're

187
00:14:41,120 --> 00:14:43,080
Manga, says well, I'm a
Jason database. That's all I really do.

188
00:14:46,159 --> 00:14:48,960
So yeah, you have the best
of all worlds for sure. Yeah,

189
00:14:48,000 --> 00:14:54,360
because each one has its own strengths
and weaknesses that our gun to one

190
00:14:54,360 --> 00:14:58,919
of those is going to line up
with what you're trying to achieve better and

191
00:14:58,559 --> 00:15:05,440
and that just help shore. It
has the potential to help you build more

192
00:15:05,519 --> 00:15:11,759
quickly and actually focus on what you're
delivering to your customers rather than focusing on

193
00:15:11,879 --> 00:15:18,000
the technology limitations. Yes, you
get that scenario where Okay, I want

194
00:15:18,039 --> 00:15:20,039
SQL for most of my stuff because
I can write those queries fast, I

195
00:15:20,039 --> 00:15:26,440
can join my data, have flexibility. I know I could achieve any kind

196
00:15:26,480 --> 00:15:30,000
of functionality in sequel, it just
may not be super fast. And then

197
00:15:30,039 --> 00:15:33,279
you go, but what about that
one query. There are times when I'm

198
00:15:33,279 --> 00:15:37,000
been in an oracle in that big
banking system I was talking about. We

199
00:15:37,039 --> 00:15:41,919
had a query that ran for two
weeks because they had so many billions and

200
00:15:41,960 --> 00:15:46,679
billions of records turning through them and
making reports. The thing ran for two

201
00:15:46,679 --> 00:15:50,840
weeks, and so I had to
go in there and I write low level

202
00:15:50,919 --> 00:15:54,519
functions to really tune this and that. We spent weeks tuning that query.

203
00:15:54,639 --> 00:15:58,639
Finally we got it to run in
four hours, but it was a massive

204
00:15:58,679 --> 00:16:03,879
effort. And I was thinking about
this. If I would have had the

205
00:16:03,960 --> 00:16:07,480
ISAM engine, that would have been
that would have been a day of work,

206
00:16:07,840 --> 00:16:11,279
and I would had total control and
I would have gotten ten times faster.

207
00:16:11,320 --> 00:16:15,840
It'd have been forty minutes there instead
of forty four hours, you know,

208
00:16:15,279 --> 00:16:18,720
from two weeks. So that's that's
the kind of when you need to

209
00:16:18,759 --> 00:16:22,879
get under into the engine and say, I know how to make this fast.

210
00:16:22,039 --> 00:16:25,919
I know what I need to do. Just get out of my waist.

211
00:16:25,919 --> 00:16:29,840
Sequel, let me do it.
And it's really hard in these SQL

212
00:16:29,919 --> 00:16:33,840
databases to go down there and do
that. So yeah, you use the

213
00:16:33,879 --> 00:16:37,440
right tool for the right job on
the same data makes a big difference.

214
00:16:38,080 --> 00:16:41,039
What I'm hearing is you left the
Oracle world and went to the no sequel

215
00:16:41,080 --> 00:16:48,440
world and it's better. Yes,
well but yeah, that's true. But

216
00:16:48,480 --> 00:16:52,080
I the sequel that does things that
the no squel can't do, and that's

217
00:16:52,120 --> 00:16:57,840
really important. The nosequel world threw
the baby out with the bathwater when they

218
00:16:57,879 --> 00:17:03,879
said we don't need we don't need
acid consistency. Well, actually, I

219
00:17:03,919 --> 00:17:07,839
know the president of Mango dB,
not the current one but the one previous

220
00:17:07,839 --> 00:17:11,079
one, and you know, we've
be met a lot and talked and and

221
00:17:11,079 --> 00:17:14,720
he says, you know, by
the way, don't tell anyone. I

222
00:17:14,759 --> 00:17:18,240
guess. I guess I'm telling everyone
now because he's gone. But they go,

223
00:17:18,799 --> 00:17:21,720
you know, we know we need
to be acid compliant, we know

224
00:17:21,799 --> 00:17:25,160
we need to build. It's just
hard, it's really hard, and it

225
00:17:25,279 --> 00:17:30,359
slows us down, and so we're
just telling everybody you don't need that stuff.

226
00:17:30,920 --> 00:17:34,799
It's eventually consistent. It's awesome,
and it's you know, eventually good

227
00:17:36,920 --> 00:17:41,440
in terms of consistency. But eventual
consistency is a euphemism for never consistent.

228
00:17:41,720 --> 00:17:45,519
And if your data is not consistent, that's not a good thing. It

229
00:17:45,519 --> 00:17:48,079
means you write a lot of code
to compensate. There are some use cases

230
00:17:48,119 --> 00:17:51,160
where it is good, So don't
get me wrong, there are some use

231
00:17:51,200 --> 00:17:55,240
cases eventually consistence perfect. Those are
the exceptions. Most of the time you

232
00:17:55,319 --> 00:17:59,759
need consistent data your customers expect when
they put something into query it and it

233
00:17:59,799 --> 00:18:03,880
comes back. And Mango wrote all
kinds of workarounds to make a lot of

234
00:18:03,920 --> 00:18:07,319
illusions happen. I'm not saying it's
a bad product. I'm just saying that

235
00:18:08,119 --> 00:18:11,960
when you need consistency, it's really
hard to get it in a no SQL

236
00:18:12,039 --> 00:18:17,119
database. Now fair comes different.
We have our engine is at its core

237
00:18:17,240 --> 00:18:21,960
consistent, and then if you want
to relax that and go inconsistent, I'm

238
00:18:21,960 --> 00:18:26,319
going to use the less fun term
inconsistency of less. Is it eventually consistent,

239
00:18:26,960 --> 00:18:30,119
then you can and then you know
your trade offs. So I think

240
00:18:30,119 --> 00:18:32,880
it's good to have an engine that
you really can tune to go where you

241
00:18:32,920 --> 00:18:37,279
needed to go. But the other
thing about seql that they threw out was

242
00:18:37,839 --> 00:18:41,720
the ad hoc query ability, and
the Mango kept a lot of it,

243
00:18:41,759 --> 00:18:45,079
but a lot of other databases threw
that one out, and then they said,

244
00:18:45,119 --> 00:18:48,680
well, we don't need joints.
Well, that's the dumbest thing I've

245
00:18:48,720 --> 00:18:55,279
ever heard. You can't denormalize your
data to put everything that you ever possibly

246
00:18:55,279 --> 00:18:59,720
could to query and put it into
one thing. If you did, you'd

247
00:18:59,720 --> 00:19:03,480
have the tired database in one Jason
document. You know, let's just make

248
00:19:03,519 --> 00:19:04,920
a whole database on one joy and
we could carry the heck out of it

249
00:19:04,960 --> 00:19:07,839
anybody want. Yeah, but that
won't perform you to have a whole database

250
00:19:07,920 --> 00:19:14,680
level locks like Mongo used to have, you know it just you need to

251
00:19:14,720 --> 00:19:18,400
break your data into pieces. You
need customers to be separate from orders because

252
00:19:18,400 --> 00:19:21,920
customers are not orders, and orders
are separate from products because they're not the

253
00:19:22,039 --> 00:19:25,079
same thing, and you need so
you need to break them apart as soon

254
00:19:25,119 --> 00:19:27,720
as you break them apart, then
you have to join them. And so

255
00:19:27,880 --> 00:19:33,880
SEQL is fantastic. It joins,
It has all these great join technologies to

256
00:19:33,960 --> 00:19:37,920
bring the data back together at high
speed, and developers have forgotten that.

257
00:19:37,000 --> 00:19:41,759
They forgot because it's under the hood, it's invisible in the sequel engines.

258
00:19:41,200 --> 00:19:44,480
They just think, oh, yeah, you just go loop through and join

259
00:19:44,519 --> 00:19:47,279
it by hand. You really how
much code you have to write to do

260
00:19:47,319 --> 00:19:49,680
that? And then it's slow because
you don't get the cool algorithms like the

261
00:19:49,759 --> 00:19:53,480
merge join the index, the hash
joins the index, joints, all these

262
00:19:53,519 --> 00:19:59,359
really cool technologies that speed things up
that sequel engines have built in over forty

263
00:19:59,440 --> 00:20:02,359
years of two those things. Developers
don't even know what they are for the

264
00:20:02,400 --> 00:20:07,319
most part, so they don't even
realize what they're missing. And so what

265
00:20:07,440 --> 00:20:11,200
you need it You need SQL for
those kind of things because it's good at

266
00:20:11,240 --> 00:20:15,359
those, but you need no SQL
for other kinds of things like JSON for

267
00:20:15,400 --> 00:20:18,480
the simplicity and development and for the
flexibility. You know, Jason is not

268
00:20:18,599 --> 00:20:23,720
so rigid. You can add new
things as you go, but there's always

269
00:20:23,759 --> 00:20:27,000
a caveat with you add new things
as you go. Let's say you put

270
00:20:27,000 --> 00:20:30,559
them in some documents, some properties
in some documents and leave them out of

271
00:20:30,599 --> 00:20:33,920
others, and you run a query. If the property is not there,

272
00:20:34,039 --> 00:20:38,440
the document doesn't show up. And
now your queries aren't useful because you're not

273
00:20:38,519 --> 00:20:42,920
getting everything. So you need some
schema level protection to Jason and say,

274
00:20:42,960 --> 00:20:45,960
you know, I'm queering on this
property. You better have it there and

275
00:20:47,000 --> 00:20:49,359
you better index it, you know, And so you need It's more than

276
00:20:49,559 --> 00:20:55,240
just let's just throw everything in a
bit bucket and hope it works, which

277
00:20:55,279 --> 00:21:00,400
is how no SQL markets itself.
I can't just do that and expect your

278
00:21:00,440 --> 00:21:03,480
app to work. So that's why
I'm a big passionate person. And it's

279
00:21:03,519 --> 00:21:07,519
not because I work at Faircom.
I came to work at fair Com because

280
00:21:07,559 --> 00:21:11,720
I'm passionate about you need multiple models. You need when you need consistency,

281
00:21:11,759 --> 00:21:15,319
you need it. When you need
less consistency or eventual consistency, you need

282
00:21:15,359 --> 00:21:19,880
it. When you need SQL and
joins, you know you can't get with

283
00:21:19,960 --> 00:21:22,880
that. You need that technology,
and when you need Jason, you need

284
00:21:22,960 --> 00:21:26,480
flexibility, you need it. So
why not have an engine in a model

285
00:21:26,720 --> 00:21:30,759
that can do all of those things? And that's my dream because I wasn't

286
00:21:30,799 --> 00:21:36,160
finding it really anywhere, and when
Faircom recruited me five years ago, this

287
00:21:36,240 --> 00:21:37,240
is what I wanted to build.
I've been wanting to build my own nose

288
00:21:37,240 --> 00:21:41,160
SQL database for the last fifteen years, and so I went, oh,

289
00:21:41,279 --> 00:21:45,400
this is my dream job. I
get to design and build my dream database.

290
00:21:45,920 --> 00:21:51,079
So and releasing the first version of
that database, like I said in

291
00:21:51,160 --> 00:21:56,400
March, so I'm super excited about
that. I'm thinking to like the cloud

292
00:21:56,440 --> 00:22:02,839
providers and what they're offering as far
as no SQL and cloud providers databases and

293
00:22:03,200 --> 00:22:06,519
SQL ones, and I get the
sense that the no sqle ones are always

294
00:22:06,680 --> 00:22:08,920
cheaper and easier to get up and
running and start integreeting with. And I'm

295
00:22:08,960 --> 00:22:15,200
wondering how much that encourages developers around
the board engineering departments, even startup companies

296
00:22:15,240 --> 00:22:22,400
that grow to eventually make them the
primary use case for whatever sort of data

297
00:22:22,440 --> 00:22:26,359
they need to store. And I
keep thinking, well, maybe if we

298
00:22:26,400 --> 00:22:30,599
want SQL to still have a world
like where is the cheap to run,

299
00:22:30,720 --> 00:22:34,119
very very easy to spin up straight
away? Like where is that? Yeah?

300
00:22:34,640 --> 00:22:38,519
Yeah, and Oracle is the most
complicated, hard to learn technology ever

301
00:22:38,599 --> 00:22:44,359
invented in the universe. I'm not
exaggerating that. You know, single servers

302
00:22:44,400 --> 00:22:47,440
easy, you know, Microsoft SQL
servers a beautiful easy piece of cake.

303
00:22:47,480 --> 00:22:51,160
And Postcress is kind of in between
Oracle and siql server because it's some source

304
00:22:51,200 --> 00:22:55,079
and they have all these PhD students
at Berkeley just adding new features and it's

305
00:22:55,119 --> 00:22:57,960
ad hoc and it's not reorganized as
well. So Postcress has is harder than

306
00:22:59,000 --> 00:23:03,200
SQL server. Oracle though, is
just a nightmare. I've never seen things

307
00:23:03,240 --> 00:23:07,279
so complicated. So, yeah,
where is the easy SQL database that you

308
00:23:07,279 --> 00:23:08,559
could just stand up in the cloud? I mean, you could argue SQL

309
00:23:08,599 --> 00:23:14,599
server might be that database, but
then what about the no sequel? Right

310
00:23:14,599 --> 00:23:19,240
that the no SQL databases are so
specialized with a few exceptions, Like you

311
00:23:19,279 --> 00:23:26,839
take Amazon they have there, they
have Dynamo dB, and Dynamo dB is

312
00:23:26,920 --> 00:23:30,920
really a key value store that it's
all about the key. You can have

313
00:23:30,279 --> 00:23:37,160
a hierarchical key, and you can
if you can segment your key properly,

314
00:23:37,240 --> 00:23:41,799
you can query down inside your key
and get subsets of data. You can

315
00:23:41,880 --> 00:23:45,799
have secondary indexes, but that's really
just another database under the hood with with

316
00:23:45,880 --> 00:23:49,640
doubling your cost for every secondary index, and you know, by the time

317
00:23:49,680 --> 00:23:52,160
you look at really doing that for
real, Like, you know, how

318
00:23:52,160 --> 00:23:56,079
many indexes do I have a real
database like a Oracle or single server.

319
00:23:56,359 --> 00:24:00,599
I have thousands of indexes in a
real application. Well let's see to imagine

320
00:24:00,599 --> 00:24:03,920
the cost of at a thousand copies
of my data in Dynamo dB just to

321
00:24:03,960 --> 00:24:07,599
try to do the same kind of
thing. It's just ridiculous. So Dynamo

322
00:24:07,680 --> 00:24:12,680
dB is a good example in my
mind, of a specialized database that's good

323
00:24:12,799 --> 00:24:17,640
for certain use cases like use your
profiles. If you want to get use

324
00:24:17,640 --> 00:24:21,680
your profile data fast and you want
guaranteed response times. I want to look

325
00:24:21,759 --> 00:24:23,759
up Warren, I want to get
your data app Boom, it's there.

326
00:24:23,799 --> 00:24:27,680
You know it will boom it's there. So that's Dynamo dB. That's why

327
00:24:27,680 --> 00:24:32,400
they admitted it for their own Amazon
dot Com. You know, it's good

328
00:24:32,400 --> 00:24:34,640
for those use cases. But that's
not what you build an app on.

329
00:24:36,039 --> 00:24:38,799
I need an app that needs to
grow with the company. I have yet

330
00:24:38,880 --> 00:24:41,319
to see an app that said,
oh yeah, here's the specs. They're

331
00:24:41,319 --> 00:24:45,319
perfect. You build it in six
months, will never change, it will

332
00:24:45,400 --> 00:24:48,680
never evolve it, We'll never have
another use case. You know, it's

333
00:24:48,759 --> 00:24:52,000
you know, the exact opposite right, you're tweaking that thing forever and you

334
00:24:52,039 --> 00:24:53,519
go. Then the customer comes back, Oh, I didn't think about this.

335
00:24:55,400 --> 00:24:57,039
How do you get customer? I
want to go around a career that

336
00:24:57,079 --> 00:25:00,799
gives me all the customers that made
these orders, where the customers were over

337
00:25:00,880 --> 00:25:04,640
forty years old, and the products
were oreos, and the orders are made

338
00:25:04,720 --> 00:25:07,119
last month, and you got to
join that data together and you got to

339
00:25:07,160 --> 00:25:11,039
filter those three take those three pieces
of data and bring it all together in

340
00:25:11,079 --> 00:25:15,599
a filtered way. And you're like, uh, I can't do that in

341
00:25:15,680 --> 00:25:19,519
Dynamo dB. I didn't. I
didn't denormalize my data properly to answer that

342
00:25:19,640 --> 00:25:23,799
question. Sorry, let me go
copy all my data and then put it

343
00:25:23,839 --> 00:25:29,920
over here and that other specialized database. And now the customers do this.

344
00:25:29,960 --> 00:25:33,200
I teams do this. Like there's
a one of our customers built a cloud

345
00:25:33,200 --> 00:25:37,839
solution. They had five database technologies
in Amazon that they thought this would be

346
00:25:37,839 --> 00:25:42,160
great. We'll use these specialized databases
and we'll build each one. We'll spread

347
00:25:42,200 --> 00:25:47,319
the data across them. The cost
of that application is so high no one

348
00:25:47,359 --> 00:25:52,400
will buy it. So their product
uses fair Com and it's super fast.

349
00:25:52,799 --> 00:25:56,599
The cloud version with all these databases
is way slower, so expensive, no

350
00:25:56,640 --> 00:26:00,039
one will buy it. They're they're
looking at putting Faircom in the cloud cloud

351
00:26:00,160 --> 00:26:04,079
just to run their product in the
cloud because you don't have the complexity or

352
00:26:04,519 --> 00:26:10,400
they and the costs is so simple
and inexpensive. So yeah, I think

353
00:26:10,440 --> 00:26:14,039
it's important to keep all those things
in mind when you build a product.

354
00:26:14,119 --> 00:26:17,880
Complexity is your enemy, and that's
what the cloud makes you do. It's

355
00:26:18,160 --> 00:26:22,160
complex solutions. I'm not anti cloud. I'm just saying the cloud, the

356
00:26:22,200 --> 00:26:26,079
salesman and the cloud wants you to
buy five databases. They want you to

357
00:26:26,119 --> 00:26:30,759
spend up all this because they make
a fortune off of you and they don't

358
00:26:30,799 --> 00:26:34,240
and they think that's the way to
go because it it's their financial you know,

359
00:26:34,279 --> 00:26:38,279
it makes them rich, so it's
great for them. But yeah,

360
00:26:38,319 --> 00:26:44,599
and not only do you have like
the cost of maintaining those five instances,

361
00:26:45,079 --> 00:26:51,160
but like the the ETL and the
data transformation for replicating that data is not

362
00:26:51,440 --> 00:26:55,039
a trivial task. You know,
you have to hold the data, make

363
00:26:55,039 --> 00:26:59,599
sure you're getting the last the correct
data and making the right transformations to it,

364
00:26:59,640 --> 00:27:03,599
and then writing it to that new
data source and verifying that it's there.

365
00:27:03,720 --> 00:27:10,559
And like the the maintenance and overhead
of just keeping that process alive is

366
00:27:10,640 --> 00:27:15,359
a dedicated team. It is just
to write it. But then I love

367
00:27:15,400 --> 00:27:18,920
the DevOps angle. The dedicated team
to keeping that alive is people are so

368
00:27:19,039 --> 00:27:22,160
expensive. You know, you don't
want to hire me to go build your

369
00:27:22,200 --> 00:27:26,000
systems, and as you're gonna put
me on a very productive environment because I'm

370
00:27:26,559 --> 00:27:30,640
super expensive. And now you're going
to say, now, Mike, you're

371
00:27:30,200 --> 00:27:36,359
you are in DevOps. You need
to keep this complex five database system alive.

372
00:27:36,680 --> 00:27:40,160
I think of all the break points. You've got network connections between five

373
00:27:40,200 --> 00:27:44,559
different systems. Each of those systems, typically in the cloud, is sharded,

374
00:27:44,839 --> 00:27:48,920
so it scales horizontally. That means
multiple servers in each database that have

375
00:27:48,000 --> 00:27:51,400
to be kept running. And you
say, well, Amazona will do all

376
00:27:51,440 --> 00:27:53,240
that for me, Well they do, and they don't. They keep it

377
00:27:53,319 --> 00:27:57,079
up, they patch it for you. But making it work, troubleshooting the

378
00:27:57,079 --> 00:28:02,640
problems in your application across all the
systems, oh, DevOps the developer can

379
00:28:02,680 --> 00:28:04,359
do all that. Well. The
last thing I want to do is a

380
00:28:04,400 --> 00:28:08,640
developer, is maintain infrastructure. Is
I don't want to support that stuff.

381
00:28:10,279 --> 00:28:11,680
I want to throw it over the
wall and let those guys do it.

382
00:28:12,039 --> 00:28:17,200
But now nope, DevOps developer,
you are on call. You're gonna go

383
00:28:17,279 --> 00:28:18,759
fix it. You're going to go
maintain it. And that's we're going to

384
00:28:18,799 --> 00:28:22,759
do that to you because we want
you to build a simple, maintainable solution.

385
00:28:22,400 --> 00:28:26,799
That's not possible in the cloud unless
you switch your paradigm to something like

386
00:28:26,839 --> 00:28:30,559
a Aircom database where you say I'm
going to do I'm going to get a

387
00:28:30,559 --> 00:28:34,480
tool that gives me the it's not
just a Swiss Army knie because it gives

388
00:28:34,480 --> 00:28:37,039
you the wrong idea. It's like
a bunch of tools. It's like,

389
00:28:38,160 --> 00:28:42,440
we don't even have the right analogy. It's three APIs over the same engine.

390
00:28:44,279 --> 00:28:48,720
It's not like three hammers like cosmocbs
is five hammers. There are if

391
00:28:48,839 --> 00:28:53,640
you think you're buying five one one
database engine with five APIs. No,

392
00:28:53,839 --> 00:28:56,839
every time you put data in one
of those engines, like there're no SEQL

393
00:28:56,880 --> 00:29:02,480
engine or their SEQL engine, it's
completely separate engine with the data separate.

394
00:29:02,920 --> 00:29:06,079
It's a marketing gimmick to say it's
one database. No, it's a bunch

395
00:29:06,119 --> 00:29:11,000
of different databases or your data spread
out all over the place. So having

396
00:29:11,039 --> 00:29:15,559
a real database with multiple APIs on
it is. It's sort of like a

397
00:29:15,559 --> 00:29:17,880
Swiss Armony knife. You get the
best of all the above, but it's

398
00:29:17,920 --> 00:29:22,519
one engine, which Swiss Armon Knife's
not that way, you know. So

399
00:29:22,799 --> 00:29:33,599
it's a bad analogy. But so
you know you mentioned earlier that earlier in

400
00:29:33,640 --> 00:29:38,599
your career, like the DBA was
the the highest paid member in engineering,

401
00:29:38,599 --> 00:29:42,200
and I remember those days. Everyone
wanted to be a DBA and the DBAs

402
00:29:42,759 --> 00:29:49,400
had this almost limitless power. They
could stop a production release and its tracks

403
00:29:51,000 --> 00:29:53,200
and not tell you when they're going
to release it, and the entire company

404
00:29:53,319 --> 00:29:56,839
was like, oh, well,
okay, you know, but they did

405
00:29:56,880 --> 00:30:00,119
a lot of work. You know, they did add value because they they

406
00:30:00,119 --> 00:30:04,119
were answering and designing for a lot
of these problems we've been talking about so

407
00:30:04,319 --> 00:30:10,279
far. But when I look around
today, I don't see DBAs anymore.

408
00:30:10,319 --> 00:30:11,920
And I know that there are still
some out there and some companies still have

409
00:30:12,039 --> 00:30:17,920
them, but for the most part, there are no DBAs, but those

410
00:30:18,000 --> 00:30:23,279
problems still exist. So what are
the what are the things that as DevOps

411
00:30:23,279 --> 00:30:29,440
and as software developers, what are
the things that we should be thinking about,

412
00:30:29,680 --> 00:30:33,960
or what are like the high level
thumb rules we should be using to

413
00:30:33,240 --> 00:30:40,480
avoid making us really wish we had
hired DBAs. Yeah, I think that

414
00:30:40,599 --> 00:30:45,960
no sequel moment was really the no
DBA movement at this right, I totally

415
00:30:47,000 --> 00:30:51,680
get it because when I was at
Freightliner, we had a DBA. This

416
00:30:51,759 --> 00:30:56,960
person she was the how I would
say, she's the Nazi DBA. I

417
00:30:56,960 --> 00:30:59,839
mean, it was just a nightmare. You try to go and you give

418
00:30:59,880 --> 00:31:03,240
her your schema and she goes,
nope, nope, nope, go fix

419
00:31:03,279 --> 00:31:07,279
it. What do you want when
you make it right, I'll approve it.

420
00:31:07,599 --> 00:31:10,440
Well, why do you when you
make it right? Like see,

421
00:31:10,519 --> 00:31:11,839
then you go, well, what
is right to you? Because right that

422
00:31:11,920 --> 00:31:15,720
because it was right to me,
you know, So I go tweak it

423
00:31:15,720 --> 00:31:18,839
again. Finally, at one point
I said, you know what, she's

424
00:31:18,880 --> 00:31:22,599
disapproving every single thing I'm doing.
And I know I'm not doing a bad

425
00:31:22,680 --> 00:31:25,839
job here. I know the rules
of normalization, I know all this stuff,

426
00:31:25,880 --> 00:31:27,720
and I had normalized it beautifully and
I also tuned it for performance.

427
00:31:29,079 --> 00:31:33,000
And then she got Then I realized, you know what she is wanting simple.

428
00:31:33,359 --> 00:31:36,799
She wants one bulletproof schema that will
work for any kind of data,

429
00:31:36,839 --> 00:31:38,000
anywhere, at any time, and
I'm like, I know how to do

430
00:31:38,039 --> 00:31:42,160
this. I'm going to build a
database within a database. So I designed

431
00:31:42,240 --> 00:31:47,039
five tables that if you use it
just right, you can put any data

432
00:31:47,160 --> 00:31:51,319
without ever calling her again. I
showed this model to her and she goes

433
00:31:51,680 --> 00:31:56,200
perfect approved because I would never have
to go back to her again, and

434
00:31:56,240 --> 00:31:59,359
she didn't have to talk to me
again. And it was like, this

435
00:31:59,480 --> 00:32:02,640
is the but this most horrible thing
ever created. This is the anti pattern

436
00:32:02,680 --> 00:32:06,720
of all data designs. So yeah, so this is an example of why

437
00:32:06,759 --> 00:32:12,119
developers like, Okay, this is
a dumb DBA creating really bad designs,

438
00:32:12,799 --> 00:32:15,759
fall breaking all the rules because she
doesn't know any better, and and it

439
00:32:15,799 --> 00:32:20,279
was really sad. But that's the
kind of stuff like I'm free now,

440
00:32:20,519 --> 00:32:22,480
I don't have I'm a developer.
I can just build my app. No

441
00:32:22,599 --> 00:32:27,359
DBA to get in my way.
But to your point, we lost a

442
00:32:27,400 --> 00:32:30,759
lot of things. For one,
the developer lost a DBA to take the

443
00:32:30,799 --> 00:32:37,079
heat because the DBA sits between infrastructure
and the developer, and the first thing

444
00:32:37,119 --> 00:32:39,880
an app has a problem, the
developer just points to the DBA as your

445
00:32:39,880 --> 00:32:44,079
fault. They always do that,
and then DBA points to infrastructure. It's

446
00:32:44,119 --> 00:32:46,960
your fault, right, and so
it's usually it is infrastructure's fault because they

447
00:32:47,000 --> 00:32:51,519
have storage goes out or some network
thing went wrong. But sometimes it's the

448
00:32:51,599 --> 00:32:53,759
database, and a lot of times
it's the app itself, you know.

449
00:32:53,839 --> 00:32:58,400
So it's it could be anywhere,
but the DBA is right in the middle.

450
00:32:58,559 --> 00:33:01,160
You take the DBA away to what
happens to developers on the hook for

451
00:33:01,200 --> 00:33:06,720
everything except for the infrastructure, and
the infrastructure guys are worse than DBAs to

452
00:33:06,759 --> 00:33:08,920
do it. It's not my storage
system. I don't have any problems.

453
00:33:09,759 --> 00:33:15,119
I had a one time it was
I had. I had so many storage

454
00:33:15,119 --> 00:33:19,319
problems at one place I was working
that we had to hire ten thousand dollars

455
00:33:19,359 --> 00:33:22,279
per consultant to come in and run
in scripts on the system to prove it

456
00:33:22,359 --> 00:33:25,599
was the storage rate because the storage
r egg. I kept saying, no,

457
00:33:25,680 --> 00:33:29,559
it's not my problem. I knew
it was the storage. So we

458
00:33:29,680 --> 00:33:32,160
paid ten thousand dollars to prove it
was a storage to get the problem fixed,

459
00:33:32,599 --> 00:33:37,200
to get to get our solution built. So yeah, now the developer

460
00:33:37,200 --> 00:33:39,599
has to do that. The developer
doesn't even know what I ops are.

461
00:33:40,039 --> 00:33:44,240
The developer doesn't even know what latency
is. I mean, how in the

462
00:33:44,279 --> 00:33:47,319
heck are you supposed to get a
developer even talk the lingo of the infrastructure

463
00:33:47,359 --> 00:33:51,759
folks to figure out a problem.
So you take the DBA away, You're

464
00:33:52,079 --> 00:33:55,640
you're asking for all kinds of headaches
and problems. And then there's data.

465
00:33:57,240 --> 00:34:04,240
Data requires some structure, it requires
some forethought, and a developer lives in

466
00:34:04,240 --> 00:34:07,079
the now. It says, how
can I get this feature out the door

467
00:34:07,200 --> 00:34:09,480
today? How can I crank this
code out as fast as possible? Let

468
00:34:09,559 --> 00:34:15,000
QA get the bugs out? You
know, Well, that last thing they

469
00:34:15,039 --> 00:34:19,679
want to think about is how do
I structure my data to survive the test

470
00:34:19,719 --> 00:34:22,480
of time? Is my application ages
I'm going to I'm going to really have

471
00:34:22,519 --> 00:34:27,920
to rewrite everything if I don't design
this data well a good DBA. A

472
00:34:27,960 --> 00:34:31,400
good DBA not the one that a
head of Fredeliner would come back and say,

473
00:34:31,519 --> 00:34:37,039
how do how do we make it
bulletproof? But not overdesigned? You

474
00:34:37,079 --> 00:34:40,400
know, it's that sweet spot.
And then most developers don't understand that,

475
00:34:40,599 --> 00:34:44,639
and so they just crank it out, and then they're rewriting and rewriting and

476
00:34:44,639 --> 00:34:49,440
rewriting. Their companies pay a fortune
for these developers to rewrite it. Because

477
00:34:49,440 --> 00:34:53,400
they didn't have forethought and so,
and Agile just makes that worse because Agile

478
00:34:53,480 --> 00:34:57,039
is like crank the teacher out this
week, our sprint's done, get it

479
00:34:57,039 --> 00:35:00,280
out the door, show the demo, show the UI. Absolutely, the

480
00:35:00,400 --> 00:35:04,360
uh I doesn't have the data structure
and it so no one sees that or

481
00:35:04,400 --> 00:35:07,760
cares about it. Now, before
the Agile people get angry at me,

482
00:35:07,760 --> 00:35:10,039
they would say, well, that's
not true agile, and I agree with

483
00:35:10,079 --> 00:35:14,480
them, except for every company I've
worked for that does agile, doesn't do

484
00:35:14,559 --> 00:35:15,920
true agile. They do what I
just said, crank it out, get

485
00:35:15,920 --> 00:35:22,599
it out the door, show the
UI. So there's reality here. Yeah.

486
00:35:22,679 --> 00:35:30,320
I think if the excuse is is
always well that's not the pure implementation

487
00:35:30,400 --> 00:35:35,239
we designed, then maybe maybe that's
a problem with the purity of your design.

488
00:35:36,239 --> 00:35:42,039
Yeah exactly, Yeah, yeah right, I'm just you know, I

489
00:35:42,159 --> 00:35:45,679
keep going on with my head like
I wonder if something regarding how we treat

490
00:35:45,719 --> 00:35:51,800
databases today and the separation of ownership
maybe in this regard, has devofs failed

491
00:35:51,880 --> 00:35:55,960
us. Yeah. I think we
need balance again. I think Agile and

492
00:35:57,000 --> 00:36:00,920
DevOps and some of these new and
then no Squl trends which threw the DBA

493
00:36:01,039 --> 00:36:06,880
out with the bathwater. You know, I think that is went too far.

494
00:36:07,079 --> 00:36:09,199
I think I'm not And in fact, some companies are bringing back debas

495
00:36:09,239 --> 00:36:14,719
for some database like Mango, DBA
and Cassandra are so hard to maintain they

496
00:36:14,800 --> 00:36:17,360
hire full time people. They don't
call them DBAs as much, but they're

497
00:36:17,480 --> 00:36:22,559
administrators to keep the system running because
Mango is pretty hard to keep running,

498
00:36:22,559 --> 00:36:25,360
and so is Cassandra. In fact, my last job, we hired a

499
00:36:25,400 --> 00:36:31,239
full time person just to reboot the
Cassandra database every week because and it's not

500
00:36:31,320 --> 00:36:35,719
just the database is a whole bunch
of servers. By the way, Cassandra

501
00:36:35,800 --> 00:36:38,079
is super expensive. If you're going
to go down to the cass you better

502
00:36:38,119 --> 00:36:42,519
really know what you're doing. Because
that's my least favorite database of all time

503
00:36:42,840 --> 00:36:45,599
for because it dev ops as a
nightmare in it and it's so complicated to

504
00:36:45,639 --> 00:36:49,519
design. It takes you ten times
longer to build anything because you have to

505
00:36:49,559 --> 00:36:53,760
denormalize everything because you can only query
data in one table, so or you

506
00:36:53,840 --> 00:36:59,320
have multiple tables. They're white column
tables. But if you can't join so

507
00:36:59,480 --> 00:37:02,719
you're basically saying all my possible careers
I could ever do have to match one

508
00:37:02,800 --> 00:37:07,800
table and you and you you know, we just talked about that earlier.

509
00:37:07,880 --> 00:37:09,880
You have to join, but because
you can't at Cassandra, you do you

510
00:37:10,360 --> 00:37:15,519
just it drives you crazy. It
took us five years to build an application

511
00:37:15,559 --> 00:37:17,239
that you could have built in six
months in some of the night fair com

512
00:37:17,320 --> 00:37:22,079
dB because Cassandra's limitations and in that
database, we had a hard just to

513
00:37:22,119 --> 00:37:25,599
reboot all these servers in the cluster
once a week. He just his job

514
00:37:25,719 --> 00:37:28,679
was to write, you know,
run these scripts to reboot them, make

515
00:37:28,679 --> 00:37:31,559
sure they came back up. And
nothing went down on that overall cluster database,

516
00:37:31,599 --> 00:37:36,360
but the servers themselves were going down
and back up because Java has garbage

517
00:37:36,360 --> 00:37:40,719
collection and casoder's written in Java,
and so when that hits your database performance

518
00:37:42,159 --> 00:37:45,039
just takes so you have to you
have to reboot the server to clear out

519
00:37:45,039 --> 00:37:49,719
the Java Java, the garbage collection
engineer Java, just to make the thing

520
00:37:49,800 --> 00:37:52,000
run. So I was like,
oh my gosh. You know, that's

521
00:37:52,039 --> 00:37:57,519
why there's so much marketing high ground
no sequel, which is the promise of

522
00:37:57,559 --> 00:38:01,679
a developer owns their world. Well, when you own the world, like

523
00:38:01,760 --> 00:38:05,400
you're saying, Warren, you know, it's kind of the death of DevOps

524
00:38:05,400 --> 00:38:08,880
because developers don't want to be that
involved in the ops side, in the

525
00:38:08,880 --> 00:38:15,400
administration side of anything, and so
they don't and it's pulling teeth to get

526
00:38:15,440 --> 00:38:21,480
them involved. So yeah, I
think it's a real problem for DevOps to

527
00:38:21,480 --> 00:38:24,880
not have database specialists. So like
we have front end in the developer where

528
00:38:24,880 --> 00:38:29,840
we have frontend specialists and back in
specialists, your back in specialists are now

529
00:38:29,920 --> 00:38:34,519
the DBAs they need or really know
your data. So I think I think

530
00:38:34,519 --> 00:38:37,840
that's good too, but you got
to realize your back in specialists really need

531
00:38:37,880 --> 00:38:42,480
to know your data engine and think
about data and if you do that,

532
00:38:42,639 --> 00:38:45,280
I think you're going to be fine
as a company. And then the front

533
00:38:45,360 --> 00:38:47,639
end guys will never do DevOps because
they're just the front end app. So

534
00:38:47,679 --> 00:38:53,159
the back end you're backing engineers are
your DBAs, they're your DevOps people.

535
00:38:53,800 --> 00:39:00,360
So hire data savvy back in engineers
and you'll be fine as a companycause they'll

536
00:39:00,360 --> 00:39:02,880
make good decisions. I feel like
this is a hot tag, but maybe

537
00:39:02,920 --> 00:39:07,960
it's if we're always using a database
where we need to hire an additional person

538
00:39:08,039 --> 00:39:12,920
in order to figure out and run
it effectively. Has that database technology failed

539
00:39:13,000 --> 00:39:15,400
us? Like no one to be
using Cassandra, if it really is true

540
00:39:15,400 --> 00:39:19,599
that we have to hire people to
manage that. And I feel like the

541
00:39:19,639 --> 00:39:22,920
promise of the no squel, as
you pointed out, is that you can

542
00:39:22,039 --> 00:39:28,159
have the usage of those databases by
engineers and run them without hiring an additional

543
00:39:28,199 --> 00:39:30,719
person. I mean, how do
we rectify that in the world where we

544
00:39:30,800 --> 00:39:37,039
stop using these technologies where you have
to hire a DBA or whatever the new

545
00:39:37,119 --> 00:39:42,239
term is system administrator for our database
type, Because as long as we have

546
00:39:42,320 --> 00:39:44,840
them, people are going to keep
falling to the trap of maybe we can

547
00:39:44,960 --> 00:39:47,719
use that database of what it promises
on the marketing website, but then find

548
00:39:47,719 --> 00:39:52,519
out later that we need to hire
a really high paid specialist in order to

549
00:39:52,559 --> 00:39:55,760
come in in order to actually utilize
the technology effectively. Yeah, I think

550
00:39:57,199 --> 00:40:00,000
I think that's what the whole no
sequel moment was about. Was more high

551
00:40:00,639 --> 00:40:06,079
you know, they were it's a
good thing to compete with SQLQ SQL databases

552
00:40:06,079 --> 00:40:10,719
were kind of sitting on their laurels, not innovating enough in real ways that

553
00:40:10,719 --> 00:40:15,119
that developers need. So no SQL
was great and is great for that,

554
00:40:15,840 --> 00:40:21,679
but it doesn't you can't hide the
reality that work needs to be done.

555
00:40:21,760 --> 00:40:23,800
In fact, I had a really
wise engineer once told me, you know,

556
00:40:23,920 --> 00:40:27,760
it doesn't matter where you put the
work in a software project. The

557
00:40:27,840 --> 00:40:30,920
work needs to be done. So
if you move all the work to the

558
00:40:30,960 --> 00:40:34,159
developer, great, but make sure
that you're going to have to have specialized

559
00:40:34,199 --> 00:40:37,719
developers who know how to do the
work. The work doesn't The data is

560
00:40:37,760 --> 00:40:40,519
hard. You have to think about
co locating data. You have to think

561
00:40:40,559 --> 00:40:44,840
about do I run the code on
a separate server or on the database server,

562
00:40:44,920 --> 00:40:47,079
because if it's a batch job or
bulk processing job, the code has

563
00:40:47,119 --> 00:40:52,320
to run near the data because network
latency and network throughput is going to kill

564
00:40:52,320 --> 00:40:54,039
you. By moving the need to
off the server somewhere else and bringing it

565
00:40:54,079 --> 00:41:00,199
back. You need to run the
code on the server. So there's these

566
00:41:00,239 --> 00:41:06,159
specialists who know how data works,
and you can pretend, oh, yeah,

567
00:41:06,239 --> 00:41:07,719
we got rid of that. And
that's what the no sequel movement did

568
00:41:08,239 --> 00:41:13,360
in the and the and the in
Mango is the most successful of all of

569
00:41:13,360 --> 00:41:16,840
them, fifth most popular database in
the world. Now, by pretending that

570
00:41:17,079 --> 00:41:22,400
these problems don't exist and the developers
is fully in charge, it's a brilliant

571
00:41:22,599 --> 00:41:28,719
marketing play. Totally brilliant but the
reality is now the developer is the DBA,

572
00:41:29,400 --> 00:41:31,679
so and that that work didn't go
away, And as a developer,

573
00:41:31,719 --> 00:41:37,679
did you really want to be the
DBA. That's that's the question you have

574
00:41:37,679 --> 00:41:40,039
to ask yourself. If you're back
in engine, if you're back in developer,

575
00:41:40,440 --> 00:41:45,000
now you're the hated DBA because you're
gonna build a web service and the

576
00:41:45,039 --> 00:41:45,880
friend of the guys is going to
give you this year and go, no,

577
00:41:46,239 --> 00:41:49,480
I've got to refracture my data.
That's not going to work for me,

578
00:41:50,320 --> 00:41:52,760
and then then they're gonna hate you. So then there'll be a revolution

579
00:41:52,840 --> 00:41:55,800
against the back end engineer. It's
all fronting the engineers. I don't know,

580
00:41:55,800 --> 00:42:00,840
I'm joking on that, but it
could happen. I don't mean it's

581
00:42:00,880 --> 00:42:04,320
a bit ridiculous, but actually there
are plenty of products out there that claim

582
00:42:04,400 --> 00:42:07,280
that they are back ends as a
service and from some company that is offering

583
00:42:07,320 --> 00:42:12,199
this and you don't have to worry
about how your data even looks like or

584
00:42:12,239 --> 00:42:15,119
anything like. You just throw data
at us and we'll store it and do

585
00:42:15,199 --> 00:42:17,320
the right thing. And I think
the same probably can be said of all

586
00:42:17,360 --> 00:42:22,079
of those products as well. Right, totally, totally their work has to

587
00:42:22,119 --> 00:42:25,199
be done. Somebody has to think
about data and the structure and where you're

588
00:42:25,199 --> 00:42:31,480
going to process it. And it's
a specialty. So figure out where as

589
00:42:31,519 --> 00:42:35,559
an organization, figure out where you
want to be. I don't think no,

590
00:42:35,679 --> 00:42:37,559
I don't think SEQL databases are dead
by any means, and I don't

591
00:42:37,559 --> 00:42:42,599
think the DBA for those are dead. I think we just need this.

592
00:42:42,760 --> 00:42:46,760
Seql is innovating and they're embracing Jason
a little more. The secret databases.

593
00:42:46,800 --> 00:42:52,119
Do you have Jason support? Postgress
is the best at Jason support, and

594
00:42:52,159 --> 00:42:57,280
that's why it's becoming really popular.
But you could choose a kitchen sink database

595
00:42:57,360 --> 00:43:00,920
like Postgress or Oracle, which has
everything you can imagine in it, but

596
00:43:00,960 --> 00:43:05,639
none of them are really awesome except
for the sqel engine. Or you could

597
00:43:05,679 --> 00:43:10,079
choose especially database like Mango that's really
good at JSON technically Bison, you know,

598
00:43:10,159 --> 00:43:15,320
but then it and then but that's
not really good at the joining of

599
00:43:15,400 --> 00:43:19,880
data. So there's not there's really
no perfect solution out there yet. That's

600
00:43:19,920 --> 00:43:22,880
why I'm working at Faircom because my
goal is to build the right solution.

601
00:43:23,239 --> 00:43:27,400
And to your point, that's point
warrant about. People just want a service.

602
00:43:27,760 --> 00:43:30,960
Right, that the data layer moved
from a seqel layer, which traps

603
00:43:31,000 --> 00:43:37,000
the data behind SQL, the SQL
career language, to a web service layer,

604
00:43:37,000 --> 00:43:39,840
which frees the data in JSON.
Right. So well, with fair

605
00:43:39,840 --> 00:43:43,679
coom dB, we have the seql
air, we have the ISAM layer,

606
00:43:43,679 --> 00:43:45,519
which we need super speed, but
now we have the Jason layer, and

607
00:43:45,639 --> 00:43:51,960
it is the Jason layer is the
service. It's it's over HTTP. So

608
00:43:52,039 --> 00:43:57,039
you just send JSON requests over HTTP
and then you get answers back and the

609
00:43:57,119 --> 00:44:00,440
JSON and the answer comes back to
JSON. So your data is Jason,

610
00:44:00,599 --> 00:44:05,199
your query's or Jason. Everything's Jason. And it is a web service over

611
00:44:05,480 --> 00:44:09,800
Https. So we provide that now
and we and and like you said,

612
00:44:09,800 --> 00:44:13,639
everybody says, well now we need
to transform the data. We need to

613
00:44:13,639 --> 00:44:16,800
reshape the Jason. So that's the
next phase we're building here at Faircom is

614
00:44:16,840 --> 00:44:23,199
that is the VA JavaScript engine into
our product to do all those fancy transforms

615
00:44:23,239 --> 00:44:27,000
on the server side, so you
get the data shape to the way you

616
00:44:27,079 --> 00:44:30,360
need it. But that doesn't even
though that's to me, that's a game

617
00:44:30,440 --> 00:44:35,920
changer and and and potentially it could
even replace a lot of back end development

618
00:44:37,480 --> 00:44:40,119
because we are a web service as
well, But that doesn't mean it replaces

619
00:44:40,159 --> 00:44:46,320
all of the back end development just
really simplifies their efforts. But you you

620
00:44:46,400 --> 00:44:51,159
still need to think about data.
That doesn't change the fact you've got to

621
00:44:51,199 --> 00:44:54,719
think like a DBA, a developer
DBA. Where you're where you are thinking

622
00:44:54,719 --> 00:44:58,960
about our architecture DBA, How should
the data be data? How should we

623
00:44:59,039 --> 00:45:01,519
organize the data? How shoul to
be model the data? So we could

624
00:45:01,519 --> 00:45:07,159
build an application that can survive the
test of time. Maybe eighty percent of

625
00:45:07,199 --> 00:45:10,400
the time. You'll never get one
hundred percent, but eighty percent is pretty

626
00:45:10,400 --> 00:45:13,960
awesome. But if you use something
like if you don't do any of it,

627
00:45:14,000 --> 00:45:15,639
you're gonna be surviving twenty percent of
the time on your current design and

628
00:45:15,719 --> 00:45:21,440
rewriting eighty percent of the time,
and your company is as a developer,

629
00:45:21,440 --> 00:45:25,360
it's great job security, and developers
actually think about those things. Oh yeah,

630
00:45:25,360 --> 00:45:30,159
this is great, I'll be employed
here forever, you know, but

631
00:45:30,960 --> 00:45:32,760
it's not good for the company.
So any manager listening to this to really

632
00:45:32,800 --> 00:45:38,800
pay attention that developers are protecting themselves
by cranking out stuff fast and they know

633
00:45:38,840 --> 00:45:42,599
they have to rewrite it and they're
going to job security is there, and

634
00:45:42,599 --> 00:45:45,599
you're paying them the biggest bucks now
to do all of that, you should

635
00:45:45,840 --> 00:45:52,920
think really carefully about data design and
cutting, you know, really reducing costs.

636
00:45:53,480 --> 00:45:57,480
Hey, there, this is Charles
Maxwood. I'm excited because I wanted

637
00:45:57,480 --> 00:46:00,039
to let you know about this thing
that I pulled together that I had just

638
00:46:00,360 --> 00:46:05,440
I've been dying to have this for
years and I never felt like I could,

639
00:46:05,719 --> 00:46:07,119
and then I just realized that there's
no reason why I can't. So

640
00:46:07,480 --> 00:46:12,039
I'm putting together a book club and
we're going to read development focused books,

641
00:46:12,199 --> 00:46:15,760
career books, you know, technical
books, whatever. The first book that

642
00:46:15,760 --> 00:46:20,159
we're going to do is going to
be Clean Architecture by Uncle Bob Martin.

643
00:46:20,320 --> 00:46:22,719
If you're not familiar with clean code
or some of the other stuff that Bob

644
00:46:22,760 --> 00:46:25,239
has done, check that out.
I've also talked to him on the Clean

645
00:46:25,280 --> 00:46:30,000
Coders podcast, which is on top
end Devs. But yeah, we're going

646
00:46:30,079 --> 00:46:31,119
to get on. He's going to
show up to some of our meetings,

647
00:46:31,320 --> 00:46:36,119
and what I'm thinking is we'll probably
have like five or six people part of

648
00:46:36,159 --> 00:46:39,239
the conversation along with Bob and I
at the same time, and we'll just

649
00:46:39,679 --> 00:46:44,280
so somebody can come on, they
can ask their question and then we'll just

650
00:46:44,679 --> 00:46:47,679
rotate people through, so we'll mute
one person, unmute another person when it's

651
00:46:47,719 --> 00:46:52,480
their turn to come on and be
part of the discussion. So we'll do

652
00:46:52,559 --> 00:46:53,760
that for like an hour, hour
and a half. And then the other

653
00:46:53,800 --> 00:46:58,159
part of it that I'm putting together
is just kind of a meet and greet

654
00:46:58,239 --> 00:47:04,679
gather area on Gathered and so after
the meetup and the call, we we'll

655
00:47:04,679 --> 00:47:07,800
do as we'll all go over to
gather town and you can just log in,

656
00:47:07,880 --> 00:47:10,119
walk up to a group and have
a conversation, and that way we

657
00:47:10,119 --> 00:47:15,039
can all kind of get to know
each other and make friends and get to

658
00:47:15,039 --> 00:47:17,079
know people across the world. One
thing that I'm finding is that, yeah,

659
00:47:17,119 --> 00:47:20,719
the meetups are starting to come back, but a lot of people don't

660
00:47:20,719 --> 00:47:22,480
have the opportunity to go to a
meetup. And I really want to meet

661
00:47:22,480 --> 00:47:24,920
you guys and talk to you.
So we're gonna put all that together.

662
00:47:25,000 --> 00:47:28,559
We'll all be part of that book
club. You can go to topendevs dot

663
00:47:28,599 --> 00:47:30,719
com slash book Club to be part
of it, and I'm looking forward to

664
00:47:30,760 --> 00:47:36,159
seeing you there. The first book
club meeting will be in December, the

665
00:47:36,239 --> 00:47:39,800
beginning of December, we're starting the
first week of December, and you'll also

666
00:47:39,840 --> 00:47:44,440
be part of the conversation about which
book we do next. I have one

667
00:47:44,440 --> 00:47:46,480
in mind, but I want to
see where everybody's at. So there you

668
00:47:46,519 --> 00:47:52,360
go for sure they're doing Yeah,
they're doing exactly what you've asked them to

669
00:47:52,400 --> 00:47:58,280
do. Yeah, yeah, exactly. So I want to get your opinion

670
00:47:58,320 --> 00:48:02,719
on this because to me, whenever
a lot of the companies I've worked with,

671
00:48:04,159 --> 00:48:08,119
you know, they're spending fifty sixty
one hundred thousand dollars a month on

672
00:48:08,719 --> 00:48:16,599
Looker and Snowflake, and not for
the visualization part of those tools, but

673
00:48:16,679 --> 00:48:22,840
for the ETL transformation. That's where
all the money gets spent. And to

674
00:48:22,960 --> 00:48:28,440
me, that's not a product.
That's a symptom of not having your database

675
00:48:28,760 --> 00:48:32,000
design well thought out to serve your
business. What are your thoughts on that?

676
00:48:32,719 --> 00:48:37,239
Yeah, well, it may be
a symptom of not thinking it through

677
00:48:37,360 --> 00:48:42,280
for sure, right, and it
also may be a symptom of specialization.

678
00:48:42,559 --> 00:48:45,679
So and when you write an online
transaction application and you're trying to service transactions

679
00:48:45,679 --> 00:48:51,360
with low latency, right, you're
going to design your data model and optimize

680
00:48:51,400 --> 00:48:55,519
it for that use case. That's
the exact opposite of the opposite optimization you

681
00:48:55,599 --> 00:49:00,000
have to do for a data warehouse. A data warehouse, you're going to

682
00:49:00,639 --> 00:49:02,840
completely design it a different way.
You're going to go into I like the

683
00:49:02,920 --> 00:49:08,400
Kimball model. There's two major warehousing
philosophies Inman and Kimball, and Kimball is

684
00:49:08,599 --> 00:49:15,440
more practical. Kimball says, denormalize
your data into a fact table and dimensions.

685
00:49:15,119 --> 00:49:20,159
And basically what you're doing is you're
saying, you asked the question what

686
00:49:20,519 --> 00:49:23,719
questions will our users ask? What
answers do they need from our data?

687
00:49:23,880 --> 00:49:29,480
And so you build those answers into
the dimensions that we build the filters for

688
00:49:29,559 --> 00:49:31,119
the answers and the dimensions, and
then you put the facts in the fact

689
00:49:31,119 --> 00:49:34,639
table. So the facts could be
like the order costs. You know,

690
00:49:34,840 --> 00:49:37,920
if you're ordering a product, what
was the order cost? The dimensions are

691
00:49:37,119 --> 00:49:39,840
when did you order it, who
ordered it, where do they live?

692
00:49:40,000 --> 00:49:44,000
What time? All these all these
you know, who win, what where,

693
00:49:44,079 --> 00:49:49,599
why how dimensions surrounding the fact table. You would never build a transaction

694
00:49:49,679 --> 00:49:53,159
system of doing that because you're you'd
be super duper slow. So what happens

695
00:49:53,239 --> 00:49:58,519
is you have to take the data
out of your transaction system and then etil

696
00:49:58,559 --> 00:50:01,679
it over or e lt O over
to your your data warehouse, which could

697
00:50:01,679 --> 00:50:06,639
be Snowflake or red Shift, or
it could be Oracle Exit Data. Now

698
00:50:06,679 --> 00:50:08,960
there's all kinds of warehouse products out
there, and and that's the one one

699
00:50:09,280 --> 00:50:13,280
my roles at the LDS Church was
the data architect. We had one hundred

700
00:50:13,320 --> 00:50:17,280
person b I t that I was
the architect for so I have hands on

701
00:50:17,360 --> 00:50:22,280
experience with all this and these We
had one hundred engineers pulling data out of

702
00:50:22,360 --> 00:50:30,840
these transactional databases, restructuring them to
answer queries that the end the business users

703
00:50:30,880 --> 00:50:35,119
have so to make to write a
database that can answer queries in a timey

704
00:50:35,239 --> 00:50:38,760
fashion for a business user, you
have to restructure the data. So it's

705
00:50:38,800 --> 00:50:44,760
actually it's a problem of optimization.
It's but it's it's not it's not a

706
00:50:44,760 --> 00:50:50,840
bad optimization. It's that you're optimizing
transactions for their things. Gardener, optimizing

707
00:50:50,920 --> 00:50:55,039
for two different use cases. Yeah, and that's and that's okay. Gardner.

708
00:50:55,039 --> 00:50:59,280
For a while, there was promoting
this hybrid model where you'd have your

709
00:50:59,280 --> 00:51:05,519
operational and you're analytical in the same
database. And the dream was you'd put

710
00:51:06,000 --> 00:51:08,920
you you'd optimize your data for transactional
in the SEQUL side of the database,

711
00:51:08,920 --> 00:51:15,880
but then you'd have in memory column
stores. So use your your Calumn technology

712
00:51:15,880 --> 00:51:20,280
instead of road based transactional, you'd
switch it to column based in memory,

713
00:51:20,559 --> 00:51:23,840
and then you have a Calumner view
of your road data, but the columns

714
00:51:23,840 --> 00:51:30,400
in memory. So then you can
create the Calumner data sort of like Kimball's

715
00:51:30,440 --> 00:51:35,480
model of facts and dimensions, but
you really have But that doesn't. The

716
00:51:35,559 --> 00:51:38,079
Kimball model works only when you ask, ay, what are the questions our

717
00:51:38,159 --> 00:51:43,360
customers you're asking, and then you
organize the data to answer those questions.

718
00:51:43,519 --> 00:51:45,840
Think of it this way, Kimball
says, I'm going to pre define my

719
00:51:45,920 --> 00:51:49,039
reports as data, so all you
have to do is just I want this

720
00:51:49,079 --> 00:51:51,599
on my report, this report.
You're just selecting I want this, this,

721
00:51:51,639 --> 00:51:54,440
and this this on my report done
well. You're not going to take

722
00:51:54,440 --> 00:51:59,480
a transactional system and put it in
a Columner store in memory and expect that

723
00:51:59,559 --> 00:52:04,559
to perform well because you're not tuning
it to answer the exact questions your users

724
00:52:04,599 --> 00:52:07,719
have. So it's more fantasy than
reality to say I can have a database

725
00:52:07,800 --> 00:52:15,360
do everything without data modeling. Gotcha, But could you simplify the process of

726
00:52:15,360 --> 00:52:21,320
getting data to those data warehouses because
ETL is about is about getting the data

727
00:52:21,440 --> 00:52:25,559
extracting it, and that actually is
harder than you think. The E part

728
00:52:25,880 --> 00:52:30,320
is one of the hardest parts.
The transforming part is pretty straightforward once you

729
00:52:30,360 --> 00:52:32,559
know what you want, and then
the loading it is super easy. So

730
00:52:34,079 --> 00:52:37,119
the E part is where the problem
is. So if you can get the

731
00:52:37,239 --> 00:52:40,840
data, if you can get a
database to automatically extract this data for you

732
00:52:40,880 --> 00:52:45,880
and push it where it needs to
go, then the solution becomes way better.

733
00:52:46,440 --> 00:52:51,800
So I build a system at Faircom
to do that because I know this

734
00:52:51,880 --> 00:52:54,840
problem and I wanted to solve it, and so we build a what we

735
00:52:54,880 --> 00:52:59,000
call it dB Notify, and what
it does is every time there's a change

736
00:52:59,039 --> 00:53:04,920
in the source system, we automatically
send a JSON message over and our We

737
00:53:04,960 --> 00:53:07,960
have an MPTT broker product as well, so it's a high it's a mission

738
00:53:07,960 --> 00:53:13,119
critical MPTTT broker, so it's a
message que broker. So we what we

739
00:53:13,199 --> 00:53:16,159
do is every time a data change
occurs in the database, we send a

740
00:53:16,239 --> 00:53:22,119
Jason message over our message broker,
which guarantees delivery and and I guarantees delivery

741
00:53:22,199 --> 00:53:25,480
wants, because you you've got to
have that guaranteed in order to get your

742
00:53:25,519 --> 00:53:30,760
data somewhere reliably. Of course.
Yeah. So then and then any system,

743
00:53:30,920 --> 00:53:34,519
whether it's a Java program putting it
into a cash, whether it's a

744
00:53:34,519 --> 00:53:39,800
SQL database retrieving you know, for
warehousing, can can subscribe to these messages

745
00:53:40,199 --> 00:53:45,320
and get the data automatically. So
the e part, the hard e part

746
00:53:45,360 --> 00:53:47,679
of extracting the data goes away,
and you just simply say give me Jason

747
00:53:49,280 --> 00:53:52,440
and and the data just flows and
you have Jason and now with a JSON

748
00:53:53,119 --> 00:54:00,280
you can you can now manage the
the T and the L trivially. Yeah,

749
00:54:00,320 --> 00:54:02,239
because there is a huge trouble that
actually a lot of companies, I

750
00:54:02,239 --> 00:54:06,559
feel like, run into where they
have a lot of individual teams with each

751
00:54:06,599 --> 00:54:10,199
of their own databases, and then
they overinvest in setting up a complex technology

752
00:54:10,559 --> 00:54:16,400
like Kofka to varying messages from those
individual databases to align it and push it

753
00:54:16,440 --> 00:54:22,280
into whatever their data warehouse is.
Coff is a great example what Kafka's advantage

754
00:54:22,280 --> 00:54:27,840
is, It's like it's like a
combination of a message que plus a log,

755
00:54:28,360 --> 00:54:31,280
right, so you can so you
can query the message log and see

756
00:54:31,320 --> 00:54:35,119
everything that's happened, and it's distributed
to at scales and all that. But

757
00:54:35,159 --> 00:54:37,159
it's complicated, hard to use and
all that. Well, what I did

758
00:54:37,199 --> 00:54:40,440
is I looked at that and I
said, no way, can't it be

759
00:54:40,639 --> 00:54:45,000
simple? So I said, what
is the simplest message queue technology on the

760
00:54:45,000 --> 00:54:50,280
market as a protocol. And the
answer is MQTT. It's it's because taking

761
00:54:50,320 --> 00:54:54,679
over a MQP, because a MQP
is complicated as the Advanced Message q protocol

762
00:54:54,920 --> 00:54:59,880
and that's used in Rabbit, mqqubit
and other products and active mq it's a

763
00:55:00,239 --> 00:55:05,079
technology, it's just complicated. M
qtt's taken over the IoT world by storm

764
00:55:05,159 --> 00:55:08,159
because it's simple. You can embed
it in a little device, a little

765
00:55:08,199 --> 00:55:12,079
sensor, you can, you can
put it in big machines and it's it

766
00:55:12,519 --> 00:55:15,480
truly pushes data sou as an event
happens, it pushes it to all the

767
00:55:15,519 --> 00:55:19,679
subscribers. All the subscribers get it. It's super easy to use. So

768
00:55:20,639 --> 00:55:24,480
we took m QTT and then we
said, Hakka Kafka has a log,

769
00:55:24,559 --> 00:55:30,119
but it's not really a queriable log, but the logs that secret sauce because

770
00:55:30,119 --> 00:55:35,119
it's it's like a streaming serve event
server with a with a log on disc.

771
00:55:35,559 --> 00:55:38,159
So we took the fair Comm database, edit it to our own message,

772
00:55:38,199 --> 00:55:43,199
que MPTT broker, merge the two
together. They're one thing. Added

773
00:55:43,239 --> 00:55:45,760
a transform feature to it so we
could transform the data on the way in

774
00:55:45,880 --> 00:55:49,920
and on the way out of that
thing. And now you have a full

775
00:55:50,280 --> 00:55:55,239
data integration platform that does et L
super easily, and I like Cofka,

776
00:55:55,440 --> 00:56:00,719
you can go back and query all
the changes. But now it's Seql database.

777
00:56:00,760 --> 00:56:04,400
Number of Faircom has the sequel,
the JSON and the ICE and layers,

778
00:56:04,599 --> 00:56:07,480
so you can get the data out
through Seql queries. You can get

779
00:56:07,480 --> 00:56:09,679
the data out. You see,
can queer your transaction log or your log

780
00:56:09,719 --> 00:56:15,880
of events, your event log with
Seql or with JSON, and it's queriable

781
00:56:15,960 --> 00:56:19,199
and filterable on the flight and you
can index parts of it. And so

782
00:56:19,320 --> 00:56:22,599
you have a real time not real
time is but a very near time dynamic

783
00:56:22,840 --> 00:56:28,000
dynamic query system on top of Kafka. Imagine if you could have Kafka with

784
00:56:28,039 --> 00:56:30,760
a real database instead of was just
a static log that you could query and

785
00:56:30,800 --> 00:56:36,280
filter and you have real time push
events through PGT. That's what we built

786
00:56:37,000 --> 00:56:45,159
a broker. So many words there
that I just get triggered on. I

787
00:56:45,199 --> 00:56:50,239
can't. Sorry, I'm just geeking
out here because I just love this stuff.

788
00:56:51,679 --> 00:56:55,199
You said something really interesting a little
while ago about basically needing to hire

789
00:56:55,199 --> 00:56:59,159
a DBA specialist, and I'm trying
to figure out, like you know,

790
00:56:59,320 --> 00:57:02,760
I'm if you have a company or
were under twenty people like that still feels

791
00:57:02,800 --> 00:57:07,199
too early. But if you don't
hire them early enough, then you end

792
00:57:07,239 --> 00:57:08,719
up with a lot of the problems
you talked about. So like when when

793
00:57:08,760 --> 00:57:12,639
in your view do you actually mean
it's not at three people? Right?

794
00:57:13,280 --> 00:57:15,000
Maybe that's yours, that's what you
were suggesting. It's like, oh,

795
00:57:15,079 --> 00:57:19,159
yeah, you know one of your
first few engineers, like after your founding

796
00:57:19,199 --> 00:57:22,000
engineer, you need to have some
sort of database specialist. What do you

797
00:57:22,000 --> 00:57:24,880
think? Yeah, I think you
need to have a data expert. Now

798
00:57:24,880 --> 00:57:30,599
if they are your back end engineer
who's a data but truly data expert understands

799
00:57:30,440 --> 00:57:36,679
how the long term implications of data
design not so obsessed that they stop production.

800
00:57:36,760 --> 00:57:38,440
That's what the other old school DBAs
did, Right, you can't do

801
00:57:38,559 --> 00:57:44,320
anything. You can't touch my database. And the hard part is you've got

802
00:57:44,320 --> 00:57:47,920
to hire a person who really knows
what they're doing, because like Freightliner hired

803
00:57:49,320 --> 00:57:53,320
this one czar that was blocking everything
and making bad decisions. Right, So

804
00:57:53,840 --> 00:57:58,760
you've got to It's hard because you
have to know enough about data to hire

805
00:57:58,800 --> 00:58:01,360
the right person. But it could
be a back end engineer, it could

806
00:58:01,400 --> 00:58:06,159
be a that's what it probably would
recommend these days. Instead of hiring a

807
00:58:06,239 --> 00:58:09,440
DBA, hire a back end engineer
who specializes in a number of data technologies.

808
00:58:09,480 --> 00:58:14,199
And on their resume they can demonstrate
or an interview, they demonstrate to

809
00:58:14,239 --> 00:58:19,320
you scenarios where they designed the data
one way using this technology and it caused

810
00:58:19,360 --> 00:58:22,280
them problems. They designed it another
way and another technology caused them problems.

811
00:58:22,679 --> 00:58:25,000
They or they didn't design at all
and it caused them problems. And they

812
00:58:25,000 --> 00:58:29,079
can tell you what those problems are. And they learned their lessons from the

813
00:58:29,079 --> 00:58:30,239
school of hard knocks, and then
they can say, you know what,

814
00:58:30,519 --> 00:58:34,239
I'm not going to do that ever
again. We're gonna up front, we're

815
00:58:34,280 --> 00:58:37,159
gonna we're gonna be practical. We're
not going to over engineer, over design

816
00:58:37,159 --> 00:58:40,280
because you'll never get out the door. But we're gonna we're going to protect

817
00:58:40,360 --> 00:58:45,000
you eighty percent of the time from
those problems that you're going to have and

818
00:58:45,480 --> 00:58:52,559
if he could demonstrate that through experience, then you've got a winner. Okay,

819
00:58:52,840 --> 00:58:57,239
that's good advice. You know,
I'm actually thinking down that path,

820
00:58:57,280 --> 00:59:00,760
like there must be aspiring uh,
you know database administrators out there, uh,

821
00:59:00,960 --> 00:59:04,760
and they want to hear like,
well, you know what, what's

822
00:59:04,760 --> 00:59:07,320
the first thing to go down this
path? Right? You know, how

823
00:59:07,360 --> 00:59:14,719
do I learn more about becoming the
database specialist back end for a burning company?

824
00:59:14,760 --> 00:59:16,880
You know what? What do I
need to know realistically? Yeah?

825
00:59:16,920 --> 00:59:21,320
And I and I think there has
been a market shift, a good one

826
00:59:21,519 --> 00:59:25,880
from there's another DBA. There's a
DBA is you know, stands for several

827
00:59:25,880 --> 00:59:32,400
things database administrator, database architect,
and then there's developer DBAs they're all lumped

828
00:59:32,400 --> 00:59:38,559
together in DBAH. The administrator person
is the one that I'm glad that we're

829
00:59:38,559 --> 00:59:43,280
shifting away from. I think it's
the cloud is removed a lot of the

830
00:59:43,320 --> 00:59:45,480
need for that low level back up
your database. I used to Actually in

831
00:59:45,480 --> 00:59:49,679
the cloud, you have to configure
your own backups, but the technology to

832
00:59:49,719 --> 00:59:53,119
do it, the cloud provides upgrades. You don't have to do the upgrades.

833
00:59:53,119 --> 00:59:57,679
The cloud do the upgrades for you. So that's good. So the

834
00:59:57,679 --> 01:00:00,159
cloud is now if you if you
get a aviation product that does this for

835
01:00:00,239 --> 01:00:02,960
you, or you go into the
cloud like the fair Com does this for

836
01:00:04,079 --> 01:00:07,519
you. We don't require DBA in
our product, but we can run on

837
01:00:07,599 --> 01:00:12,960
premise or the cloud. But not
Oracle requires a DBA just to just to

838
01:00:13,039 --> 01:00:16,360
keep it up and running. So
getting an Oracle Cloud instance of Oracle would

839
01:00:16,360 --> 01:00:19,840
be good for you because you're going
to save a ton of money and the

840
01:00:19,920 --> 01:00:22,679
trivial stuff you don't want to.
So if I, if I give recommendation

841
01:00:22,800 --> 01:00:28,559
for a newbie, don't become the
administrator that is just knows how to run

842
01:00:28,599 --> 01:00:32,679
the script that the books said to
run to back up the database. That

843
01:00:32,800 --> 01:00:37,199
kind of administrator is not the value
add and that and that's the kind they're

844
01:00:37,199 --> 01:00:40,119
having to add like Mango and Cassandra. You have to hire those kind of

845
01:00:40,159 --> 01:00:45,760
administrators because that's the systems are so
poorty designed. You got to got to

846
01:00:45,800 --> 01:00:47,119
have a local level guy just to
keep it lights wrong. But that's a

847
01:00:47,159 --> 01:00:52,559
dead end career. The value is
in the data, so the data arket,

848
01:00:53,000 --> 01:00:57,960
the dB architect, the guy who
So you're back in a minute,

849
01:00:57,960 --> 01:01:01,639
you're back in developer who really understands
how to architect the data so that your

850
01:01:01,639 --> 01:01:08,559
application will perform well and grow well
over time. That's that's gold. And

851
01:01:08,679 --> 01:01:12,639
so if you have a mind to
do that, you have to have kind

852
01:01:12,639 --> 01:01:15,719
of a mathematical mind. I don't
mean you have to like coakyas or something.

853
01:01:15,760 --> 01:01:19,000
I just mean you have to have
a very logical mind. Then you

854
01:01:19,039 --> 01:01:22,400
have to look at things logically and
systematically and understand practically. You have to

855
01:01:22,400 --> 01:01:25,920
be practical. You have to say, Okay, this technology does X,

856
01:01:27,320 --> 01:01:30,639
if I do if I do X
with this technology, I'll be successful.

857
01:01:30,639 --> 01:01:32,119
But I know I need a little
bit of why over here to make the

858
01:01:32,440 --> 01:01:37,519
to grow the system. How can
I how can I make this X system

859
01:01:37,559 --> 01:01:40,199
do why? I need a multipurpose
system so I can do X and Y,

860
01:01:42,119 --> 01:01:44,559
but it needs to do both well. You know, you have to

861
01:01:44,599 --> 01:01:50,159
make a lot of decisions. And
that's where a really experience. So if

862
01:01:50,199 --> 01:01:53,159
you hire a good back inagy with
like thirty years of experience, twenty years

863
01:01:53,159 --> 01:01:57,679
of experience with lots of data work, you're you're going to be in good

864
01:01:57,719 --> 01:02:01,079
shape. So don't skimp on that
back end engineer who does these data architecture.

865
01:02:01,079 --> 01:02:04,559
That's going to be gold for you
in the long run, as long

866
01:02:04,599 --> 01:02:06,800
as they have a good personality,
as long as they're not like the no

867
01:02:07,320 --> 01:02:12,679
guy. Don't hire those guys.
They'll block your whole company and you'll die.

868
01:02:14,119 --> 01:02:16,880
They need to be the yes guy
who says yes but think about this

869
01:02:16,960 --> 01:02:20,880
and this and this, and I
will help you achieve the goal. I

870
01:02:20,920 --> 01:02:23,440
will overcome the problems. I won't
just be no. We'll solve this together.

871
01:02:23,719 --> 01:02:27,360
No. I think that's pretty good
spot on advice, irrelevant of the

872
01:02:28,039 --> 01:02:31,599
special specialty that someone would normally go
into, Like I think, relevant of

873
01:02:31,679 --> 01:02:38,880
whether it's databases or UI's or other
back end services, graft culi databases,

874
01:02:38,920 --> 01:02:43,280
you know, whatever, whatever have
you. Actually, you know, this

875
01:02:43,400 --> 01:02:47,320
really got me thinking. And I've
dabbled in a bunch of different database technologies

876
01:02:47,320 --> 01:02:50,480
over the years, and one thing
that keeps coming up for me, and

877
01:02:50,519 --> 01:02:53,320
maybe this is specific because I always
pay attention to security, is it just

878
01:02:53,320 --> 01:03:00,000
feels like security plus databases is like
oil and water. Yeah. Well,

879
01:03:00,199 --> 01:03:06,400
first off, it's super hard.
I think that's why because because you're your

880
01:03:06,519 --> 01:03:10,599
data is the thing you're protecting the
most that you are protecting its intrusion.

881
01:03:10,719 --> 01:03:14,840
So that's where you know front hackers
can get into a system. But what

882
01:03:14,880 --> 01:03:16,239
are the hackers trying to do when
they get in, Well, they're going

883
01:03:16,280 --> 01:03:20,079
to either encrypt your data and ransom
you, or they're going to encrypt your

884
01:03:20,119 --> 01:03:22,119
data and steal it. And of
course what are all the breaches about data?

885
01:03:22,239 --> 01:03:24,840
Right, So you've got to encrypt
your data at rest, you got

886
01:03:24,920 --> 01:03:29,719
encrypted at transit. You've got to
prevent the injection attacks to give you backdoors

887
01:03:29,760 --> 01:03:35,119
into the database. So then take
it over. Security. A good database

888
01:03:35,159 --> 01:03:40,239
product, security should be number one
in the APIs and in the system.

889
01:03:40,280 --> 01:03:46,320
It should be secure by default.
Oracle has a common password that has been

890
01:03:46,679 --> 01:03:49,800
that's well known. I'm not going
to say it because I don't want to

891
01:03:49,800 --> 01:03:52,599
promote this, but you know,
and half your dba's in the world don't

892
01:03:52,719 --> 01:03:58,960
change it it is. You know. Sometimes these are more administrative DBAs and

893
01:03:59,000 --> 01:04:00,679
just run the scripts as if.
They drive me crazy because they don't know

894
01:04:00,719 --> 01:04:05,960
what they're doing and and and they
don't make it secure, so they don't

895
01:04:06,039 --> 01:04:09,960
change things. I had. I
remember one database we stalled. I stalled

896
01:04:09,960 --> 01:04:14,679
this database product over fifteen years ago
at at this organization, and they kept

897
01:04:14,679 --> 01:04:18,440
the same password I used in that
database for fifteen years. Finally, I

898
01:04:18,480 --> 01:04:21,519
think it was just a year ago
they finally changed it. I'm like,

899
01:04:23,119 --> 01:04:26,800
really, I left that company five
years ago and you're still using my password.

900
01:04:26,840 --> 01:04:29,400
My son works there now, and
so I actually happened to know.

901
01:04:29,880 --> 01:04:31,360
I got a job on my old
team and happened to know they actually never

902
01:04:31,440 --> 01:04:35,199
changed it when I left it.
I'm trustworthy of but it was a good

903
01:04:35,199 --> 01:04:40,679
password. But still, so this
is the Yeah, you're worried it will

904
01:04:40,679 --> 01:04:43,079
break something, right if you change
the password, you know, production will

905
01:04:43,079 --> 01:04:45,719
go down. So I really should
be careful. Someone could be using that,

906
01:04:45,840 --> 01:04:47,719
you know, in a way that
wasn't intended. Totally true, and

907
01:04:47,719 --> 01:04:50,519
then the DBAs are lazy. Everybody's
lazy, right, So, like I

908
01:04:50,679 --> 01:04:57,719
memorized this stupid, horrible password,
I'm never changing this one. But yeah,

909
01:04:57,960 --> 01:05:00,920
right, we rotate passwords in apike
every time the Roman Empire falls.

910
01:05:02,800 --> 01:05:09,800
Well, you know what's good that
the updated nest whatever eight hundred is now

911
01:05:10,079 --> 01:05:14,840
no longer, suggesting that rotation actually
prevents a certain category of attacks, because

912
01:05:15,320 --> 01:05:18,159
the need to rotate means people will
forget and have to write it down.

913
01:05:18,280 --> 01:05:23,599
So now, luckily now there is
written documentation that may suggest that even doing

914
01:05:23,679 --> 01:05:28,519
so doesn't have a positive long term
impact. Yeah, and password managers are

915
01:05:28,559 --> 01:05:32,079
super huge. Get one that does
crypto random passwords. You'll never remember it.

916
01:05:32,559 --> 01:05:35,360
You don't write it down because it's
in your password manager and you just

917
01:05:35,559 --> 01:05:42,000
use it. And another thing that's
a really cool trick that the older databases

918
01:05:42,079 --> 01:05:45,039
did not do. Because they didn't
they wasn't well known at the time,

919
01:05:45,719 --> 01:05:49,559
was how do you encrypt data at
risk? Well, they all can encrypt

920
01:05:49,599 --> 01:05:53,599
it, they can use as standards
and they can encrypt at risk. But

921
01:05:53,639 --> 01:05:57,920
where do you put the keys?
That's the big question. And the model

922
01:05:57,920 --> 01:06:02,800
that I love the most is you
have a master key that encrypts all the

923
01:06:02,880 --> 01:06:08,360
keys that encrypt everything else. So
that level of indirection is awesome because the

924
01:06:08,360 --> 01:06:14,239
customer can can change the master key
when they need to. The database is

925
01:06:14,320 --> 01:06:19,000
constant. A good one, a
good back of database will automatically rotate it's

926
01:06:19,280 --> 01:06:24,400
internal keys and re encrypt data in
files. When they optimize the file,

927
01:06:24,440 --> 01:06:30,519
you rotate that internal key so that
your data that the customer could change it

928
01:06:30,519 --> 01:06:32,199
and own their master pastor. But
you don't have to worry about at rest

929
01:06:32,519 --> 01:06:36,920
your keys are Your data is encrypted
in a very secure way and then that's

930
01:06:38,000 --> 01:06:43,079
very maintainable. So the best databases
do that technique. Some of the older

931
01:06:43,079 --> 01:06:46,119
ones don't. So that's keep that
in mind. If a database has been

932
01:06:46,119 --> 01:06:49,480
around a long time and never really
thought through these issues, they're going to

933
01:06:49,519 --> 01:06:54,679
have our time with security. Oracle
or what does an okay job. I'm

934
01:06:54,679 --> 01:06:57,039
not going to give away all those
secrets. I don't want to, like,

935
01:06:57,639 --> 01:07:00,559
you know, help packers out here, but I'll just say one thing.

936
01:07:00,880 --> 01:07:05,360
If there was, I can't say
it, but I'll just they don't

937
01:07:05,360 --> 01:07:09,159
give extra well, but it's okay. I think they're doing it pretty well

938
01:07:09,159 --> 01:07:13,320
all by themselves. Or yeah,
Oracle did. Oracle did a terrible thing

939
01:07:13,360 --> 01:07:16,559
and was embedding secrets in places they
never should have embedded them, and it

940
01:07:16,599 --> 01:07:21,000
was really obvious and it was like, really, are you kidding me?

941
01:07:21,880 --> 01:07:26,679
And luckily hackers weren't super aware of
this, but we were. And it's

942
01:07:26,760 --> 01:07:28,599
like, oh gosh, if they
got a hold of this, they'd get

943
01:07:28,599 --> 01:07:31,199
the whole keys of the kingdom.
I think Oracle latest releases they probably fixed

944
01:07:31,239 --> 01:07:34,280
it. I hope, but Oracle's
so backwards cant pattle. They may not

945
01:07:34,360 --> 01:07:38,400
have. I haven't looked lately,
so I'm not going to go any deeper

946
01:07:38,440 --> 01:07:41,880
into that. But like, there
are so many holes in Oracle because it's

947
01:07:41,920 --> 01:07:45,679
an old system and they never really
thought it through. I would never use

948
01:07:45,760 --> 01:07:49,760
these utel not an Oracle fan,
and it's not because it's just because it's

949
01:07:49,800 --> 01:07:55,920
so complicated and complicated means not secure. It was complicated. You can't cover

950
01:07:55,960 --> 01:07:59,559
all your bases and make it secure. So I'm much a bigger fan.

951
01:07:59,599 --> 01:08:02,719
If you're eqal database, you know, SQL server is much simpler and Microsoft

952
01:08:02,760 --> 01:08:05,880
has kept it that way and so
it's easier to secure it easier to run

953
01:08:05,920 --> 01:08:10,559
it. So from a DeVos perspective, Secret seqle server is really good.

954
01:08:11,239 --> 01:08:15,000
It's not as expensive as ourable,
so it's not cheap. Postgress is,

955
01:08:15,000 --> 01:08:19,560
like I said, created by PhD
grad students at Berkeley for the most part.

956
01:08:19,640 --> 01:08:24,319
And and the code, it's the
code inside that thing is every you

957
01:08:24,359 --> 01:08:28,239
know, every developer rized different coastyles. Imagine over the last thirty years,

958
01:08:28,960 --> 01:08:32,479
every PhD student writing their own little
module in Berkeley in the inside of Postgrass.

959
01:08:32,560 --> 01:08:36,439
It's just a it's a code nightmare. So the complexity of that code

960
01:08:36,479 --> 01:08:45,079
base makes that system hard to secure
and complicated. Do they not use route

961
01:08:45,399 --> 01:08:50,199
DPMs on the physical devices to encrypt
the master key in some way, so

962
01:08:50,239 --> 01:08:57,920
it's not actually exposed to the database
process, rather than having just some master

963
01:08:58,000 --> 01:09:01,800
key that it generates. You know, network if you're across platform database,

964
01:09:03,119 --> 01:09:06,760
that depends on your operating system and
so on. The ones the database they

965
01:09:06,800 --> 01:09:11,199
run on Windows that focus on Windows
is a core platform. They do that

966
01:09:11,560 --> 01:09:15,319
like seql server. They can do
that. Fair Coom does that. We

967
01:09:15,640 --> 01:09:19,039
use that technology running on Linux,
though it's a little different. You have

968
01:09:19,079 --> 01:09:23,119
to it's a little harder because the
OS doesn't support some of those things as

969
01:09:23,119 --> 01:09:26,560
well, and when you want to
be a cross platform database, you have

970
01:09:26,600 --> 01:09:31,119
to work extra hard to figure out
ways to to make things secure on Linux

971
01:09:31,199 --> 01:09:36,560
versus Windows versus Mac. May be
the first person that I've ever heard say

972
01:09:36,680 --> 01:09:41,479
that it's more difficult to secure things
on Linux. I feel like the HSM

973
01:09:41,520 --> 01:09:45,880
with pks, you know eleven has
no problem encrypting whatever you've got, whatever

974
01:09:45,920 --> 01:09:48,920
you need to throw at it.
So you know that that's an interesting train

975
01:09:48,960 --> 01:09:53,560
of thought. There then is a
new one that I'll have to consider.

976
01:09:54,000 --> 01:09:57,439
Well, it's not I didn't mean
to say harder as much as different.

977
01:09:58,520 --> 01:10:01,239
The harder part the harder part is
if you're a company writing database software,

978
01:10:01,279 --> 01:10:06,840
you've got to use different technologies and
test different technologies on each platform. So

979
01:10:06,880 --> 01:10:10,319
that's more of what it is.
It's not that Linux is not secure.

980
01:10:10,359 --> 01:10:12,520
I'm not. I don't even want
to begin to say that, because actually

981
01:10:12,479 --> 01:10:18,279
I like Linux a lot. But
I will say securing Linux requires some specialty

982
01:10:18,319 --> 01:10:24,880
skills. That Windows is is well
known as there for hacks and all that

983
01:10:24,880 --> 01:10:28,279
stuff. They are trying. They
try to simplify things for their customers,

984
01:10:28,680 --> 01:10:32,840
especially on Window. Server is a
pretty good platform, but it's so expensive

985
01:10:33,159 --> 01:10:36,399
you got to go Linux. Everybody
goes Linux. So I'm so yeah,

986
01:10:36,399 --> 01:10:42,199
we we it's just Linux is you're
in the open source world and you say,

987
01:10:42,239 --> 01:10:44,920
okay, I want to use this
feature. Now I'll go find open

988
01:10:44,960 --> 01:10:46,079
source. Well, how do I
know if that open source is safe?

989
01:10:46,079 --> 01:10:48,720
How do I know that open source
hasn't been hacked? How do I know

990
01:10:48,760 --> 01:10:54,119
that that does a good job.
Well, there's no company behind that open

991
01:10:54,119 --> 01:10:56,600
source. Typically, if you're talking
about this kind of low level code,

992
01:10:56,600 --> 01:11:00,039
you're just bringing in some It was
some developer who's going out there creating some

993
01:11:00,119 --> 01:11:01,840
thing. Then you bring it in, you run tons of tests on it.

994
01:11:01,920 --> 01:11:05,840
The work and cost of bringing that
in can be really high if you

995
01:11:05,880 --> 01:11:10,520
want to make sure, if you
want to guarantee it's secure, So companies

996
01:11:10,520 --> 01:11:15,039
don't do that. They just bring
it in in hope because you can't afford

997
01:11:15,079 --> 01:11:17,560
to go and let's go run.
It's spent two years testing this open source

998
01:11:17,640 --> 01:11:19,840
piece, you know, a piece
of code to make sure it really works

999
01:11:19,840 --> 01:11:27,680
well, so you hope. So
I think adding to that is there's the

1000
01:11:27,760 --> 01:11:32,720
different Linux distributions because what might be
implemented in one Linux distribution might not be

1001
01:11:32,800 --> 01:11:39,239
implemented in another one, or it's
implemented a different way. Yeah, and

1002
01:11:39,279 --> 01:11:44,119
everybody runs on red hat because you
could count on all those features being there

1003
01:11:44,560 --> 01:11:48,399
and so or of course not everybody
does completely on red hat, but the

1004
01:11:48,439 --> 01:11:51,560
red hat is the one that every
database spender is going to run on.

1005
01:11:53,239 --> 01:11:57,880
And then do you support others?
Fair Com has a history of running everywhere,

1006
01:11:57,960 --> 01:12:00,720
so we build our software to run
on every possible platform you can imagine.

1007
01:12:00,760 --> 01:12:05,479
At one point we supported over one
hundred and twenty nine operating systems at

1008
01:12:05,479 --> 01:12:09,880
the same time. Well, the
world is luckily shrunk down, so now

1009
01:12:09,920 --> 01:12:13,880
you know we we support we still
support all the UXes that are out there,

1010
01:12:14,079 --> 01:12:16,840
hp AI, x Q and X
you name the you know, all

1011
01:12:16,880 --> 01:12:21,399
the Unix stuff. But when primarily
people want today it's Linux and Windows,

1012
01:12:21,760 --> 01:12:25,479
and on the database world, not
so much Mac. But we support Mac

1013
01:12:25,520 --> 01:12:30,680
as well because developers have Mac laptops. So we yeah, we we support

1014
01:12:30,720 --> 01:12:34,640
and we run it are extremely portable. We have fantastic All we written in

1015
01:12:34,720 --> 01:12:39,359
C and we wrote it in portable
C code so that we can run on

1016
01:12:39,399 --> 01:12:43,560
any operating system, real time orperating
systems, you name it. And not

1017
01:12:43,680 --> 01:12:48,359
every database can do that, so
there's a real cost when they when you

1018
01:12:48,359 --> 01:12:53,119
buy. For example, mark Logic
is a database that was optimized for Linux.

1019
01:12:53,159 --> 01:12:56,199
They did all their testing Linux,
They coded on Linux, but then

1020
01:12:56,199 --> 01:12:59,640
a lot of their customers started buying
it to run them Windows. They supported

1021
01:12:59,680 --> 01:13:03,079
Window, but it was the step
and so you're like, it's all kinds

1022
01:13:03,079 --> 01:13:06,960
of problems on Windows because if you
don't, if your juniors are all Linux

1023
01:13:06,960 --> 01:13:09,640
e geniors, they know how to
do it there, but they don't know

1024
01:13:09,640 --> 01:13:11,800
how to do it on Windows,
and then you create problems. So for

1025
01:13:11,840 --> 01:13:15,119
DevOps, it's really important for you
to know is this is this database primarily

1026
01:13:15,119 --> 01:13:21,039
of Windows or a Linux database or
is it really do the engineers really know

1027
01:13:21,119 --> 01:13:26,479
both really well and can support both
really well, and your your code base

1028
01:13:26,560 --> 01:13:29,640
can run on all of them because
it's designed that way. That's that's a

1029
01:13:29,760 --> 01:13:32,800
huge issue for you, because so
many times you buy the product and run

1030
01:13:32,920 --> 01:13:36,520
on the wrong operating system for whatever
reason, and and do you pay a

1031
01:13:36,600 --> 01:13:42,600
cost bug costs and a support cost. That's a good point. I mean,

1032
01:13:42,760 --> 01:13:45,000
I you know, I've been the
Linux user for a long time,

1033
01:13:45,039 --> 01:13:48,760
and I just pray that there's some
sort of Open Container Initiative compatible container out

1034
01:13:48,800 --> 01:13:51,720
there that I could just you know, pull it and run. And if

1035
01:13:51,720 --> 01:13:56,560
it's not, that I've add to
the next technology. Yeah. Yeah,

1036
01:13:56,800 --> 01:13:59,560
And you have to have containers for
most of these products, like Oracle.

1037
01:13:59,560 --> 01:14:02,239
I would never want install an Oracle
without a container because that's just a nightmare.

1038
01:14:02,680 --> 01:14:04,960
For my first first day on the
job, I was sitting next to

1039
01:14:04,960 --> 01:14:06,760
a guy and they said, what
are you doing? He goes, oh,

1040
01:14:06,800 --> 01:14:10,760
I'm installing Oracle And I go,
oh, how's that going? Well,

1041
01:14:10,800 --> 01:14:16,319
I'm on my third day, third
day, third day, and like,

1042
01:14:16,359 --> 01:14:18,800
what the what do you well?
I mean, you know, can

1043
01:14:18,920 --> 01:14:21,199
it be ten minutes? Can't you
just run a script? No? No,

1044
01:14:21,319 --> 01:14:25,359
and it was just a I mean, Oracle's better than that today a

1045
01:14:25,359 --> 01:14:29,159
little bit. But you know you
used to the minutes. But a container

1046
01:14:29,159 --> 01:14:31,479
you just pop in and rune.
One thing about fair Calm, because we

1047
01:14:31,720 --> 01:14:36,680
are real sensitive this. We unzip
and run us like that. You download,

1048
01:14:36,840 --> 01:14:41,840
unziped, run, you're going that's
all there is. So we don't

1049
01:14:41,880 --> 01:14:46,199
even need containers because containers do slow
databases down by about twenty percent. And

1050
01:14:46,199 --> 01:14:51,640
the reason they slow databases down is
because the storage. They containers don't totally

1051
01:14:51,720 --> 01:14:57,199
virtualize the storage, but they they
were out the storage through their subsystem and

1052
01:14:57,279 --> 01:15:03,119
it causes a performance loss. So
containers databases or a performance problem. So

1053
01:15:03,199 --> 01:15:06,239
if you can run a database thats
by unziped and run, and you can

1054
01:15:06,359 --> 01:15:11,479
run multiple instances of the database on
the same computer, then you don't need

1055
01:15:11,520 --> 01:15:15,079
containers. Well, fair com is
one of the only databases that can run

1056
01:15:15,159 --> 01:15:18,720
multiple instances on the same computer with
an unzip and run out of the box

1057
01:15:18,760 --> 01:15:23,560
story. So we can run hundreds
of database instances on the same computer.

1058
01:15:23,800 --> 01:15:28,119
Oracle takes over the whole machine.
It assumes one instance one machine, single

1059
01:15:28,159 --> 01:15:31,399
server takes over the whole machine.
Postcuss takes over the whole machine. That

1060
01:15:31,439 --> 01:15:36,159
means you need containers, right,
because you need that flexibility. That's why

1061
01:15:36,560 --> 01:15:40,840
a fair Com I really like this
core engine that we have because we don't

1062
01:15:40,880 --> 01:15:45,079
have those limitations of these other databases. And it makes a difference for DevOps,

1063
01:15:45,159 --> 01:15:48,840
especially like market logic took over the
whole machine. You going to run

1064
01:15:48,840 --> 01:15:53,960
one instance on machine. And this
is before container technology. This is about

1065
01:15:54,000 --> 01:15:56,800
ten years ago, right, well
more than that, about twelve years ago

1066
01:15:57,199 --> 01:16:01,800
or thirteen anyway, we were looking
at architecturally we wanted to run multiple instances

1067
01:16:01,840 --> 01:16:04,640
on the same machine. We had
to use VMS to do it, and

1068
01:16:04,680 --> 01:16:11,039
that's even more of a HITD than
containers, and it complicated our whole architecture.

1069
01:16:11,079 --> 01:16:13,640
If I could have run multiple instances
on one machine, I could have

1070
01:16:13,680 --> 01:16:16,880
simplified the entire architecture, saved us
a ton of DevOps time, development time,

1071
01:16:16,960 --> 01:16:24,039
engineering time, architecture time. But
that limitation tied my hands. So

1072
01:16:24,119 --> 01:16:29,119
something like Faircom no limits on the
architecture, which as an architecture I like

1073
01:16:29,199 --> 01:16:31,560
that I could just do what I
need to do get the job done right.

1074
01:16:32,159 --> 01:16:40,760
Well, there you go. That
was a random stream of It was

1075
01:16:40,840 --> 01:16:44,560
fun. That was that was a
lot to take in though, and I

1076
01:16:44,560 --> 01:16:53,520
think it really it really highlights how
much thought and effort and planning has to

1077
01:16:53,560 --> 01:17:00,399
go into your database solution. It's
not really it's not really and oh,

1078
01:17:00,439 --> 01:17:02,520
by the way, task or it
can be, but you're going to pay

1079
01:17:02,560 --> 01:17:09,439
for that for a really long time
if you're successful at all. That's a

1080
01:17:09,560 --> 01:17:13,840
really important point because we at the
last but I was working on this church,

1081
01:17:13,880 --> 01:17:17,319
that large organization. We had,
we we had standardized, we had

1082
01:17:17,319 --> 01:17:20,359
certain databases we supported, like we
started supporting it, you know, and

1083
01:17:21,920 --> 01:17:26,199
we had developers all the time they're
bringing this under the hood. They would

1084
01:17:26,199 --> 01:17:29,399
go sneak out and go get a
Mango or get a Cassandra, get into

1085
01:17:29,399 --> 01:17:32,039
the database that we weren't supporting it. And React was one of their favorites.

1086
01:17:32,079 --> 01:17:35,319
That bring it in is start build
their app on it, right,

1087
01:17:35,560 --> 01:17:40,079
and then they go to release the
production. The manager and the and the

1088
01:17:40,119 --> 01:17:43,279
infrastrut team goes, what is this, Oh, it's just a database,

1089
01:17:43,319 --> 01:17:45,279
don't worry about it, just all
it. No, we can't who's supporting

1090
01:17:45,319 --> 01:17:48,439
it? Well we are, Well, no, you have to talk to

1091
01:17:48,479 --> 01:17:51,399
the database team. We're supposed to
support these technologies. So then they call

1092
01:17:51,479 --> 01:17:54,920
me up and go, Mike,
we're using this. Can you support it?

1093
01:17:55,479 --> 01:17:59,399
What we don't? What are you
doing? And so like, no,

1094
01:17:59,479 --> 01:18:01,479
we we don't have the people because
every time you bring a database in,

1095
01:18:01,520 --> 01:18:05,119
you're going to have to train people
to read, to understand the technology,

1096
01:18:05,359 --> 01:18:09,479
to give it the proper support.
You just can't throw someone at and

1097
01:18:09,560 --> 01:18:13,000
hope that they get their job.
Then databases are kind of like a marriage,

1098
01:18:13,399 --> 01:18:15,159
you know, and you're you have
to be serious about this. You're

1099
01:18:15,159 --> 01:18:19,920
gonna have that database for a long
time for and you need to know how

1100
01:18:20,039 --> 01:18:24,399
to make that marriage work. And
it's not just you're gonna get married,

1101
01:18:24,439 --> 01:18:27,399
because if you don't, you're gonna
get a divorce. And but you can't

1102
01:18:27,399 --> 01:18:30,159
divorce the database. The problem is
is still sitting there, it's still running.

1103
01:18:30,279 --> 01:18:32,399
It's still causing you trouble because you
can't just rewrite your app overnight.

1104
01:18:32,760 --> 01:18:35,800
You can't just afford to do that. So this is a maybe it's worse

1105
01:18:35,840 --> 01:18:44,479
than you know. Marriages are great. I've just been You're stuck with it

1106
01:18:44,520 --> 01:18:50,439
forever, right, I think therapy
podcast? Yeah, so yeah, you're

1107
01:18:50,520 --> 01:18:55,479
right. You just developers are sneaking
these in and then no, it's no

1108
01:18:55,560 --> 01:18:59,039
problem. And next thing you know
you've got you've got a real problem in

1109
01:18:59,079 --> 01:19:02,840
your organization. And we had to
rewrite so many apps because the app couldn't

1110
01:19:02,880 --> 01:19:06,720
be supported. And you think about, you're gonna have a core team.

1111
01:19:06,800 --> 01:19:10,439
No matter what database you use,
you're gonna have a core team that's going

1112
01:19:10,520 --> 01:19:15,039
to give you twenty four to seven
support on that thing. And so you're

1113
01:19:15,039 --> 01:19:16,800
going to and to do that.
You can't just put one person on that

1114
01:19:16,880 --> 01:19:20,880
team or you'll kill them off twenty
four to seven, right, and even

1115
01:19:20,880 --> 01:19:25,560
if they're a ATAG guy. Like
that's the Marcologic database for example, it

1116
01:19:25,600 --> 01:19:28,239
was like a Maytag database. It
never went down, it never broke.

1117
01:19:28,680 --> 01:19:33,479
So we had two people running over
over six hundred instances of Marcologic supporting the

1118
01:19:33,520 --> 01:19:38,640
whole thing throughout the entire organization.
But they were still too because they were

1119
01:19:38,680 --> 01:19:42,079
twenty four seven support and they even
they weren't called. They had to carry

1120
01:19:42,119 --> 01:19:44,199
the pager, they had to carry
the cell phone, they had to be

1121
01:19:44,479 --> 01:19:47,520
had their laptop with them. The
stress of the support is always with you,

1122
01:19:48,159 --> 01:19:51,239
and so you have to take that
in consideration. When you bring in

1123
01:19:51,239 --> 01:19:55,359
a technology, you're gonna have to
get your support people to support it.

1124
01:19:55,720 --> 01:19:58,640
That's like the secret conversation. It's
like are you ready, like to the

1125
01:19:58,680 --> 01:20:00,720
development team, are you ready to
for the new database bringing in? And

1126
01:20:00,720 --> 01:20:03,119
they're like, yes, we know
everything about it. And there were only

1127
01:20:03,119 --> 01:20:09,279
response you can say to that as
you're wrong, it's going to be okay

1128
01:20:09,359 --> 01:20:14,359
here, but you have no idea
what you're talking about. Yeah. Well,

1129
01:20:14,359 --> 01:20:16,119
it was just to bring in mark
Logical in my last organization, because

1130
01:20:16,119 --> 01:20:17,880
I was in charge of that whole
thing that so I bring it up.

1131
01:20:19,359 --> 01:20:25,199
It took one hundred thousand dollars project
to go bring it in and get it

1132
01:20:25,239 --> 01:20:30,760
integrated into infrastructure, to get all
the support processes in place, to establish

1133
01:20:30,800 --> 01:20:33,880
a high availability version and how we're
going to support that thing. I ran

1134
01:20:33,920 --> 01:20:39,359
that whole project and it was it
was expensive and it was a real eye

1135
01:20:39,359 --> 01:20:42,439
opener to me, like why can't
you just run it? But no,

1136
01:20:42,600 --> 01:20:46,640
it was a major project and because
we did that, though we now have

1137
01:20:47,399 --> 01:20:53,439
it grew like crazy throughout the organization
and it's super successful to this day in

1138
01:20:53,479 --> 01:20:58,880
that organization. Because deployments are just
a piece of cake. The main the

1139
01:20:58,920 --> 01:21:01,880
maintenance is a piece of cake.
Whole thing because because we brought it in

1140
01:21:02,079 --> 01:21:05,479
correct, but then these other ones
like React came in and not only did

1141
01:21:05,479 --> 01:21:10,079
it come in surreptitiously and was never
supported, the company went out of business.

1142
01:21:11,479 --> 01:21:15,600
And you know, so you got
to think about you know, if

1143
01:21:15,600 --> 01:21:19,000
it's a long term relationship and your
relationship dies, you know, you got

1144
01:21:19,000 --> 01:21:23,840
to think about that. That's a
big one life support. That's a new

1145
01:21:23,880 --> 01:21:31,159
product. Right. I love that, But do you talk to developers.

1146
01:21:31,199 --> 01:21:33,359
I had so many arguments. They
would say, well, it's open source,

1147
01:21:33,640 --> 01:21:39,199
it'll live forever. It's open source
is free, Like, okay,

1148
01:21:39,439 --> 01:21:43,680
do you realize that there's a company
that built this product and their entire goal,

1149
01:21:43,760 --> 01:21:48,680
whether it's Manga or Cassandra or couch
base or faircom. If you're open

1150
01:21:48,800 --> 01:21:54,720
source, it's an illusion. It's
a marketing strategy. It's totally an illusion.

1151
01:21:54,800 --> 01:22:00,520
And and you're developing your you're completely
in fantasyland thinking open source is is

1152
01:22:00,840 --> 01:22:04,279
the answer because that company has to
support it. They have the engineers who

1153
01:22:04,319 --> 01:22:08,800
built it. If that company goes
under, it's not like the community will

1154
01:22:08,840 --> 01:22:12,840
pick it back up and run.
That code is too hard. Database code

1155
01:22:12,920 --> 01:22:15,760
is way too detailed and hard for
just anyone out of there. Oh,

1156
01:22:15,880 --> 01:22:18,680
I just get your grandmother to come
and go. Program you know, get

1157
01:22:18,680 --> 01:22:23,840
it from GitHub and go change this
forget it. This takes specialized engineers that

1158
01:22:23,840 --> 01:22:27,720
spent ten to twenty years of their
life learning this code and learning how it

1159
01:22:27,760 --> 01:22:30,520
works and learning all the internals.
So when that company goes away and those

1160
01:22:30,560 --> 01:22:34,760
developers are no longer there, they
go to other companies. They're working on

1161
01:22:34,800 --> 01:22:41,760
other things. That database product is
dead. So get another team. Like

1162
01:22:42,159 --> 01:22:45,640
when Oracle bought my sequel and then
the team that didn't want to work for

1163
01:22:45,680 --> 01:22:49,079
Oracle left it built Maria dB,
right they but the team left it built

1164
01:22:49,079 --> 01:22:51,920
another company and they forked the code. Can you do that? Yeah?

1165
01:22:53,239 --> 01:22:59,960
But will they do that? You
know that's a big question and database software,

1166
01:23:00,800 --> 01:23:04,199
but that you're basically becoming the database
company, right Like you're like,

1167
01:23:04,279 --> 01:23:06,479
oh, you know, you have
to be okay with that. You have

1168
01:23:06,560 --> 01:23:10,960
to be willing to take that code, build it, run it, become

1169
01:23:10,960 --> 01:23:13,800
the experts of it yourself. If
you're if you're going to go down that

1170
01:23:13,880 --> 01:23:17,119
route, yeah, for sure.
And that's not realistic. It's just you

1171
01:23:17,159 --> 01:23:20,319
know, that would be if you
hired me, for example, I could

1172
01:23:20,359 --> 01:23:23,560
go do something like that because that's
the kind of guy I am. But

1173
01:23:24,239 --> 01:23:26,880
I'm kind of a Unicorn they're there. I mean, I'm not unique,

1174
01:23:26,920 --> 01:23:31,199
but I'm just saying there the Unicorn
herd is not huge that that loves to

1175
01:23:31,199 --> 01:23:35,800
get to that level of code,
understands what databases really are and what they

1176
01:23:35,800 --> 01:23:39,479
should do, and knowing that kind
of code and make that happen. And

1177
01:23:39,560 --> 01:23:43,439
you can't replace people like me very
easily, so and you don't want to

1178
01:23:43,479 --> 01:23:46,359
afford me, you know, I'm
super expensive. So that's the other thing

1179
01:23:46,439 --> 01:23:51,760
that just because it's open source doesn't
mean that there's a huge pool of talent

1180
01:23:51,880 --> 01:23:58,600
willing to work on that product for
free. Yeah, oh yeah, and

1181
01:23:58,720 --> 01:24:01,199
are even capable of working on it
right, you know, if they're at

1182
01:24:01,199 --> 01:24:05,000
the real engine level where you need
to have where you need to fix bugs.

1183
01:24:05,000 --> 01:24:11,920
So so it's the open source database
world is an illusion. And I'm

1184
01:24:11,960 --> 01:24:14,159
not being negative. I'm not anti
open source. I don't want to come

1185
01:24:14,159 --> 01:24:16,399
across that way really not. It's
just it's a marketing strategy. Get it

1186
01:24:16,439 --> 01:24:19,880
in the hands of developers so that
they can go build their next product,

1187
01:24:19,960 --> 01:24:25,119
hopefully become the next Google or you
know, and then and then they can

1188
01:24:25,199 --> 01:24:28,319
start paying for stuff. You know. That's the whole marketing gimmick of it.

1189
01:24:28,800 --> 01:24:31,359
But the reality is the open source
versions are not secure. They don't

1190
01:24:31,399 --> 01:24:39,680
scale. They they're they they don't
provide the tons of the let's see,

1191
01:24:40,720 --> 01:24:44,520
the secure at scale are the big
ones. But you're also getting tools,

1192
01:24:44,840 --> 01:24:48,000
the tool sets for the backup,
the recoveries, the management. Those are

1193
01:24:48,039 --> 01:24:54,159
only enterprise versions and those you have
to have in a database. The vendorsor

1194
01:24:54,239 --> 01:24:57,479
is not stupid. They know you
go open source for so long and then

1195
01:24:57,520 --> 01:25:00,640
eventually you're going to pay them.
But the developer, it's a it's a

1196
01:25:00,680 --> 01:25:04,880
total marketing thing to suck the developer
in because they get we all have dreams

1197
01:25:05,199 --> 01:25:09,039
of I'm gonna be the next Google. I'll use all this free software to

1198
01:25:09,039 --> 01:25:13,199
get myself up and running. But
in a production environment when the thing goes

1199
01:25:13,279 --> 01:25:16,800
down, can you fix the bugs? No, you're gonna You're gonna immediately

1200
01:25:16,800 --> 01:25:20,319
get a support contract with the vendor. So yeah, they know that story.

1201
01:25:20,359 --> 01:25:26,640
So it's it's a game, a
game. Yeah. The goal is

1202
01:25:26,720 --> 01:25:30,880
to make it easier to purchase the
subscription than to refactor your code to use

1203
01:25:30,880 --> 01:25:34,279
something else. Oh yeah, which
is not a hard goal to achieve,

1204
01:25:34,560 --> 01:25:40,039
right, And to me, I
call it a trojan horse. You know

1205
01:25:40,199 --> 01:25:43,439
you come in, it's free,
it's open source, you know, and

1206
01:25:43,560 --> 01:25:46,159
then it's in the organization. Next
thing you know, Wow this is expensive.

1207
01:25:46,520 --> 01:25:51,520
Wow this is hard while we're locked
in. Oh too bad, so

1208
01:25:51,640 --> 01:25:58,199
sad, And then the vendor is
for happy. They're playing the long game.

1209
01:25:58,239 --> 01:26:00,960
It takes a long time for this
to happen. Was praying a really

1210
01:26:00,000 --> 01:26:04,079
long game here? Oh yeah,
I mean you would think at this point

1211
01:26:04,159 --> 01:26:11,159
people would start to realize that this
is the pattern and maybe consider that when

1212
01:26:11,199 --> 01:26:15,039
they're going after certain technologies. But
it doesn't seem like that's the case.

1213
01:26:15,279 --> 01:26:18,520
They're still deluded that the price tag
for the source code is there, it's

1214
01:26:18,960 --> 01:26:26,000
zero dollars or franks or yeah.
I think that. I think that our

1215
01:26:26,039 --> 01:26:29,840
industry is still so new, that
we have so many new people coming into

1216
01:26:29,960 --> 01:26:35,439
it every year, that those lessons
aren't being translated. There's too many people

1217
01:26:35,520 --> 01:26:41,319
for people like us. There's too
many people entering every year for us to

1218
01:26:42,840 --> 01:26:46,920
share our stories with all of them, to keep repeating those to help them

1219
01:26:47,000 --> 01:26:54,560
prevent repeating our mistakes. Well,
and engineers are notoriously bad at making costs.

1220
01:26:56,239 --> 01:26:58,960
I mean, I know where it
comes from. It's oh that money

1221
01:26:58,960 --> 01:27:01,399
would come out of mind right,
I don't want to pay that money for

1222
01:27:01,479 --> 01:27:05,800
it, and they don't understand the
business justification and what really goes into the

1223
01:27:05,800 --> 01:27:11,319
total cost of ownership. Right.
Yeah, engineers are not good business people,

1224
01:27:11,359 --> 01:27:14,640
and it's it's a good thing because
business people are not good engineers.

1225
01:27:14,680 --> 01:27:18,039
I mean there's exceptions, of course, but the engineer is going to go,

1226
01:27:18,079 --> 01:27:20,199
I could just build this myself.
Why do I I can build my

1227
01:27:20,239 --> 01:27:25,039
own backup solution. I got build
my own operations manager, you know,

1228
01:27:25,039 --> 01:27:27,600
I could build my own security solutions. So the engineer goes, I could

1229
01:27:27,600 --> 01:27:30,520
work my way around this problem.
Well, as a company, you're like,

1230
01:27:30,680 --> 01:27:32,800
I'm not paying you to do that. That's way more money than paying

1231
01:27:32,840 --> 01:27:35,920
a vendor to do this for me. And how do I know you're going

1232
01:27:35,960 --> 01:27:39,479
to do security? Right? How
do I know you even know what a

1233
01:27:39,520 --> 01:27:44,239
backup solution is? I mean,
how many software developers know the cycle that

1234
01:27:44,279 --> 01:27:47,680
the backup schedule you should really follow
on a database and how that really should

1235
01:27:47,680 --> 01:27:51,279
work the best practices there? Well, ninety nine point nine percent developers have

1236
01:27:51,359 --> 01:27:56,239
no clue, so they couldn't even
begin to build that solution. So yeah,

1237
01:27:56,279 --> 01:28:00,239
developers are it's not it's delusion,
but it's more ignorance. And I

1238
01:28:00,239 --> 01:28:03,119
don't mean that they're ignorant. I'm
not saying that. I mean just lack

1239
01:28:03,159 --> 01:28:09,600
of knowledge, lack of experience.
It's easy to imagine yourselves because the developers

1240
01:28:09,640 --> 01:28:12,159
are awesome. I mean, I'm
a developer macrot right, we could build

1241
01:28:12,159 --> 01:28:15,319
anything, and you're like, I
could build that. I love building that.

1242
01:28:15,520 --> 01:28:18,840
Let me build that for you.
But as a business decision, you've

1243
01:28:18,880 --> 01:28:21,640
got to really think that through because
you don't want your developers. You want

1244
01:28:21,640 --> 01:28:26,479
your developers to build your product,
your value added product that you're going to

1245
01:28:26,520 --> 01:28:30,000
sell, not build infrastructure, not
build the lower level stuff. Yeah,

1246
01:28:30,000 --> 01:28:36,640
and that's a lesson learned through time
and experience, the difference between could I

1247
01:28:36,680 --> 01:28:41,039
build it and should I build it? Oh? Yeah, for sure.

1248
01:28:41,319 --> 01:28:46,880
That's hard because I want to build
everything, right, I mean every day.

1249
01:28:47,960 --> 01:28:50,359
And we have this problem at fair
Com too because we are in a

1250
01:28:50,479 --> 01:28:56,000
total engineering shop. So we want
to build everything ourselves. And I have

1251
01:28:56,039 --> 01:28:58,239
to say, you know what,
let's get an open source for that one.

1252
01:28:58,279 --> 01:29:00,399
But let's bet it carefully, you
know, Let's don't reinvent the wheel

1253
01:29:00,479 --> 01:29:03,760
every time, because that's what we
want to do in our nature. So

1254
01:29:03,840 --> 01:29:10,720
let me go build that cool thing. So yeah, it's hard. Managing

1255
01:29:10,720 --> 01:29:13,880
to engineers is hard to because you
gotta say, nope, you can't do

1256
01:29:13,960 --> 01:29:15,520
that, you can't do that,
we're going to buy this, you know.

1257
01:29:16,279 --> 01:29:20,039
But you really have to make those
good decisions as a software company.

1258
01:29:21,760 --> 01:29:26,520
And I mean that's where the fallacy
is though, right, Like we have

1259
01:29:26,560 --> 01:29:29,520
some backlog of work and we can
get through it, right like, you

1260
01:29:29,560 --> 01:29:31,640
know, it's just it's just these
three or four things and then we're done,

1261
01:29:31,760 --> 01:29:35,000
and maybe we can move on to
new things. And realizing that there's

1262
01:29:35,079 --> 01:29:40,079
a whole list of other issues and
tasks that are going to come up associated

1263
01:29:40,119 --> 01:29:45,960
with managing that technology us as you
start to build things out. It's so

1264
01:29:45,039 --> 01:29:49,039
true when you're a naive about something, you think it at a ten thousand

1265
01:29:49,079 --> 01:29:53,279
foot level, it looks easy.
Well, backup can't be that hard.

1266
01:29:53,840 --> 01:29:56,119
Well then, you know, just
call the data to a new location.

1267
01:29:56,239 --> 01:30:00,119
Done right, done, done.
That's that's what Mango said to do in

1268
01:30:00,159 --> 01:30:01,960
the beginning. Yeah, just cop
just just copy our data. But what

1269
01:30:02,000 --> 01:30:05,279
if your data is in transition and
it's half written a disc When you copy

1270
01:30:05,319 --> 01:30:11,079
it, you're copying, you're copying
broken data. You know, it's not

1271
01:30:11,439 --> 01:30:14,760
you have to cuiesce that database,
so it's not writing the disc while you're

1272
01:30:14,760 --> 01:30:16,960
copying it. But then what if
your database is huge and you're trying to

1273
01:30:17,000 --> 01:30:20,479
copy all that data all the time, you'll never get it copied in time.

1274
01:30:20,840 --> 01:30:24,920
You know, you're right out of
time. So so you need a

1275
01:30:25,000 --> 01:30:28,439
copy what's changed? Well how do
you do that? And you know once

1276
01:30:28,479 --> 01:30:31,039
you go down this rabbit hole.
But it's but that's foot levels. Just

1277
01:30:31,039 --> 01:30:35,239
copy the data, piece of cake. Is there is there actually a solution

1278
01:30:35,399 --> 01:30:40,640
to this in the database base where
writing to the journal and the actual table

1279
01:30:41,239 --> 01:30:45,760
like can somehow be strongly consistent so
that the backup being taken irrelevant like will

1280
01:30:45,760 --> 01:30:50,560
always be one hundred percent consistent.
Or it's just some small percentage chance that

1281
01:30:50,600 --> 01:30:55,199
the journal will have data that's not
actually in the database or something like that.

1282
01:30:55,600 --> 01:30:58,600
Well, in fact, you hit
the nail on the head the the

1283
01:30:58,600 --> 01:31:01,319
the ideas you cuiesce your data,
which means stop writing to the data files,

1284
01:31:02,359 --> 01:31:06,359
but keep writing to the journal,
so the journal it gets ahead of

1285
01:31:06,359 --> 01:31:12,000
the data files. But you could
copy now the data files safely or make

1286
01:31:12,000 --> 01:31:15,399
an incremental copy of what's changed in
the data files quickly over somewhere else.

1287
01:31:15,800 --> 01:31:20,520
Then then you unques the database at
that point you mark in your journal.

1288
01:31:21,359 --> 01:31:25,279
You've already marked in your journal where
you started a backup, and then you

1289
01:31:25,319 --> 01:31:29,600
could copy the journal files over too. So the restoration, you're restoring the

1290
01:31:29,680 --> 01:31:33,680
data files first, then you restore
the journal from that point in time and

1291
01:31:33,680 --> 01:31:38,399
now you and then you replay the
journal to catch the database up. So

1292
01:31:38,520 --> 01:31:45,720
that's the technique all the major databases
use. But that no single databases start

1293
01:31:45,760 --> 01:31:49,720
out ignoring the journal completely and just
did dumb things like we'll just copy the

1294
01:31:49,720 --> 01:31:55,319
files over here. They've gotten better
now, but you know, because they're

1295
01:31:55,359 --> 01:32:00,920
customers who have told them your data
is corrupt, so they they're gradually fixing

1296
01:32:00,960 --> 01:32:05,319
stuff like that. But yeah,
that's the difference between the database backup and

1297
01:32:05,359 --> 01:32:11,319
the database restore. One doesn't care
if it you corrupt. Yeah right,

1298
01:32:11,359 --> 01:32:15,800
the backup doesn't care. Oracle spent
a fortune on when they do their backup

1299
01:32:15,840 --> 01:32:17,760
this. The Oracle is really good
about not corrupting data that they're in.

1300
01:32:17,880 --> 01:32:24,640
So spare comp we built technologies designed
to not lose the data because corrupt data

1301
01:32:24,640 --> 01:32:28,079
is a big problem. So in
Oracle is doing the backup, they're reading

1302
01:32:28,159 --> 01:32:32,720
every block of data and validating it
to make sure that the all the safeties

1303
01:32:32,720 --> 01:32:36,840
they built into that block are there
so they're not so if the field data

1304
01:32:36,880 --> 01:32:41,079
is off or something that you could
tell, they detect it and then they

1305
01:32:41,079 --> 01:32:45,640
market. So you know when your
backups have corrupted data in them, so

1306
01:32:45,680 --> 01:32:49,319
you can start dealing with the issue. Because if the worst thing in the

1307
01:32:49,319 --> 01:32:54,359
world is you have a backup that's
three months old and you just had ransomware

1308
01:32:55,000 --> 01:32:59,199
and you got to restore and that
all that data is corrupted somehow, and

1309
01:32:59,239 --> 01:33:02,800
you're like, uh, what do
I do? See, Yeah, these

1310
01:33:02,800 --> 01:33:08,439
are these are the things that are
real. The answer there is you polish

1311
01:33:08,520 --> 01:33:12,399
up your LinkedIn profile. You're lucky
you're not the business owner, right,

1312
01:33:12,439 --> 01:33:16,439
That's that's where you're Yeah. DBAs
get fired over that kind of thing,

1313
01:33:16,600 --> 01:33:20,439
or or at least depending on what's
going on, you know, sometimes they

1314
01:33:20,479 --> 01:33:26,720
do sometimes down. But I mean, I've mortified that database company could be

1315
01:33:26,880 --> 01:33:31,239
walking around out there without having a
backup strategy that is actually paying attention to

1316
01:33:31,920 --> 01:33:36,560
live data streams that are still coming
in in a high throughput, high volume

1317
01:33:36,640 --> 01:33:41,119
environment Like that just seems for me, like, who are you that you

1318
01:33:41,119 --> 01:33:45,439
think you can just run a database, uh and as a service and and

1319
01:33:45,640 --> 01:33:49,560
you know walk away like this just
seems like a promise that's by default being

1320
01:33:49,760 --> 01:33:55,680
needs to be made. Yeah,
totally. Here's an example. We Firkom

1321
01:33:55,680 --> 01:34:00,239
also has another product called RTG,
which is our Cobal modernization solution. Turns

1322
01:34:00,279 --> 01:34:02,960
out that Cobyl writes data the exactly
way I M does. So what we

1323
01:34:03,159 --> 01:34:09,399
is we stuck our database, which
is that highly available mission critical database underneath

1324
01:34:09,439 --> 01:34:13,560
a Cobyl program, and we and
the Cobyl file handling routines just go to

1325
01:34:13,640 --> 01:34:17,840
our product directly. Well, the
vendors are buying our products to go out

1326
01:34:17,840 --> 01:34:21,520
of their Cobyl apps because they can't
rewrite the Cobyl app. It's the means

1327
01:34:21,520 --> 01:34:24,760
of loes of code, millions of
dollars. It's just too risky. Their

1328
01:34:24,760 --> 01:34:29,199
whole business, the financial industry wrote
everything in cobyl s little snow secret.

1329
01:34:29,239 --> 01:34:32,199
All your favorite banks you know,
are are running Cobyll programs for all your

1330
01:34:32,279 --> 01:34:39,199
data because it's at is a controversial
word there, Yeah, well yes,

1331
01:34:39,920 --> 01:34:43,760
or all you're hated or whatever,
then yeah, all the your So the

1332
01:34:43,800 --> 01:34:47,039
one of the one of these big
financial companies is coming to us and they

1333
01:34:47,119 --> 01:34:50,880
can service all their current customers.
But they want to go to tier one.

1334
01:34:51,199 --> 01:34:55,720
They sell baking software to Tier one
to Tier two and three systems.

1335
01:34:55,720 --> 01:34:59,319
They want to go to tier one, and they're the largest baking software system

1336
01:34:59,359 --> 01:35:03,479
in the world. But there are
certain huge customers they can't service because they

1337
01:35:03,560 --> 01:35:08,079
run a Cobyl and the filesystem can't
scale to what they need. So they're

1338
01:35:08,079 --> 01:35:11,640
putting our product right underneath the COBAL
which is a plug and play. Our

1339
01:35:11,720 --> 01:35:14,680
tg stets were ready to go because
you just plug us right in under the

1340
01:35:14,800 --> 01:35:16,840
Cobyl engine. You don't change a
line of Cobyl code. It just works,

1341
01:35:17,119 --> 01:35:21,640
and then our database scales it so
all the things you're talking about backup

1342
01:35:21,880 --> 01:35:27,640
recovery. Cobyl can't do any of
that stuff. They back up corruptive files

1343
01:35:27,680 --> 01:35:30,920
all the time. But what we
could do is we now bring the technology

1344
01:35:30,960 --> 01:35:33,680
to the table to create a storage
system, to create the database. Create

1345
01:35:33,720 --> 01:35:39,680
a storage system snapshot, which these
are huge, multi terabyte you know,

1346
01:35:40,079 --> 01:35:44,840
like eighty terabyte databases. They're huge. You can't back those up by copying

1347
01:35:44,880 --> 01:35:48,279
files, so you have to do
storage snap shots of those things, and

1348
01:35:48,359 --> 01:35:54,359
then you can then uncreates your database
and then copy the transaction logs over too.

1349
01:35:54,439 --> 01:35:59,560
Startur snapshot the transaction logs, and
then the storage system snap shot can

1350
01:35:59,600 --> 01:36:01,039
restore your data. You save the
snapshots, and then if you want to

1351
01:36:01,039 --> 01:36:05,479
restore it, you just revert to
the snap shot, apply the transaction logs.

1352
01:36:05,600 --> 01:36:10,920
You're back up and running, and
Cobalt files can't do any of that

1353
01:36:10,960 --> 01:36:15,279
system. But you put the Faircom
database underneath it, you instantly transform that

1354
01:36:15,680 --> 01:36:21,880
these legacy Cobol systems into modern systems. The only reason COBAL is dying is

1355
01:36:21,920 --> 01:36:26,760
because it's not the language. Language
isn't bad. It's the data systems was

1356
01:36:26,960 --> 01:36:30,399
where the data was built into the
data processing was built into the language.

1357
01:36:30,439 --> 01:36:32,960
You open files, you write the
files that they didn't. They didn't do

1358
01:36:33,039 --> 01:36:38,920
what c did and separate data from
the language. They kept data in the

1359
01:36:38,960 --> 01:36:45,000
language together. So the answer is
put a real mission critical database underneath your

1360
01:36:45,000 --> 01:36:47,359
COBOL system. And now your Cobol
system rocks and rolls just like every other

1361
01:36:47,399 --> 01:36:50,800
system in the world. And you
know, whether it's Java or c Sharp

1362
01:36:51,239 --> 01:36:56,199
or Go or whatever. Language,
that's all COBAL is is a language.

1363
01:36:56,479 --> 01:37:02,600
Now the data system modernized instantaneously because
we have all the mission critical scalable features

1364
01:37:03,079 --> 01:37:09,079
that COBAL needs that centered the hood. So that's the power of having a

1365
01:37:09,159 --> 01:37:15,239
real mission critical database under your in
your solution. Wow. Yeah, Well

1366
01:37:15,880 --> 01:37:17,359
we could go on forever. Maybe
we could come back and talk some more,

1367
01:37:17,399 --> 01:37:25,159
because there's the IoT world is exciting
and there's an IoT and I really,

1368
01:37:25,279 --> 01:37:30,159
just for my own personal curiosity,
I want to dig in. I

1369
01:37:30,159 --> 01:37:34,960
want to have you back on the
show and dig in to the LDS work

1370
01:37:35,039 --> 01:37:38,960
that you're doing, because you've already
mentioned that you had like a team of

1371
01:37:39,000 --> 01:37:46,279
like sixty DBAs and like a thousand
engineers and that transmitting money around the globe

1372
01:37:46,359 --> 01:37:53,079
was too slow using existing systems,
so you built your own money transfer system.

1373
01:37:53,119 --> 01:37:55,760
Like, to me, that's just
fascinating. And the fact is it's

1374
01:37:55,880 --> 01:38:02,840
like the overlap between the church and
technology there, I think is just really

1375
01:38:02,880 --> 01:38:05,640
really fascinating. So I want to
have you back on just to talk about

1376
01:38:05,680 --> 01:38:10,560
that. Oh cool, Yeah,
it was. It was an awesome place

1377
01:38:10,920 --> 01:38:16,560
because they are so technology focused and
cutting edge in the technology world because it's

1378
01:38:16,560 --> 01:38:21,680
all about the members and making their
lives better and so using technology to do

1379
01:38:21,720 --> 01:38:27,760
that super important. So yeah,
and the church, Yeah, we talked

1380
01:38:27,760 --> 01:38:30,760
about that the other the next episode. That'll be good, right on,

1381
01:38:30,880 --> 01:38:35,399
right on. Have you ever wished
that you had a group of people that

1382
01:38:35,439 --> 01:38:39,960
were just as passionate about writing code
as you are. I know I did.

1383
01:38:40,039 --> 01:38:42,640
I did that for most of my
career. I'd go to the meetups,

1384
01:38:42,680 --> 01:38:45,600
I try and create other opportunities,
and it was just really hard,

1385
01:38:45,800 --> 01:38:47,399
right the meetups. I got some
of that, but they were only like

1386
01:38:47,479 --> 01:38:50,600
once or twice a month, and
it was just really hard to find that

1387
01:38:50,640 --> 01:38:55,159
group of people that I connected with
and really wanted to, you know,

1388
01:38:55,239 --> 01:38:58,760
talk about code a lot, right, I mean, I love writing code.

1389
01:38:58,800 --> 01:39:02,359
I think it's the best. And
so I've decided to create this community

1390
01:39:02,880 --> 01:39:06,640
and create a worldwide community that we
can all jump in and do it.

1391
01:39:06,680 --> 01:39:11,560
So we're going to have two workshops
every week. One of those or two

1392
01:39:11,600 --> 01:39:14,279
of those every month are going to
be Q and A calls right where you

1393
01:39:14,279 --> 01:39:17,079
can get on you can ask me
or me and another expert questions. The

1394
01:39:17,119 --> 01:39:21,600
rest of them are going to be
focused on different aspects of career or programming

1395
01:39:21,760 --> 01:39:26,319
or things like that. Right,
So it'll go anywhere from like deployments and

1396
01:39:26,359 --> 01:39:30,640
containers all the way up to managing
your four oh one K and negotiating your

1397
01:39:30,000 --> 01:39:33,439
benefits package. Well, we'll cover
all of it. Okay, and then

1398
01:39:33,439 --> 01:39:38,760
we're also going to have meetups every
month for your particular technology area. So

1399
01:39:38,800 --> 01:39:42,159
we have shows about JavaScript, to
react, angular view, and so on.

1400
01:39:42,520 --> 01:39:44,800
We're going to have meetups for all
of those things. I'm going to

1401
01:39:44,840 --> 01:39:47,319
revive the freelancer show. We'll have
one about that right so you can get

1402
01:39:47,359 --> 01:39:51,760
started freelancing or continue freelancing if that's
where you're at. And I'm working on

1403
01:39:51,840 --> 01:39:59,239
finding authors who can actually do weekly
video tutorials on some thing for ten minutes.

1404
01:39:59,479 --> 01:40:02,000
This relate again to those technology areas
so that you can stay current,

1405
01:40:02,079 --> 01:40:05,560
keep growing. So if you're interested, go to toppendevs dot com, slash

1406
01:40:05,640 --> 01:40:12,039
sign up and you can get in
right now for thirty nine dollars. When

1407
01:40:12,079 --> 01:40:15,560
we're done, that price is going
to go up to seventy five dollars,

1408
01:40:15,000 --> 01:40:19,880
and the thirty nine dollars price gets
you access to two calls per week.

1409
01:40:20,720 --> 01:40:25,600
The full price at one hundred and
fifty dollars, which is going to be

1410
01:40:25,600 --> 01:40:29,680
seventy five dollars over the next few
weeks. That price is going to get

1411
01:40:29,720 --> 01:40:32,239
you access to all of the calls
and all of the tutorials and everything else

1412
01:40:32,279 --> 01:40:38,359
that we put out from top endevs
along with member pricing for our remote conferences

1413
01:40:38,399 --> 01:40:42,359
that are coming up next year.
So go check it out topendevs dot com

1414
01:40:42,359 --> 01:40:50,319
slash sign up. So let's move
on to picks or In last week we

1415
01:40:50,319 --> 01:40:56,600
talked about movies, Did you bring
anything anything new this week? I'm working

1416
01:40:56,640 --> 01:41:00,439
on it, you know. I
of course had to spend all my time

1417
01:41:00,840 --> 01:41:03,840
since last episode actually thinking about what
my pick is going to be this time,

1418
01:41:04,960 --> 01:41:08,960
which is not a movie, so
it's slightly more interesting. I think

1419
01:41:09,000 --> 01:41:12,640
my pick this time is going to
be a local stack, which is a

1420
01:41:12,920 --> 01:41:16,439
technology that takes AWS offline so you
can do local development work. And I

1421
01:41:16,439 --> 01:41:20,119
think they're doing a lot of interesting
things there and trying to build parity for

1422
01:41:20,319 --> 01:41:23,840
what is running an AWS I can
see is a huge challenge. I mean,

1423
01:41:23,840 --> 01:41:28,399
obviously it's not mission critical level of
stuff. But one of the reasons

1424
01:41:28,439 --> 01:41:31,920
I bring this up is because we
just create my company it just completed a

1425
01:41:31,920 --> 01:41:36,920
collaboration with them super successful where we
released an authorist extension for local stack to

1426
01:41:38,479 --> 01:41:43,439
amp up the security on the authentication
authorization side. So I think great team,

1427
01:41:43,520 --> 01:41:45,560
awesome stuff that they're doing. If
you don't know what local stack is

1428
01:41:45,560 --> 01:41:49,640
and you're using aws, you definitely
have to check it out right on.

1429
01:41:50,079 --> 01:41:55,199
Very cool. All right, Mike, what you bring for us this time?

1430
01:41:55,600 --> 01:41:59,880
Well, you said something kind of
personal. Whatever. So I'm a

1431
01:42:00,039 --> 01:42:03,560
I got my PhD in music theory
and my bachelor's in music composition. So

1432
01:42:03,600 --> 01:42:09,000
I'm a musician at heart. I
work technology because that's where the money is,

1433
01:42:09,039 --> 01:42:12,760
and my mind thinks that way too. That I love it. But

1434
01:42:12,840 --> 01:42:15,479
I played the piano, and so
one of my favorite piano pieces, the

1435
01:42:15,560 --> 01:42:20,479
Rockmando off Piano Concectial number two.
I like so many, but that is

1436
01:42:20,600 --> 01:42:25,199
just an amazing piece of music.
And when I listen to music like that,

1437
01:42:26,199 --> 01:42:30,960
I actually it's like programming. Now. It sounds weird, but I

1438
01:42:30,000 --> 01:42:35,359
see structure everywhere. It's layers upon
layers of If you think of objectority programming,

1439
01:42:35,359 --> 01:42:40,199
that's what a music composition is.
Is like an objectorated program with layers

1440
01:42:40,279 --> 01:42:44,680
upon layers of objects nesting with each
other in real time, with beautiful sounds.

1441
01:42:45,760 --> 01:42:50,239
And so I love I love bridging
the world of computers and music.

1442
01:42:50,319 --> 01:42:55,079
That's just kind of way my brain
works. That's cool. I've never thought

1443
01:42:55,079 --> 01:42:58,520
of it that way, but yeah, that makes a lot of sense.

1444
01:42:59,239 --> 01:43:04,159
Do you have like specific background music
that you use when you're working. Uh.

1445
01:43:04,239 --> 01:43:09,600
Yeah, none. If I turned
on music, my braid goes straight

1446
01:43:09,600 --> 01:43:12,840
into the music, forget everything else
because I'm I, like I said,

1447
01:43:12,840 --> 01:43:15,760
I got a PhD music theory,
so my brain's an analytical brain. I

1448
01:43:15,760 --> 01:43:19,640
don't just right here music. My
braid is analyzing music, and so it

1449
01:43:19,680 --> 01:43:24,600
takes over my whole braid. So
no, I can't, you know,

1450
01:43:24,760 --> 01:43:27,399
in the exact same way. Like
there are so many times I used to

1451
01:43:27,399 --> 01:43:30,720
listen to music while I was doing
things and I would have to take my

1452
01:43:30,760 --> 01:43:32,960
headphones off so I could think,
and I think there's nothing to this,

1453
01:43:33,199 --> 01:43:36,359
Like people who are driving cars,
which are super common, turning down the

1454
01:43:36,439 --> 01:43:40,800
radio so they know where to pull
over on the side of road. So

1455
01:43:41,039 --> 01:43:44,399
you know there's something there for sure. Yeah, no, I agree.

1456
01:43:44,479 --> 01:43:47,199
The The only exception, like,
the only thing I can listen to in

1457
01:43:47,239 --> 01:43:54,239
the background and stay focused on work
for me is Pink Floyd's Dark Side of

1458
01:43:54,279 --> 01:43:59,000
the Moon. And I don't know
why that is continuously Yeah, yeah,

1459
01:43:59,039 --> 01:44:03,000
yeah, it's one of my playlist
and I just repeat it and and it

1460
01:44:03,159 --> 01:44:08,880
just plays, but it puts me
in flow state. But any any other

1461
01:44:08,960 --> 01:44:14,359
song and I'm paying attention to the
music. Yeah, there's something like just

1462
01:44:14,439 --> 01:44:16,439
white noise in general, all that
it can be used to stimulate. So

1463
01:44:16,520 --> 01:44:18,800
you know, maybe this for you, you know, with your brain waves,

1464
01:44:18,880 --> 01:44:21,239
is just how to get you in
that state. I you know,

1465
01:44:21,359 --> 01:44:26,560
it can be anything, and for
you it's this one. Yeah. Cool.

1466
01:44:26,640 --> 01:44:30,359
Well, I brought two picks to
the show today. The first one

1467
01:44:30,399 --> 01:44:33,840
the same one that I picked last
week. Platform Con coming up. I

1468
01:44:33,840 --> 01:44:39,960
think it's coming up in May,
five day virtual conference about platform engineering and

1469
01:44:40,039 --> 01:44:44,560
all the aspects of that. Luca
who's been a previous guest on the show,

1470
01:44:44,680 --> 01:44:47,439
he'll be back on the show in
March to talk about platform Con.

1471
01:44:47,479 --> 01:44:53,720
But it's really great speakers lined up
there, so at platform con dot com

1472
01:44:53,840 --> 01:44:57,399
check that out. Totally free,
five day virtual event. And then the

1473
01:44:57,439 --> 01:45:05,199
other thing not technical related at all, but recently I put on a throttle

1474
01:45:05,199 --> 01:45:10,800
body space or a cold air intake
and a mass airflow sensor on my truck

1475
01:45:10,920 --> 01:45:15,560
to improve the performance of it.
Bought all of them from American Trucks dot

1476
01:45:15,600 --> 01:45:19,119
com and it was super cool because
you tell it which vehicle you have and

1477
01:45:19,319 --> 01:45:28,199
the website re updates itself to only
show stuff that is compatible with your exact

1478
01:45:28,279 --> 01:45:30,119
vehicle, so you don't buy something
that's not going to work. But then

1479
01:45:30,159 --> 01:45:35,600
they also have on every product page
they have videos showing you, you know,

1480
01:45:35,640 --> 01:45:39,319
how to install it, what the
performance is going to be like before

1481
01:45:39,359 --> 01:45:43,000
and after where they'll put the truck
on the dino and show you the output.

1482
01:45:43,079 --> 01:45:46,920
But just a really well done website. So yeah, American Trucks dot

1483
01:45:46,920 --> 01:45:50,520
com. Does it come with the
vision pro you know that you can put

1484
01:45:50,560 --> 01:46:00,800
that on. Cool note, but
that's actually a pretty cool idea. Cool

1485
01:46:00,960 --> 01:46:03,159
All right, Well, I believe
we have an episode. Mike, thanks

1486
01:46:03,159 --> 01:46:09,800
so much for being on the show. This has been there's been information overload

1487
01:46:09,960 --> 01:46:16,800
in every positive aspect of the term. Yeah you really you did a great

1488
01:46:16,880 --> 01:46:24,520
job of the highlighting the role that
DBAs have had and the fact that that

1489
01:46:24,520 --> 01:46:28,920
that need still exists. Yeah for
sure. So thank you for thank you

1490
01:46:28,920 --> 01:46:32,079
for coming on, and we'll check
in and have you back up back on

1491
01:46:32,119 --> 01:46:35,760
the show because I want to have
that follow up conversation with you. Cool.

1492
01:46:35,960 --> 01:46:44,720
I have some burning questions in that
area. All right, Larren,

1493
01:46:44,800 --> 01:46:46,520
thanks for joining me, love having
you on the show. Man, looking

1494
01:46:46,520 --> 01:46:51,359
forward to many many future episodes and
everyone listening. Thank y'all for listening,

1495
01:46:51,560 --> 01:46:53,920
and we'll see y'all next week.
