1
00:00:00,060 --> 00:00:02,440
Michael: Hello and welcome to Postgres.FM,
a weekly show about

2
00:00:02,440 --> 00:00:03,300
all things PostgreSQL.

3
00:00:03,560 --> 00:00:05,240
I am Michael, founder of pgMustard.

4
00:00:05,280 --> 00:00:06,800
This is Nikolay, founder of Postgres.AI.

5
00:00:07,200 --> 00:00:09,440
Hey Nikolay, what are we talking
about this week?

6
00:00:09,960 --> 00:00:14,940
Nikolay: Hi Michael, I thought
sometimes it's a good idea to

7
00:00:15,060 --> 00:00:17,280
reconsider decisions, you know.

8
00:00:18,620 --> 00:00:23,860
And if you chose some tool or some
project to work with, sometimes

9
00:00:23,860 --> 00:00:30,920
it's good to look back at recent
experience and further back

10
00:00:31,340 --> 00:00:35,820
in the past, why you made this
decision and think is it still

11
00:00:35,860 --> 00:00:36,720
the right decision?

12
00:00:37,640 --> 00:00:43,220
And should you keep using this
product or system or project or

13
00:00:43,220 --> 00:00:47,060
anything or tool or it's time to
change it?

14
00:00:47,980 --> 00:00:50,140
Michael: Yeah, I hope you're not
having second thoughts.

15
00:00:51,660 --> 00:00:52,940
Nikolay: You can doubt anything.

16
00:00:53,940 --> 00:00:54,660
Why not?

17
00:00:55,960 --> 00:00:59,220
Michael: Just I had on my list
of people I expected to doubt

18
00:00:59,220 --> 00:01:04,760
things Nikolay Samokhvalov doubting
Postgres was very, very low

19
00:01:04,760 --> 00:01:05,700
down my list.

20
00:01:06,820 --> 00:01:10,120
Nikolay: Okay, so, by the way,
good pronunciation of my last

21
00:01:10,120 --> 00:01:10,620
name.

22
00:01:11,760 --> 00:01:12,260
Yes.

23
00:01:12,340 --> 00:01:13,580
Yeah, thank you.

24
00:01:14,540 --> 00:01:19,940
And yeah, so, honestly, it's not
a joke.

25
00:01:20,800 --> 00:01:23,800
I'm thinking, should I still use
Postgres?

26
00:01:25,640 --> 00:01:29,120
And for me, of course, it's a much
more fundamental question,

27
00:01:30,780 --> 00:01:32,280
rather than for like...

28
00:01:33,080 --> 00:01:37,480
Compared to people even if you
even if you CTO and all your data

29
00:01:37,480 --> 00:01:40,180
in Postgres it's a big question
for you to...

30
00:01:41,240 --> 00:01:44,480
But for me it's even a bigger question
because a company called

31
00:01:44,480 --> 00:01:52,700
Postgres.AI and last 19 years I
put all data to Postgres, last...

32
00:01:53,300 --> 00:01:55,300
Okay, how many years?

33
00:01:56,000 --> 00:01:59,400
Postgres consultants, like, a source
of income depends on it.

34
00:01:59,800 --> 00:02:03,040
Not only data in Postgres, but
also all my activities are in

35
00:02:03,040 --> 00:02:03,480
Postgres.

36
00:02:03,480 --> 00:02:10,640
And since 2007, I'm also a community
activities, having some

37
00:02:10,640 --> 00:02:16,940
community activities, all my thoughts
related to professional

38
00:02:17,860 --> 00:02:24,240
stuff very close to Postgres, around
Postgres, but I must admit

39
00:02:24,240 --> 00:02:25,080
I have doubts.

40
00:02:26,400 --> 00:02:31,100
So what I would like to for us
today discussing our topic which

41
00:02:31,100 --> 00:02:32,100
is why Postgres.

42
00:02:34,140 --> 00:02:39,480
What I would like to have like
doing this discussion is to I

43
00:02:39,480 --> 00:02:43,220
would like to look inside myself,
raise all the doubts I have,

44
00:02:43,740 --> 00:02:49,860
and honestly, If the doubts grow
and we don't resolve them, I'm

45
00:02:49,860 --> 00:02:56,320
ready to switch to a different
database system and a different

46
00:02:56,320 --> 00:02:57,040
type of business.

47
00:02:57,040 --> 00:02:57,940
I'm not joking.

48
00:02:59,760 --> 00:03:01,200
Michael: I'm looking forward to
this.

49
00:03:01,800 --> 00:03:04,100
Nikolay: I see huge potential recently.

50
00:03:04,160 --> 00:03:07,800
We started growing in all aspects
and it's super interesting.

51
00:03:07,800 --> 00:03:10,780
and so many things not yet accomplished.

52
00:03:12,180 --> 00:03:17,360
I have big ideas, I think I have
big ideas too, which I must

53
00:03:17,360 --> 00:03:18,740
implement and so on.

54
00:03:18,740 --> 00:03:20,180
But I also have doubts.

55
00:03:20,240 --> 00:03:29,880
Let's talk about them and if they
start to overweigh these ideas

56
00:03:30,220 --> 00:03:36,640
and desire to build and so on,
then I'm honestly open to switch.

57
00:03:37,660 --> 00:03:38,160
Really.

58
00:03:38,240 --> 00:03:42,520
It's also probably I won't be present
on this podcast anymore.

59
00:03:42,520 --> 00:03:43,420
I'm not joking.

60
00:03:44,840 --> 00:03:45,340
Really.

61
00:03:45,420 --> 00:03:47,780
So, why Postgres?

62
00:03:47,780 --> 00:03:48,480
Michael: Let's go back.

63
00:03:48,480 --> 00:03:49,320
Let's go back.

64
00:03:49,340 --> 00:03:50,700
Should we start at the beginning?

65
00:03:52,080 --> 00:03:56,380
Why did we each choose Postgres
initially, both as users, but

66
00:03:56,380 --> 00:04:01,400
also to build tools around, build
companies around, build careers

67
00:04:01,420 --> 00:04:01,920
around?

68
00:04:02,140 --> 00:04:04,540
It'd be interesting to hear why
you chose it, even if it's...

69
00:04:04,540 --> 00:04:07,120
I know we've covered it briefly
before, but...

70
00:04:07,120 --> 00:04:09,100
Nikolay: You want to start from
me or from yourself?

71
00:04:10,080 --> 00:04:11,740
Michael: Why not start from you,
I think?

72
00:04:12,340 --> 00:04:13,160
Nikolay: Sounds good.

73
00:04:13,440 --> 00:04:15,900
I went to a great university in
1998.

74
00:04:17,180 --> 00:04:19,500
I think elite, like very good.

75
00:04:20,340 --> 00:04:22,460
I'm an MIT, it's in Russia.

76
00:04:23,040 --> 00:04:27,240
It's like hard to get into 1 of
the best technical universities.

77
00:04:29,440 --> 00:04:34,640
And applied maths and computer
science was focus, but smaller

78
00:04:34,640 --> 00:04:37,700
focus starting third grade you
need to choose specialty.

79
00:04:38,680 --> 00:04:44,240
I wanted to do hardcore stuff so
I went to kernel and operational

80
00:04:44,260 --> 00:04:48,520
systems and so on, but I remember
it was a couple of Armenian guys

81
00:04:48,520 --> 00:04:54,440
who were professors that were responsible
for this direction.

82
00:04:54,860 --> 00:04:59,080
I went to them, they said, write
us a letter, we will respond.

83
00:04:59,080 --> 00:05:00,560
And it's great.

84
00:05:00,860 --> 00:05:04,000
So I wrote a letter, no response,
wrote a letter once again,

85
00:05:04,000 --> 00:05:04,600
no response.

86
00:05:04,600 --> 00:05:09,940
So in my head I was thinking, damn,
I tried to be hardcore.

87
00:05:10,080 --> 00:05:16,660
Now I'm like, I approached guys
who are older than me, have experience

88
00:05:16,880 --> 00:05:20,040
in the same institute, in the same
subdivision.

89
00:05:21,760 --> 00:05:26,260
Many directions, by the way, AI
was already one of the directions,

90
00:05:26,760 --> 00:05:30,040
very different than today, of course,
but still, like neural

91
00:05:30,040 --> 00:05:31,580
networks and so on.

92
00:05:31,800 --> 00:05:34,020
Somehow it wasn't interested in
that direction.

93
00:05:34,060 --> 00:05:36,500
I personally was asked like what's
the easiest?

