1
00:00:00,001 --> 00:00:02,000
[CLAIRE] Welcome to Talking Postgres.

2
00:00:02,000 --> 00:00:05,000
In this episode, we explore the human side of Postgres,

3
00:00:05,000 --> 00:00:07,000
databases, and open source.

4
00:00:07,000 --> 00:00:10,000
I want to say thank you to the team at Microsoft

5
00:00:10,000 --> 00:00:13,000
for sponsoring the community conversation about Postgres,

6
00:00:13,000 --> 00:00:15,000
and I'm your host, Claire Giordano.

7
00:00:15,000 --> 00:00:19,000
And I am so excited to introduce Daniel Gustafsson to you.

8
00:00:19,000 --> 00:00:22,000
He is a Postgres major contributor and committer.

9
00:00:22,000 --> 00:00:26,000
He's been involved with the Postgres project since 2014,

10
00:00:26,000 --> 00:00:30,000
co-founder of the annual Nordic PGDay event.

11
00:00:30,000 --> 00:00:36,000
And between 2014 and 2023, so about a year ago,

12
00:00:36,000 --> 00:00:39,000
he was a very frequent conference organizer.

13
00:00:39,000 --> 00:00:43,000
Events that come to mind are PGConf.dev and PGConf EU,

14
00:00:43,000 --> 00:00:46,000
and of course, Nordic PGDay.

15
00:00:46,000 --> 00:00:50,000
Daniel is based in Sweden, and he works at Microsoft

16
00:00:50,000 --> 00:00:52,000
on the Postgres contributor team,

17
00:00:52,000 --> 00:00:55,000
and recently stepped into an engineering management role too.

18
00:00:55,000 --> 00:00:57,000
And prior to working at Microsoft,

19
00:00:57,000 --> 00:01:00,000
Daniel worked with Greenplum for many years.

20
00:01:00,000 --> 00:01:02,000
Welcome.

21
00:01:02,000 --> 00:01:04,000
[DANIEL] Thank you. Thanks for having me.

22
00:01:04,000 --> 00:01:07,000
[CLAIRE] I'm so happy that you said yes.

23
00:01:07,000 --> 00:01:11,000
And the topic for today is "How I got started as a developer

24
00:01:11,000 --> 00:01:16,000
and in Postgres", where the "I" in that statement is, of course, you, Daniel.

25
00:01:16,000 --> 00:01:18,000
It's not about me.

26
00:01:18,000 --> 00:01:20,000
I'm privileged. I get to work with you,

27
00:01:20,000 --> 00:01:22,000
as do others in the Postgres world.

28
00:01:22,000 --> 00:01:26,000
And so I know parts of this, but I have a whole list of questions,

29
00:01:26,000 --> 00:01:28,000
and I don't think I know all the answers yet.

30
00:01:28,000 --> 00:01:31,000
So I'm excited to learn more about your background too.

31
00:01:31,000 --> 00:01:34,000
And I think I want to go in the way back machine

32
00:01:34,000 --> 00:01:40,000
and start with, when did you first get into computing?

33
00:01:40,000 --> 00:01:42,000
[DANIEL] That's a good question.

34
00:01:42,000 --> 00:01:45,000
I don't really remember not having a computer at home,

35
00:01:45,000 --> 00:01:48,000
even though I was born in the '70s.

36
00:01:48,000 --> 00:01:53,000
So my dad started working in computers very early on,

37
00:01:53,000 --> 00:01:56,000
way back when there was only two computers in all of Sweden,

38
00:01:56,000 --> 00:01:59,000
like big hulking giants.

39
00:01:59,000 --> 00:02:02,000
By the time I was born, he was working at Datasaab,

40
00:02:02,000 --> 00:02:06,000
who was making mostly, like, airline-controlled computers and stuff.

41
00:02:06,000 --> 00:02:13,000
So my earliest memories is of a giant box, steel box,

42
00:02:13,000 --> 00:02:19,000
like a one meter squared, that was sitting in our study,

43
00:02:19,000 --> 00:02:21,000
which was a Datasaab M10,

44
00:02:21,000 --> 00:02:24,000
which is probably a computer that no one has ever heard of.

45
00:02:24,000 --> 00:02:26,000
[CLAIRE] Can you say that again?

46
00:02:26,000 --> 00:02:30,000
[DANIEL] It's a Datasaab, or Datasaab M10.

47
00:02:30,000 --> 00:02:32,000
It was a data entry terminal.

48
00:02:32,000 --> 00:02:35,000
Basically, it was a data entry terminal for clerks

49
00:02:35,000 --> 00:02:40,000
who would type in data, essentially.

50
00:02:40,000 --> 00:02:42,000
And it was discontinued.

51
00:02:42,000 --> 00:02:46,000
It was an EOL machine, even when I was five, six years old,

52
00:02:46,000 --> 00:02:49,000
which is what I remember it from.

53
00:02:49,000 --> 00:02:52,000
And the people working there, like the engineers working there,

54
00:02:52,000 --> 00:02:55,000
got to basically take the rubbish home.

55
00:02:55,000 --> 00:02:58,000
So what they did was homebrew, make their own,

56
00:02:58,000 --> 00:03:04,000
basically write their own operating system for it to have at home computers.

57
00:03:04,000 --> 00:03:10,000
And that's my earliest memory of sitting in front of a computer

58
00:03:10,000 --> 00:03:16,000
and working on a computer, this giant box with an orange fluorescent screen.

59
00:03:16,000 --> 00:03:20,000
[CLAIRE] Now, when you say it's your earliest memory, do you think you were two?

60
00:03:20,000 --> 00:03:25,000
[DANIEL] No, it was probably about five, five-ish, I think, four or five.

61
00:03:25,000 --> 00:03:26,000
[CLAIRE] Okay.

62
00:03:26,000 --> 00:03:27,000
[DANIEL] Roughly around that time.

63
00:03:27,000 --> 00:03:30,000
And then he just sort of progressed from there,

64
00:03:30,000 --> 00:03:33,000
because he was working building computers at the time,

65
00:03:33,000 --> 00:03:37,000
like physically building them and writing the operating systems for them.

66
00:03:37,000 --> 00:03:42,000
So we had a wide variety of machines home,

67
00:03:42,000 --> 00:03:44,000
which is not really the typical machines of the age,

68
00:03:44,000 --> 00:03:48,000
because the typical machines back then would be the Atari and Commodore.

69
00:03:48,000 --> 00:03:51,000
Those were the home computers at the time.

70
00:03:51,000 --> 00:03:56,000
But obviously, since he was working for business computer-wise,

71
00:03:56,000 --> 00:03:58,000
we had those machines at home.

72
00:03:58,000 --> 00:04:02,000
So they were all sort of like the Swedish-built machines.

73
00:04:02,000 --> 00:04:04,000
They would be called ABC 80,

74
00:04:04,000 --> 00:04:07,000
which is the really early one that I remember,

75
00:04:07,000 --> 00:04:12,000
and then ABC 800, Facit DTC.

76
00:04:12,000 --> 00:04:17,000
So these are basically machines that few people have ever heard of, I guess.

77
00:04:17,000 --> 00:04:19,000
But these are the ones that I remember starting out,

78
00:04:19,000 --> 00:04:23,000
and those are the ones that I remember sitting on my desk in my room

79
00:04:23,000 --> 00:04:27,000
when I was like seven or something.

80
00:04:27,000 --> 00:04:29,000
So that's where I got started.

81
00:04:29,000 --> 00:04:35,000
I don't remember not having a computer in front of me, essentially.

82
00:04:35,000 --> 00:04:39,000
[CLAIRE] So when do you think you wrote your first program?

83
00:04:39,000 --> 00:04:44,000
When you were seven, when you had that ABC 80 sitting in your room?

84
00:04:44,000 --> 00:04:47,000
[DANIEL] Yeah, I've been trying to remember that.

85
00:04:47,000 --> 00:04:49,000
Back when I was six, seven years old,

86
00:04:49,000 --> 00:04:53,000
I definitely was typing in games from those giant books

87
00:04:53,000 --> 00:04:56,000
of basic listing games that you could buy.

88
00:04:56,000 --> 00:04:58,000
I know my dad had a couple of those.

89
00:04:58,000 --> 00:05:03,000
So you would type in these pages and pages of code

90
00:05:03,000 --> 00:05:07,000
and hope that you didn't make a mistake halfway through,

91
00:05:07,000 --> 00:05:11,000
and then you'd get a game to play at the end.

92
00:05:11,000 --> 00:05:15,000
And I remember that sort of triggering an interest in,

93
00:05:15,000 --> 00:05:17,000
maybe I can do something on my own.

94
00:05:17,000 --> 00:05:21,000
So I was probably around seven or eight

95
00:05:21,000 --> 00:05:27,000
when dad taught me some early BASIC programming

96
00:05:27,000 --> 00:05:29,000
on one of those machines.

97
00:05:29,000 --> 00:05:32,000
But it wasn't really serious because, I mean,

98
00:05:32,000 --> 00:05:36,000
I was pretty young and had a whole stack of games at home to play.

99
00:05:36,000 --> 00:05:46,000
So it wasn't really that serious until probably around when I was 12 or so,

100
00:05:46,000 --> 00:05:50,000
10, 11, 12, around that time, when I was more getting into programming

101
00:05:50,000 --> 00:05:54,000
and sort of like stopped playing games mostly

102
00:05:54,000 --> 00:06:00,000
and got more interested in actually making them myself or making programs.

103
00:06:00,000 --> 00:06:01,000
[CLAIRE] OK.

104
00:06:01,000 --> 00:06:05,000
So let's say you're 12 years old.

105
00:06:05,000 --> 00:06:08,000
Are computers and software and programming,

106
00:06:08,000 --> 00:06:10,000
was that just something you worked on at home

107
00:06:10,000 --> 00:06:12,000
when it started to get more serious?

108
00:06:12,000 --> 00:06:15,000
Or was there also a computer at school,

109
00:06:15,000 --> 00:06:20,000
and was that something that was relevant to any of the teachers?

110
00:06:20,000 --> 00:06:29,000
[DANIEL] So we actually had a computer lab at school probably around that time.

111
00:06:29,000 --> 00:06:35,000
It was in even another Swedish invention called the Esselte Compis,

112
00:06:35,000 --> 00:06:39,000
which is basically it's a Esselte "Friend",

113
00:06:39,000 --> 00:06:44,000
which was a school computer made in Sweden, which is absolutely dreadful.

114
00:06:44,000 --> 00:06:49,000
It's a classic one for sort of failed Swedish computer attempts.

115
00:06:49,000 --> 00:06:52,000
But I never actually did much there,

116
00:06:52,000 --> 00:06:55,000
because since I had all these machines at home and I had access to them at home,

117
00:06:55,000 --> 00:06:57,000
I didn't need to take that as an extra curriculum,

118
00:06:57,000 --> 00:07:01,000
because that was like an opt-in thing you could do at school.

119
00:07:01,000 --> 00:07:05,000
So that was never really a thing that I did, because I had it at home.

120
00:07:05,000 --> 00:07:09,000
But rather I did it, yeah, all on my own at home.

121
00:07:09,000 --> 00:07:10,000
[CLAIRE] OK.

122
00:07:10,000 --> 00:07:13,000
So you definitely had an advantage over people

123
00:07:13,000 --> 00:07:16,000
whose parents had other types of professions

124
00:07:16,000 --> 00:07:18,000
that had nothing to do with computers.

125
00:07:18,000 --> 00:07:22,000
You got this early, early exposure to it.

126
00:07:22,000 --> 00:07:24,000
Let's fast forward a little bit.

127
00:07:24,000 --> 00:07:30,000
When did you first get paid to do any development work?

128
00:07:30,000 --> 00:07:32,000
Were you in high school?

129
00:07:32,000 --> 00:07:35,000
Was it after schooling?

130
00:07:35,000 --> 00:07:38,000
What's your first developer job?

131
00:07:38,000 --> 00:07:41,000
[DANIEL] My first developer job was much later than that.

132
00:07:41,000 --> 00:07:46,000
My first job was when it came to computers was fixing them,

133
00:07:46,000 --> 00:07:50,000
building computers, repairing them.

134
00:07:50,000 --> 00:07:54,000
Because my dad then progressed into a wholesale business.

135
00:07:54,000 --> 00:07:56,000
And so I was working part-time for him,

136
00:07:56,000 --> 00:08:00,000
basically repairing motherboards and monitors and things.

137
00:08:00,000 --> 00:08:08,000
But my first job actually being paid to write programs was in the late '90s,

138
00:08:08,000 --> 00:08:14,000
when I left university and after my military service.

139
00:08:14,000 --> 00:08:19,000
It was sort of like the dot-com boom was really picking up steam.

140
00:08:19,000 --> 00:08:21,000
There was a lot of money involved.

141
00:08:21,000 --> 00:08:24,000
The university didn't seem that exciting all of a sudden

142
00:08:24,000 --> 00:08:26,000
when there was this other thing going on.

143
00:08:26,000 --> 00:08:29,000
So I was actually hired as a network engineer at the time,

144
00:08:29,000 --> 00:08:35,000
because there was a big push in the graphics arts industry

145
00:08:35,000 --> 00:08:41,000
to basically move from old novel networks into Ethernet and Windows NT

146
00:08:41,000 --> 00:08:43,000
and those environments.

147
00:08:43,000 --> 00:08:45,000
So that's what I was hired for.

148
00:08:45,000 --> 00:08:50,000
But it very quickly moved into,

149
00:08:50,000 --> 00:08:55,000
because basically when my boss realized that I could program

150
00:08:55,000 --> 00:08:58,000
and sort of make software for the company,

151
00:08:58,000 --> 00:09:06,000
it pretty quickly shifted into basically a full-time writing software job.

152
00:09:06,000 --> 00:09:11,000
So it was probably about '99, I think.

153
00:09:11,000 --> 00:09:13,000
And I was basically,

154
00:09:13,000 --> 00:09:15,000
so at the time,

155
00:09:15,000 --> 00:09:16,000
this was the graphics arts industry,

156
00:09:16,000 --> 00:09:22,000
and they were at the time shifting from printing off of giant plates

157
00:09:22,000 --> 00:09:25,000
that was developed in a photographic process

158
00:09:25,000 --> 00:09:29,000
into basically taking a PDF and printing it onto the plate

159
00:09:29,000 --> 00:09:33,000
and then having that in the printing press.

160
00:09:33,000 --> 00:09:37,000
But it's a very big shift from going from a PDF

161
00:09:37,000 --> 00:09:39,000
and straight into the printing press

162
00:09:39,000 --> 00:09:43,000
versus going via chemical processes and wet baths and stuff.

163
00:09:43,000 --> 00:09:46,000
So there was a lot of automation software,

164
00:09:46,000 --> 00:09:49,000
a lot of integration software that had to be written

165
00:09:49,000 --> 00:09:52,000
to make these PDF workflows work.

166
00:09:52,000 --> 00:09:56,000
And we did very well in that space,

167
00:09:56,000 --> 00:09:58,000
because there was a lot of work,

168
00:09:58,000 --> 00:10:02,000
and there was basically no one else doing it.

169
00:10:02,000 --> 00:10:05,000
[CLAIRE] So when you say "we," who's "we"?

170
00:10:05,000 --> 00:10:08,000
[DANIEL] It was a very small company, like a five-person company

171
00:10:08,000 --> 00:10:10,000
that no one's ever heard of.

172
00:10:10,000 --> 00:10:12,000
But we worked with some very big customers

173
00:10:12,000 --> 00:10:18,000
and did surprisingly cool stuff

174
00:10:18,000 --> 00:10:23,000
for being this tiny company that no one knew about.

175
00:10:23,000 --> 00:10:28,000
[CLAIRE] So then you'd left university, you had this job,

176
00:10:28,000 --> 00:10:30,000
you're in the graphic arts industry,

177
00:10:30,000 --> 00:10:34,000
they're doing a migration, a shift.

178
00:10:34,000 --> 00:10:39,000
I'm assuming databases were not part of your portfolio

179
00:10:39,000 --> 00:10:41,000
or your expertise yet, am I right?

180
00:10:41,000 --> 00:10:43,000
Or did I miss a step?

181
00:10:43,000 --> 00:10:47,000
[DANIEL] No, definitely not.

182
00:10:47,000 --> 00:10:53,000
So most of the stuff that I did did not need a database at all.

183
00:10:53,000 --> 00:11:02,000
But as we progressed and as we made more and more advanced software,

184
00:11:02,000 --> 00:11:04,000
we came to the point, or I came to the point,

185
00:11:04,000 --> 00:11:07,000
where I had to store stuff.

186
00:11:07,000 --> 00:11:09,000
And I didn't really know databases.

187
00:11:09,000 --> 00:11:13,000
I remember basically buying one of those O'Reilly books on MySQL,

188
00:11:13,000 --> 00:11:16,000
because I just felt that that's probably what I need.

189
00:11:16,000 --> 00:11:18,000
I had no idea.

190
00:11:18,000 --> 00:11:20,000
[CLAIRE] Do you remember what the animal was on the cover of the book?

191
00:11:20,000 --> 00:11:23,000
[DANIEL] I don't. I don't remember.

192
00:11:23,000 --> 00:11:26,000
But I do remember that I couldn't even install MySQL at the time,

193
00:11:26,000 --> 00:11:30,000
because this is in the era where the graphic arts industry

194
00:11:30,000 --> 00:11:33,000
was running a wide variety of systems.

195
00:11:33,000 --> 00:11:37,000
And mostly we worked on Silicon Graphics IRIX machines.

196
00:11:37,000 --> 00:11:40,000
That was the most popular one.

197
00:11:40,000 --> 00:11:42,000
A lot of Sun Solaris.

198
00:11:42,000 --> 00:11:46,000
But on top of that, there was everything else.

199
00:11:46,000 --> 00:11:51,000
There were Data General, DG/UX, NeXTSTEP, OpenVMS,

200
00:11:51,000 --> 00:11:57,000
all the way down to PDP-11s is what we came across.

201
00:11:57,000 --> 00:12:02,000
So the one database that I could get running basically ever was mSQL,

202
00:12:02,000 --> 00:12:06,000
which is available as an installer,

203
00:12:06,000 --> 00:12:10,000
mainly in IRIX, but also in Solaris.

204
00:12:10,000 --> 00:12:13,000
And mSQL is one of those weird databases that it started

205
00:12:13,000 --> 00:12:16,000
ironically, it has a Postgres connection,

206
00:12:16,000 --> 00:12:19,000
which I had no idea about at the time.

207
00:12:19,000 --> 00:12:24,000
It started life as a SQL library to Postgres

208
00:12:24,000 --> 00:12:29,000
when Postgres did not have SQL, when it was QUEL.

209
00:12:29,000 --> 00:12:34,000
But the ones developing it found that the Postgres engine was too slow.

210
00:12:34,000 --> 00:12:38,000
So once they had written this SQL layer, it was still too slow.

211
00:12:38,000 --> 00:12:40,000
So they had to write the database as well.

212
00:12:40,000 --> 00:12:42,000
And it became mSQL.

213
00:12:42,000 --> 00:12:45,000
And I think it's even still available today.

214
00:12:45,000 --> 00:12:48,000
But that was the first one that I used, mainly because it was there.

215
00:12:48,000 --> 00:12:52,000
And I didn't have huge needs for storing stuff.

216
00:12:52,000 --> 00:12:56,000
I just needed to store small amounts of data.

217
00:12:56,000 --> 00:12:59,000
And I didn't really know what I was doing in terms of databases.

218
00:12:59,000 --> 00:13:03,000
So this just sort of, it was there, it fit the bill.

219
00:13:03,000 --> 00:13:10,000
And that would be my first use of a sort of database in a commercial setting.

220
00:13:10,000 --> 00:13:14,000
[CLAIRE] And then how did you transition from there to Postgres?

221
00:13:14,000 --> 00:13:17,000
Or I don't want to skip any really important steps.

222
00:13:17,000 --> 00:13:21,000
If there's anything formative or funny or interesting in between,

223
00:13:21,000 --> 00:13:23,000
let's go through that.

224
00:13:23,000 --> 00:13:30,000
[DANIEL] Sure. I mean, I switched to Postgres on the 5th of March, 2005, at 3 p.m.

225
00:13:30,000 --> 00:13:33,000
[CLAIRE] Wait, what? How do you know that?

226
00:13:33,000 --> 00:13:37,000
[DANIEL] But I think I need to add some context to that before we move on from that point.

227
00:13:37,000 --> 00:13:39,000
[CLAIRE] Okay.

228
00:13:39,000 --> 00:13:46,000
[DANIEL] So what happened was that I was working in the graphics engine for a couple years.

229
00:13:46,000 --> 00:13:49,000
As so many others during the dot-com boom,

230
00:13:49,000 --> 00:13:53,000
you had a bed in the office and you were basically burning yourself out.

231
00:13:53,000 --> 00:13:55,000
Me too.

232
00:13:55,000 --> 00:14:00,000
So after a couple years, I figured it was time to sort of grow up and get a job.

233
00:14:00,000 --> 00:14:04,000
So I left that company and went back to university to actually get my degree.

234
00:14:04,000 --> 00:14:07,000
Because I come from a very academic family.

235
00:14:07,000 --> 00:14:11,000
So having a degree was very important to me.

236
00:14:11,000 --> 00:14:18,000
So I went back and studied computer science for my bachelor's degree.

237
00:14:18,000 --> 00:14:25,000
Which was very interesting having worked in the industry and then going to study it.

238
00:14:25,000 --> 00:14:32,000
Because I could value what I was learning in a completely different light than my classmates.

239
00:14:32,000 --> 00:14:36,000
Because I knew what I would need in the industry.

240
00:14:36,000 --> 00:14:46,000
But what happened was that this particular school that I was attending was very big on big projects

241
00:14:46,000 --> 00:14:51,000
and big sort of production-like projects.

242
00:14:51,000 --> 00:14:59,000
So all the projects we had in school had an actual company as a sort of buyer, if you will.

243
00:14:59,000 --> 00:15:05,000
So you didn't really make these sort of dummy apps just for the sake of writing some code.

244
00:15:05,000 --> 00:15:09,000
You actually got the requirements from a company somewhere.

245
00:15:09,000 --> 00:15:15,000
And you had to make a system that worked for them.

246
00:15:15,000 --> 00:15:23,000
When we were doing that, I was desperately trying to not have to write lots of .NET front-end code.

247
00:15:23,000 --> 00:15:26,000
Because that's really not what I like to do.

248
00:15:26,000 --> 00:15:28,000
And we were using Firebird as a database at the time.

249
00:15:28,000 --> 00:15:32,000
So I basically tried to implement everything I could in stored procedures.

250
00:15:32,000 --> 00:15:37,000
To save myself from having to write the stuff that I didn't want to do.

251
00:15:37,000 --> 00:15:41,000
And then another project, it turned into SQL Server.

252
00:15:41,000 --> 00:15:45,000
And again, I wrote everything as stored procedures.

253
00:15:45,000 --> 00:15:53,000
Just basically trying to skip away from the stuff that I didn't want to do.

254
00:15:53,000 --> 00:15:55,000
But it was all sort of lacking what I needed.

255
00:15:55,000 --> 00:15:58,000
Like I felt that it wasn't declarative enough.

256
00:15:58,000 --> 00:16:08,000
It wasn't powerful enough for what I wanted to do and what I needed at the time.

257
00:16:08,000 --> 00:16:16,000
And on that day in March 5, 2005, I was attending a conference in Copenhagen.

258
00:16:16,000 --> 00:16:20,000
Only because I was very interested in operating systems at the time.

259
00:16:20,000 --> 00:16:29,000
And that's sort of where my open source kind of avenue started.

260
00:16:29,000 --> 00:16:33,000
And I was there to listen to Robert Watson from the FreeBSD project.

261
00:16:33,000 --> 00:16:39,000
That was the reason I went to that conference.

262
00:16:39,000 --> 00:16:43,000
And then the ending session was also FreeBSD developers.

263
00:16:43,000 --> 00:16:44,000
I was really looking forward to that.

264
00:16:44,000 --> 00:16:47,000
And in between, I didn't really have much planned.

265
00:16:47,000 --> 00:16:52,000
Like it was, so I just, I don't really know why.

266
00:16:52,000 --> 00:16:56,000
But I went to, Bruce Momjian had a session at 3 p.m.

267
00:16:56,000 --> 00:16:58,000
I don't know why I went to that session

268
00:16:58,000 --> 00:17:00,000
over the other ones that were going at the same time.

269
00:17:00,000 --> 00:17:03,000
There was like three tracks or something.

270
00:17:03,000 --> 00:17:04,000
I can't explain why I went there.

271
00:17:04,000 --> 00:17:05,000
But I'm very glad I did.

272
00:17:05,000 --> 00:17:07,000
Because I sat down.

273
00:17:07,000 --> 00:17:12,000
And Bruce Momjian was going over, I think the subject was Mastering PostgreSQL

274
00:17:12,000 --> 00:17:14,000
Administration.

275
00:17:14,000 --> 00:17:17,000
And he was, but it was mostly like "this is Postgres".

276
00:17:17,000 --> 00:17:20,000
And he was just going over all the capabilities of Postgres.

277
00:17:20,000 --> 00:17:24,000
And I was sitting there, being completely blown away, realizing that this

278
00:17:24,000 --> 00:17:28,000
database has everything that I need and want.

279
00:17:28,000 --> 00:17:31,000
Because it has PL/Perl.

280
00:17:31,000 --> 00:17:33,000
I can write all the, I can write everything as a stored procedure.

281
00:17:33,000 --> 00:17:37,000
I can do, it was the programming environment that I was looking for.

282
00:17:37,000 --> 00:17:40,000
But I didn't know existed.

283
00:17:40,000 --> 00:17:46,000
And so from that day and time, I have not used any other database.

284
00:17:46,000 --> 00:17:49,000
Like that's when I completely just shifted over to using Postgres for

285
00:17:49,000 --> 00:17:52,000
everything.

286
00:17:52,000 --> 00:17:57,000
[CLAIRE] I'm going to have to make sure Bruce Momjian hears that part of this podcast.

287
00:17:57,000 --> 00:18:01,000
Because that should make him feel good about all the time he invests in going

288
00:18:01,000 --> 00:18:07,000
to conferences and giving talks and helping not just experts but new people

289
00:18:07,000 --> 00:18:11,000
develop a perspective and knowledge about the database.

290
00:18:11,000 --> 00:18:13,000
That's really cool.

291
00:18:13,000 --> 00:18:15,000
[DANIEL] I was completely blown away.

292
00:18:15,000 --> 00:18:18,000
It was just as if someone had heard what I was looking for and just laying it

293
00:18:18,000 --> 00:18:20,000
out in front of me.

294
00:18:20,000 --> 00:18:23,000
[So is that.]

295
00:18:23,000 --> 00:18:28,000
I do remember going back, so this was in Copenhagen, which is a train ride

296
00:18:28,000 --> 00:18:31,000
home to Malmö where I was living at the time.

297
00:18:31,000 --> 00:18:34,000
And I do remember compiling Postgres on my laptop on the train on the way

298
00:18:34,000 --> 00:18:36,000
back.

299
00:18:36,000 --> 00:18:38,000
Like I need to get started immediately.

300
00:18:38,000 --> 00:18:41,000
Like I just immediately got to work.

301
00:18:41,000 --> 00:18:43,000
And, yeah.

302
00:18:43,000 --> 00:18:47,000
That was definitely one of those moments in time that changed my career and

303
00:18:47,000 --> 00:18:50,000
life.

304
00:18:50,000 --> 00:18:54,000
[CLAIRE] Did you walk up and introduce yourself to Bruce at the end?

305
00:18:54,000 --> 00:18:56,000
Is that the day you first met him?

306
00:18:56,000 --> 00:19:00,000
Or did you guys not become friends and colleagues until many years later?

307
00:19:00,000 --> 00:19:02,000
[DANIEL] That was many years later.

308
00:19:02,000 --> 00:19:04,000
I did walk up to him because I had some questions.

309
00:19:04,000 --> 00:19:06,000
And he just confirmed, yeah, you can do that.

310
00:19:06,000 --> 00:19:08,000
Yeah, you can do that.

311
00:19:08,000 --> 00:19:11,000
But it was just, I was just one in the audience.

312
00:19:11,000 --> 00:19:14,000
It turns out Magnus Hagander, who is now a close friend of mine, was also in

313
00:19:14,000 --> 00:19:17,000
the audience that very day.

314
00:19:17,000 --> 00:19:21,000
But it took many years until I actually met him in person.

315
00:19:21,000 --> 00:19:23,000
[CLAIRE] Wow.

316
00:19:23,000 --> 00:19:26,000
Because, yeah, I just assumed you guys had been good friends forever.

317
00:19:26,000 --> 00:19:28,000
You and Magnus, I mean.

318
00:19:28,000 --> 00:19:30,000
[DANIEL] Yep.

319
00:19:30,000 --> 00:19:32,000
But not until many years after that.

320
00:19:32,000 --> 00:19:36,000
[CLAIRE] Okay.

321
00:19:36,000 --> 00:19:41,000
So this explains when you first became a user of Postgres. [Correct.]

322
00:19:41,000 --> 00:19:46,000
I know when I talked to David Rowley, I think one of his perspectives is

323
00:19:46,000 --> 00:19:52,000
that his time spent as a user and also working with users, supporting

324
00:19:52,000 --> 00:19:58,000
other users, has helped him become, I don't know if it's a more empathetic,

325
00:19:58,000 --> 00:20:03,000
but a more effective developer and contributor to Postgres, right?

326
00:20:03,000 --> 00:20:09,000
Because you can stand in someone else's shoes, if you will. [Right.]

327
00:20:09,000 --> 00:20:13,000
So how did you make the transition from being a user to becoming ultimately

328
00:20:13,000 --> 00:20:15,000
a contributor?