94
00:05:37,300 --> 00:05:42,540
And they said, oh, professor for
like which is doing databases

95
00:05:44,020 --> 00:05:49,080
is the easiest And he's like so
kind, you know, like, and definitely

96
00:05:49,200 --> 00:05:50,140
it's the easiest.

97
00:05:50,460 --> 00:05:51,660
Like, good.

98
00:05:52,060 --> 00:05:52,920
I go there.

99
00:05:52,920 --> 00:05:54,360
This is how I chose databases.

100
00:05:55,580 --> 00:05:56,080
Honestly.

101
00:05:57,180 --> 00:06:00,100
Then I started saying, you know,
databases are in the heart of

102
00:06:00,100 --> 00:06:02,420
any information system.

103
00:06:02,440 --> 00:06:03,840
It's where data is stored.

104
00:06:03,840 --> 00:06:05,740
It should be in good shape.

105
00:06:05,740 --> 00:06:13,220
If it's in bad shape, then everything
can be bad, slow, and so

106
00:06:13,220 --> 00:06:13,720
on.

107
00:06:14,280 --> 00:06:19,640
Not efficient or not bad quality,
like not secure or something.

108
00:06:19,640 --> 00:06:21,780
So many things, it's really in
the center, right?

109
00:06:21,780 --> 00:06:22,940
I believe in this.

110
00:06:23,080 --> 00:06:26,300
But at that time I chose just like
by accident.

111
00:06:27,440 --> 00:06:33,900
So, and then I worked with Oracle
slightly more than 1 year,

112
00:06:33,960 --> 00:06:38,440
with SQL Server maybe up to a couple
of years, and then somehow

113
00:06:38,440 --> 00:06:44,120
by accident they got into startups
in 2004-5, and they said of

114
00:06:44,120 --> 00:06:48,060
course we cannot buy, we have like
budget to build something.

115
00:06:48,900 --> 00:06:54,180
I joined and became CTO, like started
growing team and I was

116
00:06:54,180 --> 00:06:58,240
responsible for almost all decisions
technically and they said

117
00:06:58,240 --> 00:07:00,720
we cannot afford Oracle license
of course.

118
00:07:00,760 --> 00:07:04,900
I was a big fan of SQL Server and
I told them, okay, then we

119
00:07:04,900 --> 00:07:08,600
use the most popular open source
database system, which is MySQL.

120
00:07:09,520 --> 00:07:13,200
And you know, I probably mentioned,
right, 1 week later I was

121
00:07:13,200 --> 00:07:19,880
already almost quitting because
it's ridiculous, repair table,

122
00:07:20,360 --> 00:07:22,040
0000, date.

123
00:07:22,200 --> 00:07:23,780
I cannot work with it.

124
00:07:23,780 --> 00:07:29,440
I have good foundation, because
professor was kind and easy going,

125
00:07:29,440 --> 00:07:34,600
but it also was great professor,
and the best I think in Russia

126
00:07:34,600 --> 00:07:38,240
at that time in terms of academia
and very well known books and

127
00:07:38,240 --> 00:07:38,620
so on.

128
00:07:38,620 --> 00:07:43,500
I was very lucky to be his student
and then PhD student and his

129
00:07:43,500 --> 00:07:44,880
name is Sergei Kuznetsov.

130
00:07:45,900 --> 00:07:48,640
His name was unfortunately he died
recently.

131
00:07:50,360 --> 00:07:52,580
So yeah, he was a very great guy.

132
00:07:53,320 --> 00:07:58,320
And I learned a lot from him and
of course I learned, I studied

133
00:07:58,360 --> 00:08:04,960
books like Chris Date's, like kind
of simple thing, but also

134
00:08:04,960 --> 00:08:07,440
Garcia-Molina, Ullman, right?

135
00:08:08,300 --> 00:08:13,440
Which is… Later I learned these
guys are from Stanford.

136
00:08:13,980 --> 00:08:15,560
It was unexpected.

137
00:08:15,600 --> 00:08:18,760
I thought maybe it should be from
Berkeley or so, but then I

138
00:08:18,760 --> 00:08:25,100
also found they are already not
active but from Stanford.

139
00:08:25,580 --> 00:08:32,720
So many good stuff like relational
theory, calculus, These things.

140
00:08:33,480 --> 00:08:37,200
Sometimes I learned many things
in Russian, so sometimes I'm

141
00:08:37,200 --> 00:08:40,500
having difficulties finding proper
English names.

142
00:08:41,040 --> 00:08:43,400
But in general, I had a good foundation.

143
00:08:43,840 --> 00:08:47,960
SQL at that time already learned
like, it's actually from him

144
00:08:47,960 --> 00:08:50,940
I learned that nulls is a big problem
in SQL model.

145
00:08:51,060 --> 00:08:54,400
There is a relational model and
there is a SQL model and they

146
00:08:54,400 --> 00:08:56,140
are not completely the same.

147
00:08:56,380 --> 00:08:59,740
At that time I studied also SQL
standard.

148
00:09:00,240 --> 00:09:05,360
I remember SQL 92, then 1999, then
they started doing this 2.0.0.m

149
00:09:06,180 --> 00:09:12,280
or x, like kind of not whole big
release, but releasing parts,

150
00:09:12,280 --> 00:09:12,780
right?

151
00:09:13,060 --> 00:09:16,540
So a lot of stuff learned there.

152
00:09:18,060 --> 00:09:20,660
Standard is hard to deal with for
sure.

153
00:09:20,660 --> 00:09:24,440
So I like big respect to guys who
deal with it.

154
00:09:25,360 --> 00:09:27,460
Peter Eisentrout and Vic Fearing,
right?

155
00:09:28,480 --> 00:09:28,660
CB.

156
00:09:28,660 --> 00:09:29,670
From the Postgres side.

157
00:09:29,670 --> 00:09:29,760
LB.

158
00:09:29,760 --> 00:09:32,420
The closest to standard, these
2 guys, right?

159
00:09:32,780 --> 00:09:33,540
Big respect.

160
00:09:33,940 --> 00:09:35,300
For sure, it's hard.

161
00:09:35,740 --> 00:09:41,760
So I was very young, like 20, 21,
22, I was already reading the

162
00:09:41,760 --> 00:09:42,100
standard.

163
00:09:42,100 --> 00:09:46,460
Then I work with MySQL and what
a piece of something it is, actually,

164
00:09:46,460 --> 00:09:46,960
honestly.

165
00:09:47,580 --> 00:09:51,300
We learned some principles, but
you touch something and it doesn't

166
00:09:51,300 --> 00:09:55,120
work or work in opposite direction
than you compared to what

167
00:09:55,120 --> 00:09:56,240
you learned in Oracle.

168
00:09:57,180 --> 00:10:02,280
In SQL Server, of course, there
are some specifics, but in general,

169
00:10:02,720 --> 00:10:07,700
both systems were mature and worked
quite well and definitely

170
00:10:07,860 --> 00:10:09,140
like grown-up systems.

171
00:10:09,140 --> 00:10:11,020
MySQL wasn't a grown-up system.

172
00:10:11,160 --> 00:10:13,580
You need to choose at that time,
right?

173
00:10:13,580 --> 00:10:17,920
You need to choose if it's MyISAM,
repair table, but it lacks

174
00:10:17,920 --> 00:10:23,260
full-text search and all you need
to do was the second engine.

175
00:10:23,260 --> 00:10:24,740
So… CB.

176
00:10:24,960 --> 00:10:25,460
Michael: NDB?

177
00:10:25,760 --> 00:10:26,260
LB.

178
00:10:26,280 --> 00:10:28,440
Nikolay: NDB, right, but it's
super slow.

179
00:10:29,760 --> 00:10:30,660
Super slow.

180
00:10:31,160 --> 00:10:37,180
So 1 or 2 weeks I was on this,
but we just hired a guy from astronomical

181
00:10:37,440 --> 00:10:42,100
university from the same place
where Oleg Bartunov was, I think

182
00:10:42,100 --> 00:10:46,400
is still doing some academia activities.

183
00:10:46,880 --> 00:10:48,340
Maybe already know, I don't know.

184
00:10:48,340 --> 00:10:49,220
But at that time...

185
00:10:49,900 --> 00:10:54,260
So that guy said, I know this guy,
Oleg Bartunov, and try Postgres.

186
00:10:55,240 --> 00:10:58,880
And everything went in the right
place immediately.