329
00:20:15,000 --> 00:20:17,000
And what was your story?

330
00:20:17,000 --> 00:20:20,000
Do you remember another exact date?

331
00:20:20,000 --> 00:20:24,000
[DANIEL] Kind of, sort of. [Uh-oh.]

332
00:20:24,000 --> 00:20:31,000
So I'm trying to remember all the details here.

333
00:20:31,000 --> 00:20:35,000
Leaving university, like after having done my bachelor's degree.

334
00:20:35,000 --> 00:20:38,000
So I was still not really, I'm not going to say that I was interested in

335
00:20:38,000 --> 00:20:40,000
databases at the time.

336
00:20:40,000 --> 00:20:43,000
They were a tool that I needed to do a job, essentially.

337
00:20:43,000 --> 00:20:46,000
They were just one of the tools that I needed to write the software that I was

338
00:20:46,000 --> 00:20:48,000
required to write.

339
00:20:48,000 --> 00:20:50,000
I was still mostly interested in operating systems at the time.

340
00:20:50,000 --> 00:20:56,000
The technical challenges for me was getting involved in operating systems.

341
00:20:56,000 --> 00:20:59,000
[CLAIRE] And your favorite was Solaris, right? [Laughs.]

342
00:21:03,000 --> 00:21:06,000
[DANIEL] I have a funny Solaris story for you later.

343
00:21:06,000 --> 00:21:09,000
No, I was a FreeBSD user.

344
00:21:09,000 --> 00:21:13,000
Obviously my favorite operating system at the time was IRIX.

345
00:21:13,000 --> 00:21:16,000
I had a Silicon Graphics machine at home on my desk.

346
00:21:16,000 --> 00:21:19,000
I was an avid IRIX user.

347
00:21:19,000 --> 00:21:23,000
But when it came to sort of the more practical side, I was using FreeBSD

348
00:21:23,000 --> 00:21:28,000
because that's what I could have on my laptop and things. [Okay.]

349
00:21:28,000 --> 00:21:33,000
But leaving bachelor's degree, I moved to Australia to do my master's

350
00:21:33,000 --> 00:21:35,000
degree.

351
00:21:35,000 --> 00:21:41,000
And I was still trying to pursue, like for my thesis, I was still looking

352
00:21:41,000 --> 00:21:45,000
for an operating system topic 

353
00:21:45,000 --> 00:21:49,000
But it turned out, like, the professor that I really wanted to work with, he

354
00:21:49,000 --> 00:21:53,000
was a database guy and still is.

355
00:21:53,000 --> 00:22:01,000
So I chose one of his topic ideas mainly because I wanted to work with him.

356
00:22:01,000 --> 00:22:07,000
And I figured I know this Postgres thing and I know I can use that to do this

357
00:22:07,000 --> 00:22:11,000
thing that we're supposed to do.

358
00:22:11,000 --> 00:22:17,000
And that's when I really got excited about and interested in not just using a

359
00:22:17,000 --> 00:22:23,000
database but actually writing one and implementing things inside the database,

360
00:22:23,000 --> 00:22:30,000
database internals, spending that year for my thesis.

361
00:22:30,000 --> 00:22:35,000
So that's basically when the kernel came of, like, maybe this is what I'm

362
00:22:35,000 --> 00:22:37,000
interested in.

363
00:22:37,000 --> 00:22:42,000
I thought operating systems was my thing, but clearly this is more exciting.

364
00:22:42,000 --> 00:22:51,000
And then coming back after my master's, I started working for a company that

365
00:22:51,000 --> 00:22:57,000
does or did classified ad websites, essentially like a Craigslist type thing

366
00:22:57,000 --> 00:22:59,000
where there's clearly a lot of data.

367
00:22:59,000 --> 00:23:03,000
And it was using Postgres and it was using some rather clever tricks.

368
00:23:03,000 --> 00:23:10,000
So I was transitioning there to being, again, sort of a user of Postgres.

369
00:23:10,000 --> 00:23:13,000
But it was a very open source heavy job.

370
00:23:13,000 --> 00:23:16,000
And there was a lot of open source contributors working there.

371
00:23:16,000 --> 00:23:20,000
So it became pretty natural that you start poking at the code of everything

372
00:23:20,000 --> 00:23:24,000
and Postgres included.

373
00:23:24,000 --> 00:23:33,000
And at that job, I went to the CHAR(10) conference in Oxford, which was a

374
00:23:33,000 --> 00:23:37,000
Postgres conference that I don't exactly remember who organized it, if it was

375
00:23:37,000 --> 00:23:43,000
2ndQuadrant or if it was just Simon Riggs personally.

376
00:23:43,000 --> 00:23:45,000
[CLAIRE] Can you say the name of it?

377
00:23:45,000 --> 00:23:47,000
[DANIEL] CHAR(10)

378
00:23:47,000 --> 00:23:54,000
It was a backronym of clustering, high availability, and replication. [Okay.]

379
00:23:54,000 --> 00:23:57,000
But they called it CHAR(10) because it sounds like the data type in

380
00:23:57,000 --> 00:24:01,000
Postgres of 10 character char.

381
00:24:01,000 --> 00:24:07,000
So it was a funny, kind of a dad joke among database folks.

382
00:24:07,000 --> 00:24:10,000
But I remember coming to that conference and realizing that there's a

383
00:24:10,000 --> 00:24:11,000
community.

384
00:24:11,000 --> 00:24:17,000
Like I came knowing absolutely no one and was immediately welcomed by

385
00:24:17,000 --> 00:24:19,000
everyone.

386
00:24:19,000 --> 00:24:23,000
And spent hours talking with Simon Riggs and others.

387
00:24:23,000 --> 00:24:27,000
So I think that's when I realized that this is what I want to do.

388
00:24:27,000 --> 00:24:30,000
Like this is where I want to get involved.

389
00:24:30,000 --> 00:24:34,000
Because these are some fantastic folks and it's a technology that I'm

390
00:24:34,000 --> 00:24:36,000
interested in.

391
00:24:36,000 --> 00:24:42,000
So definitely that conference is where I just sort of transitioned in my

392
00:24:42,000 --> 00:24:46,000
head from being a user to being sort of aiming towards being a

393
00:24:46,000 --> 00:24:49,000
contributor.

394
00:24:49,000 --> 00:24:54,000
And then it took a couple more years because I moved to Australia again.

395
00:24:54,000 --> 00:25:02,000
And coming back from that was when I, more and more started, you know,

396
00:25:02,000 --> 00:25:10,000
poking at the code and eventually led to submitting some patches and

397
00:25:10,000 --> 00:25:15,000
getting involved in organizing conferences and things around 2014.

398
00:25:15,000 --> 00:25:21,000
But CHAR(10) in 2010 in Oxford was definitely the point where I made the

399
00:25:21,000 --> 00:25:26,000
mental switch of this is what I want to do.

400
00:25:26,000 --> 00:25:30,000
[CLAIRE] On the chat, Melanie Plageman commented that it's funny how you often hear

401
00:25:30,000 --> 00:25:35,000
people mention conferences as how they got more involved in open source

402
00:25:35,000 --> 00:25:37,000
development.

403
00:25:37,000 --> 00:25:39,000
[DANIEL] And it's all about the people.

404
00:25:39,000 --> 00:25:41,000
I mean, I'd been looking at the code.

405
00:25:41,000 --> 00:25:44,000
I'd been submitting patches to open source projects and I'd been

406
00:25:44,000 --> 00:25:48,000
involved in, I'd been a committer on other open source projects for

407
00:25:48,000 --> 00:25:52,000
many years up until this point.

408
00:25:52,000 --> 00:25:57,000
But meeting all these people in the Postgres community and immediately

409
00:25:57,000 --> 00:26:03,000
feeling welcome, was that sort of like, yes, this is what I want to do.

410
00:26:03,000 --> 00:26:08,000
[CLAIRE] Do you think those experiences, because they were formative in how you

411
00:26:08,000 --> 00:26:13,000
got involved with the Postgres project as a developer, contributor, do you

412
00:26:13,000 --> 00:26:19,000
think that is part of why you then also got involved in organizing

413
00:26:19,000 --> 00:26:22,000
conferences and serving on talk selection teams?

414
00:26:22,000 --> 00:26:25,000
Because I know that's something, well, not only with Nordic PGDay, but

415
00:26:25,000 --> 00:26:30,000
with some of the other big Postgres events, that you've given a lot of time

416
00:26:30,000 --> 00:26:32,000
to.

417
00:26:32,000 --> 00:26:34,000
[DANIEL] Yeah, for sure.

418
00:26:34,000 --> 00:26:41,000
I at that point realized just like the value of these events and just how

419
00:26:41,000 --> 00:26:45,000
important they are, and how much fun they are.

420
00:26:45,000 --> 00:26:50,000
And so when Magnus and Claes, which was the three of us who started

421
00:26:50,000 --> 00:26:55,000
Nordic, the two of them had been thinking about getting a conference going

422
00:26:55,000 --> 00:26:58,000
in the Nordics or in Stockholm.

423
00:26:58,000 --> 00:27:04,000
They approached me at a Stockholm Postgres user group meeting back in 2013.

424
00:27:04,000 --> 00:27:07,000
Like, hey, do you want to be a part of this?

425
00:27:07,000 --> 00:27:11,000
Because I mean, I knew of both of them because we're in Stockholm, we're in

426
00:27:11,000 --> 00:27:17,000
open source, we're in the same PUG, we met in Oxford.

427
00:27:17,000 --> 00:27:20,000
And like, yeah, sure, I want to be involved in that.

428
00:27:20,000 --> 00:27:26,000
And then once we'd done Nordic PGDay, the first one was in 2014, I was

429
00:27:26,000 --> 00:27:31,000
invited to help out with PGConf EU, which I'd been attending for a couple

430
00:27:31,000 --> 00:27:35,000
years up until that point.

431
00:27:35,000 --> 00:27:39,000
And knowing just how important they are and how much fun they are and how

432
00:27:39,000 --> 00:27:42,000
sort of like the value of them, I immediately felt like, yeah, this is

433
00:27:42,000 --> 00:27:47,000
something I want to be involved in, for sure.

434
00:27:47,000 --> 00:27:51,000
[CLAIRE] I actually feel really lucky.

435
00:27:51,000 --> 00:27:56,000
I first met you at Nordic PGDay back when it was in Copenhagen, but this is

436
00:27:56,000 --> 00:28:02,000
like six years ago, 2019 or something like that, right after Microsoft had

437
00:28:02,000 --> 00:28:04,000
acquired Citus.

438
00:28:04,000 --> 00:28:07,000
And I don't think we'd met before that.

439
00:28:07,000 --> 00:28:08,000
Am I right?

440
00:28:08,000 --> 00:28:10,000
[DANIEL] That was the first time, yeah.

441
00:28:10,000 --> 00:28:12,000
It was sunny Copenhagen.

442
00:28:12,000 --> 00:28:16,000
It was one of those weird days when March was really warm and sunny in the

443
00:28:16,000 --> 00:28:18,000
Nordic region.

444
00:28:18,000 --> 00:28:24,000
[CLAIRE] And this changes countries and cities each year, right? [Yes.]

445
00:28:24,000 --> 00:28:27,000
So last year it was in Oslo and this year it's going to be in Copenhagen

446
00:28:27,000 --> 00:28:30,000
again, at a magical location.

447
00:28:30,000 --> 00:28:32,000
It's right on, is that a river?

448
00:28:32,000 --> 00:28:34,000
Some kind of waterway.

449
00:28:34,000 --> 00:28:37,000
[DANIEL] Yes, the canal going in from the ocean, yeah.

450
00:28:37,000 --> 00:28:42,000
[CLAIRE] So anyway, I'll drop the link into the show notes for anybody who wants to go

451
00:28:42,000 --> 00:28:45,000
to Copenhagen in March this year.

452
00:28:45,000 --> 00:28:50,000
I think the CFP is already closed and I don't know if the schedule is out yet,

453
00:28:50,000 --> 00:28:53,000
but it's really a lot of fun.

454
00:28:53,000 --> 00:28:58,000
[DANIEL] Yeah, we do move it every year in order to make it affordable for everyone to

455
00:28:58,000 --> 00:29:02,000
come, because not everyone can get their company to send them across the world

456
00:29:02,000 --> 00:29:04,000
or even just across the Nordic region.

457
00:29:04,000 --> 00:29:09,000
I mean, hotels do cost money and being away from the family is not easy for

458
00:29:09,000 --> 00:29:10,000
everyone.

459
00:29:10,000 --> 00:29:14,000
So if we constantly move it around, at least someone can, at least those who

460
00:29:14,000 --> 00:29:20,000
can't really travel can at least attend the event every couple of years at a

461
00:29:20,000 --> 00:29:23,000
very affordable price, because we keep the tickets as cheap as we can.

462
00:29:23,000 --> 00:29:29,000
So the idea with the moving is to make it accessible even to those who sort of

463
00:29:29,000 --> 00:29:34,000
don't have the luxury of business travel.

464
00:29:34,000 --> 00:29:42,000
[CLAIRE] Well, that's part of the thinking behind POSETTE as well.

465
00:29:42,000 --> 00:29:44,000
So it's virtual.

466
00:29:44,000 --> 00:29:49,000
The idea being a lot of people, maybe they're between jobs or they can't get

467
00:29:49,000 --> 00:29:53,000
business travel budget or they're just, they've got too much going on in their

468
00:29:53,000 --> 00:29:56,000
personal lives or too much going on in their work lives.

469
00:29:56,000 --> 00:30:00,000
And so the idea of having these high quality talks that are available to

470
00:30:00,000 --> 00:30:06,000
anybody who can get to YouTube, who has an internet connection, is part of the

471
00:30:06,000 --> 00:30:10,000
motivation for being virtual. And of course

472
00:30:11,000 --> 00:30:12,000
[DANIEL] I think it's good to be that inclusive.

473
00:30:12,000 --> 00:30:16,000
We need to include those who can't afford to fly across the world.

474
00:30:16,000 --> 00:30:19,000
So I think that's really important.

475
00:30:19,000 --> 00:30:20,000
[CLAIRE] Okay.

476
00:30:20,000 --> 00:30:22,000
So let's go back to your developer story for a second.

477
00:30:22,000 --> 00:30:26,000
Please remind me to come back to POSETTE at some point later because I know the CFP

478
00:30:26,000 --> 00:30:27,000
is open right now.

479
00:30:27,000 --> 00:30:32,000
But do you remember your very first patch submission?

480
00:30:32,000 --> 00:30:34,000
And what was it about?

481
00:30:34,000 --> 00:30:35,000
You don't.

482
00:30:35,000 --> 00:30:36,000
[DANIEL] I have no idea.

483
00:30:36,000 --> 00:30:37,000
I don't remember.

484
00:30:37,000 --> 00:30:41,000
I remember my actual first patch submission to anything.

485
00:30:41,000 --> 00:30:49,000
That was a game that I wanted to play on IRIX, but it didn't work because it

486
00:30:49,000 --> 00:30:52,000
was written for Linux.

487
00:30:52,000 --> 00:30:56,000
So I had to patch it in order to compile it on IRIX.

488
00:30:56,000 --> 00:31:02,000
And I submitted it to the author who then included, that was my actual first

489
00:31:02,000 --> 00:31:03,000
patch for anything.

490
00:31:03,000 --> 00:31:08,000
When it actually comes to submitting a, what we today know as submitting a

491
00:31:08,000 --> 00:31:12,000
patch.

492
00:31:12,000 --> 00:31:14,000
[CLAIRE] And they accepted it, I take it.

493
00:31:14,000 --> 00:31:15,000
[DANIEL] They did accept it.

494
00:31:15,000 --> 00:31:17,000
[CLAIRE] And you got to play your game.

495
00:31:17,000 --> 00:31:18,000
[DANIEL] Exactly.

496
00:31:18,000 --> 00:31:19,000
[CLAIRE] All right.

497
00:31:19,000 --> 00:31:21,000
Very cool.

498
00:31:21,000 --> 00:31:26,000
If you don't remember your first patch submission to Postgres, what parts of the

499
00:31:26,000 --> 00:31:29,000
system did you work on at the beginning?

500
00:31:29,000 --> 00:31:32,000
Did you pick something that was super crazy challenging?

501
00:31:32,000 --> 00:31:38,000
Or was there a part of Postgres that you just have naturally gravitated to

502
00:31:38,000 --> 00:31:40,000
working on?

503
00:31:40,000 --> 00:31:45,000
[DANIEL] So I've been spending a fair amount of time working on the networking side,

504
00:31:45,000 --> 00:31:48,000
mainly around the TLS support.

505
00:31:48,000 --> 00:31:50,000
Not really sure why that happened.

506
00:31:50,000 --> 00:31:55,000
Probably because, so one of my other open source hats is that I work on curl

507
00:31:55,000 --> 00:31:57,000
and libcurl.

508
00:31:57,000 --> 00:32:04,000
So where I'm obviously exposed to a lot of TLS libraries and TLS weirdness.

509
00:32:04,000 --> 00:32:10,000
So it became natural, like, once I'm doing something in curl, I can, maybe that

510
00:32:10,000 --> 00:32:15,000
same problem exists in Postgres, and that sort of crossbred into me looking a

511
00:32:15,000 --> 00:32:19,000
lot at the TLS layer in Postgres.

512
00:32:19,000 --> 00:32:26,000
But it wasn't sort of like this specific, I'm going to be the TLS person.

513
00:32:26,000 --> 00:32:29,000
Like, that just, it just sort of happened.

514
00:32:29,000 --> 00:32:35,000
And these days I'm getting a tremendous amount of help from Jacob Champion, who

515
00:32:35,000 --> 00:32:40,000
is going to hopefully take over a lot of that responsibility from me, because he's

516
00:32:40,000 --> 00:32:44,000
doing amazing work there.

517
00:32:44,000 --> 00:32:48,000
But I haven't really focused on any specific area.

518
00:32:48,000 --> 00:32:51,000
I've been poking at basically everything.

519
00:32:51,000 --> 00:32:58,000
The one thing that got me started in looking at Postgres code is the one patch

520
00:32:58,000 --> 00:33:00,000
that I still haven't written.

521
00:33:00,000 --> 00:33:05,000
But the very first feature that I wanted to do is one that I still have on my

522
00:33:05,000 --> 00:33:09,000
to-do, which has been there since 2010.

523
00:33:09,000 --> 00:33:13,000
But someday I might get to it.

524
00:33:13,000 --> 00:33:16,000
[CLAIRE] Are you going to tell us about it?

525
00:33:16,000 --> 00:33:20,000
Or is it something that you don't want to tell anyone about?

526
00:33:20,000 --> 00:33:23,000
Because you don't want to increase demand for it.

527
00:33:23,000 --> 00:33:27,000
[DANIEL] It's the,

528
00:33:27,000 --> 00:33:33,000
when you write a stored procedure, I'm trying to remember all the details, because

529
00:33:33,000 --> 00:33:36,000
I haven't written stored procedures in so many years.

530
00:33:36,000 --> 00:33:39,000
Because at that job that I had for the classified ads websites, we did a lot of

531
00:33:39,000 --> 00:33:41,000
stored procedures.

532
00:33:41,000 --> 00:33:44,000
Like, we had implemented a lot of the logic in stored procedures.

533
00:33:44,000 --> 00:33:48,000
And when you write a stored procedure, you can say that I want variable foo to

534
00:33:48,000 --> 00:33:51,000
have the same data type as parameter bar.

535
00:33:51,000 --> 00:33:55,000
So whatever parameter bar is passed in as, I want to have this variable be the

536
00:33:55,000 --> 00:33:56,000
same data type.

537
00:33:56,000 --> 00:33:59,000
Because I'm going to assign it, and I'm going to do some calculations on it.

538
00:33:59,000 --> 00:34:04,000
So it's like a shorthand notation for, rather than having to specify, yes, I

539
00:34:04,000 --> 00:34:06,000
want this to be an integer as well,

540
00:34:06,000 --> 00:34:14,000
and then you need to remember to change it if you change the parameter type.

541
00:34:14,000 --> 00:34:16,000
And there's a shorthand syntax for that.

542
00:34:16,000 --> 00:34:22,000
But that doesn't work if you're declaring an array as a variable.

543
00:34:22,000 --> 00:34:26,000
You can only declare a variable, like one variable.

544
00:34:26,000 --> 00:34:30,000
You can't declare an array of that type.

545
00:34:30,000 --> 00:34:33,000
And that was bugging me, because we were doing that a lot.

546
00:34:33,000 --> 00:34:35,000
So I wanted to fix that.

547
00:34:35,000 --> 00:34:37,000
But I never got around to it.

548
00:34:37,000 --> 00:34:42,000
At the time, it was sort of over my head to write that code.

549
00:34:42,000 --> 00:34:47,000
And now it's just one of those things that still sits on the to-do list for a

550
00:34:47,000 --> 00:34:52,000
rainy day that hasn't come yet.

551
00:34:52,000 --> 00:34:53,000
[CLAIRE] The day will come.

552
00:34:53,000 --> 00:34:55,000
You'll get there.

553
00:34:55,000 --> 00:35:00,000
Make sure you come back and tell me when it finally happens.

554
00:35:00,000 --> 00:35:04,000
So one of the questions I like to ask people, like, if you imagine somebody's

555
00:35:04,000 --> 00:35:08,000
listening to this show, who obviously a whole bunch of people who are here in

556
00:35:08,000 --> 00:35:14,000
the live text chat are already avid or active Postgres contributors and

557
00:35:14,000 --> 00:35:15,000
developers.

558
00:35:15,000 --> 00:35:20,000
But let's say someone's listening to this who isn't yet part of the Postgres

559
00:35:20,000 --> 00:35:21,000
community.

560
00:35:21,000 --> 00:35:25,000
They're not yet a Postgres contributor, but they're thinking about it.

561
00:35:25,000 --> 00:35:27,000
Or the same for users.

562
00:35:27,000 --> 00:35:33,000
Maybe they're just deciding what database they're going to go with.

563
00:35:33,000 --> 00:35:36,000
If you end up talking to someone like that and they ask you, "Well, why should

564
00:35:36,000 --> 00:35:38,000
I use Postgres?"

565
00:35:38,000 --> 00:35:44,000
What's your answer versus some other database?

566
00:35:44,000 --> 00:35:48,000
[DANIEL] I mean, that's a good question because the answer depends so much on the use

567
00:35:48,000 --> 00:35:50,000
case.

568
00:35:50,000 --> 00:35:53,000
And to be fair, there's probably a lot of times when Postgres isn't even the

569
00:35:53,000 --> 00:35:54,000
right answer for them.

570
00:35:54,000 --> 00:35:58,000
And we shouldn't be, we should totally acknowledge that there's a

571
00:35:58,000 --> 00:36:01,000
plethora of other technologies out there.

572
00:36:01,000 --> 00:36:08,000
But in general, I would say that Postgres is where IBM used to be,

573
00:36:08,000 --> 00:36:10,000
you never got fired for buying IBM.

574
00:36:10,000 --> 00:36:13,000
And these days, you don't really get fired for implementing Postgres in your

575
00:36:13,000 --> 00:36:18,000
project because it's like this safe alternative, it will scale to your

576
00:36:18,000 --> 00:36:19,000
needs.

577
00:36:19,000 --> 00:36:21,000
It will handle your load.

578
00:36:21,000 --> 00:36:26,000
And it's not going to ruin you cost-wise because it only costs as much as you

579
00:36:26,000 --> 00:36:30,000
want to invest in support contract with a vendor somewhere.

580
00:36:30,000 --> 00:36:35,000
If you don't want to spend anything, it's your own time.

581
00:36:35,000 --> 00:36:39,000
And it's this technology that will just simply be around.

582
00:36:39,000 --> 00:36:45,000
And even if it's not around, it's still sort of using SQL, which is a

583
00:36:45,000 --> 00:36:47,000
standardized tool, so a standard language.

584
00:36:47,000 --> 00:36:53,000
So most of the skills are transferable to something else.

585
00:36:53,000 --> 00:36:57,000
So I would say it's like this, I'm not going to say it's the simple, boring,

586
00:36:57,000 --> 00:36:58,000
choice.

587
00:36:58,000 --> 00:37:03,000
It's the exciting choice that will fit almost every need you have.

588
00:37:03,000 --> 00:37:08,000
It might not fit every, the most specialized needs, but it's going to fit

589
00:37:08,000 --> 00:37:09,000
basically everything.

590
00:37:09,000 --> 00:37:13,000
It's going to do an okay job to a great job everywhere.

591
00:37:13,000 --> 00:37:18,000
So it's like the stable choice of buying IBM.

592
00:37:18,000 --> 00:37:23,000
[CLAIRE] Got it.

593
00:37:23,000 --> 00:37:28,000
You mentioned SQL as the standard language.

594
00:37:28,000 --> 00:37:36,000
Is that something you ever got really good at, writing SQL queries?

595
00:37:36,000 --> 00:37:43,000
[DANIEL] I would say I was definitely above average when I was doing it every day.

596
00:37:43,000 --> 00:37:46,000
But that's not true anymore.

597
00:37:46,000 --> 00:37:51,000
It's like this, you learn French in school, and unless you speak French,

598
00:37:51,000 --> 00:37:57,000
it's simply sort of, it doesn't really go away, but you definitely get worse

599
00:37:57,000 --> 00:37:58,000
and worse at it.

600
00:37:58,000 --> 00:38:03,000
I don't write enough SQL these days to feel that I'm good at it, and that's

601
00:38:03,000 --> 00:38:08,000
one of the things that I would like to change, because I want to, sort of,

602
00:38:08,000 --> 00:38:13,000
relearn all the skills.

603
00:38:13,000 --> 00:38:17,000
I definitely had a period in time when I spent all my day writing SQL,

604
00:38:17,000 --> 00:38:22,000
essentially, or SQL as stored procedures.

605
00:38:22,000 --> 00:38:30,000
[CLAIRE] So how did you get good at using Postgres, writing SQL, writing stored

606
00:38:30,000 --> 00:38:31,000
procedures?

607
00:38:31,000 --> 00:38:35,000
Obviously what you're saying is by doing it every day, you learn through

608
00:38:35,000 --> 00:38:41,000
experience, you learn through that familiarity, and building those muscles,

609
00:38:41,000 --> 00:38:42,000
if you will.

610
00:38:42,000 --> 00:38:43,000
It's like going to the gym.

611
00:38:43,000 --> 00:38:45,000
You have to go to the gym if you want to get in shape.

612
00:38:45,000 --> 00:38:49,000
But are there other things you did, things you would recommend?

613
00:38:49,000 --> 00:38:55,000
If you had a nephew or a niece who was just getting started, had a new job,

614
00:38:55,000 --> 00:39:02,000
had to learn Postgres, what suggestions would you give them?

615
00:39:02,000 --> 00:39:07,000
[DANIEL] That's a hard one, because it's been so long since I was in that position.

616
00:39:07,000 --> 00:39:21,000
I think for me, SQL felt very natural, because I grew up on weird programming

617
00:39:21,000 --> 00:39:25,000
environments and programming languages.

618
00:39:25,000 --> 00:39:33,000
The stuff that I started out learning was not just your normal, the Java,

619
00:39:33,000 --> 00:39:35,000
Pascal.

620
00:39:35,000 --> 00:39:40,000
There were so many weird languages that I learned over the years. [Like?]

621
00:39:40,000 --> 00:39:42,000
A lot of them.

622
00:39:42,000 --> 00:39:49,000
For example, in the early '90s, I was given a modem, and I started calling

623
00:39:49,000 --> 00:39:50,000
BBS systems.

624
00:39:50,000 --> 00:39:54,000
That's basically when I shifted over to, "I want to write software," because

625
00:39:54,000 --> 00:39:59,000
I found this world of people sharing their software as shareware, and I wanted

626
00:39:59,000 --> 00:40:02,000
to be a part of that.

627
00:40:02,000 --> 00:40:08,000
One of the things that I did a lot back then was writing add-ons to BBS systems,

628
00:40:08,000 --> 00:40:13,000
because basically all of them had some way of writing software, like plugins

629
00:40:13,000 --> 00:40:15,000
essentially for them.

630
00:40:15,000 --> 00:40:19,000
A lot of them had their own programming languages.

631
00:40:19,000 --> 00:40:21,000
PCBoard was a very popular one.

632
00:40:21,000 --> 00:40:26,000
I think it was called PPL, PCBoard Programming Language.

633
00:40:26,000 --> 00:40:28,000
There was a lot of others.

634
00:40:28,000 --> 00:40:33,000
Some of those were declarative, kind of like SQL.

635
00:40:33,000 --> 00:40:38,000
Coming to SQL felt sort of natural, because I had seen so many different weird

636
00:40:38,000 --> 00:40:46,000
things and declarative things that, I don't know, it just sort of felt fairly

637
00:40:46,000 --> 00:40:51,000
natural, and I could apply the learnings that I had from all this previous

638
00:40:51,000 --> 00:40:53,000
exposure.

639
00:40:53,000 --> 00:41:00,000
My way into SQL is definitely not transferable to anyone else.

640
00:41:00,000 --> 00:41:03,000
That's probably a good thing, because I'm pretty sure there's a lot of better ways

641
00:41:03,000 --> 00:41:05,000
out there.

642
00:41:05,000 --> 00:41:07,000
[CLAIRE] Okay.

643
00:41:07,000 --> 00:41:12,000
If you were to give advice to your niece or nephew, you'd probably have to go do

644
00:41:12,000 --> 00:41:16,000
some research, because you wouldn't recommend they follow the path that you

645
00:41:16,000 --> 00:41:17,000
took.

646
00:41:17,000 --> 00:41:21,000
[DANIEL] No, I would have to ask Bruce, or someone.

647
00:41:21,000 --> 00:41:25,000
[CLAIRE] Okay.

648
00:41:25,000 --> 00:41:28,000
What about failures versus successes?