187
00:10:59,140 --> 00:11:01,240
I converted super fast everything.

188
00:11:01,620 --> 00:11:02,420
Super fast.

189
00:11:02,920 --> 00:11:07,540
I needed to write an additional layer
of caching because I had my

190
00:11:07,540 --> 00:11:09,220
own ORM at that time.

191
00:11:09,220 --> 00:11:13,240
It was before I think current popular
ORMs became popular.

192
00:11:13,380 --> 00:11:14,840
It was before Django.

193
00:11:15,180 --> 00:11:19,540
I think Django and Ruby on Rails
already existed, but were not

194
00:11:19,540 --> 00:11:22,160
super popular, and we were using
PHP.

195
00:11:24,760 --> 00:11:29,920
I wrote my own and it had a lot
of work with metadata.

196
00:11:31,120 --> 00:11:34,040
I quickly switched to Postgres
and worked with metadata in Postgres,

197
00:11:34,040 --> 00:11:35,560
but it became very slow.

198
00:11:35,580 --> 00:11:38,540
Everything is good, but working
with metadata is much slower

199
00:11:38,800 --> 00:11:44,600
than in MySQL, so I needed to add
caching for queries to pg_class

200
00:11:44,720 --> 00:11:45,600
and so on.

201
00:11:46,080 --> 00:11:47,800
But this is the only concern.

202
00:11:48,180 --> 00:11:51,580
Everything else went like it was
like all the pieces of the puzzle

203
00:11:51,580 --> 00:11:54,020
in the same, like where they should
be, right?

204
00:11:55,440 --> 00:12:00,040
Because Postgres probably has issues
like replication, like we

205
00:12:00,040 --> 00:12:04,100
learned later and needed to use
Slony and Londiste later.

206
00:12:04,540 --> 00:12:10,520
But it works as expected if you
studied databases from books,

207
00:12:10,520 --> 00:12:11,020
right?

208
00:12:12,040 --> 00:12:18,240
From theory, Switching from theory
to Postgres is natural, which

209
00:12:18,240 --> 00:12:21,800
was not so if you switch from theory
to MySQL.

210
00:12:22,120 --> 00:12:28,100
This is how I end up actually loving
Postgres because it saved

211
00:12:28,100 --> 00:12:28,600
me.

212
00:12:29,200 --> 00:12:32,980
It's free because we couldn't afford
license being a small startup.

213
00:12:33,680 --> 00:12:34,440
It's open.

214
00:12:35,740 --> 00:12:39,660
Open maybe I didn't really care
that much at that time about

215
00:12:39,660 --> 00:12:42,140
openness, but I liked it.

216
00:12:43,380 --> 00:12:46,160
Extensibility, openness, I liked
it immediately.

217
00:12:46,720 --> 00:12:51,300
And most importantly for me, things
work as expected in terms

218
00:12:51,300 --> 00:12:57,540
of relational theory, like there
are triggers, there are views,

219
00:12:58,620 --> 00:13:04,120
right, and like null behavior and
so on, like these things as

220
00:13:04,140 --> 00:13:05,640
you expect them to be.

221
00:13:06,180 --> 00:13:07,420
Really reliable, right?

222
00:13:07,420 --> 00:13:13,280
The ACID principles, strict system
was already very strict to

223
00:13:13,280 --> 00:13:14,360
ACID principles.

224
00:13:14,440 --> 00:13:19,540
It probably was not super performant
at that time compared to

225
00:13:19,540 --> 00:13:20,580
MySQL MyISAM.

226
00:13:21,340 --> 00:13:23,600
But you didn't lose data.

227
00:13:25,580 --> 00:13:26,940
Except it's a bug, right?

228
00:13:26,940 --> 00:13:28,240
Bugs happen, of course.

229
00:13:30,640 --> 00:13:31,140
Michael: Yeah.

230
00:13:31,560 --> 00:13:34,300
So that was originally why you
chose Postgres.

231
00:13:34,340 --> 00:13:38,080
And I guess we've gone a little
bit into why you continue to

232
00:13:38,080 --> 00:13:40,780
choose it in terms of you fell
in love with it.

233
00:13:40,920 --> 00:13:45,080
But why, yeah, why do you continue
to build products and services

234
00:13:45,100 --> 00:13:45,860
for it?

235
00:13:46,220 --> 00:13:47,720
Nikolay: Well, this is my personal.

236
00:13:48,160 --> 00:13:49,800
I built 3 social networks.

237
00:13:50,460 --> 00:13:52,560
Well, I was in Russia then.

238
00:13:53,480 --> 00:14:00,720
12 years ago, migrated to the US
and lost my interest in social

239
00:14:00,720 --> 00:14:01,600
networks already.

240
00:14:02,280 --> 00:14:06,000
But interest to databases was constant
all the time.

241
00:14:06,580 --> 00:14:10,580
Yes, and Postgres popularity grew,
demand started to grow, I

242
00:14:10,580 --> 00:14:15,060
think, in 2014-15, and this is
exactly when I needed additional

243
00:14:15,060 --> 00:14:18,840
source of income, so I started
helping other companies which

244
00:14:19,860 --> 00:14:23,580
started having bigger databases
in Postgres, like Postgres databases,

245
00:14:23,580 --> 00:14:25,280
and started having troubles.

246
00:14:25,660 --> 00:14:31,320
It was natural for me to use my
knowledge and desire to work

247
00:14:31,320 --> 00:14:36,840
with Postgres and that interest
into databases to start a consulting

248
00:14:36,980 --> 00:14:42,500
practice and then this podcast
was born out of these seeds, meetups

249
00:14:42,500 --> 00:14:48,340
in the past and desire to go online
with meetup activity because

250
00:14:48,340 --> 00:14:52,440
I know people are everywhere, like,
and meetups are only in 1

251
00:14:52,440 --> 00:14:52,900
place.

252
00:14:52,900 --> 00:14:55,020
It's good to meet in person, but
yeah.

253
00:14:55,080 --> 00:14:58,680
So it was quite natural, everything
was natural.

254
00:14:59,440 --> 00:15:01,160
So why Postgres?

255
00:15:01,260 --> 00:15:05,080
Because it's just, I have an interest,
I have the opportunity, things

256
00:15:05,080 --> 00:15:08,040
like match, and we continue working
with it, right?

257
00:15:09,780 --> 00:15:10,720
Michael: Yeah, perfect.

258
00:15:11,100 --> 00:15:12,320
I'm only hearing positives.

259
00:15:16,360 --> 00:15:20,200
Should I go through mine quickly,
the reasons for choosing it

260
00:15:20,200 --> 00:15:20,700
initially?

261
00:15:25,680 --> 00:15:28,840
I think some of them are quite
different from yours, but it's also

262
00:15:28,840 --> 00:15:29,340
later.

263
00:15:29,640 --> 00:15:30,860
My journey is later.

264
00:15:30,860 --> 00:15:34,960
So I first came across Postgres
through work rather than through

265
00:15:34,960 --> 00:15:36,360
academia or anything.

266
00:15:36,660 --> 00:15:37,900
My degree was unrelated.

267
00:15:38,920 --> 00:15:43,740
So I ended up coming across it
first while I was working at a

268
00:15:43,740 --> 00:15:44,980
database tools company.

269
00:15:45,120 --> 00:15:50,780
So I first fell in love with software
and it was almost entirely

270
00:15:50,860 --> 00:15:54,500
graphical user interfaces to things
like databases.

271
00:15:55,520 --> 00:16:00,400
So our biggest divisions at the
company were for SQL Server tools.

272
00:16:00,720 --> 00:16:02,360
So that was my first experience.

273
00:16:02,360 --> 00:16:06,360
And I came across Postgres first
as something people started

274
00:16:06,360 --> 00:16:06,860
requesting.

275
00:16:07,100 --> 00:16:09,640
Support, yeah, can you do the
same tools?

276
00:16:09,720 --> 00:16:12,600
We'd love to buy the same tools
from you for Postgres.

277
00:16:12,640 --> 00:16:17,300
You know, companies that used and
loved our tools for SQL Server

278
00:16:17,440 --> 00:16:22,080
were starting to do some projects
on Postgres, you know, moving

279
00:16:22,260 --> 00:16:26,040
not that many migrations at the
time, but like greenfield projects,

280
00:16:26,040 --> 00:16:27,380
they would often choose Postgres.

281
00:16:27,380 --> 00:16:31,220
So this was about that same time
that that 2013, 2014,

282
00:16:31,400 --> 00:16:31,900
2015.