649
00:41:28,000 --> 00:41:34,000
As you got started in Postgres, did any stories come to mind about, I don't

650
00:41:34,000 --> 00:41:41,000
know, big mistakes that you made that you're never going to make again, or easy

651
00:41:41,000 --> 00:41:47,000
wins in those early days as a contributor?

652
00:41:47,000 --> 00:41:49,000
[DANIEL] That's a good question.

653
00:41:49,000 --> 00:41:56,000
I think my biggest failure is not asking for help.

654
00:41:56,000 --> 00:41:59,000
Maybe it comes from being an introvert Scandinavian, I don't know.

655
00:41:59,000 --> 00:42:06,000
But I've never really reached out to anyone to, maybe not as much as mentoring,

656
00:42:06,000 --> 00:42:09,000
but just asking for help on things.

657
00:42:09,000 --> 00:42:12,000
I've just stubbornly been sitting on my own, trying to get this thing to work,

658
00:42:12,000 --> 00:42:14,000
whatever.

659
00:42:14,000 --> 00:42:19,000
Obviously, when you do get it to work, that's a great sense of achievement.

660
00:42:19,000 --> 00:42:29,000
But I'm pretty sure that I would have come further in my journey had I reached

661
00:42:29,000 --> 00:42:35,000
out to folks and sought more assistance and help, especially in the early days.

662
00:42:35,000 --> 00:42:40,000
So I would say that's probably my biggest weakness.

663
00:42:40,000 --> 00:42:48,000
And that's why I'm so, so, so glad that Robert Haas and others are sort of

664
00:42:48,000 --> 00:42:52,000
picking up this mentoring that we're starting to do now a lot more.

665
00:42:52,000 --> 00:42:55,000
Because I think it's super important, and it's something that I would have

666
00:42:55,000 --> 00:42:59,000
wanted to have starting out.

667
00:42:59,000 --> 00:43:04,000
So, yeah, that's probably my biggest failure, if you will.

668
00:43:04,000 --> 00:43:11,000
[CLAIRE] So just as context for someone that's listening, Robert Haas is another

669
00:43:11,000 --> 00:43:15,000
Postgres committer and major contributor.

670
00:43:15,000 --> 00:43:20,000
He works at EDB, has been involved in Postgres for a long time, like Daniel.

671
00:43:20,000 --> 00:43:26,000
And he just has kicked off, I guess it was last summer of 2024,

672
00:43:26,000 --> 00:43:33,000
a new mentoring program for current Postgres contributors or aspiring

673
00:43:33,000 --> 00:43:38,000
Postgres contributors, where they each have gotten, the first cohort is

674
00:43:38,000 --> 00:43:40,000
happening now.

675
00:43:40,000 --> 00:43:45,000
And, in fact, Robert is going to be the guest on the next episode of Talking

676
00:43:45,000 --> 00:43:48,000
Postgres in February, which maybe you knew, maybe you didn't.

677
00:43:48,000 --> 00:43:51,000
But it's a perfect opportunity to mention that.

678
00:43:51,000 --> 00:43:55,000
On February 5th, we'll do the live recording, and the episode will come out

679
00:43:55,000 --> 00:43:56,000
a couple days after.

680
00:43:56,000 --> 00:44:00,000
And we're going to talk about mentoring in Postgres and why it matters and why

681
00:44:00,000 --> 00:44:06,000
he started this program and how Melanie Plageman influenced that and all sorts

682
00:44:06,000 --> 00:44:09,000
of things.

683
00:44:09,000 --> 00:44:12,000
Did I miss anything on that context?

684
00:44:12,000 --> 00:44:14,000
[DANIEL] No, I think that's about it.

685
00:44:14,000 --> 00:44:19,000
I think it's a super important and valuable program that I wish we had

686
00:44:19,000 --> 00:44:22,000
earlier.

687
00:44:22,000 --> 00:44:25,000
But, yeah, it's fantastic that we have it now.

688
00:44:25,000 --> 00:44:31,000
[CLAIRE] Yeah, and to be fair, I'm sure that mentoring has happened among Postgres

689
00:44:31,000 --> 00:44:36,000
contributors for many, many years now, but it's all been kind of informal.

690
00:44:36,000 --> 00:44:42,000
And sometimes the person who wants to be mentored has had to go ask for it

691
00:44:42,000 --> 00:44:47,000
themselves, like figure out amongst all the people, well, who's the right

692
00:44:47,000 --> 00:44:52,000
person to ask and go and ask them and somehow. So it's nice to have the

693
00:44:52,000 --> 00:44:54,000
structure, I think, in place.

694
00:44:54,000 --> 00:44:55,000
[DANIEL] Yeah, for sure.

695
00:44:55,000 --> 00:44:59,000
And as you say, it has been happening and it's been probably happening a lot

696
00:44:59,000 --> 00:45:04,000
because folks in this community are very approachable.

697
00:45:04,000 --> 00:45:09,000
So it's not that mentoring hasn't happened, but it hasn't been sort of like

698
00:45:09,000 --> 00:45:15,000
an official visible thing because a lot of people would not dare to send an

699
00:45:15,000 --> 00:45:20,000
email to Robert Haas or Peter Eisentraut or someone and ask for help.

700
00:45:20,000 --> 00:45:23,000
Like, it just seems like you can't really do that.

701
00:45:23,000 --> 00:45:27,000
Like, surely these people have so much more important things to do.

702
00:45:27,000 --> 00:45:34,000
Now, a lot of these folks will immediately answer your question.

703
00:45:34,000 --> 00:45:38,000
Like, there's, and that's been going on for a long time.

704
00:45:38,000 --> 00:45:43,000
But to have it as an official public thing, I think that's very valuable also

705
00:45:43,000 --> 00:45:47,000
for those who didn't realize that that's a thing you could even do.

706
00:45:47,000 --> 00:45:50,000
So, yeah, I'm very excited about that.

707
00:45:50,000 --> 00:45:56,000
[CLAIRE] Okay, so let's talk for a second about, okay, you work at Microsoft.

708
00:45:56,000 --> 00:46:02,000
But my understanding is the vast majority of your time, your work day if you

709
00:46:02,000 --> 00:46:09,000
will, is spent focused on the Postgres open source project, the upstream

710
00:46:09,000 --> 00:46:11,000
project, is that correct?

711
00:46:11,000 --> 00:46:12,000
[DANIEL] Correct, yes.

712
00:46:12,000 --> 00:46:13,000
[CLAIRE] Okay.

713
00:46:13,000 --> 00:46:18,000
And you are both an individual contributor in some of the work you do, but

714
00:46:18,000 --> 00:46:21,000
you've also just taken on a management role as well.

715
00:46:21,000 --> 00:46:26,000
So there are other Postgres contributors at Microsoft who work on the upstream

716
00:46:26,000 --> 00:46:29,000
open source projects who now report to you, correct?

717
00:46:29,000 --> 00:46:32,000
[DANIEL] That's correct, yes. [Okay.]

718
00:46:32,000 --> 00:46:37,000
[CLAIRE] So what I'm curious about, just now that we have that context, is when you

719
00:46:37,000 --> 00:46:41,000
think about contributing to the community, obviously if I go back and look at,

720
00:46:41,000 --> 00:46:45,000
like, the number of patches you reviewed in the last release or the commits that

721
00:46:45,000 --> 00:46:50,000
you've done, the contributions you've made, you're obviously contributing to

722
00:46:50,000 --> 00:46:52,000
the code.

723
00:46:52,000 --> 00:46:55,000
But you've also spent time doing other community things.

724
00:46:55,000 --> 00:46:58,000
Like, obviously you're a guest on this podcast now, but you've helped to

725
00:46:58,000 --> 00:47:00,000
organize conferences.

726
00:47:00,000 --> 00:47:02,000
And what I'm curious about is why.

727
00:47:02,000 --> 00:47:04,000
Why did you spend that time?

728
00:47:04,000 --> 00:47:07,000
[DANIEL] Organizing conferences? [Yeah.]

729
00:47:07,000 --> 00:47:12,000
I mean, mainly because I think it's an important thing to do.

730
00:47:12,000 --> 00:47:15,000
And it was, I'm not going to say it was an easy thing to do, because it

731
00:47:15,000 --> 00:47:17,000
wasn't.

732
00:47:17,000 --> 00:47:19,000
It's been a lot of hard work.

733
00:47:19,000 --> 00:47:23,000
But it's sort of like this starting out, it was something that was very

734
00:47:23,000 --> 00:47:26,000
approachable to me, because I knew I could do it.

735
00:47:26,000 --> 00:47:31,000
It wasn't, you know, writing something very complicated piece of code.

736
00:47:31,000 --> 00:47:36,000
It was the more human side of organizing events.

737
00:47:36,000 --> 00:47:42,000
Like, it was something that I knew I could do.

738
00:47:42,000 --> 00:47:44,000
And it was something that I enjoy doing.

739
00:47:44,000 --> 00:47:47,000
And I value just how important they are.

740
00:47:47,000 --> 00:47:51,000
And I got to, you know, do it along with friends, like Magnus and Dave Page and

741
00:47:51,000 --> 00:47:53,000
everyone else.

742
00:47:53,000 --> 00:47:57,000
So it was sort of like an easy, like, once I got approached to ask if I

743
00:47:57,000 --> 00:48:01,000
wanted to be a part of the PGConf EU organizing team, immediately it was

744
00:48:01,000 --> 00:48:05,000
obviously an honor to be asked.

745
00:48:05,000 --> 00:48:08,000
So definitely don't want to turn that down, and obviously these are people that I like, people

746
00:48:08,000 --> 00:48:10,000
that I hang out with.

747
00:48:10,000 --> 00:48:12,000
So, sure, I want to be a part of that.

748
00:48:12,000 --> 00:48:14,000
And then it just sort of snowballed from there.

749
00:48:14,000 --> 00:48:18,000
And I spent a good part of ten years doing that.

750
00:48:18,000 --> 00:48:22,000
Up until basically last year, when I felt that it was time to, it was time

751
00:48:22,000 --> 00:48:24,000
for a change.

752
00:48:24,000 --> 00:48:28,000
Like, I needed to do less of that to regain sort of the excitement about doing

753
00:48:28,000 --> 00:48:30,000
it.

754
00:48:30,000 --> 00:48:33,000
And also to have more time for other things, essentially.

755
00:48:33,000 --> 00:48:36,000
Because it does take a lot of time, that's for sure.

756
00:48:36,000 --> 00:48:37,000
[CLAIRE] Yeah.

757
00:48:37,000 --> 00:48:39,000
A lot of blood, sweat, and tears.

758
00:48:39,000 --> 00:48:43,000
But you are on the talk selection team for POSETTE this year.

759
00:48:43,000 --> 00:48:45,000
[DANIEL] Yes, I am.

760
00:48:45,000 --> 00:48:46,000
[CLAIRE] Okay.

761
00:48:46,000 --> 00:48:48,000
And the CFP is still open.

762
00:48:48,000 --> 00:48:51,000
And we'll close on, for anybody who's listening to this right away and is

763
00:48:51,000 --> 00:48:56,000
just hearing about POSETTE for the first time, it's that virtual event for

764
00:48:56,000 --> 00:49:01,000
Postgres that is organized by Microsoft that has a lot of speakers from

765
00:49:01,000 --> 00:49:05,000
outside of Microsoft in the open source world, as well as some, like, Azure

766
00:49:05,000 --> 00:49:07,000
Database for PostgreSQL customers.

767
00:49:07,000 --> 00:49:11,000
And anyway, the CFP will close on February 9th.

768
00:49:11,000 --> 00:49:14,000
So I guess you'll be doing talk selection later in February then.

769
00:49:14,000 --> 00:49:16,000
[DANIEL] Yeah, it's going to be exciting.

770
00:49:16,000 --> 00:49:18,000
Looking forward to that.

771
00:49:18,000 --> 00:49:25,000
[CLAIRE] I think that, I guess, you know, other technologies, when there's a company

772
00:49:25,000 --> 00:49:30,000
behind them, a company is the primary supporter of that project, a lot of

773
00:49:30,000 --> 00:49:34,000
times that company is the organizer of all the events.

774
00:49:34,000 --> 00:49:38,000
But the thing that's special, I think, about Postgres is that there is no one

775
00:49:38,000 --> 00:49:40,000
company, right?

776
00:49:40,000 --> 00:49:45,000
People contribute from all sorts of different consulting companies, big cloud

777
00:49:45,000 --> 00:49:47,000
companies, all over the place.

778
00:49:47,000 --> 00:49:51,000
And so, as a result, that means that the big events, the PGConf EUs of the

779
00:49:51,000 --> 00:49:56,000
world, the Nordic PGDays, as a smaller one, they do need support from

780
00:49:56,000 --> 00:49:57,000
volunteers.

781
00:49:57,000 --> 00:50:01,000
And that's what you've been doing for a long, long, time, which is awesome.

782
00:50:01,000 --> 00:50:08,000
[DANIEL] It's all volunteer driven, which is pretty impressive considering how large

783
00:50:08,000 --> 00:50:10,000
and complex these events are.

784
00:50:10,000 --> 00:50:13,000
And obviously, they started out small and have grown.

785
00:50:13,000 --> 00:50:19,000
And as they grow, the experience of those organizing them grows with that.

786
00:50:19,000 --> 00:50:28,000
But still, every time I'm involved, I'm always almost surprised at how,

787
00:50:28,000 --> 00:50:32,000
what the scale of operations that we can support with relatively few

788
00:50:32,000 --> 00:50:36,000
volunteers.

789
00:50:36,000 --> 00:50:41,000
And obviously, we are supported by companies because the sponsorship money

790
00:50:41,000 --> 00:50:46,000
is super important for these events and the sponsorship support in the sense

791
00:50:46,000 --> 00:50:52,000
that basically, every conference that I think I've been involved with, the

792
00:50:52,000 --> 00:50:59,000
ticket prices are mostly at cost for the organizers and sometimes even below

793
00:50:59,000 --> 00:51:02,000
cost to keep it affordable.

794
00:51:02,000 --> 00:51:09,000
And then the sponsorship money is what's bridging it up to pay for everything.

795
00:51:09,000 --> 00:51:15,000
So, at Nordic PGDay, we've many times had actually the tickets, the general

796
00:51:15,000 --> 00:51:20,000
attendance ticket, being below cost for us and relying completely on sponsors to

797
00:51:20,000 --> 00:51:24,000
make up for being actually being able to pay for it.

798
00:51:24,000 --> 00:51:26,000
And that's always been working out.

799
00:51:26,000 --> 00:51:29,000
[CLAIRE] So, you're bringing to mind a picture of one of those slides from that talk that

800
00:51:29,000 --> 00:51:33,000
you and I worked on together.

801
00:51:33,000 --> 00:51:38,000
For Postgres, so, for anyone who's not familiar with the Postgres release

802
00:51:38,000 --> 00:51:43,000
cadence, there's typically one major release a year.

803
00:51:43,000 --> 00:51:47,000
It comes out around September-October.

804
00:51:47,000 --> 00:51:52,000
And the actual code freeze, or development freeze, what's the proper term?

805
00:51:52,000 --> 00:51:55,000
What do you say? [Code freeze.]

806
00:51:55,000 --> 00:51:56,000
Okay.

807
00:51:56,000 --> 00:51:57,000
Well, there you go.

808
00:51:57,000 --> 00:52:01,000
It generally happens, is it beginning of April?

809
00:52:01,000 --> 00:52:02,000
[DANIEL] I think so.

810
00:52:02,000 --> 00:52:04,000
Roughly around the end of March, early April.

811
00:52:04,000 --> 00:52:06,000
[CLAIRE] Yeah, there's a big commit fest in March.

812
00:52:06,000 --> 00:52:08,000
And a lot of stuff happens.

813
00:52:08,000 --> 00:52:12,000
Happens or doesn't happen in that month.

814
00:52:12,000 --> 00:52:16,000
But there's, so, we have this cycle.

815
00:52:16,000 --> 00:52:21,000
And for last year's PGConf EU, you and I collaborated on research of a talk

816
00:52:21,000 --> 00:52:26,000
looking at all of the different contributions to Postgres version 17, which

817
00:52:26,000 --> 00:52:29,000
turns out, like when we mapped it out in the calendar, it was like a 16 month

818
00:52:29,000 --> 00:52:35,000
time frame, start to finish, from when the branch was forked in the code to

819
00:52:35,000 --> 00:52:37,000
when GA happened.

820
00:52:37,000 --> 00:52:41,000
And so, anyway, we tried to look at as many different types of contributions

821
00:52:41,000 --> 00:52:42,000
as we could.

822
00:52:42,000 --> 00:52:45,000
Obviously, you did a whole bunch of research on the code contributions,

823
00:52:45,000 --> 00:52:49,000
looking for, well, what's the oldest piece of Tom Lane code that was

824
00:52:49,000 --> 00:52:50,000
modified?

825
00:52:50,000 --> 00:52:54,000
And there were a whole bunch of interesting little juicy tidbits that

826
00:52:54,000 --> 00:52:56,000
came up in that work.

827
00:52:56,000 --> 00:52:59,000
But we also looked at sponsorships, like you're talking about, and,

828
00:52:59,000 --> 00:53:03,000
which companies gave most frequently, which companies gave the most in terms

829
00:53:03,000 --> 00:53:05,000
of dollars.

830
00:53:05,000 --> 00:53:09,000
And there's this chart that has all the logos from all the companies that

831
00:53:09,000 --> 00:53:13,000
sponsored all of the Postgres community events that we looked at.

832
00:53:13,000 --> 00:53:15,000
And it's just phenomenal.

833
00:53:15,000 --> 00:53:18,000
Like, the financial support is important, I guess.

834
00:53:18,000 --> 00:53:20,000
That's a long way of saying that.

835
00:53:20,000 --> 00:53:22,000
[DANIEL] Yeah, it's very important.

836
00:53:22,000 --> 00:53:28,000
And it's nice to see that all these companies pulled together to really

837
00:53:28,000 --> 00:53:30,000
support the community.

838
00:53:30,000 --> 00:53:36,000
So, yeah, that's very important and sort of heartwarming for those of us to

839
00:53:36,000 --> 00:53:40,000
spend a lot of time and effort in making these events, that the companies come

840
00:53:40,000 --> 00:53:43,000
around and help us out financially.

841
00:53:43,000 --> 00:53:48,000
[CLAIRE] I'm going to drop the slides from that talk into the show notes for this

842
00:53:48,000 --> 00:53:50,000
show, too, for anyone who's curious.

843
00:53:50,000 --> 00:53:53,000
Because it's, I don't know.

844
00:53:53,000 --> 00:53:55,000
We were surprised.

845
00:53:55,000 --> 00:53:59,000
Well, first, we were surprised by how much

846
00:53:59,000 --> 00:54:01,000
work it was to do that research.

847
00:54:01,000 --> 00:54:06,000
And then we were also, I think, just surprised by some of the patterns we saw

848
00:54:06,000 --> 00:54:11,000
and people who were frequent conference speakers, for example.

849
00:54:11,000 --> 00:54:13,000
And so, all right,

850
00:54:13,000 --> 00:54:18,000
I want to pivot back to some of your development work as well on Postgres.

851
00:54:18,000 --> 00:54:20,000
And I'm just curious,

852
00:54:20,000 --> 00:54:26,000
can you, would it be interesting to walk through your toolset?

853
00:54:26,000 --> 00:54:30,000
Are there favorite tools that you use as a Postgres contributor that maybe people

854
00:54:30,000 --> 00:54:33,000
should be using but aren't?

855
00:54:33,000 --> 00:54:36,000
[DANIEL] Actually, not.

856
00:54:36,000 --> 00:54:38,000
My tool set is very boring.

857
00:54:38,000 --> 00:54:47,000
So, like I said earlier, working in the graphics arts industry, I came in at a

858
00:54:47,000 --> 00:54:54,000
point in time where there was still a very wide variety of systems out there that

859
00:54:54,000 --> 00:55:01,000
we would be working on basically daily.

860
00:55:01,000 --> 00:55:06,000
So, and quite often, in order to reach the system I had to go to, I had to, you

861
00:55:06,000 --> 00:55:08,000
know, telnet.

862
00:55:08,000 --> 00:55:11,000
Generally, SSH wasn't even available on most of these systems.

863
00:55:11,000 --> 00:55:16,000
You had to telnet through an IRIX machine onto a Solaris machine via DG/UX and

864
00:55:16,000 --> 00:55:18,000
then the next step.

865
00:55:18,000 --> 00:55:25,000
Many of the environments had been set up by, you know, network engineers who

866
00:55:25,000 --> 00:55:27,000
weren't that by trade.

867
00:55:27,000 --> 00:55:29,000
So, there was very interesting networks setups.

868
00:55:29,000 --> 00:55:34,000
So, I had to jump through all these hops and reaching the final system, nothing

869
00:55:34,000 --> 00:55:39,000
ever worked except just your A to Z on the keyboard and vi was the only thing

870
00:55:39,000 --> 00:55:43,000
available universally.

871
00:55:43,000 --> 00:55:46,000
So, from that time, like, I only use vi.

872
00:55:46,000 --> 00:55:48,000
I don't have any plugins, I have nothing else.

873
00:55:48,000 --> 00:55:53,000
I only use vi and a terminal because that's what I sort of, not because I grew

874
00:55:53,000 --> 00:55:58,000
up with it, but that's what I, where I cut my teeth in UNIX development.

875
00:55:58,000 --> 00:56:05,000
So, I'm still just using vi and a terminal and nothing else.

876
00:56:05,000 --> 00:56:10,000
I do have syntax highlighting mostly because it makes at least,

877
00:56:10,000 --> 00:56:14,000
makes the screen a bit brighter, but I honestly don't even know what the colors

878
00:56:14,000 --> 00:56:17,000
mean, it just looks nice, but I have nothing else.

879
00:56:17,000 --> 00:56:22,000
So, my tool set is very, very minimal.

880
00:56:22,000 --> 00:56:27,000
[CLAIRE] So, you use syntax highlighting for the aesthetic pleasure you get from it.

881
00:56:27,000 --> 00:56:30,000
[DANIEL] Yeah, pretty much.

882
00:56:30,000 --> 00:56:36,000
I'm very bad at learning new tools and also I'm getting older, I'm just not

883
00:56:36,000 --> 00:56:40,000
terribly excited about configuring a new tool and learning one.

884
00:56:40,000 --> 00:56:46,000
It's like, I just want to get to work, so I stick to what I know, essentially.

885
00:56:46,000 --> 00:56:52,000
[CLAIRE] There's a really famous phrase that says that the best tool is the familiar tool.

886
00:56:52,000 --> 00:56:56,000
And I feel like that's part of human nature.

887
00:56:56,000 --> 00:57:00,000
Like when someone has been trained on using a particular system and it still

888
00:57:00,000 --> 00:57:03,000
works. Obviously if it isn't working, I know you,

889
00:57:03,000 --> 00:57:06,000
I know that you're going to go find a better way.

890
00:57:06,000 --> 00:57:10,000
But as long as it's still working, why not use the familiar tool?

891
00:57:10,000 --> 00:57:18,000
[DANIEL] Yeah, and even going all the way back to my early, early days of early, like

892
00:57:18,000 --> 00:57:24,000
pre-DOS, like when I was working, I don't even remember which computer that was,

893
00:57:24,000 --> 00:57:29,000
but we had a CP/M machine at home and it was shipping with WordStar, which I

894
00:57:29,000 --> 00:57:35,000
believe was the sort of like origin of vi, because it has the same key bindings.

895
00:57:35,000 --> 00:57:41,000
So it had that familiarity even from when I was like eight years old.

896
00:57:41,000 --> 00:57:49,000
So that's probably another reason why it's part of my muscle memory.

897
00:57:49,000 --> 00:57:52,000
[CLAIRE] I had no idea there was a relationship between WordStar and vi.

898
00:57:52,000 --> 00:57:55,000
I'm really curious about that.

899
00:57:55,000 --> 00:57:58,000
OK, I'll go research that after the fact.

900
00:57:58,000 --> 00:58:02,000
Because I too used vi when I was first starting out as a developer.

901
00:58:02,000 --> 00:58:06,000
So I was never an Emacs person.

902
00:58:06,000 --> 00:58:13,000
All right, so have you heard me talk about this phrase called the toothbrush test?

903
00:58:13,000 --> 00:58:15,000
[DANIEL] I've heard you mention it, yeah.

904
00:58:15,000 --> 00:58:18,000
[CLAIRE] OK, so the idea is when you're brushing your teeth in the morning, are you

905
00:58:18,000 --> 00:58:21,000
looking forward to the work that you're going to be doing that day?

906
00:58:21,000 --> 00:58:23,000
Or are you dreading it?

907
00:58:23,000 --> 00:58:27,000
Obviously, if you were dreading it, you probably wouldn't be on the show,

908
00:58:27,000 --> 00:58:31,000
because you probably wouldn't want to be talking to the world about your work.

909
00:58:31,000 --> 00:58:34,000
So I'm guessing your work on Postgres does pass the toothbrush test.

910
00:58:34,000 --> 00:58:35,000
But I don't know.

911
00:58:35,000 --> 00:58:36,000
Tell me more.

912
00:58:36,000 --> 00:58:42,000
What's going through your head as you're starting your day?

913
00:58:42,000 --> 00:58:43,000
[DANIEL] I do enjoy it.

914
00:58:43,000 --> 00:58:47,000
I do still enjoy it.

915
00:58:47,000 --> 00:58:51,000
I couldn't really, I mean, it's been a career for so many years that I can't

916
00:58:51,000 --> 00:58:56,000
really imagine doing anything else at this point because of all the people that I

917
00:58:56,000 --> 00:59:03,000
interact with, and I'm still excited about working on the Postgres code and

918
00:59:03,000 --> 00:59:08,000
making Postgres better, because I've seen so many of the shifts since I started

919
00:59:08,000 --> 00:59:13,000
using it back in 7.0.3 or something, 7.0.2 perhaps.

920
00:59:13,000 --> 00:59:18,000
So it still excites me.

921
00:59:18,000 --> 00:59:24,000
But these days,

922
00:59:24,000 --> 00:59:31,000
I guess I'm more shifting towards being sort of excited or interested in trying

923
00:59:31,000 --> 00:59:43,000
to review and help others make things rather than making everything myself,

924
00:59:43,000 --> 00:59:44,000
essentially.

925
00:59:44,000 --> 00:59:48,000
So that's where my interest is leading me towards nowadays.

926
00:59:48,000 --> 00:59:50,000
But I'm still excited about it.

927
00:59:50,000 --> 00:59:55,000
It's still sort of top of mind in the morning, after getting the kids to school,

928
00:59:55,000 --> 00:59:58,000
obviously, because that comes first.

929
00:59:58,000 --> 01:00:03,000
[CLAIRE] Well, and I know from my perspective and the kind of contributions I make to

930
01:00:03,000 --> 01:00:06,000
Postgres are not in the code base, right?

931
01:00:06,000 --> 01:00:09,000
They are other contributions to the community.

932
01:00:09,000 --> 01:00:14,000
But being able to reach out to you to get your advice, to get your counsel,

933
01:00:14,000 --> 01:00:16,000
to get your feedback, is huge.

934
01:00:16,000 --> 01:00:21,000
And I'm sure that the developers on the team on the project feel the same way.

935
01:00:21,000 --> 01:00:27,000
It is pretty awesome when people are willing to spend part of their time

936
01:00:27,000 --> 01:00:31,000
reviewing other people's work and helping make other people get better.

937
01:00:31,000 --> 01:00:35,000
So I will pass on gratitude.

938
01:00:35,000 --> 01:00:37,000
Let's look backwards for a second.

939
01:00:37,000 --> 01:00:42,000
What advice would you give to your younger self about getting started as a

940
01:00:42,000 --> 01:00:46,000
developer?

941
01:00:46,000 --> 01:00:48,000
[DANIEL] I think I'd circle back to what I said earlier.

942
01:00:48,000 --> 01:00:51,000
Like, don't be afraid to ask for help.

943
01:00:51,000 --> 01:01:01,000
Because I think that's one of the things that I could have done more, for sure.

944
01:01:01,000 --> 01:01:04,000
And, yeah, that's definitely the one,

945
01:01:04,000 --> 01:01:07,000
that the advice I would give to my younger self.

946
01:01:07,000 --> 01:01:09,000
I probably, my younger self wouldn't have listened.

947
01:01:09,000 --> 01:01:13,000
I would still say it.

948
01:01:13,000 --> 01:01:15,000
[CLAIRE] Or wouldn't have listened right away, maybe.

949
01:01:15,000 --> 01:01:19,000
Like, sometimes I had this engineer who worked for me once,

950
01:01:19,000 --> 01:01:22,000
and I used to tell him that he wasn't the model for the world.

951
01:01:22,000 --> 01:01:26,000
Because he would often judge other people's behavior based on, like,

952
01:01:26,000 --> 01:01:28,000
what he would do, right?

953
01:01:28,000 --> 01:01:30,000
And he had these super high standards.

954
01:01:30,000 --> 01:01:32,000
And when other people didn't meet it, it got him immensely frustrated.

955
01:01:32,000 --> 01:01:36,000
And so I would just be like, look, you can't use yourself.

956
01:01:36,000 --> 01:01:37,000
Not everybody's like you.

957
01:01:37,000 --> 01:01:39,000
You know, you have to have some empathy.

958
01:01:39,000 --> 01:01:42,000
Anyway, didn't listen, didn't listen, didn't listen.

959
01:01:42,000 --> 01:01:44,000
I got a phone call like three years later saying,

960
01:01:44,000 --> 01:01:47,000
I finally understand what you mean.

961
01:01:47,000 --> 01:01:50,000
Or finally understood what you mean.

962
01:01:50,000 --> 01:01:53,000
So sometimes it just takes a while to sink in.

963
01:01:53,000 --> 01:01:55,000
[DANIEL] Yeah, for sure.