283
00:16:32,380 --> 00:16:36,140
So it's those years that I started
to hear it more and more.

284
00:16:36,280 --> 00:16:42,240
And then in late 2014, I actually
moved to a startup in London,

285
00:16:43,220 --> 00:16:46,660
who were a payments company, our
payments company GoCardless,

286
00:16:46,960 --> 00:16:51,760
and their team, it was exceptional
engineering team, still is.

287
00:16:53,940 --> 00:16:55,160
And they love Postgres.

288
00:16:55,520 --> 00:16:59,180
And that really, like, hearing
that bigger companies were starting

289
00:16:59,180 --> 00:17:04,600
to use it, and then also knowing
that the cool YC startup scene

290
00:17:04,600 --> 00:17:08,360
were also using Postgres, that
really triggered something in

291
00:17:08,360 --> 00:17:08,480
me.

292
00:17:08,480 --> 00:17:10,600
It's like, ah, this isn't just
something.

293
00:17:10,600 --> 00:17:13,220
Like, I already knew that it was
up and coming.

294
00:17:13,260 --> 00:17:16,080
I know it's really old at the same
time, but I already knew it

295
00:17:16,080 --> 00:17:17,300
was becoming more popular.

296
00:17:17,720 --> 00:17:22,580
And that these engineers that were
much younger and VC-backed

297
00:17:22,800 --> 00:17:27,520
startup in the UK chose it and
loved it really inspired me to

298
00:17:27,520 --> 00:17:32,000
like, think this could be a platform
I'd want to build for this.

299
00:17:32,000 --> 00:17:33,320
This could be going places.

300
00:17:33,320 --> 00:17:34,060
And also.

301
00:17:34,940 --> 00:17:39,360
It's clearly a technology that
is already like sound and fundamentally

302
00:17:39,560 --> 00:17:42,660
sound if the, all of these companies
are choosing it.

303
00:17:42,780 --> 00:17:47,080
And I'd also really kind of reacted
negatively to some of the

304
00:17:47,080 --> 00:17:49,280
other things that had been hyped
up at a similar time.

305
00:17:49,280 --> 00:17:54,800
Like I really couldn't get behind
the whole MongoDB, like the

306
00:17:54,800 --> 00:17:56,760
NoSQL movement at the time.

307
00:17:56,760 --> 00:17:58,440
And also, do you remember big data?

308
00:17:58,440 --> 00:18:00,300
Do you remember that as like a
phase?

309
00:18:01,320 --> 00:18:06,140
Just really reacted strongly, like
strongly and negatively towards

310
00:18:06,140 --> 00:18:08,320
a lot of the people that were hyping
those up because it just

311
00:18:08,320 --> 00:18:12,420
didn't seem based on solid foundation,
like on good principles.

312
00:18:12,920 --> 00:18:15,800
And it didn't make sense to me
that these things were needed

313
00:18:15,800 --> 00:18:17,980
or like fundamentally better.

314
00:18:19,540 --> 00:18:23,480
And so when I saw Postgres was
coming, was up and coming, and

315
00:18:23,480 --> 00:18:26,640
it was based on good fundamentals,
and they prioritised, like

316
00:18:26,640 --> 00:18:29,080
I saw a lot of value alignment,
like you,

317
00:18:29,240 --> 00:18:29,440
Nikolay: I

318
00:18:29,440 --> 00:18:33,800
Michael: would, And I think like
most people, correctness and

319
00:18:33,800 --> 00:18:36,500
reliability are more important
than performance.

320
00:18:36,840 --> 00:18:40,120
Of course, performance matters
after that, but there's no point

321
00:18:40,120 --> 00:18:41,760
in it being fast and wrong.

322
00:18:42,340 --> 00:18:46,560
It's just that priority order seems
so much better in the Postgres

323
00:18:46,560 --> 00:18:47,060
ecosystem.

324
00:18:47,240 --> 00:18:49,900
But then beyond that, there were
loads of other benefits.

325
00:18:49,900 --> 00:18:54,940
Like as you say, free as in price,
that's obviously extremely

326
00:18:54,960 --> 00:18:55,460
attractive.

327
00:18:55,520 --> 00:19:00,040
And I think probably still underappreciated,
like actually free,

328
00:19:00,040 --> 00:19:01,420
like totally free.

329
00:19:02,260 --> 00:19:05,220
And then also the fact that it's
open from a source code perspective.

330
00:19:06,220 --> 00:19:10,060
Having built tools for SQL Server
and Oracle, having been involved

331
00:19:10,080 --> 00:19:14,060
in teams, having to research new
versions or look back to why

332
00:19:14,060 --> 00:19:16,400
things have broken, all sorts of
things.

333
00:19:16,400 --> 00:19:20,280
If you don't have access to the
source code, I mean, you don't

334
00:19:20,280 --> 00:19:20,960
have access.

335
00:19:21,100 --> 00:19:22,960
Nikolay: Many companies don't understand
that.

336
00:19:22,960 --> 00:19:26,060
I first felt this.

337
00:19:26,840 --> 00:19:31,020
I was experiencing this insight,
what you're just sharing, that

338
00:19:31,020 --> 00:19:34,580
source code is like… it's like
kind of deeper documentation.

339
00:19:36,100 --> 00:19:41,760
When I first had it in 2018, helping
some company which we are

340
00:19:41,760 --> 00:19:45,320
migrating to RDS, they were huge
already.

341
00:19:45,560 --> 00:19:50,540
They needed logical replication
to first to Vertica, then to

342
00:19:50,540 --> 00:19:51,800
Snowflake, doesn't matter.

343
00:19:52,200 --> 00:19:55,760
But they considered some tools
and 1 of the tools was maybe 1

344
00:19:55,760 --> 00:19:59,020
of the popular at that time was
Click, Xatunity.

345
00:20:00,660 --> 00:20:03,740
And the documentation didn't cover
so many questions I had.

346
00:20:04,860 --> 00:20:09,520
And I just, like, I realized I
was talking to my client, I just

347
00:20:09,520 --> 00:20:13,680
said, you know what, if they had
a source available, not open

348
00:20:13,680 --> 00:20:16,700
source, a source available, I would
just answer myself, because

349
00:20:16,700 --> 00:20:20,640
I can read code, it doesn't matter
language, I could find this

350
00:20:20,640 --> 00:20:23,740
place, how exactly they create
logical slot.

351
00:20:24,140 --> 00:20:27,900
Spent a lot of time and efforts,
I realized they create logical

352
00:20:27,900 --> 00:20:31,080
slot using SQL function, not replication
connection.

353
00:20:31,500 --> 00:20:32,940
That was their problem.

354
00:20:33,700 --> 00:20:39,520
But for me, lack of source code
means lack of ultimate documentation,

355
00:20:39,680 --> 00:20:40,180
basically.

356
00:20:41,260 --> 00:20:43,580
Michael: Ultimate and accurate
and up-to-date.

357
00:20:46,160 --> 00:20:47,760
Nikolay: It's also about transparency.

358
00:20:48,100 --> 00:20:51,960
If you don't provide source code,
you always can say, oh, we

359
00:20:51,960 --> 00:20:54,360
fixed this problem, but not in
all cases.

360
00:20:54,680 --> 00:20:59,060
But you cannot bullshit if you
have source available with all

361
00:20:59,060 --> 00:21:02,860
versions and tags and releases,
like anyone can see.

362
00:21:02,860 --> 00:21:03,980
It's about transparency.

363
00:21:04,700 --> 00:21:09,060
And transparency is why I have
doubts in Postgres.

364
00:21:09,840 --> 00:21:10,700
Michael: Oh, interesting.

365
00:21:11,180 --> 00:21:13,440
Nikolay: Yes, but it's not technical.

366
00:21:13,440 --> 00:21:15,660
Let's talk about technical first
before we...

367
00:21:15,660 --> 00:21:18,420
Michael: Well, I think we can intertwine
them.

368
00:21:18,420 --> 00:21:21,800
But a couple of other reasons I
chose it that are on the non-technical

369
00:21:22,160 --> 00:21:22,640
side.

370
00:21:22,640 --> 00:21:25,520
I think when you're building for.

371
00:21:25,520 --> 00:21:29,240
So I I'd worked at places that
chose Postgres, but I wasn't the

372
00:21:29,240 --> 00:21:30,000
decision maker.

373
00:21:30,000 --> 00:21:30,280
At those.