964
01:01:55,000 --> 01:01:57,000
[CLAIRE] Let's look forward.

965
01:01:57,000 --> 01:01:59,000
And I didn't tell you I was going to ask you this,

966
01:01:59,000 --> 01:02:01,000
so I'm kind of putting you on the spot.

967
01:02:01,000 --> 01:02:07,000
If you had to imagine what Postgres is going to be like in five

968
01:02:07,000 --> 01:02:12,000
years, six years, seven years, any thoughts or predictions for the future?

969
01:02:12,000 --> 01:02:21,000
Or rather, maybe it won't be like that, but you hope it's like that?

970
01:02:21,000 --> 01:02:23,000
[DANIEL] I think I have a pretty boring answer there.

971
01:02:23,000 --> 01:02:27,000
I hope that Postgres in the medium to short term, so say five,

972
01:02:27,000 --> 01:02:34,000
six, seven years ahead, is a better version of what we have today.

973
01:02:34,000 --> 01:02:36,000
Like I don't want a revolution.

974
01:02:36,000 --> 01:02:37,000
I want an evolution.

975
01:02:37,000 --> 01:02:46,000
I want Postgres to be, the people who today are investing in putting

976
01:02:46,000 --> 01:02:52,000
Postgres in their tech stacks, I want them to feel comfortable that what we

977
01:02:52,000 --> 01:02:58,000
ship in five, six, seven years time will still work for them.

978
01:02:58,000 --> 01:03:04,000
Because I've been on so, so many systems that are ancient.

979
01:03:04,000 --> 01:03:11,000
Like I said, I've been working on a PDP-11, and they were definitely not the

980
01:03:11,000 --> 01:03:13,000
computer of the day when I was working on them.

981
01:03:13,000 --> 01:03:17,000
Like systems live for a long time.

982
01:03:17,000 --> 01:03:23,000
And having that stability of your database just being there, and you don't

983
01:03:23,000 --> 01:03:25,000
have to stay on an end-of-life version.

984
01:03:25,000 --> 01:03:30,000
You can keep following along.

985
01:03:30,000 --> 01:03:32,000
That's what I want Postgres to be.

986
01:03:32,000 --> 01:03:36,000
I want Postgres to be that choice that just always works for you.

987
01:03:36,000 --> 01:03:39,000
It might not be the shiniest tool always.

988
01:03:39,000 --> 01:03:43,000
It might not be the most fancy tool, but it's just always going to be there

989
01:03:43,000 --> 01:03:47,000
for you, and it's just always going to grow with you.

990
01:03:47,000 --> 01:03:50,000
That's what I want Postgres to be.