374
00:21:30,280 --> 00:21:33,580
You know, It was an already made
decision when I worked there.

375
00:21:33,680 --> 00:21:36,980
I never chose explicitly until
I started my own business.

376
00:21:37,300 --> 00:21:42,800
So it was only then that I mean,
we chose it not just as users,

377
00:21:42,800 --> 00:21:46,620
of course, but as as a platform
to build on.

378
00:21:47,080 --> 00:21:51,100
And because I was trying to build
something like long term, it's

379
00:21:51,100 --> 00:21:55,620
very much, you know, a small, slow,
steady, not VC backed, hopefully

380
00:21:55,640 --> 00:21:57,480
for decades, that kind of business.

381
00:21:58,180 --> 00:22:02,440
I didn't want to build for a platform
that there was, that was

382
00:22:02,440 --> 00:22:06,020
like, that could shift and change
drastically from underneath

383
00:22:06,020 --> 00:22:11,760
me and also that was really at
risk of a company changing their

384
00:22:11,760 --> 00:22:13,520
mind or changing something drastically.

385
00:22:13,580 --> 00:22:17,040
So it's often described as platform
risk and it felt really low

386
00:22:17,040 --> 00:22:20,060
with Postgres, not just because
it was built on really solid

387
00:22:20,060 --> 00:22:25,120
foundations but also because there's
no 1 company that can, if

388
00:22:25,120 --> 00:22:28,520
they, you know, there's no company
behind it, there's no commercial

389
00:22:28,680 --> 00:22:32,100
entity that is dependent on its
success.

390
00:22:32,100 --> 00:22:35,340
Nikolay: Like MySQL AB, right?

391
00:22:36,300 --> 00:22:37,280
Michael: Yeah, well, but...

392
00:22:37,280 --> 00:22:38,600
Nikolay: Or MongoDB, like the company.

393
00:22:38,600 --> 00:22:40,020
Michael: Yeah, like all of...

394
00:22:40,020 --> 00:22:42,240
If you consider all of the companies
that have changed their

395
00:22:42,240 --> 00:22:46,220
licenses in the last few years,
for example, That's just one example

396
00:22:46,220 --> 00:22:48,660
of how things can shift from underneath
you.

397
00:22:48,900 --> 00:22:52,700
But also, they could go completely
closed source, or in MySQL's

398
00:22:52,820 --> 00:22:57,940
case, stop publishing test cases,
which is one step towards, again,

399
00:22:58,080 --> 00:23:01,400
I don't think we've had any awful
examples where businesses really

400
00:23:01,400 --> 00:23:04,920
would have suffered, but they can
if there's a single company

401
00:23:04,920 --> 00:23:05,800
behind it.

402
00:23:05,800 --> 00:23:09,220
And the fact that Postgres was
not just, not just had seemingly

403
00:23:09,380 --> 00:23:13,260
had policies in place to prevent
that happening, but also seem

404
00:23:13,260 --> 00:23:14,560
to live those values.

405
00:23:15,060 --> 00:23:20,040
There's a real, there's lots of
companies that employ contributors

406
00:23:20,500 --> 00:23:24,400
and there's real collaboration
between those on new features

407
00:23:24,400 --> 00:23:25,640
and on bug fixes.

408
00:23:25,680 --> 00:23:30,800
And it seemed truly collaborative,
truly a community project,

409
00:23:30,860 --> 00:23:34,160
even though lots of those community
members were, almost all

410
00:23:34,160 --> 00:23:38,600
were being paid to work on it,
it was still a community, a group

411
00:23:38,600 --> 00:23:42,720
effort between collaborative organizations
that could all benefit

412
00:23:42,720 --> 00:23:43,800
from it getting better.

413
00:23:44,060 --> 00:23:48,260
And it just didn't seem like it
was as likely to have a fundamental

414
00:23:48,420 --> 00:23:50,900
shift as some of the other platforms
out there.

415
00:23:51,100 --> 00:23:52,620
Nikolay: It's interesting, actually.

416
00:23:53,300 --> 00:23:58,940
It resonates with my idea that
sometimes VC-backed company… Recently,

417
00:23:58,980 --> 00:24:03,180
we discussed companies which are
closing, post-VC-backed companies,

418
00:24:03,180 --> 00:24:04,300
startups, right?

419
00:24:05,140 --> 00:24:09,960
It resonates with the idea that
if you… VC-backed, you have pressure,

420
00:24:09,960 --> 00:24:10,340
right?

421
00:24:10,340 --> 00:24:13,880
And you can have… because of that
pressure, you can make some

422
00:24:14,380 --> 00:24:18,180
unpredicted moves, unpredictable
for your users and customers,

423
00:24:18,260 --> 00:24:18,760
right?

424
00:24:19,020 --> 00:24:23,360
For example, if you're a great
successful Postgres startup, but

425
00:24:23,360 --> 00:24:28,240
not successful enough for VCs,
you suddenly can decide to switch

426
00:24:28,240 --> 00:24:32,800
license and make more money if
you lose some users, right?

427
00:24:33,180 --> 00:24:33,680
Yeah.

428
00:24:34,240 --> 00:24:37,740
This is about Postgres, but you
apply the same logic for...

429
00:24:38,300 --> 00:24:41,940
This is about Postgres startup,
Postgres-related startup, right?

430
00:24:41,940 --> 00:24:45,460
But you apply the same logic to
Postgres core.

431
00:24:46,220 --> 00:24:48,500
Michael: Yeah, as a platform to
build on.

432
00:24:49,400 --> 00:24:50,520
Nikolay: Yeah, this is interesting.

433
00:24:51,220 --> 00:24:56,580
And if, for example, distributed
nature of development basically,

434
00:24:56,580 --> 00:24:57,080
right?

435
00:24:57,180 --> 00:24:58,760
Distributed nature of development.

436
00:24:58,820 --> 00:25:04,760
But of course there are some key
people and if they have gone,

437
00:25:04,760 --> 00:25:09,560
for example, disappeared or decided
to quit or something, Postgres

438
00:25:09,920 --> 00:25:12,280
has more chances to survive, right?

439
00:25:12,880 --> 00:25:17,300
This is what Bruce Momjian describes
in his talk Will Postgres

440
00:25:17,300 --> 00:25:19,480
Live Forever, right?

441
00:25:19,480 --> 00:25:22,580
Because like Postgres was dead several
times already.

442
00:25:23,300 --> 00:25:24,740
And someone picked it.

443
00:25:25,160 --> 00:25:29,180
Well, it was dead after it was
basically closed in Berkeley.

444
00:25:30,020 --> 00:25:35,560
And then it resurrected in the
middle of 90s as open source,

445
00:25:36,140 --> 00:25:36,640
right?

446
00:25:37,620 --> 00:25:39,180
So, yeah.

447
00:25:41,000 --> 00:25:41,940
Michael: Yeah, you're right.

448
00:25:41,940 --> 00:25:46,880
There are a few individuals who
contribute a huge, huge, huge

449
00:25:46,880 --> 00:25:47,380
amount.

450
00:25:48,700 --> 00:25:53,740
But it also feels like there are
others who contribute hugely

451
00:25:53,760 --> 00:25:54,160
too.

452
00:25:54,160 --> 00:25:59,580
And obviously, if a few of them
or several of them stopped, like

453
00:25:59,580 --> 00:26:06,420
when MySQL joined Oracle via Sun,
and you had the split with

454
00:26:06,420 --> 00:26:09,680
MariaDB if there was a fork like
that in the Postgres world for

455
00:26:09,680 --> 00:26:13,140
some reason and several of the
contributors all left at once

456
00:26:13,140 --> 00:26:17,960
or 1 or 2 really really big important
ones did I can imagine

457
00:26:17,960 --> 00:26:25,240
it being detrimental to the speed
of Postgres enhancements, but

458
00:26:25,240 --> 00:26:28,440
I do think there's still so much
momentum.

459
00:26:28,680 --> 00:26:30,480
And actually, I don't think...

460
00:26:30,480 --> 00:26:34,200
I mean, we can talk about it, but
I think feature growth is really

461
00:26:34,200 --> 00:26:38,180
helping with Postgres, but I actually
don't think it's as, now

462
00:26:38,180 --> 00:26:41,600
that it's competitive with Oracle
and SQL Server on a bunch of

463
00:26:41,600 --> 00:26:46,640
like enterprise and like performance
features, it's not as important

464
00:26:46,640 --> 00:26:49,620
that we keep innovating as quickly
on the feature level.

465
00:26:49,700 --> 00:26:54,220
Perhaps things like pgvector and
making sure we're available

466
00:26:54,220 --> 00:26:58,640
for new use cases via extensions
or via core could be important.

467
00:26:59,280 --> 00:27:01,160
But yeah, I'd be keen to go back
to you.

468
00:27:01,160 --> 00:27:02,200
You already raised...

469
00:27:02,960 --> 00:27:06,220
Do you want to cover technical
reasons why others are choosing

470
00:27:06,220 --> 00:27:09,560
it, maybe us or others, or do you
want to move to doubts and

471
00:27:09,560 --> 00:27:09,840
things

472
00:27:09,840 --> 00:27:10,240
Nikolay: like that?

473
00:27:10,240 --> 00:27:11,960
Let's quickly cover technical reasons.

474
00:27:11,960 --> 00:27:18,460
So first of all, it has a strong
foundation, follows principles,

475
00:27:18,640 --> 00:27:23,400
follows standard, not fully, but
quite well, much better than

476
00:27:23,400 --> 00:27:24,180
many others.

477
00:27:24,920 --> 00:27:30,700
And this is like, it has principles
like extensibility and so

478
00:27:30,700 --> 00:27:30,900
on.

479
00:27:30,900 --> 00:27:36,300
Like these technical things, like
Extensibility is constantly

480
00:27:36,300 --> 00:27:38,240
bringing new features.

481
00:27:39,960 --> 00:27:47,240
pgvector relies on extensions framework,
and it has its own lifecycle,

482
00:27:47,440 --> 00:27:50,180
but maybe it will go to the core
at some point.

483
00:27:50,840 --> 00:27:51,720
Maybe, right?

484
00:27:51,980 --> 00:27:56,080
As the full-text search or XML
did in the past, they were separate

485
00:27:56,840 --> 00:28:00,080
extensions, but then went to core.

486
00:28:00,580 --> 00:28:03,740
And this means also features are
coming, coming, coming.

487
00:28:03,740 --> 00:28:04,500
That's great.

488
00:28:05,820 --> 00:28:09,720
Michael: Or it could, there's another
success case where it could

489
00:28:09,720 --> 00:28:12,980
be more like PostGIS, which has
been incredibly successful and

490
00:28:12,980 --> 00:28:16,360
helpful for the growth of Postgres
in my opinion, and has stayed

491
00:28:16,360 --> 00:28:17,060
an extension.

492
00:28:17,300 --> 00:28:21,540
And I think a lot of people are
choosing PostGIS, and Postgres

493
00:28:21,600 --> 00:28:24,480
comes along for the ride, rather
than the other way around.

494
00:28:24,480 --> 00:28:25,400
And that's really cool.

495
00:28:25,400 --> 00:28:27,180
And it could be the same in pgvector.

496
00:28:27,400 --> 00:28:30,480
Like, people could be choosing
pgvector, and Postgres comes along

497
00:28:30,480 --> 00:28:31,900
for the ride in those cases.

498
00:28:32,120 --> 00:28:36,100
So yeah, either case could be a
huge success still.

499
00:28:37,060 --> 00:28:39,020
Nikolay: PostGIS is an interesting
example.

500
00:28:39,860 --> 00:28:43,980
Yeah, and it's kind of a whole
different world, right?

501
00:28:44,640 --> 00:28:49,280
But imagine it was part of, like
Postgres documentation doesn't

502
00:28:49,280 --> 00:28:50,040
have PostGIS.

503
00:28:51,460 --> 00:28:58,700
Would Postgres be even more successful
if PostGIS was in core

504
00:28:58,700 --> 00:29:00,300
and documentation had it?

505
00:29:00,300 --> 00:29:07,540
Or, for example, if Timescale,
the company, decided to go all

506
00:29:07,540 --> 00:29:14,440
in with TimescaleDB and make it
super open, eventually contributing

507
00:29:14,540 --> 00:29:15,420
it to Core.

508
00:29:16,240 --> 00:29:19,540
Just imagine, with all compression
and all the stuff and Postgres

509
00:29:19,540 --> 00:29:20,880
documentation had it.

510
00:29:21,740 --> 00:29:25,520
I know it's not good for their
business maybe, but imagine this

511
00:29:25,520 --> 00:29:26,980
world we live in.

512
00:29:27,160 --> 00:29:33,220
Postgres has PostGIS, it has TimescaleDB,
pgvector, it has everything,

513
00:29:33,240 --> 00:29:33,740
right?

514
00:29:33,960 --> 00:29:38,460
The level of quality is unified,
right?

515
00:29:38,460 --> 00:29:43,240
It's like it's being tested all
the time in the same manner as

516
00:29:43,440 --> 00:29:44,440
Postgres itself.

517
00:29:44,660 --> 00:29:49,780
And people don't spend time trying
to understand how to bring

518
00:29:49,780 --> 00:29:50,920
these pieces together.

519
00:29:51,400 --> 00:29:55,080
And if it's managed Postgres like
RDS or something, all the pieces

520
00:29:55,080 --> 00:29:56,100
are there already.

521
00:29:56,940 --> 00:29:58,780
Michael: Yeah, I can see arguments
both ways.

522
00:29:58,780 --> 00:30:02,040
I've seen people I respect a lot
arguing completely the opposite

523
00:30:02,040 --> 00:30:02,540
direction.

524
00:30:02,640 --> 00:30:04,780
Nikolay: So maybe we should define
what Postgres is.

525
00:30:04,780 --> 00:30:09,780
There is Postgres when you just
install it with a few extensions,

526
00:30:09,780 --> 00:30:13,320
not a few, dozens of them, so-called
KDRIP modules, right?

527
00:30:13,320 --> 00:30:18,025
And also CLI, tool psql, and that's
it, right?

528
00:30:18,025 --> 00:30:18,580
That's it.

529
00:30:19,900 --> 00:30:25,180
It also can create a user in your
Ubuntu or Debian or CentOS

530
00:30:25,180 --> 00:30:28,940
and set things up and be installed
as a service.

531
00:30:30,100 --> 00:30:30,740
Of course.

532
00:30:30,920 --> 00:30:31,920
But that's it.

533
00:30:32,580 --> 00:30:37,540
There are also super popular extensions
which make Postgres very

534
00:30:37,540 --> 00:30:42,840
different, like PostGIS or TimescaleDB
or pgvector.

535
00:30:43,860 --> 00:30:44,360
Great.

536
00:30:44,540 --> 00:30:46,020
It's also Postgres or no?

537
00:30:46,020 --> 00:30:47,280
It's also Postgres, right?

538
00:30:47,280 --> 00:30:48,220
Bigger Postgres.

539
00:30:50,280 --> 00:30:55,260
It's like there is Los Angeles,
but if you live in Long Beach,

540
00:30:55,260 --> 00:30:56,980
you still live in Los Angeles,
right?

541
00:30:56,980 --> 00:31:02,120
It's like there are bigger Postgres.

542
00:31:02,520 --> 00:31:05,340
Michael: Al-Khalili That's a great
example because it depends

543
00:31:05,340 --> 00:31:08,520
in what context you're speaking
and who you're speaking to and

544
00:31:08,520 --> 00:31:11,180
you know how familiar they are
with the area if they say where

545
00:31:11,180 --> 00:31:15,140
are you from but it's if you if
you're a local coffee shop in

546
00:31:15,660 --> 00:31:18,620
near LA and someone asks where
you're from, you'll probably be

547
00:31:18,620 --> 00:31:19,300
more specific.

548
00:31:20,940 --> 00:31:24,140
But if you're in Thailand and somebody
asks where you're from,

549
00:31:24,140 --> 00:31:25,580
you'll probably just say LA.

550
00:31:25,680 --> 00:31:26,440
Nikolay: Same here.

551
00:31:26,760 --> 00:31:28,040
Michael: Same, exactly the same.

552
00:31:28,040 --> 00:31:31,300
Nikolay: We use Postgres, but if
you say we use Timescale Cloud,

553
00:31:31,300 --> 00:31:34,320
we're already like, okay, also
Postgres, but definitely with

554
00:31:34,320 --> 00:31:38,240
TimescaleDB and probably without
some things they don't provide.

555
00:31:40,080 --> 00:31:40,520
Interesting.

556
00:31:40,520 --> 00:31:41,900
So there's bigger Postgres.

557
00:31:42,180 --> 00:31:45,800
There are also many tools around,
like you're building 1 and