991
01:03:50,000 --> 01:03:54,000
[CLAIRE] I don't think that's a boring answer at all. [That's good.]

992
01:03:54,000 --> 01:03:55,000
I like it.

993
01:03:55,000 --> 01:03:56,000
Okay.

994
01:03:56,000 --> 01:04:02,000
I'll figure out how to weave that one into the show notes.

995
01:04:02,000 --> 01:04:06,000
Did you want to give a shout out to PGConf.dev?

996
01:04:06,000 --> 01:04:07,000
[DANIEL] Oh, for sure.

997
01:04:07,000 --> 01:04:19,000
It's one of those, so, last year we picked up where PGCon left off

998
01:04:19,000 --> 01:04:21,000
essentially.

999
01:04:21,000 --> 01:04:27,000
So last year we formed a new corporate entity in Canada to pick up a new

1000
01:04:27,000 --> 01:04:29,000
developer conference.

1001
01:04:29,000 --> 01:04:34,000
Because PGCon had been running for many years, and it was clear that Dan,

1002
01:04:34,000 --> 01:04:39,000
who was running the conference, needed help and needed to be sort of, like,

1003
01:04:39,000 --> 01:04:43,000
he'd been doing it on his own for so many years, and we just needed to step

1004
01:04:43,000 --> 01:04:45,000
in and help him out.

1005
01:04:45,000 --> 01:04:51,000
So we formed this and made PGConf.dev, which was intended as sort of like

1006
01:04:51,000 --> 01:04:57,000
the successor to PGCon, to bring the spirit of PGCon, but revitalize it.

1007
01:04:57,000 --> 01:05:00,000
And I hope it did.

1008
01:05:00,000 --> 01:05:04,000
I wasn't actually there because I couldn't travel for personal reasons, but

1009
01:05:04,000 --> 01:05:07,000
I've heard from so many people that they immensely enjoyed the event.

1010
01:05:07,000 --> 01:05:13,000
And this year is going to be even better, probably because I'm not there,

1011
01:05:13,000 --> 01:05:19,000
because I left off organizing it to a new group of people who are very good

1012
01:05:19,000 --> 01:05:21,000
at that.

1013
01:05:21,000 --> 01:05:24,000
So I'm really looking forward to it, and it's going to be an amazing event.

1014
01:05:24,000 --> 01:05:28,000
And anyone who's interested in Postgres development should definitely try to

1015
01:05:28,000 --> 01:05:33,000
make their way to Montreal to attend, because it will be a phenomenal event.

1016
01:05:33,000 --> 01:05:37,000
And it's going to be that one event of the year that most of all the developers

1017
01:05:37,000 --> 01:05:45,000
will attend, which is super valuable to have the access to all these brilliant

1018
01:05:45,000 --> 01:05:49,000
minds who work on Postgres every day and sort of be able to pick their brains

1019
01:05:49,000 --> 01:05:51,000
in the hallway track.

1020
01:05:51,000 --> 01:05:53,000
[CLAIRE] Okay, but I have to disagree with what you just said.

1021
01:05:53,000 --> 01:05:56,000
It's not going to be better because you're not involved.

1022
01:05:56,000 --> 01:05:59,000
You're just fishing for compliments.

1023
01:05:59,000 --> 01:06:01,000
[DANIEL] No, no, no.

1024
01:06:01,000 --> 01:06:03,000
We have a new team, which is really good.

1025
01:06:03,000 --> 01:06:07,000
I'm very, very confident in their making a fantastic event.

1026
01:06:07,000 --> 01:06:13,000
[CLAIRE] I am too, but it's not because you stepped back, okay?

1027
01:06:13,000 --> 01:06:18,000
Yeah, I remember I went last year, and it was the first year in this kind of

1028
01:06:18,000 --> 01:06:25,000
rebrand version 2.0 of the Postgres developer conference, and it was in

1029
01:06:25,000 --> 01:06:29,000
Vancouver, so yeah, last year is correct, 2024.

1030
01:06:29,000 --> 01:06:36,000
And I remember being in the airport at the same time as KK and Jeff Davis

1031
01:06:36,000 --> 01:06:42,000
as well, and they were both just like, and Jeff is kind of introverted,

1032
01:06:42,000 --> 01:06:50,000
but they were both bubbling over with joy and stories and just how invigorating

1033
01:06:50,000 --> 01:06:54,000
and exciting and how much value they got out of talking with others in the

1034
01:06:54,000 --> 01:06:56,000
developer community.

1035
01:06:56,000 --> 01:06:57,000
So yeah.

1036
01:06:57,000 --> 01:06:58,000
All right.

1037
01:06:58,000 --> 01:07:01,000
Thank you for the shout-out.

1038
01:07:01,000 --> 01:07:04,000
[DANIEL] I'm very much looking forward to attending this year.

1039
01:07:04,000 --> 01:07:07,000
[CLAIRE] Okay, so let's see.

1040
01:07:07,000 --> 01:07:12,000
I have a question about whether there are any books or blogs or

1041
01:07:12,000 --> 01:07:17,000
tutorials that you want to recommend to other Postgres developers and

1042
01:07:17,000 --> 01:07:22,000
contributors who are just maybe getting started or just thinking about

1043
01:07:22,000 --> 01:07:23,000
contributing to Postgres.

1044
01:07:23,000 --> 01:07:27,000
Do you have any go-to's that you want to share?

1045
01:07:27,000 --> 01:07:30,000
Even if they weren't things that you used because the way you got started

1046
01:07:30,000 --> 01:07:35,000
with Postgres is not necessarily one that people should follow.

1047
01:07:35,000 --> 01:07:38,000
[DANIEL] Right, right, right.

1048
01:07:38,000 --> 01:07:39,000
I don't, actually.

1049
01:07:39,000 --> 01:07:44,000
I wish I did, but I don't really have any good suggestions there.

1050
01:07:44,000 --> 01:07:45,000
[CLAIRE] Okay.

1051
01:07:45,000 --> 01:07:51,000
[DANIEL] My go-to for programming is still to read the classics.

1052
01:07:51,000 --> 01:07:59,000
Now, by classics I mean the Dragon book, the Purple book, and the Practice

1053
01:07:59,000 --> 01:08:05,000
of Programming, which are all books that came out probably 20, 30 years ago.

1054
01:08:05,000 --> 01:08:11,000
But they are such seminal pieces that they still hold up today.

1055
01:08:11,000 --> 01:08:13,000
Now, they are definitely not for everyone.

1056
01:08:13,000 --> 01:08:24,000
But I think for me, that's my go-to answer.

1057
01:08:24,000 --> 01:08:25,000
[CLAIRE] Okay. Got it.

1058
01:08:25,000 --> 01:08:30,000
I'll make sure we include those links in the show notes as well then.

1059
01:08:30,000 --> 01:08:32,000
There was a question on the chat from KK, I think.

1060
01:08:32,000 --> 01:08:38,000
We kind of glossed over your involvement in the curl community earlier.

1061
01:08:38,000 --> 01:08:40,000
We only touched on it briefly.

1062
01:08:40,000 --> 01:08:45,000
But I think he was curious to know more about how you got involved

1063
01:08:45,000 --> 01:08:48,000
in that project.

1064
01:08:48,000 --> 01:08:52,000
[DANIEL] That actually has a Postgres angle as well.

1065
01:08:52,000 --> 01:08:55,000
So I don't remember the exact date.

1066
01:08:55,000 --> 01:08:58,000
So I can't give you an origin story I like for Postgres.

1067
01:08:58,000 --> 01:09:03,000
But many years ago, like I said, I've been very bad at asking for help.

1068
01:09:03,000 --> 01:09:07,000
And I came to a point where I was hitting a wall.

1069
01:09:07,000 --> 01:09:14,000
I couldn't, like code-wise, I couldn't really, I didn't progress anywhere

1070
01:09:14,000 --> 01:09:15,000
in Postgres.

1071
01:09:15,000 --> 01:09:18,000
And I was getting a bit frustrated.

1072
01:09:18,000 --> 01:09:25,000
So I was kind of looking around for other C-based projects to sort of,

1073
01:09:25,000 --> 01:09:29,000
as a mental break, as doing something else for a change.

1074
01:09:29,000 --> 01:09:39,000
And curl is famously run by Daniel Stenberg, who is another Stockholm guy.

1075
01:09:39,000 --> 01:09:44,000
And I knew of him and kind of knew him from meeting him at open source

1076
01:09:44,000 --> 01:09:48,000
conferences here in Stockholm and events like that.

1077
01:09:48,000 --> 01:09:52,000
So I kind of just figured maybe I should just look at curl for a change.

1078
01:09:52,000 --> 01:09:55,000
Because, I mean, it's C.

1079
01:09:55,000 --> 01:09:57,000
It's a C code base.

1080
01:09:57,000 --> 01:09:58,000
It's very approachable.

1081
01:09:58,000 --> 01:10:03,000
It's kind of like what I was looking for to still do programming,

1082
01:10:03,000 --> 01:10:06,000
but not in Postgres for a while.

1083
01:10:06,000 --> 01:10:12,000
And I just started poking around a bit and immediately realized that this is

1084
01:10:12,000 --> 01:10:16,000
also a community that I like and people that I like working with and

1085
01:10:16,000 --> 01:10:17,000
hanging out with.

1086
01:10:17,000 --> 01:10:19,000
And it's an interesting piece of code.

1087
01:10:19,000 --> 01:10:29,000
And it's obviously a very different project from Postgres where,

1088
01:10:29,000 --> 01:10:34,000
like the scope of changes you do in curl has such a big impact on everything.

1089
01:10:34,000 --> 01:10:37,000
Like, I mean, it runs in like billions of devices.

1090
01:10:37,000 --> 01:10:46,000
So, but at the same time, it's like, it's a tiny community.

1091
01:10:46,000 --> 01:10:51,000
When I got involved it was like 10 people who was regularly contributing

1092
01:10:51,000 --> 01:10:57,000
to curl, and one of them doing the lion's share, the share of all the work.

1093
01:10:57,000 --> 01:10:58,000
So that's where I get started.

1094
01:10:58,000 --> 01:11:03,000
I was just interested in doing something else for a change, and then that

1095
01:11:03,000 --> 01:11:06,000
snowballed into getting a commit bit and becoming a maintainer.

1096
01:11:06,000 --> 01:11:11,000
And now I don't do as much as I wish I had time for because I was having

1097
01:11:11,000 --> 01:11:14,000
small children and working full-time on Postgres.

1098
01:11:14,000 --> 01:11:17,000
I don't have all the time in the world to spend on it.

1099
01:11:17,000 --> 01:11:21,000
But I'm still on the curl core team and security team.

1100
01:11:21,000 --> 01:11:25,000
So I try to keep on top of those things, and I wish I can, I hope to get

1101
01:11:25,000 --> 01:11:29,000
back into doing some more stuff on curl in the future, but we'll see when I

1102
01:11:29,000 --> 01:11:31,000
have some more time.

1103
01:11:31,000 --> 01:11:32,000
But that's really the reason.

1104
01:11:32,000 --> 01:11:35,000
I needed a break from Postgres.

1105
01:11:35,000 --> 01:11:42,000
And in doing something else for a change got me excited about Postgres again

1106
01:11:42,000 --> 01:11:45,000
because I kind of realized, you know, I miss working with this code base

1107
01:11:45,000 --> 01:11:46,000
over here.

1108
01:11:46,000 --> 01:11:54,000
So I think curl in some way kept me in Postgres.

1109
01:11:54,000 --> 01:11:59,000
[CLAIRE] It's interesting because I think a lot of people need, you're going to burn

1110
01:11:59,000 --> 01:12:02,000
out if you do the same thing all the time, all the time, all the time, right?

1111
01:12:02,000 --> 01:12:03,000
So you need a break.

1112
01:12:03,000 --> 01:12:05,000
You need an outlet.

1113
01:12:05,000 --> 01:12:11,000
And for some people it's exercise, or for other people it's, I don't know,

1114
01:12:11,000 --> 01:12:16,000
reading or Netflix series or whatever their hobbies are.

1115
01:12:16,000 --> 01:12:21,000
You know, some people like to do pottery in their spare time.

1116
01:12:21,000 --> 01:12:25,000
But it sounds like for you it was curl, or it is curl.

1117
01:12:25,000 --> 01:12:28,000
[DANIEL] Yeah, curl was the stuff that I needed at the time for sure.

1118
01:12:28,000 --> 01:12:35,000
And then it grew into being a fairly big member of that community, or for a

1119
01:12:35,000 --> 01:12:36,000
while it was.

1120
01:12:36,000 --> 01:12:38,000
Now I'm more of a fringe member.

1121
01:12:38,000 --> 01:12:44,000
But, yeah, that was what I needed at the time for sure.

1122
01:12:44,000 --> 01:12:45,000
And it's still an exciting project.

1123
01:12:45,000 --> 01:12:52,000
I mean, as I said, it's still exciting to work on something that is so widely

1124
01:12:52,000 --> 01:12:55,000
deployed as curl.

1125
01:12:55,000 --> 01:13:00,000
[CLAIRE] Okay, so the topic of this episode was how I got started as a developer and

1126
01:13:00,000 --> 01:13:01,000
in Postgres.

1127
01:13:01,000 --> 01:13:03,000
And I feel like we covered a lot of ground.

1128
01:13:03,000 --> 01:13:08,000
Like I feel like somebody who listens to this is going to have a better

1129
01:13:08,000 --> 01:13:11,000
understanding of your story.

1130
01:13:11,000 --> 01:13:17,000
Is there anything, though, that's part of that journey, getting started as a

1131
01:13:17,000 --> 01:13:20,000
developer or in Postgres that I didn't ask about?

1132
01:13:20,000 --> 01:13:24,000
Or you have scribbled on a piece of paper next to your desk that you wanted

1133
01:13:24,000 --> 01:13:28,000
to be sure to mention that we haven't touched on yet?

1134
01:13:28,000 --> 01:13:31,000
I think we've touched on most of the things.

1135
01:13:31,000 --> 01:13:33,000
Definitely when it comes to Postgres.

1136
01:13:33,000 --> 01:13:37,000
[DANIEL] The one thing that I did scribble on a piece of paper here was, because I

1137
01:13:37,000 --> 01:13:44,000
was thinking earlier today, like when did I not just got interested in writing

1138
01:13:44,000 --> 01:13:51,000
programs, or doing some form of program, but actually interested in making sort

1139
01:13:51,000 --> 01:13:57,000
of like a coherent program that someone else could use?

1140
01:13:57,000 --> 01:14:00,000
Like making software essentially.

1141
01:14:00,000 --> 01:14:07,000
And that's definitely, that brings back to when I got my first modem and

1142
01:14:07,000 --> 01:14:12,000
started calling BBS systems in the early '90s and finding out about this

1143
01:14:12,000 --> 01:14:19,000
shareware world where people were sort of freely sharing their, it wasn't

1144
01:14:19,000 --> 01:14:20,000
code,

1145
01:14:20,000 --> 01:14:23,000
they were sharing like programs.

1146
01:14:23,000 --> 01:14:28,000
And I just remember like all of a sudden realized I have access to this giant

1147
01:14:28,000 --> 01:14:33,000
library of basically anything that I need or want.

1148
01:14:33,000 --> 01:14:38,000
And that was just coming from sitting on your own, like you have your computer

1149
01:14:38,000 --> 01:14:43,000
on your desk and the software you have is, the stack of floppies next to it,

1150
01:14:43,000 --> 01:14:46,000
to I can have anything I want.

1151
01:14:46,000 --> 01:14:50,000
That was really sort of mind-boggling at the time.

1152
01:14:50,000 --> 01:14:53,000
I was like 11, 12 years old.

1153
01:14:53,000 --> 01:14:55,000
And I just want to be a part of that.

1154
01:14:55,000 --> 01:15:00,000
So that's when I wrote my first actual piece of software that was then

1155
01:15:00,000 --> 01:15:02,000
distributed.

1156
01:15:02,000 --> 01:15:07,000
And it was a guitar tuning software because I was playing the guitar at the

1157
01:15:07,000 --> 01:15:09,000
time or trying to.

1158
01:15:09,000 --> 01:15:12,000
So it was a software for helping you tune your guitar.

1159
01:15:12,000 --> 01:15:17,000
It would play the tunes in the PC speaker so you could sort of tune your

1160
01:15:17,000 --> 01:15:19,000
guitar at the same time. [That's really cool.]

1161
01:15:20,000 --> 01:15:26,000
And I really sort of realized that I want to make a piece of software,

1162
01:15:26,000 --> 01:15:29,000
you know, with documentation and everything around it, and then ship it out

1163
01:15:29,000 --> 01:15:31,000
to the world.

1164
01:15:31,000 --> 01:15:34,000
And hopefully someone uses it.

1165
01:15:34,000 --> 01:15:36,000
And that was just really exciting.

1166
01:15:36,000 --> 01:15:42,000
And that's definitely when that spark was lit.

1167
01:15:42,000 --> 01:15:43,000
[CLAIRE] Do you still play the guitar?

1168
01:15:43,000 --> 01:15:44,000
[DANIEL] I don't.

1169
01:15:44,000 --> 01:15:48,000
I never really learned, to be fair.

1170
01:15:48,000 --> 01:15:50,000
I was never any good at it.

1171
01:15:50,000 --> 01:15:54,000
And I gave up at some point after that.

1172
01:15:54,000 --> 01:15:56,000
[CLAIRE] Do you still own a guitar?

1173
01:15:56,000 --> 01:15:57,000
[DANIEL] No, no, I don't.

1174
01:15:57,000 --> 01:15:58,000
I still own my trombone.

1175
01:15:58,000 --> 01:16:01,000
I was a trombone player when I was young.

1176
01:16:01,000 --> 01:16:06,000
I still own that, but I haven't played in many, many years.

1177
01:16:06,000 --> 01:16:09,000
I guess my son will inherit it or my daughter will inherit that.

1178
01:16:09,000 --> 01:16:11,000
And maybe they will pick it up.

1179
01:16:11,000 --> 01:16:12,000
I don't know.

1180
01:16:12,000 --> 01:16:14,000
We'll see.

1181
01:16:14,000 --> 01:16:15,000
[CLAIRE] I like that goal, though.

1182
01:16:15,000 --> 01:16:17,000
I want to make a piece of software.

1183
01:16:17,000 --> 01:16:20,000
And what's interesting is I would want you to strengthen the goal.

1184
01:16:20,000 --> 01:16:23,000
Instead of I want to, your goal from when you were a young kid.

1185
01:16:23,000 --> 01:16:27,000
Instead of I want to make a piece of software that I hope people use,

1186
01:16:27,000 --> 01:16:32,000
it's like I want to make a piece of software that makes people's lives better.

1187
01:16:32,000 --> 01:16:38,000
But I guess we can't go back and change your young child goal.

1188
01:16:38,000 --> 01:16:41,000
[DANIEL] No, that wasn't really on my map

1189
01:16:41,000 --> 01:16:42,000
when I was 11.

1190
01:16:42,000 --> 01:16:44,000
I was mostly interested in making something.

1191
01:16:44,000 --> 01:16:50,000
But I do think the whole open source movement and what we have today is making

1192
01:16:50,000 --> 01:16:57,000
lives better because we are empowering people to, I mean, you could start a

1193
01:16:57,000 --> 01:17:02,000
company with everything you need for free, essentially,

1194
01:17:02,000 --> 01:17:05,000
and anything can be tailored too.

1195
01:17:05,000 --> 01:17:12,000
I think that's such a powerful gift in computing that open source has brought

1196
01:17:12,000 --> 01:17:18,000
along, that we're empowering so many people on this planet to do the things

1197
01:17:18,000 --> 01:17:24,000
they want to do without being sort of locked into anything or being forced to,

1198
01:17:24,000 --> 01:17:28,000
like I can't start this company because I can't afford this product over here.

1199
01:17:28,000 --> 01:17:32,000
There's alternatives for you for everything.

1200
01:17:32,000 --> 01:17:36,000
I think that's really powerful.

1201
01:17:36,000 --> 01:17:40,000
[CLAIRE] You talked earlier about how you're trying to focus some of your time on

1202
01:17:40,000 --> 01:17:46,000
helping other Postgres contributors, right, with patch review or with mentoring

1203
01:17:46,000 --> 01:17:49,000
or all the ways you help people.

1204
01:17:49,000 --> 01:17:53,000
And one of the things that people don't realize, like behind the scenes on this

1205
01:17:53,000 --> 01:17:57,000
podcast, right, there's a lot of work involved in figuring out who are our

1206
01:17:57,000 --> 01:18:00,000
future guests and recruiting them and, you know.

1207
01:18:00,000 --> 01:18:04,000
Luckily, almost everybody says yes when we invite them, which is pretty cool.

1208
01:18:04,000 --> 01:18:11,000
But you have been in the background helping me make this podcast and make it

1209
01:18:11,000 --> 01:18:13,000
better.

1210
01:18:13,000 --> 01:18:20,000
And you were actually a maybe for quite a long time before becoming a yes.

1211
01:18:20,000 --> 01:18:23,000
So I think I have two questions for you about the podcast.

1212
01:18:23,000 --> 01:18:29,000
Why has it been worth spending any amount of your time advising me on

1213
01:18:29,000 --> 01:18:33,000
having a podcast geared toward people in the Postgres community and the

1214
01:18:33,000 --> 01:18:35,000
Postgres developer world?

1215
01:18:35,000 --> 01:18:38,000
And then, of course, I'm going to ask you about music next.

1216
01:18:38,000 --> 01:18:41,000
But let's start with the first question.

1217
01:18:41,000 --> 01:18:46,000
[DANIEL] Well, I find it sort of important for almost a selfish reason.

1218
01:18:46,000 --> 01:18:51,000
I love listening to podcasts and I've been listening to podcasts since, I don't

1219
01:18:51,000 --> 01:18:55,000
even remember, the early 2000s, late '90s or something.

1220
01:18:55,000 --> 01:19:00,000
It's been my source of listening pleasure for so many years.

1221
01:19:00,000 --> 01:19:08,000
But for many, many years, I lacked, I felt there was a lack of Postgres

1222
01:19:08,000 --> 01:19:09,000
content.

1223
01:19:09,000 --> 01:19:11,000
There was never a Postgres podcast.

1224
01:19:11,000 --> 01:19:13,000
For many years, there was nothing.

1225
01:19:13,000 --> 01:19:16,000
Now there's a couple, this included.

1226
01:19:16,000 --> 01:19:19,000
So for me, it's a selfish reason.

1227
01:19:19,000 --> 01:19:24,000
I want to hear a podcast about Postgres and the people behind Postgres.

1228
01:19:24,000 --> 01:19:31,000
And I also find it super valuable for the community to have this resource.

1229
01:19:31,000 --> 01:19:34,000
So it ticks all the boxes for me.

1230
01:19:34,000 --> 01:19:39,000
It's important for me as a person, but it's also, in my mind, important for the

1231
01:19:39,000 --> 01:19:45,000
community and for those starting out to have this resource and to hear the

1232
01:19:45,000 --> 01:19:50,000
stories of the people who is making this thing.

1233
01:19:50,000 --> 01:19:54,000
So yeah, for sure, it was a no-brainer to help you with that.

1234
01:19:54,000 --> 01:19:58,000
It was a much easier decision than to come on the podcast.

1235
01:19:58,000 --> 01:20:02,000
[CLAIRE] Yeah, you were a maybe for quite a number of months before you turned it

1236
01:20:02,000 --> 01:20:03,000
into a yes.

1237
01:20:03,000 --> 01:20:07,000
And I didn't actually probe you on why the switch from a maybe to a yes.

1238
01:20:07,000 --> 01:20:09,000
I just took the yes and ran with it.

1239
01:20:09,000 --> 01:20:13,000
I'm like, okay, how about January 15th?

1240
01:20:13,000 --> 01:20:17,000
So I'm really, really glad that you were able to say yes and make time to be

1241
01:20:17,000 --> 01:20:18,000
with us here.

1242
01:20:18,000 --> 01:20:23,000
Before we wrap, I do want to ask, though, what was your final recommendation on

1243
01:20:23,000 --> 01:20:25,000
whether we should add music?

1244
01:20:25,000 --> 01:20:28,000
Not for your episode, unfortunately, because I can't turn that around in 48

1245
01:20:28,000 --> 01:20:29,000
hours.

1246
01:20:29,000 --> 01:20:33,000
But should we have music in the intro and the conclusion moving forward?

1247
01:20:33,000 --> 01:20:36,000
[DANIEL] I think you should, yeah.

1248
01:20:36,000 --> 01:20:38,000
As I said to you earlier, I'm old.

1249
01:20:38,000 --> 01:20:42,000
I come from a talk radio background, like listening to radio.

1250
01:20:42,000 --> 01:20:45,000
There was always the music when the program started.

1251
01:20:45,000 --> 01:20:50,000
So for me, that just makes it a grand whole.

1252
01:20:50,000 --> 01:20:54,000
Yeah, I definitely think you should have some form of music to start.

1253
01:20:54,000 --> 01:20:55,000
[CLAIRE] Okay.

1254
01:20:55,000 --> 01:20:56,000
We'll work on it.

1255
01:20:56,000 --> 01:20:59,000
We'll see what Aaron and I can come up with.

1256
01:20:59,000 --> 01:21:01,000
[DANIEL] I'm excited to hear.

1257
01:21:01,000 --> 01:21:02,000
[CLAIRE] All right.

1258
01:21:02,000 --> 01:21:05,000
Well, thank you very much, Daniel, for joining us today.

1259
01:21:05,000 --> 01:21:08,000
I've really enjoyed learning more about your story.

1260
01:21:08,000 --> 01:21:10,000
And, of course, I love working with you.

1261
01:21:10,000 --> 01:21:12,000
And I'm not the only one.

1262
01:21:12,000 --> 01:21:18,000
The next episode, episode 24, will be recorded live on Wednesday, February 5th,

1263
01:21:18,000 --> 01:21:20,000
at 10 am PST.

1264
01:21:20,000 --> 01:21:25,000
And the guest will be Robert Haas, who is another Postgres major contributor

1265
01:21:25,000 --> 01:21:26,000
and committer.

1266
01:21:26,000 --> 01:21:29,000
And the topic will be "Why mentor Postgres developers?"

1267
01:21:29,000 --> 01:21:33,000
So if you want to mark your calendar to be part of that live recording on

1268
01:21:33,000 --> 01:21:43,000
Discord, aka.ms/talkingpostgres-ep24-cal will give you a good calendar invite.

1269
01:21:43,000 --> 01:21:48,000
You can always get to past episodes and get links to subscribe on the different

1270
01:21:48,000 --> 01:21:52,000
podcast platforms by going to talkingpostgres.com.

1271
01:21:52,000 --> 01:21:56,000
And you'll find transcripts and show notes included for the episode pages for

1272
01:21:56,000 --> 01:21:57,000
all the episodes. And we love it when people subscribe, and we love it when people recommend the show. And if you want to compliment us publicly, privately, that's all good too. If you have suggestions for future guests you can just DM me on one of those social platforms. The hashtag for this podcast is #TalkingPostgres. And word of mouth is one of the best ways to help people discover a podcast like this. A big thank you to everybody who joined the live recording on Discord. And thank you again to Daniel. 

1273
01:21:57,000 --> 01:22:01,000
[DANIEL] Thank you.