558
00:31:45,800 --> 00:31:46,860
we're building something.

559
00:31:47,160 --> 00:31:52,080
So these tools, yeah, but a lot
of options and it's like quite

560
00:31:52,080 --> 00:31:53,060
a rich ecosystem.

561
00:31:53,460 --> 00:31:54,360
Great right?

562
00:31:54,720 --> 00:31:57,380
So this is also a reason why Postgres,
because the ecosystem is

563
00:31:57,380 --> 00:31:59,640
super rich and growing and it's
great.

564
00:32:00,400 --> 00:32:03,160
Michael: Although possibly, like
I think that could be an argument

565
00:32:03,160 --> 00:32:04,000
against it.

566
00:32:04,000 --> 00:32:07,040
Definitely when I first was looking
at Postgres, I'd actually

567
00:32:07,040 --> 00:32:10,740
say that other ecosystems were
a little bit more advanced.

568
00:32:10,880 --> 00:32:15,560
There were more people building
external tools for some of the

569
00:32:15,560 --> 00:32:17,060
other systems.

570
00:32:17,320 --> 00:32:22,120
So I do think there's like an,
that's not as obvious a 1 for

571
00:32:22,120 --> 00:32:25,260
choosing Postgres in my opinion,
but it's great that the more

572
00:32:25,260 --> 00:32:30,360
and more are popping up the last like
technical ones I had were obviously

573
00:32:30,360 --> 00:32:33,840
the extensibility, not just in
terms of pre-made extensions,

574
00:32:33,840 --> 00:32:37,520
but the fact you could like as
a user, you can extend Postgres

575
00:32:37,660 --> 00:32:38,400
in various ways.

576
00:32:38,400 --> 00:32:41,520
I think a lot of people do choose
it for those reasons.

577
00:32:41,720 --> 00:32:42,260
Nikolay: Of course.

578
00:32:42,260 --> 00:32:42,760
Yeah.

579
00:32:42,800 --> 00:32:48,160
Starting from the creation of your
own data type to your own type

580
00:32:48,160 --> 00:32:54,220
of index and extensions and now
like even more things up to storage

581
00:32:54,220 --> 00:32:55,420
engines and so on.

582
00:32:55,760 --> 00:32:57,080
Michael: Yeah, exactly.

583
00:32:57,340 --> 00:33:00,140
I think people can dip their toe
in with a new data type and

584
00:33:00,140 --> 00:33:02,640
then like gradually get more and
more excited by what they could

585
00:33:02,640 --> 00:33:02,880
build.

586
00:33:02,880 --> 00:33:05,860
And then the last technical 1 I
had on my list was, and this

587
00:33:05,860 --> 00:33:08,860
might be more why people stay rather
than why people join in

588
00:33:08,860 --> 00:33:12,440
the first place, but backwards
compatibility is so helpful.

589
00:33:13,320 --> 00:33:17,480
Because of the good fundamentals
and because Postgres has five-year

590
00:33:18,080 --> 00:33:23,680
support of major versions, people
aren't forced to upgrade like

591
00:33:23,680 --> 00:33:26,520
that often and things don't tend
to break when they do.

592
00:33:26,520 --> 00:33:29,060
You know, obviously we've done
episodes on this and there's a

593
00:33:29,060 --> 00:33:31,680
lot of complexity around major
version upgrades and you do have

594
00:33:31,680 --> 00:33:33,220
to re-release those things.

595
00:33:34,000 --> 00:33:39,620
But compared to other systems,
compared to other platforms that

596
00:33:39,620 --> 00:33:42,840
people are building and building
for, things like there are major

597
00:33:43,100 --> 00:33:48,060
breaking changes in a lot of database
major version upgrades.

598
00:33:48,580 --> 00:33:51,180
And having seen people have to
deal with those and have to get

599
00:33:51,180 --> 00:33:55,520
stuck on really old versions, it's
just so much better in the

600
00:33:55,520 --> 00:33:56,540
Postgres world.

601
00:33:56,580 --> 00:34:00,280
So I think that might be a reason
people stay or like maybe some

602
00:34:00,280 --> 00:34:02,320
very smart people, the reason they
choose it.

603
00:34:02,320 --> 00:34:05,060
But I definitely wasn't aware of
that when I was first coming

604
00:34:05,060 --> 00:34:05,820
across it.

605
00:34:07,840 --> 00:34:08,340
Nikolay: Right.

606
00:34:08,420 --> 00:34:08,920
Yeah.

607
00:34:09,800 --> 00:34:10,080
Michael: Yeah.

608
00:34:10,080 --> 00:34:14,680
So on the doubt side of things,
you mentioned transparency.

609
00:34:15,140 --> 00:34:15,640
Transparency.

610
00:34:16,020 --> 00:34:16,360
Nikolay: Yeah.

611
00:34:16,360 --> 00:34:24,620
For me, transparency is a key factor
I dislike in Postgres because

612
00:34:25,580 --> 00:34:28,040
the source code is open.

613
00:34:28,500 --> 00:34:30,500
In mailing list, they are open
as well.

614
00:34:30,500 --> 00:34:31,420
Tanner Iskra Sure.

615
00:34:31,420 --> 00:34:36,760
Leon Mandeley But if you look closer,
and I know like people

616
00:34:36,760 --> 00:34:39,300
who just use Postgres, they don't
see problems.

617
00:34:40,160 --> 00:34:44,240
But I know for sure, not like only
based on my experience, but

618
00:34:44,240 --> 00:34:48,580
based on many companies, not just
1, not just 2, many companies,

619
00:34:49,300 --> 00:34:53,160
people who are in the head of those
companies, Postgres-related

620
00:34:53,500 --> 00:34:59,240
companies, big ones, big names,
they feel this lack of transparency

621
00:34:59,680 --> 00:35:00,520
in processes.

622
00:35:03,480 --> 00:35:08,440
Like Postgres project doesn't apply
this principle to itself.

623
00:35:10,080 --> 00:35:11,600
Processes are not transparent.

624
00:35:12,870 --> 00:35:18,380
Michael: Question, just to ask
where you're going with this,

625
00:35:19,900 --> 00:35:23,600
do you consider any other alternative
projects more transparent

626
00:35:23,720 --> 00:35:26,540
and more open, like, along this
axis?

627
00:35:27,980 --> 00:35:31,060
Nikolay: I'm honestly not a big
expert here.

628
00:35:31,060 --> 00:35:38,140
I just see if, like, well, usually
organizations which are built

629
00:35:38,400 --> 00:35:43,020
recently, which are quite strong
and so on, have kind of democracy,

630
00:35:43,200 --> 00:35:43,700
right?

631
00:35:44,060 --> 00:35:47,520
They have elections, some rotation
of power.

632
00:35:47,900 --> 00:35:50,740
Michael: When I'm looking at alternatives,
if I'm thinking like

633
00:35:50,740 --> 00:35:57,100
MySQL, Redis, SQLite, none of those
have as far as...

634
00:35:57,180 --> 00:36:00,000
Nikolay: But it doesn't mean there's
no problem.

635
00:36:00,820 --> 00:36:01,920
Michael: No, no, no.

636
00:36:02,100 --> 00:36:07,320
I'm just like the question why
Postgres partly asks if not Postgres,

637
00:36:07,440 --> 00:36:08,160
what else?

638
00:36:08,180 --> 00:36:09,640
Like, they're almost in the database.

639
00:36:11,140 --> 00:36:12,120
Or do you know what I mean?

640
00:36:12,120 --> 00:36:16,320
Like if you're gonna, if you doubt
it and then say, maybe this

641
00:36:16,320 --> 00:36:18,340
isn't it, what would it be?

642
00:36:18,340 --> 00:36:19,740
Like what's the alternative?

643
00:36:21,040 --> 00:36:22,160
Nikolay: Yeah, good question.

644
00:36:22,540 --> 00:36:26,380
It can be forked postgres with
different principles.

645
00:36:26,540 --> 00:36:27,040
Interesting.

646
00:36:27,620 --> 00:36:28,300
Yeah, yeah.

647
00:36:28,620 --> 00:36:33,420
Honestly, I like, I, When I raised
in the beginning of this discussion,

648
00:36:33,580 --> 00:36:37,460
I raised this, I have doubts, I
have them for long.

649
00:36:38,800 --> 00:36:42,160
I just wanted to look inside myself
and validate.

650
00:36:42,440 --> 00:36:45,860
But while we are discussing all
these things are good, I'm still

651
00:36:45,860 --> 00:36:46,740
staying honestly.

652
00:36:46,740 --> 00:36:50,700
Like I already feel like I'm still
staying with Postgres, but

653
00:36:50,720 --> 00:36:54,020
people must know I'm not fully
satisfied with things.

654
00:36:54,840 --> 00:36:59,120
And at some point, I might say
it's enough for me.

655
00:37:00,040 --> 00:37:01,280
I don't feel it right now.

656
00:37:01,280 --> 00:37:02,580
I'm very far from it.

657
00:37:03,040 --> 00:37:05,380
But lack of transparency.

658
00:37:06,160 --> 00:37:10,380
Michael: Yeah, so we've got lots
of reasons why we chose Postgres

659
00:37:10,380 --> 00:37:14,340
in the first place, lots of positives,
like still that we would

660
00:37:14,340 --> 00:37:17,200
choose it again today and that
we do continue to choose it every

661
00:37:17,200 --> 00:37:17,700
day.

662
00:37:17,800 --> 00:37:19,780
Some areas for improvement for
sure.

663
00:37:19,780 --> 00:37:21,920
I don't see a great alternative.

664
00:37:22,040 --> 00:37:25,920
I think it's still exceptional
and love building for it, and

665
00:37:25,920 --> 00:37:28,100
I'm hoping to for decades to come.

666
00:37:29,600 --> 00:37:33,520
It'd be cool to hear from anybody
that works in or with like

667
00:37:33,520 --> 00:37:37,660
similar organizations with different
governance structures and

668
00:37:37,660 --> 00:37:38,800
how those work.

669
00:37:38,960 --> 00:37:42,040
All I can think of is like benevolent
dictator types you know

670
00:37:42,040 --> 00:37:45,620
Linux and and SQLite and things
but I'm sure there are other

671
00:37:45,620 --> 00:37:49,040
good communities like I think the
Kubernetes 1 keeps coming up

672
00:37:49,040 --> 00:37:49,900
as a...

673
00:37:49,900 --> 00:37:51,240
Nikolay: Cloud native, maybe.

674
00:37:51,820 --> 00:37:53,920
Michael: Yeah, so there are some
interesting ones out there that

675
00:37:53,920 --> 00:37:56,040
are run slightly differently, so
it'd be great to hear from people

676
00:37:56,040 --> 00:37:57,600
that are heavily involved in those.

677
00:37:58,780 --> 00:37:59,280
Nikolay: Mm-hmm.

678
00:38:00,140 --> 00:38:00,560
Right.

679
00:38:00,560 --> 00:38:06,780
So, yeah, in my opinion, Postgres
is definitely one of the greatest

680
00:38:06,780 --> 00:38:08,840
examples of open source.

681
00:38:11,580 --> 00:38:18,980
I see it as a big bazaar with one
big cathedral in the center,

682
00:38:19,940 --> 00:38:25,140
which now I recognize and smaller
cathedrals on this bazaar maybe.

683
00:38:25,320 --> 00:38:29,240
Well, the cathedral is one, it's
one, but it's still a bazaar and

684
00:38:29,240 --> 00:38:33,100
no matter what, I think it has
good chances to be a good bazaar,

685
00:38:33,420 --> 00:38:38,220
like with many voices, even if
people inside the cathedral in the

686
00:38:38,220 --> 00:38:40,740
center don't agree with those voices,
right?

687
00:38:41,320 --> 00:38:47,180
These voices cannot be due to probably
due to original nature,

688
00:38:47,800 --> 00:38:52,260
license chosen in the '90s, and the
original nature of the project

689
00:38:52,260 --> 00:38:57,840
itself, even if there are conflicts,
this bazaar will still be

690
00:38:57,840 --> 00:38:58,340
huge.

691
00:38:58,660 --> 00:39:03,500
And I think it has good chances
to be huge, with different opinions,

692
00:39:03,760 --> 00:39:05,040
sometimes very contradicting.

693
00:39:06,140 --> 00:39:11,400
So yeah, I'm glad it's a bazaar
because I think it's a good thing,

694
00:39:11,400 --> 00:39:12,560
like an open source.

695
00:39:12,560 --> 00:39:15,740
You know, I'm referring to cathedral
and the bazaar by recreation.

696
00:39:16,560 --> 00:39:19,080
Michael: Yeah, yeah, I love the
analogy and you've used it multiple

697
00:39:19,080 --> 00:39:22,440
times in the past but it's always
been cathedral or bazaar.

698
00:39:22,720 --> 00:39:23,160
Nikolay: LM.

699
00:39:23,160 --> 00:39:26,990
Yeah, but now I see bazaar with
a big cathedral in the center.

700
00:39:26,990 --> 00:39:27,040
AD.

701
00:39:27,040 --> 00:39:28,420
Michael: There is a cathedral in
the middle.

702
00:39:28,420 --> 00:39:30,080
Maybe it's not that big though.

703
00:39:30,140 --> 00:39:34,020
It is a cathedral but maybe the
bazaar is bigger and the cathedral

704
00:39:34,020 --> 00:39:34,448
is very large.

705
00:39:34,448 --> 00:39:34,572
LM.

706
00:39:34,572 --> 00:39:34,696
I

707
00:39:34,696 --> 00:39:37,260
Nikolay: feel sometimes this cathedral
in the center tries to

708
00:39:37,260 --> 00:39:39,060
pretend there is no bazaar almost.

709
00:39:40,960 --> 00:39:43,320
Or this cathedral can define all
the rules.

710
00:39:43,320 --> 00:39:44,020
It cannot.

711
00:39:44,240 --> 00:39:46,060
It cannot define all the rules.

712
00:39:46,560 --> 00:39:47,640
Michael: Have you seen Monty Python?

713
00:39:47,640 --> 00:39:50,820
There's Monty Python, I think it's,
which 1 is it, maybe Search

714
00:39:50,820 --> 00:39:51,860
for the Holy Grail?

715
00:39:52,360 --> 00:39:53,560
Have you seen the Monty Python

716
00:39:53,560 --> 00:39:53,940
films?

717
00:39:53,940 --> 00:39:54,020
Nikolay: No.

718
00:39:54,020 --> 00:39:56,020
Michael: No, I think you would like them.

719
00:39:56,720 --> 00:39:58,060
Nikolay: My son loves it.

720
00:39:58,380 --> 00:39:58,780
He tries

721
00:39:58,780 --> 00:40:01,080
to convince me for years
to watch everything.

722
00:40:01,080 --> 00:40:01,400
Michael: You have

723
00:40:01,400 --> 00:40:03,220
to watch it, I think you'll
enjoy it.

724
00:40:03,340 --> 00:40:07,820
But there's 1 moment where the
king is going up to the peasants

725
00:40:07,820 --> 00:40:11,960
working the land and tells them
what to do because he's their

726
00:40:11,960 --> 00:40:12,260
king.

727
00:40:12,260 --> 00:40:14,520
And they're like, I don't believe
in a king.

728
00:40:15,060 --> 00:40:16,220
So it's quite funny.

729
00:40:16,500 --> 00:40:17,560
I'll link that up.

730
00:40:17,560 --> 00:40:19,340
Nikolay: Yeah, I should see.

731
00:40:19,840 --> 00:40:25,480
So yeah, for sure it will remain
to be a cathedral and it's good.

732
00:40:26,060 --> 00:40:34,120
So yeah, I thank you for help validating
that I still want to

733
00:40:34,120 --> 00:40:35,580
use Postgres, you know.

734
00:40:35,660 --> 00:40:38,980
For me, I have enough reasons to
use Postgres no matter what.

735
00:40:39,060 --> 00:40:40,220
No matter what happened.

736
00:40:40,440 --> 00:40:41,020
I mean...

737
00:40:41,040 --> 00:40:41,540
Michael: Nice.

738
00:40:41,540 --> 00:40:44,060
Maybe we'll discuss again in a
couple of years and see where

739
00:40:44,060 --> 00:40:44,880
you are there.

740
00:40:45,020 --> 00:40:46,020
Nikolay: Yeah, well, yeah.

741
00:40:46,020 --> 00:40:50,820
I'm quite positive I will keep
using it and help other people

742
00:40:51,000 --> 00:40:52,740
to use it in a better way.

743
00:40:53,860 --> 00:40:54,640
Michael: Me too.

744
00:40:55,440 --> 00:40:56,960
Wonderful, thanks so much, Nikolay.

745
00:40:56,980 --> 00:40:57,940
Catch you next week.