1
00:00:05,820 --> 00:00:07,580
[CLAIRE] Welcome to Talking Postgres.

2
00:00:08,300 --> 00:00:13,140
I'm your host, Claire Giordano, and in this podcast, we explore the human side of Postgres,

3
00:00:13,360 --> 00:00:18,580
databases, and open source, which means we focus on why do people who work with Postgres do

4
00:00:18,620 --> 00:00:20,380
what they do, and how did they get there?

5
00:00:20,920 --> 00:00:25,180
I want to say thank you to the team at Microsoft for sponsoring this community conversation

6
00:00:25,200 --> 00:00:28,740
about Postgres. And I'd like to introduce today's guest, Dawn Wages. Dawn has worked in the Python

7
00:00:32,880 --> 00:00:37,960
developer community for more than nine years. She currently serves as chair of the board of

8
00:00:38,100 --> 00:00:43,240
directors for the PSF, the Python Software Foundation. And for about three years, Dawn

9
00:00:43,500 --> 00:00:49,800
served as a Python Community Advocate at Microsoft in the Developer Division in Scott Hanselman's

10
00:00:49,820 --> 00:00:56,500
org. Scott is VP of Open Source and Developer Communities at Microsoft. And quite recently,

11
00:00:56,630 --> 00:01:03,000
Dawn took on a new role as Director of Community and Developer Relations at Anaconda. And for as

12
00:01:03,000 --> 00:01:07,100
long as Dawn has been a programmer, she's been volunteering in the Django community,

13
00:01:07,500 --> 00:01:11,940
organizing conferences, and more. So Dawn, welcome.

14
00:01:12,539 --> 00:01:14,240
[DAWN] Thanks so much for having me.

15
00:01:14,300 --> 00:01:16,840
I'm thrilled and I'm a fan of the podcast.

16
00:01:17,940 --> 00:01:34,140
[CLAIRE] I'm glad to hear that. Obviously, you've been in Django for a while, and it's true, I think, that a lot of Django and Python developers really like Postgres, which is the perfect segue into today's topic, which is "Why Python developers just use Postgres".

17
00:01:35,400 --> 00:01:44,260
And in the new book you're writing, which I believe your working title is Domain Driven Django, there's even a chapter that's currently called Just use Postgres. Am I right?

18
00:01:44,920 --> 00:01:44,940
[DAWN] Yes,

19
00:01:45,540 --> 00:01:47,820
and the tone of voice is a soft recommendation from friend to friend.

20
00:01:52,520 --> 00:01:54,340
[CLAIRE] In that chapter or in the whole book?

21
00:01:54,740 --> 00:02:00,640
[DAWN] In that chapter, but I guess that's also the vibe of the whole book.

22
00:02:01,020 --> 00:02:05,100
A lot of it is very practical and comes from years of consulting

23
00:02:05,680 --> 00:02:10,000
and also just hallway chat during conferences.

24
00:02:11,039 --> 00:02:14,200
Just use Postgres is a common adage.

25
00:02:15,760 --> 00:02:21,560
[CLAIRE] Well, what I found really interesting, I tried to do my research because we met while you were still at Microsoft.

26
00:02:23,000 --> 00:02:30,740
And I was fascinated by this book you're writing and this chapter and how you feel about Postgres and why you feel that way about this database.

27
00:02:31,680 --> 00:02:33,060
So that's why I invited you on the show.

28
00:02:33,130 --> 00:02:35,980
But I had to do some research because we don't know each other that well.

29
00:02:36,500 --> 00:02:45,360
And as I did the research, one of the things I learned is that you are self-taught and community-taught as a Djangonaught, as a programmer.

30
00:02:47,240 --> 00:02:57,420
And so what that means is this affinity for Postgres, like somehow you too picked it up along the way in your journey to become a developer.

31
00:02:58,240 --> 00:03:06,620
[DAWN] Yes. So the community taught is, I feel very fortunate that I learned Python through conferences.

32
00:03:07,140 --> 00:03:09,680
So I am absolutely a Django dev.

33
00:03:10,020 --> 00:03:15,060
I think we could probably have like a tally counter on the number of times I say Django in this podcast.

34
00:03:16,740 --> 00:03:21,740
And I started in 2016 at DjangoCon US when it came to Philadelphia.

35
00:03:22,840 --> 00:03:28,440
I was, I don't know, we could say it was down on my luck, but I was an analyst.

36
00:03:28,620 --> 00:03:34,160
I was struggling to keep a job that really respected me and made me feel empowered.

37
00:03:34,800 --> 00:03:37,020
I did SQL and I was learning Python.

38
00:03:38,060 --> 00:03:40,520
And I really liked the data analytics space.

39
00:03:40,610 --> 00:03:45,680
But then when I stumbled upon Django, I just fell in love with the community.

40
00:03:46,320 --> 00:03:50,960
And really I like to say that I also learned through osmosis.

41
00:03:51,040 --> 00:03:58,020
So I just made really smart friends and and learned through that.

42
00:03:59,060 --> 00:04:00,400
And it was the same with Postgres.

43
00:04:01,500 --> 00:04:13,780
There are lots of Postgres consultancies and also Postgres contributors who show up to Python conferences, give open source talks and are really part of that open source ethos.

44
00:04:14,820 --> 00:04:17,040
And were really generous with their knowledge.

45
00:04:17,630 --> 00:04:20,959
And I think that's not just an experience that I've had.

46
00:04:21,079 --> 00:04:22,660
It's across the whole community.

47
00:04:22,750 --> 00:04:27,920
I think it's really easy to pick up Postgres because there's so many friends around who also use it.

48
00:04:28,600 --> 00:04:29,940
And giving back to the community.

49
00:04:30,220 --> 00:04:36,500
I mean, documentation is one of the key ways to make sure that you have easy access and onboarding to your tools.

50
00:04:36,970 --> 00:04:42,460
And I think the Python documentation for Postgres is really unmatched.

51
00:04:45,400 --> 00:04:49,580
[CLAIRE] Why do you think that is?

52
00:04:49,260 --> 00:04:55,000
I mean, obviously, you probably weren't involved yet when it was first created, I'm imagining.

53
00:04:54,660 --> 00:04:56,320
So I'm asking you a history question.

54
00:04:57,560 --> 00:04:58,220
[DAWN] Yeah, I don't know.

55
00:04:58,400 --> 00:05:01,620
I can do it from my vantage and then we can infer from the history.

56
00:05:02,050 --> 00:05:22,960
But I think the ethos that I mentioned, the culture of open source and giving back to the community that runs through Python is really, for good and for bad, I think there is a lot of emphasis on free and low barrier.

57
00:05:02,480 --> 00:05:02,600
[CLAIRE] Okay.

58
00:05:23,060 --> 00:05:31,520
[DAWN] Free as in, not free as in cake, but free as in puppy, right? So you have to tend to the new

59
00:05:34,600 --> 00:05:41,380
thing that you're creating, and that's going to grow beyond you and have subgroups and open issues

60
00:05:41,540 --> 00:05:49,379
and quests, side quests. And I think that Python and Postgres community really share that ethos on

61
00:05:49,720 --> 00:05:57,740
tending to this free resource that is a service for your peers. And you also end up benefiting

62
00:05:57,980 --> 00:06:01,600
from it as well. I mean, reducing friction and having really great documentation

63
00:06:02,300 --> 00:06:05,880
is just unmatched. And I think we do very well in that.

64
00:06:06,660 --> 00:06:11,340
[CLAIRE] I think one of the things I've heard about both the Python and the Django communities

65
00:06:11,680 --> 00:06:15,000
is that they have wonderful getting started documentation.

66
00:06:15,870 --> 00:06:22,420
And that may be part of what attracts new developers, self-taught developers, traditionally

67
00:06:22,860 --> 00:06:27,520
taught developers to those communities is that focus on docs.

68
00:06:28,460 --> 00:06:33,720
[DAWN] Definitely I'd be interested I know you're hosting but I'd be interested in your

69
00:06:33,800 --> 00:06:40,080
perspective on how the getting started docs in Postgres

70
00:06:41,340 --> 00:06:43,800
started, "getting started on the getting started",

71
00:06:44,110 --> 00:06:49,480
but like how did it, how did it get started, or your experience with them?

72
00:06:51,340 --> 00:06:55,420
[CLAIRE] You know, there's, there's two different audiences typically, although you're bringing in a third

73
00:06:55,500 --> 00:06:57,320
audience to this podcast. The two audiences are people who are currently or aspiring, right,

74
00:07:04,020 --> 00:07:10,540
or potential future contributors and developers to the Postgres database. So we've had a lot of

75
00:07:10,740 --> 00:07:16,360
Postgres committers and Postgres contributors on the show. But there's also this hope that somebody

76
00:07:16,620 --> 00:07:21,740
listening to it gets inspired to kind of come check out what's going on with Postgres and

77
00:07:22,000 --> 00:07:28,740
figure out if they want to become a contributor as well. So that's one audience. Another audience

78
00:07:28,940 --> 00:07:34,220
are just really curious Postgres users. Now, a lot of people who run their apps on this database,

79
00:07:35,960 --> 00:07:42,140
their focus is on the application, as it should be, right? But sometimes people want to know more

80
00:07:42,300 --> 00:07:47,400
about the team that is behind it or how Postgres came to be the way it is. So that's kind of

81
00:07:47,540 --> 00:07:51,620
another audience. And then you're introducing this third audience, right? I imagine that today's

82
00:07:51,740 --> 00:07:57,020
episode is going to attract more Python developers and Django developers who maybe are curious about

83
00:07:58,820 --> 00:08:06,720
that affinity between those languages and the Postgres database. So for me, in terms of the

84
00:08:07,260 --> 00:08:13,440
documentation within the Postgres contributor community, it's the contributors themselves who,

85
00:08:13,480 --> 00:08:17,480
like, as they make a change, often make the corresponding documentation change. And our

86
00:08:19,000 --> 00:08:25,900
docs are known to be really solid, like really, really clear. And there's a big commitment to

87
00:08:26,020 --> 00:08:33,820
them. Every single contributor and developer takes them very seriously. And so that's one

88
00:08:34,180 --> 00:08:39,000
perspective that I have. But I also know that there's a lot of work being done right now

89
00:08:39,300 --> 00:08:45,140
to make it easier for, say, new contributors to join the community. So for example,

90
00:08:45,660 --> 00:08:57,480
There's an annual developer event for people who want to work on the database itself, which used to be called PGCon, but now is called PGConf.dev as of last year.

91
00:08:57,660 --> 00:09:02,900
And the next second version of it is happening in May in Montreal, Canada.

92
00:09:03,600 --> 00:09:12,500
And there are a bunch of sessions there on the schedule that are patch review workshop or advanced patch feedback sessions.

93
00:09:13,280 --> 00:09:28,520
So I try to help people who are budding contributors or want to become contributors in the future, learn more about the project, the processes, the way people get things done, and more.

94
00:09:29,220 --> 00:09:32,640
So that's a kind of getting started are all these new sessions.

95
00:09:33,080 --> 00:09:37,580
There was a conference in Prague, a couple of, I guess it was in early February.

96
00:09:37,800 --> 00:09:38,860
It's called P2D2.

97
00:09:39,300 --> 00:09:46,560
and there too I'll dig up the schedule, see if I can get the exact name, but they had a whole

98
00:09:46,740 --> 00:09:53,160
half-day session focused on nurturing people who wanted to learn more, yeah it was called Intro

99
00:09:53,380 --> 00:09:59,000
to Postgres Hacking, and actually it was two half-day sessions so there was the first and the second.

100
00:09:59,279 --> 00:10:06,080
[DAWN] Very cool. We do a bit with our sprints. We put a lot of emphasis on sprints at Python

101
00:10:06,420 --> 00:10:08,860
events, which I think might be a little bit different than a lot of open source conferences

102
00:10:11,040 --> 00:10:15,700
that I see. We'll have a few days and it kind of just provides the snacks and the tables

103
00:10:16,060 --> 00:10:22,200
and the extension cords and let people kind of go wild. And we do have contributing documentations,

104
00:10:22,340 --> 00:10:26,740
But I think we have a lot to learn on that front.

105
00:10:26,940 --> 00:10:29,840
And I'm in constant conversation on how we can improve.

106
00:10:30,230 --> 00:10:31,940
And I really, really, like that approach.

107
00:10:32,080 --> 00:10:39,380
I'm going to have to sneak and look at those schedules and maybe poke some people to see

108
00:10:39,380 --> 00:10:41,200
if I can get some feedback on it.

109
00:10:41,960 --> 00:10:51,060
[CLAIRE] But I won't say things are perfect in the Postgres world, only because I have some friends who are working on trying to set up even more educational resources.

110
00:10:51,620 --> 00:10:59,600
And so we know that we can always do better and make it easier for people to kind of get started and learn what they need to learn.

111
00:11:00,920 --> 00:11:07,080
Last week, I was in Bengaluru, India, for the annual PGConf India conference.

112
00:11:07,560 --> 00:11:10,860
It was my first time going to it and there was so much buzz in the room.

113
00:11:11,300 --> 00:11:15,480
And what was really cool is my talk was a beginner's guide on a particular

114
00:11:15,800 --> 00:11:18,480
topic in Postgres and the room was full.

115
00:11:18,900 --> 00:11:23,180
There absolutely were people there who were not beginners with Postgres,

116
00:11:23,340 --> 00:11:25,940
but beginners with those particular features in Postgres.

117
00:11:26,520 --> 00:11:31,680
And so I do think there's always an appetite for even more beginner guide

118
00:11:32,020 --> 00:11:32,220
content.

119
00:11:33,460 --> 00:11:34,140
[DAWN] I was just telling a developer advocate that just a few minutes ago, they're intimidated.

120
00:11:40,580 --> 00:11:47,160
It was actually they're working in a different database and they said they needed to brush up before they can feel confident talking about it.

121
00:11:47,760 --> 00:11:59,040
And in a different perspective, but kind of the same point you made is that your fresh eyes are really, really valuable and it's an asset.

122
00:12:00,320 --> 00:12:13,160
So that kind of I really love on coming on seeing stage presentations from first time speakers or first time to a particular feature or the whole project.

123
00:12:13,600 --> 00:12:19,980
Just kind of talking about pain points and giving new perspective on something that people may take

124
00:12:19,980 --> 00:12:36,640
for granted or think are really intuitive.

125
00:12:23,900 --> 00:12:27,580
[CLAIRE] All right, so I want to pivot back to the book you're writing for just a second.

126
00:12:28,180 --> 00:12:29,620
Why are you writing it?

127
00:12:30,120 --> 00:12:31,260
And who's going to read it?

128
00:12:31,620 --> 00:12:32,720
Who's the target audience?

129
00:12:37,320 --> 00:12:43,560
[DAWN] Because I come from a freelancing and consulting background, and because the companies that I work with

130
00:12:43,840 --> 00:12:50,740
keep a really great moonlighting policy. So I am able to keep collaborating with my co-founders on

131
00:12:51,360 --> 00:13:01,400
consulting projects. The lens that people use to approach these projects are many times bringing

132
00:13:01,680 --> 00:13:08,100
the subject matter expert, for example, you're building accounting software and I'm using a very

133
00:13:08,220 --> 00:13:12,980
typical MVC framework for people who are not familiar with app development. That's model view

134
00:13:13,280 --> 00:13:21,480
controller. And there are other frameworks like Ruby on Rails, for example, or .NET

135
00:13:22,710 --> 00:13:27,780
that have their own MVC framework. But it's a way to speed up the development process.

136
00:13:28,230 --> 00:13:36,600
But in that, in simplifying that workflow, you're now bringing the non-technical developers or

137
00:13:36,620 --> 00:13:44,320
technical in their own domain, into your coding exercise. And what I like about Domain-driven

138
00:13:44,960 --> 00:13:53,980
design, which was created in 2003 and has this couple decades long legacy of trying to simplify

139
00:13:55,480 --> 00:14:04,320
approaching technology where you are now putting the onus on the technologist to adopt language

140
00:14:04,760 --> 00:14:10,000
and real world behaviors into their code

141
00:14:10,150 --> 00:14:12,280
rather than pushing the code knowledge

142
00:14:13,060 --> 00:14:16,000
onto your customer or client.

143
00:14:16,450 --> 00:14:17,780
So an example of that,

144
00:14:17,780 --> 00:14:19,580
because I said a lot of words,

145
00:14:20,320 --> 00:14:21,980
would be like the accounting software

146
00:14:22,180 --> 00:14:22,900
that I mentioned before.

147
00:14:23,940 --> 00:14:27,700
I'm going to tell them why I can't do transactions

148
00:14:28,010 --> 00:14:29,380
the way that they're asking me

149
00:14:29,600 --> 00:14:30,840
because there's a race condition.

150
00:14:31,660 --> 00:14:39,020
And I'm going to tell them why Postgres has this feature and this tool, but you have to use it this particular way.

151
00:14:39,530 --> 00:14:47,780
But instead, there are options to front load the work where you are having a lot of introductory and exploratory meetings.

152
00:14:48,020 --> 00:15:13,100
You are designing diagrams and having overlap on context and separation of context as well, where you can start doing a lot of that heavy lift at the front and remove a lot of the effort for your client to have to know the technical details or have to have delays in development and programming.

153
00:15:14,580 --> 00:15:24,260
It'll take a couple hundred pages to explain in full detail, but I appreciate the practice and getting on it.

154
00:15:24,550 --> 00:15:30,140
I am writing the book right now and I am going to be on a speaking tour afterwards.

155
00:15:30,640 --> 00:15:33,580
So we'll keep practicing the pitch.

156
00:15:33,580 --> 00:15:38,480
But hopefully that jives with understanding and the expectation of the audience.

157
00:15:39,840 --> 00:15:43,160
[CLAIRE] So who is the target audience for your book though is it someone who

158
00:15:44,240 --> 00:15:48,860
already knows a lot about Django, is it someone who's new to Django, who who is the person

159
00:15:49,360 --> 00:15:50,300
who's going to go buy it

160
00:15:51,180 --> 00:15:53,580
[DAWN] I'm hoping to keep it really broad.

161
00:15:53,880 --> 00:15:57,580
So there is an opening section

162
00:15:57,720 --> 00:16:01,420
where we cover domain-driven design in general terms.

163
00:16:02,060 --> 00:16:03,800
And then you can skip to a section

164
00:16:03,960 --> 00:16:05,920
where if you're starting your first Django application,

165
00:16:06,720 --> 00:16:09,339
because Django and other MVC frameworks

166
00:16:10,220 --> 00:16:13,460
will supercharge your development experience.

167
00:16:13,620 --> 00:16:16,640
They're what people reach for with very little

168
00:16:16,880 --> 00:16:18,500
or very advanced developer experience

169
00:16:18,520 --> 00:16:19,920
because they want to just do it really fast.

170
00:16:21,000 --> 00:16:25,060
So I'll kind of talk about the components of Django

171
00:16:25,380 --> 00:16:27,280
and how you get your first application started.

172
00:16:27,720 --> 00:16:29,540
And then the last portion of the book

173
00:16:29,920 --> 00:16:34,640
is connecting domain-driven design competencies

174
00:16:35,280 --> 00:16:37,599
with features that actually exist in Django

175
00:16:38,260 --> 00:16:44,060
or don't exist. For example, there's a concept about service layers that doesn't fit very well

176
00:16:44,200 --> 00:16:52,880
within Django, but exist in domain-driven design. And I can tell you how to set up your project so

177
00:16:52,880 --> 00:17:00,340
you can be cognizant of the service layer. And that also transcends to Postgres. So the domain-driven

178
00:17:00,420 --> 00:17:09,280
design, you're starting out with client terminology at the top of your planning. And that should go

179
00:17:09,339 --> 00:17:15,040
all the way to down to the way that you're naming your databases and the interaction between your

180
00:17:15,199 --> 00:17:23,000
tables. So the answer to your question, which I twice almost evaded, is it should be everyone but

181
00:17:23,000 --> 00:17:28,000
the consultant or the person who wants to move fast and work with people who don't have technical

182
00:17:28,000 --> 00:17:33,620
expertise or programming expertise and have their own domain and technology, they all could

183
00:17:34,130 --> 00:17:35,140
do very well with this.

184
00:17:35,210 --> 00:17:41,200
So hopefully project managers, program managers, CTOs, and individual contributors who are

185
00:17:41,200 --> 00:17:44,380
just really ambitious on understanding a full-scale application.

186
00:17:45,180 --> 00:17:45,280
[CLAIRE] Okay.

187
00:17:46,120 --> 00:18:01,040
So to the extent that a lot of the audience for this podcast is, at least historically, you're going to bring some new listeners to the show, I think, but has been people who work with Postgres, either as contributors or as users.

188
00:18:01,600 --> 00:18:19,200
And one of the things I was hoping to do, and you have to help me with this because it's your skills that I'm relying on, is to help all those Postgres people have more empathy with how someone who's a Python developer or Django developer thinks about the database.

189
00:18:19,940 --> 00:18:24,200
Like, are there any common misunderstandings or common gotchas?

190
00:18:24,680 --> 00:18:34,980
One thing you've already given me is that I want to go check out the documentation about Postgres that's in the Python documentation.

191
00:18:35,600 --> 00:18:42,780
I'm really curious to see what the Python world is teaching people about Postgres.

192
00:18:43,820 --> 00:18:47,640
But maybe there's more empathy to be had or more perspective you can share.

193
00:18:48,600 --> 00:18:53,320
[DAWN] There is always room for more empathy, I think we share that perspective, and that's

194
00:18:53,640 --> 00:19:02,420
one of my favorite things about both you and Aaron. So to answer, that's a good question.

195
00:19:03,150 --> 00:19:10,480
So, I really enjoy or I like the consistency that happens between projects whether you're doing

196
00:19:10,500 --> 00:19:18,000
Django, which I said a lot, or doing Flask or Bottle or other types of Python applications,

197
00:19:18,880 --> 00:19:26,280
you're going to use the database connector Psycopg. And it allows for consistency across,

198
00:19:26,290 --> 00:19:33,800
so it's transferable from one Python type project to another, as long as you know about the features

199
00:19:34,180 --> 00:19:38,940
that Postgres offers to suit your use case.

200
00:19:38,840 --> 00:19:40,440
There's some things that I would love to,

201
00:19:42,280 --> 00:19:45,360
that may not have translated to the Python community yet

202
00:19:45,360 --> 00:19:50,800
that I know exist with non-relational databases

203
00:19:53,120 --> 00:19:59,140
and hyperscaling and event-driven architecture patterns

204
00:19:59,500 --> 00:20:02,160
that are going to need to be supported by your database layer.

205
00:20:02,860 --> 00:20:14,040
And I think turning up the volume on some of those features so people don't immediately or only think of Postgres as a relational database, nothing more.

206
00:20:14,140 --> 00:20:21,080
If you just need a very, very big table or multiple very big tables that relate to each other, Postgres is great.

207
00:20:21,220 --> 00:20:23,400
And then for everything else, you should start, you should explore.

208
00:20:24,200 --> 00:20:28,480
I know Postgres does more, and I'm excited to kind of continue to explore those.

209
00:20:28,480 --> 00:20:32,080
And I'm actually learning some more about it so I can put them in the book.

210
00:20:33,600 --> 00:20:35,140
[CLAIRE] I'm glad you mentioned Psycopg.

211
00:20:35,220 --> 00:20:42,880
I know that's something that has come up a lot in Paolo Melchiorre's talks that I've seen.

212
00:20:43,220 --> 00:20:43,720
He will often give talks about Python and Postgres together,

213
00:20:48,599 --> 00:20:54,200
so now it's making it into the show notes which is great. So there's a question on the chat which

214
00:20:57,740 --> 00:21:03,040
I was listening to a podcast earlier today, you were on a podcast with someone named Will

215
00:21:03,300 --> 00:21:04,640
and Carlton and it was a couple years ago and you talked about Django and Wagtail and Gatsby [Yeah.]

216
00:21:12,500 --> 00:21:16,939
but one of the things I loved is you also talked about your approach to networking

217
00:21:17,620 --> 00:21:23,000
and you said, "yeah, networking sounds like such a professional term, but really I just make really

218
00:21:23,320 --> 00:21:29,100
smart friends," which I thought was fantabulous. Cause that kind of explains my entry into Postgres

219
00:21:29,240 --> 00:21:35,720
as well. I'm just very lucky. I've made some really smart friends. But one of the questions,

220
00:21:35,870 --> 00:21:39,920
and I'm wondering if you or any of your smart friends have experienced this, Tristan was asking

221
00:21:40,200 --> 00:21:45,839
about whether anyone has done the Psycopg 2 to Psycopg 3 transition. Have you heard

222
00:21:45,860 --> 00:21:47,200
anything from people about that?

223
00:21:48,820 --> 00:21:49,140
[DAWN] No, no I haven't—I love coming to things like this because that gives me

224
00:21:54,380 --> 00:21:58,160
new things to research and it will definitely make it into the book,

225
00:21:58,220 --> 00:22:04,640
but maybe I'll do some blogging on it as well and see what my really smart friends have seen.

226
00:22:04,900 --> 00:22:06,280
But I've not seen that yet.

227
00:22:06,900 --> 00:22:12,800
And I'd love to know if they want to follow up with their experience with it, if they've heard anything.

228
00:22:14,240 --> 00:22:19,220
[CLAIRE] So in the book that you're writing, the chapter of Just use Postgres, is it written yet?

229
00:22:19,720 --> 00:22:24,340
Or is it just the chapter title and you still have to dive in and do the work?

230
00:22:25,080 --> 00:22:28,960
[DAWN] It's a little bit of this, and a little bit of that, so I definitely have the chapter title

231
00:22:28,980 --> 00:22:35,400
and some outlines and then I filled in some more thoughts so a lot of it is dependent upon

232
00:22:36,240 --> 00:22:43,880
the domain-driven design concepts and then as they flow through the application and then eventually

233
00:22:43,980 --> 00:22:52,580
get to the database layer. So it will also continue to evolve as the book evolves. Some of the things,

234
00:22:52,630 --> 00:23:00,140
like I mentioned a couple of them, but event-driven design is an important one. We're also talking

235
00:23:00,360 --> 00:23:07,799
about transactions. And then I do have a demo that I'm building for a very high level

236
00:23:09,760 --> 00:23:13,640
AI application, it's just like an agent, a chat agent,

237
00:23:14,000 --> 00:23:15,420
which is all the rage these days.

238
00:23:15,860 --> 00:23:19,500
But there's really cool demos and architecture patterns

239
00:23:19,680 --> 00:23:23,500
that are happening, but then they rely on NoSQL database

240
00:23:23,720 --> 00:23:27,800
and I'm working through doing that with Postgres

241
00:23:27,880 --> 00:23:29,360
and trying some new features

242
00:23:29,420 --> 00:23:30,380
that I've not played with before.

243
00:23:31,320 --> 00:23:31,440
[CLAIRE] Okay.

244
00:23:32,720 --> 00:23:36,360
You know, there's two interesting full circles here that I'll throw out.

245
00:23:37,460 --> 00:23:38,580
One is on the chat.

246
00:23:38,760 --> 00:23:41,620
Tristan just mentioned that the postgresql.org website,

247
00:23:42,340 --> 00:23:45,440
which is the community website where you can get lots of information

248
00:23:45,760 --> 00:23:46,940
about the open source project,

249
00:23:48,660 --> 00:23:49,640
it is written in Django.

250
00:23:50,640 --> 00:23:58,440
So any Django developers that are listening that also want to kind of connect more with the Postgres community, maybe there's an opportunity there [Mm-hmm.]

251
00:24:00,480 --> 00:24:10,680
And the second full circle I want to mention is that on the very first episode of this podcast, Talking Postgres, which had a different name back then.

252
00:24:11,040 --> 00:24:13,640
When we first started, it was called Path to Citus Con.

253
00:24:14,340 --> 00:24:21,520
But we had two guests in that episode, and one of them was Simon Willison, who is one of the co-creators of Django.

254
00:24:21,740 --> 00:24:25,100
[DAWN] Yeah, he's also on the chair,

255
00:24:25,460 --> 00:24:28,380
he's one of the board members on the Python Software Foundation.

256
00:24:29,480 --> 00:24:36,300
And I came to Django obviously much after they've gotten Django started and it was a little

257
00:24:36,310 --> 00:24:37,060
bit intimidating.

258
00:24:37,290 --> 00:24:39,860
It was like, "Oh, there's a celebrity amongst us."

259
00:24:42,360 --> 00:24:49,000
And similar to the point that you made of just making really cool friends, people I've seen

260
00:24:49,100 --> 00:24:52,280
similarly in the Postgres community are just incredibly accessible.

261
00:24:52,940 --> 00:24:59,120
I remember one of my first lunches or breakfast days at DjangoCon, I sat down and I was like,

262
00:24:59,340 --> 00:25:03,840
This framework is fantastic. No notes. There's nothing they can improve upon.

263
00:25:04,580 --> 00:25:14,640
Meanwhile, there are likely active discussions on architecture patterns and considerations and hanging issues that have not been addressed yet,

264
00:25:14,700 --> 00:25:17,360
and people are up in arms about.

265
00:25:18,100 --> 00:25:20,740
We have a very, from my understanding,

266
00:25:20,780 --> 00:25:27,060
we have a very thoughtful and amicable conversation

267
00:25:27,060 --> 00:25:33,880
and debating process on architecture and feature additions.

268
00:25:34,780 --> 00:25:39,460
But there is a magic that happens when you're new

269
00:25:39,840 --> 00:25:43,660
and you don't even see the not-shiny bits of a new program

270
00:25:43,660 --> 00:25:46,140
and can't even figure out how it can improve.

271
00:25:46,650 --> 00:25:56,580
And it's been a really cool journey to see some of the glitter fall off,

272
00:25:57,020 --> 00:26:02,580
but also recognize that I get to add the glitter back on or shine it up more

273
00:26:02,580 --> 00:26:08,420
or whatever the metaphor is.

274
00:26:08,550 --> 00:26:09,740
But that makes it more fun.

275
00:26:09,910 --> 00:26:10,840
I get to jump in.

276
00:26:10,960 --> 00:26:16,040
I get to see deficiencies in the open source framework that I'm using or the tool that I'm using.

277
00:26:16,390 --> 00:26:23,120
And I get to be one of the people who makes it better and make someone saunter up on the first day and go, this is perfect.

278
00:26:23,330 --> 00:26:24,100
I see no notes.

279
00:26:26,820 --> 00:26:30,080
[CLAIRE] Yeah, I mean, that's part of the joy of being new to something, right?

280
00:26:30,310 --> 00:26:38,200
Is that you're not aware of all the warts, and the bugs, and the dust, and the dirt.

281
00:26:39,000 --> 00:26:39,860
But you get there.

282
00:26:40,520 --> 00:26:43,900
And then you hopefully are in a position to help make things even better.

283
00:26:45,820 --> 00:26:52,520
In the show notes, someone just dropped the actual link to the source code for the postgresql.org website.

284
00:26:52,940 --> 00:26:56,640
So you can go take a peek after we're done with the recording.

285
00:26:57,900 --> 00:27:01,820
With regards to Simon Willison, though, that particular episode was called Working in public [on open source].

286
00:27:02,600 --> 00:27:10,860
And just shout out to how fun it is to talk to him about the way in which he is such a prolific blogger and shares his learnings.

287
00:27:10,920 --> 00:27:19,520
He's got like a Today I Learned themed blog where, I asked him, well, actually, no, I complimented him and thanked him.

288
00:27:19,560 --> 00:27:24,900
I said, this is so fascinating that you share all these learnings for the rest of us.

289
00:27:25,080 --> 00:27:27,780
It's so altruistic of you.

290
00:27:27,900 --> 00:27:29,700
I don't know if I use that word, but it's a good word.

291
00:27:30,700 --> 00:27:33,260
And he said, "oh, no, I don't do it for any of you.

292
00:27:33,290 --> 00:27:34,060
I do it for me.

293
00:27:34,350 --> 00:27:35,700
I do it for future Simon.

294
00:27:36,340 --> 00:27:43,980
So that, you know, two years from now, six months from now, three years from now, when I'm trying to figure something out, it's all documented already.

295
00:27:44,470 --> 00:27:46,340
And I can just go look it up in the blog."

296
00:27:47,420 --> 00:27:47,880
[DAWN] I love that.

297
00:27:47,440 --> 00:27:50,460
[CLAIRE] I thought that was really cool.

298
00:27:50,510 --> 00:27:52,600
And I wish I personally did more of that.

299
00:27:53,940 --> 00:27:57,340
Because you do make things better for, in my case, future Claire.

300
00:27:57,779 --> 00:27:58,840
[DAWN] We all could aspire to have a little more Simon, but he sets this very high bar.

301
00:28:05,680 --> 00:28:10,500
[CLAIRE] That he does. Okay. So, you started to delve into this, but I want to see if we can go a little

302
00:28:10,600 --> 00:28:16,740
bit deeper for a few minutes. Tell me more about how you yourself have worked with Postgres. [Yeah.]

303
00:28:16,740 --> 00:28:22,920
I don't know if you remember your first encounter with it, or the first time you chose it for

304
00:28:23,060 --> 00:28:29,180
one of your consulting projects, and whether you had likes or dislikes or surprises, I'm just fishing

305
00:28:27,880 --> 00:28:28,480
for a story.

306
00:28:30,060 --> 00:28:35,460
[DAWN] So like many Python developers, it was chosen for me.

307
00:28:36,750 --> 00:28:39,280
It was what we just happened to be using on the project.

308
00:28:39,540 --> 00:28:47,900
I started in, it actually was my first Django Girls tutorial.

309
00:28:48,550 --> 00:28:55,480
So it was deploying my first project and I'm upgrading from SQLite to Postgres.

310
00:28:55,900 --> 00:29:08,080
So I can have not just a persistent database, but also one that is going to be easily deployed and not write over itself because I make a newbie mistake.

311
00:29:10,740 --> 00:29:18,480
And although with a note that I probably did that a couple of times anyway.

312
00:29:20,620 --> 00:29:33,780
And I think one of the confusing parts in the very beginning for me was actually starting with the psql CLI.

313
00:29:36,120 --> 00:29:53,680
And when you're learning about CLIs and psql at the same time, and I never used a GUI for it, and now I'm really excited to use GUIs, especially there's an extension in VS Code that has a really cool Postgres GUI.

314
00:29:53,680 --> 00:29:58,940
And I hear through the grapevine that there's more to come with cool GUIs for Postgres.

315
00:29:59,480 --> 00:30:01,080
[CLAIRE] Really? You do, huh?

316
00:30:01,720 --> 00:30:04,080
[DAWN] I hear very good things, and I'm so excited.

317
00:30:05,500 --> 00:30:06,700
[CLAIRE] I couldn't possibly comment.

318
00:30:09,199 --> 00:30:16,780
[DAWN] So that's I think that's a really cool journey from where I was in around 2015-16

319
00:30:17,400 --> 00:30:24,800
to now is that there's a ton more support and also old habits die hard, I still go into

320
00:30:24,920 --> 00:30:32,899
psql to figure out my my tables and its permissions and to fiddle with things and create new users and

321
00:30:32,920 --> 00:30:42,040
things like that. But it was, I think there's opportunity perhaps to maybe grow that

322
00:30:42,660 --> 00:30:48,460
interface for newbies like me, if they still want to use the CLI but it's a little bit daunting or

323
00:30:48,540 --> 00:30:54,760
they'd like to have more, what is it what is it called, feedback in the terminal on what you're

324
00:30:54,920 --> 00:30:58,040
doing and have maybe more verbose for example.

325
00:31:01,740 --> 00:31:07,400
[CLAIRE] Any other memories of your first encounter with Postgres?

326
00:31:07,380 --> 00:31:10,720
[DAWN] I remember forgetting my password so many times.

327
00:31:11,760 --> 00:31:15,080
What is my Postgres user password?

328
00:31:17,460 --> 00:31:22,920
But, you know, you just kind of push through some of these things and you keep the notes,

329
00:31:22,920 --> 00:31:27,560
the Simon Willison-esque notes somewhere in a markdown somewhere.

330
00:31:27,700 --> 00:31:32,780
and it's not as hard the next time you do it.

331
00:31:33,630 --> 00:31:37,580
But yeah, I think there's just a learning curve

332
00:31:37,630 --> 00:31:40,900
to kind of understanding the database and accessing it

333
00:31:41,100 --> 00:31:47,840
and then also creating these new features that exist in it.

334
00:31:49,780 --> 00:31:52,720
[CLAIRE] So I want to pivot if we can because one of the things you told me before we hopped on the show

335
00:31:55,980 --> 00:32:01,220
here today is you were telling me about the Python Developer Survey. And I do think about surveys

336
00:32:04,340 --> 00:32:12,360
sometimes as a really interesting way to gather from a broad set of people a perspective on a

337
00:32:12,580 --> 00:32:18,420
technology or a project. And particularly when it's an open source project that's distributed

338
00:32:18,520 --> 00:32:23,520
around the world, right? It's not like it's all in one company or all in one team.

339
00:32:23,980 --> 00:32:26,680
So tell me more about the Python Developer Survey, please.

340
00:32:27,800 --> 00:32:32,800
[DAWN] Yeah, I think it's the, so it is definitely the staple survey.

341
00:32:33,200 --> 00:32:35,440
It's run by JetBrains.

342
00:32:36,300 --> 00:32:40,560
And they have this cool relationship with the Python Software Foundation where they also

343
00:32:41,180 --> 00:32:45,320
will do like some type of donation or something, something around the same time that they're

344
00:32:45,440 --> 00:32:45,940
doing the survey.

345
00:32:46,640 --> 00:33:03,480
But they provide the infrastructure to be able to tap into the community and hear what they're using and their use cases and their experience level and whether or not they're upgrading to the next version.

346
00:33:03,900 --> 00:33:06,340
And so maybe it could be interesting to the audience.

347
00:33:06,660 --> 00:33:13,780
But if people are interested in what Python version people are using, most of us are hanging around 3.11.

348
00:33:14,640 --> 00:33:17,140
3.13 just came out last year.

349
00:33:17,940 --> 00:33:21,060
Python 3.14 is going to be coming out this October.

350
00:33:21,820 --> 00:33:30,000
So kind of understanding that we have annual releases, which may not be common for all languages.

351
00:33:31,320 --> 00:33:32,900
We're kind of on that cycle,

352
00:33:33,540 --> 00:33:43,880
and that most people are maybe two releases behind and then an enterprise will be a full

353
00:33:44,170 --> 00:33:52,500
release behind that when they're doing well, and then like if you're on 3.9 I want to

354
00:33:53,340 --> 00:33:59,699
hug and shake you, but you'll even find people who are

355
00:34:00,900 --> 00:34:01,840
rushing to

356
00:34:02,480 --> 00:34:04,560
upgrade from deprecated versions.

357
00:34:07,060 --> 00:34:08,240
[CLAIRE] Yeah well it's "if it ain't broke don't fix it" is kind of a thing in the human existence

358
00:34:13,860 --> 00:34:19,120
and so there are plenty of, I think understandable, scenarios in which people don't upgrade because

359
00:34:21,500 --> 00:34:25,760
it's working and they have other bigger problems to deal with. And then, but what that does is it

360
00:34:27,110 --> 00:34:32,800
does put you in fire drill mode when there's no time left and you have to do it now.

361
00:34:33,319 --> 00:34:39,139
[DAWN] Exactly. And I think one of the things I really like about Postgres and then also the Django

362
00:34:39,419 --> 00:34:45,500
community is that we take security concerns very seriously. And there is this time period where the

363
00:34:45,740 --> 00:34:51,440
security concern that's reported is a bit secret, but until they fix it, they can patch it.

364
00:34:52,040 --> 00:35:01,800
But really upgrading to those patches to support the security fixes are, I've been very lucky

365
00:35:01,840 --> 00:35:04,340
that I've not come into any of those issues in production.

366
00:35:05,480 --> 00:35:11,900
But the fact that there are experts who are leading the charge makes me feel so much

367
00:35:12,140 --> 00:35:14,480
more comfortable with the both the communities.

368
00:35:14,980 --> 00:35:21,200
And so also to the contributors who are maybe listening for Postgres, I appreciate you.

369
00:35:21,520 --> 00:35:22,100
Thank you.

370
00:35:25,860 --> 00:35:27,720
[CLAIRE] Okay, now we'll pivot to PyCon.

371
00:35:28,860 --> 00:35:37,760
So PyCon is probably one of my most favorite conferences that's not a Postgres conference per se.

372
00:35:38,490 --> 00:35:48,720
Although, obviously, when I've been to PyCon in the past, I was wearing a Postgres hat or Citus hat because I used to work at a small Postgres startup called Citus Data.

373
00:35:49,900 --> 00:35:52,260
So I went there with Postgres in mind and there were talks,

374
00:35:52,330 --> 00:35:58,640
there were talks, like you were saying, about how to use Postgres, how to scale with Postgres that were geared toward Python developers.

375
00:35:59,220 --> 00:36:01,380
But anyway, it is so much fun.

376
00:36:02,280 --> 00:36:03,920
Are you going this year?

377
00:36:04,760 --> 00:36:10,300
[DAWN] I am. It's going to be in Pittsburgh. It'll be, let me make sure I get the dates right...

378
00:36:14,160 --> 00:36:16,320
[CLAIRE] It's in mid-May sometime, I feel.

379
00:36:16,339 --> 00:36:22,520
[DAWN] Yes, 14th through 15th, or excuse me, 14th through 22nd.

380
00:36:22,320 --> 00:36:27,920
So if you want to catch any of the tickets are on sale, the full conference schedule just was released.

381
00:36:29,580 --> 00:36:39,080
If you want to jump in on a tutorial, Postgres is going to be mentioned in the Microsoft tutorial.

382
00:36:39,450 --> 00:36:43,780
And if you want to learn how to deploy Postgres to Azure, that's an option.

383
00:36:43,960 --> 00:36:44,860
There's also a lot of, uh, so the first couple of days are going to be tutorials

384
00:36:50,380 --> 00:36:56,040
and then we have a few days of conference talks, there's also a whole conference

385
00:36:58,559 --> 00:37:09,519
talk, or excuse me, a whole conference lane for Spanish speakers. So if you are a

386
00:37:09,540 --> 00:37:11,600
native Spanish speaker, you will feel at home.

387
00:37:12,700 --> 00:37:15,620
And then we have several days of sprints afterwards,

388
00:37:15,800 --> 00:37:16,880
which I mentioned before.

389
00:37:18,340 --> 00:37:20,880
If you're not familiar, we all just kind of gather around

390
00:37:21,180 --> 00:37:22,720
and hack on open source.

391
00:37:23,740 --> 00:37:29,540
[CLAIRE] So for anyone who's listening, whether it's for this year or future years, if you are looking,

392
00:37:29,870 --> 00:37:36,760
even if you're a Postgres developer, Postgres user, maybe you're not a Python developer yourself,

393
00:37:36,950 --> 00:37:42,440
but you want to better understand the app developer mindset, the Python developer mindset,

394
00:37:42,720 --> 00:37:47,460
I think PyCon is a really great place to do that. The sessions are really high quality.

395
00:37:48,220 --> 00:37:51,060
It's very well organized and it's over a week long.

396
00:37:51,630 --> 00:37:56,660
So the main expo, the main showroom floor, it's only open for what, three days?

397
00:37:51,900 --> 00:37:51,960
[DAWN] Yeah.

398
00:37:57,280 --> 00:38:01,040
[CLAIRE] But there's even more training and tutorials and sessions beyond that.

399
00:38:02,320 --> 00:38:05,140
[DAWN] And that ethos that I was talking about, kind of keeping it very, very open source,

400
00:38:11,960 --> 00:38:17,320
similar to the Postgres community. Also, people say that Python is the second best language for

401
00:38:17,360 --> 00:38:23,860
everything. And there's a lot of that energy at PyCon. So it's really, I think it attempts to be

402
00:38:24,080 --> 00:38:31,740
really accessible with just energies of people being very, very kind and willing to start wherever

403
00:38:31,820 --> 00:38:37,200
you are in your Python journey and then talk you through even the most advanced concepts. I felt very

404
00:38:38,000 --> 00:38:42,660
seen and respected in the Python community. And it's why I stick around.

405
00:38:45,320 --> 00:38:47,780
[CLAIRE] Python is the second best language for everything.

406
00:38:48,240 --> 00:38:48,480
Help me understand that.

407
00:38:49,300 --> 00:38:49,880
Break it down.

408
00:38:50,020 --> 00:38:51,040
What does that mean?

409
00:38:51,619 --> 00:38:59,320
[DAWN] In many cases it's considered maybe like a glue layer for data people, or for application

410
00:38:59,720 --> 00:39:08,800
building, or for platforms. Python is a really good glue language and I think one of the things that

411
00:39:08,860 --> 00:39:17,120
we're seeing with the rise of AI and the commodification of AI and people building a lot of AI forward

412
00:39:17,400 --> 00:39:23,100
apps is that you're seeing the merging of a bunch of different worlds and then you're seeing that

413
00:39:23,300 --> 00:39:31,640
Python has come, like exploded in popularity because it is jokingly the second best language

414
00:39:31,780 --> 00:39:37,479
for everything. So if you want a more performant language in the browser, you will probably go for

415
00:39:37,760 --> 00:39:47,080
a JavaScript, or TypeScript, an ECMAScript language. But we are working on WebAssembly support for the

416
00:39:47,820 --> 00:39:55,220
default distribution of Python, CPython on PyPI. And that's really exciting. So maybe it's not the

417
00:39:55,360 --> 00:40:03,560
first thing that you're going to reach for, for developing in the browser. But the work is there.

418
00:40:03,740 --> 00:40:07,260
There's active channels and workstreams for contribution on that.

419
00:40:07,690 --> 00:40:09,540
And people are really excited about it.

420
00:40:09,940 --> 00:40:14,500
And that's the similar story for a lot of different things with Python.

421
00:40:15,120 --> 00:40:21,480
And so I think there's a really fun place to play in for a language group that calls

422
00:40:21,600 --> 00:40:23,840
themselves the second best language for everything.

423
00:40:24,330 --> 00:40:31,280
I don't think we take ourselves particularly seriously, which means we get to have fun and

424
00:40:31,560 --> 00:40:31,760
experiment.

425
00:40:34,760 --> 00:40:41,220
[CLAIRE] Well, this year, PGConf.dev in Montreal, it feels like it overlaps the date.

426
00:40:41,320 --> 00:40:45,460
So I'm not able to swing two trips in the middle of May.

427
00:40:45,960 --> 00:40:48,080
So I will be at PGConf.dev in Montreal.

428
00:40:48,580 --> 00:40:56,640
But yeah, I look forward to following you online and seeing photos and hearing more about what happens at this year's PyCon.

429
00:40:56,560 --> 00:40:56,720
I'm sure it's going to be fun.

430
00:40:57,740 --> 00:40:58,500
It always is.

431
00:40:59,400 --> 00:41:01,000
[DAWN] And we'll be in closer time zones.

432
00:41:01,240 --> 00:41:03,840
So when I see your cool posts from Montreal,

433
00:41:03,920 --> 00:41:06,340
I haven't been, I hear the food and the jazz

434
00:41:06,700 --> 00:41:07,860
and the people are wonderful.

435
00:41:09,140 --> 00:41:14,540
So I'm hoping to get up to Montreal and PGConf.dev soon.

436
00:41:15,980 --> 00:41:22,540
[CLAIRE] Okay, so I don't know if you know this, but last month on the Talking Postgres podcast,

437
00:41:23,320 --> 00:41:29,500
Robert Haas, who is a senior Postgres committer and major contributor, he's been involved with

438
00:41:29,580 --> 00:41:34,980
the project a long time. He works for EDB. And he recently, last year, last summer,

439
00:41:35,770 --> 00:41:41,520
summer in the northern hemisphere, started a new mentorship program for the Postgres developer

440
00:41:41,860 --> 00:41:45,620
community. And so that's what we talked about. It was an episode that was all about mentorship.

441
00:41:46,600 --> 00:41:48,940
and I don't know if you had a chance to listen in

442
00:41:48,940 --> 00:41:51,200
but I know that mentorship is something

443
00:41:51,560 --> 00:41:52,920
that you care about a lot

444
00:41:53,080 --> 00:41:55,580
and you do a lot of. [Yeah.]

445
00:41:56,960 --> 00:41:58,980
I thought we could talk about that

446
00:41:58,980 --> 00:42:00,540
a little bit.

447
00:42:00,030 --> 00:42:00,620
[DAWN] Yeah, definitely.

448
00:42:01,400 --> 00:42:05,900
So, selfishly, we could start with a selfish reason.

449
00:42:06,030 --> 00:42:09,480
I think mentorship makes me a much better developer.

450
00:42:11,300 --> 00:42:15,640
I find myself, for example, the developer advocate, who's been a programmer for years and has recently moved into developer advocacy.

451
00:42:24,460 --> 00:42:28,440
We are going to pair on a new database that she's never used before.

452
00:42:29,540 --> 00:42:56,500
And being able to talk through the issues that I've seen before, go through new documentation or new use case that I just wouldn't have on my desk otherwise, and then chat through how to break it all down into bite-sized pieces and attack it together, really clears up some of my brain space.

453
00:42:56,660 --> 00:43:02,880
And when I return to the work that I was doing before, that's kind of my bread and butter or my nine to five or whatever.

454
00:43:03,760 --> 00:43:14,560
I absolutely am directly referencing a lot of the conversations that I have and skills and muscles that I'm building with someone else.

455
00:43:15,540 --> 00:43:28,680
And one of the things that is really important to me is that full loop and letting people know, that I'm working with or mentoring, how valuable their conversation is to me.

456
00:43:29,160 --> 00:43:39,420
I can't tell you how many times I've had someone say, "I'm so sorry for taking your time," or "wow, you're so good at unblocking me" from whatever issue,

457
00:43:39,940 --> 00:43:43,420
and really all it was is I provided a safe space for them to talk through.

458
00:43:43,640 --> 00:43:46,600
I'm a very nice, smiley rubber duck.

459
00:43:48,080 --> 00:43:52,460
So mentorship is able to kind of provide some of that.

460
00:43:53,540 --> 00:44:00,780
And in the respect of the previous podcast episode and creating actual formalized mentorship program,

461
00:44:01,660 --> 00:44:07,200
Django launched a mentorship program, I believe two years ago about now,

462
00:44:08,000 --> 00:44:17,060
called Djangonaut Space, where we have this, where we play on the whole space theme, where we have

463
00:44:18,360 --> 00:44:22,980
Djangonauts played off of the astronaut naming. I don't know if that's a pun. I'm terrible at puns. [Right.]

464
00:44:26,000 --> 00:44:33,659
And then we have navigators and captains. And so we put people into small cohorts of like maybe

465
00:44:33,680 --> 00:44:40,940
five or so people. We'll have a navigator who is an expert contributor in the community who is

466
00:44:41,300 --> 00:44:47,620
leading each group. And then there'll be a captain who runs in parallel to the navigator and Djangonaut

467
00:44:47,640 --> 00:44:53,840
relationship where they are cheerleaders and they also help kind of direct their path of like

468
00:44:53,920 --> 00:44:58,920
if they need to be connected to additional people for mentorship or for subject matter expertise.

469
00:44:59,720 --> 00:45:02,140
And so we've found a lot of success.

470
00:45:02,340 --> 00:45:06,980
We've had maybe four or five cohorts of it so far.

471
00:45:07,410 --> 00:45:17,040
And really, each time we have such great reviews, we get new contributors to the whole

472
00:45:17,280 --> 00:45:17,640
ecosystem.

473
00:45:17,650 --> 00:45:22,020
We don't even just focus on Django, although that is the main goal.

474
00:45:22,680 --> 00:45:26,220
And it seems to really inspire a lot of people to jump in.

475
00:45:27,680 --> 00:45:34,560
[CLAIRE] Interesting. So instead of just the traditional one-on-one, which to be fair, what Robert Haas and

476
00:45:35,300 --> 00:45:39,400
Melanie and others have set up for the Postgres Mentorship Program, there is the one-on-one

477
00:45:39,700 --> 00:45:44,240
pairing in the first cohort. But then they also have these hacking workshops,

478
00:45:44,800 --> 00:45:45,980
which are a bigger group.

479
00:45:46,120 --> 00:45:47,580
And I don't remember the exact number,

480
00:45:47,600 --> 00:45:49,460
but it feels like maybe 30-ish people.

481
00:45:50,780 --> 00:45:52,960
People can sign up just for that one month

482
00:45:52,980 --> 00:45:55,040
and they all will watch the same talk

483
00:45:55,640 --> 00:45:57,480
and then get together and talk about it

484
00:45:57,660 --> 00:45:59,060
and learn from each other,

485
00:45:59,520 --> 00:46:01,020
explore questions, things like that.

486
00:46:01,660 --> 00:46:02,000
So they have those. [Yes.]

487
00:46:02,920 --> 00:46:03,880
But this is interesting,

488
00:46:04,100 --> 00:46:05,380
this notion of five people

489
00:46:05,740 --> 00:46:07,340
and people wearing different hats

490
00:46:07,560 --> 00:46:08,540
and having different roles.

491
00:46:08,900 --> 00:46:12,420
And wow, kind of cool.

492
00:46:12,580 --> 00:46:17,280
[DAWN] Yeah, it really evolved from where I thought it was going to start.

493
00:46:17,310 --> 00:46:26,160
It actually was born from a State of Django panel on stage at one of the conferences.

494
00:46:26,460 --> 00:46:28,300
and someone said we should have a mentorship program.

495
00:46:28,570 --> 00:46:31,880
And then it just kind of blossomed from there.

496
00:46:32,560 --> 00:46:34,480
And nobody really knew where it was coming from.

497
00:46:34,690 --> 00:46:41,900
But one of our fellows, so fellow is the term that we use for a full-time contributor to the

498
00:46:42,010 --> 00:46:43,580
language that is paid for by the foundation.

499
00:46:45,140 --> 00:46:46,240
Django gets two.

500
00:46:47,240 --> 00:46:52,140
And one of the fellows, before she was a fellow, actually just started participating in the

501
00:46:52,340 --> 00:46:52,500
mentorship.

502
00:46:52,800 --> 00:46:57,920
She was an active contributor and then became a fellow, continues to help with the mentorship.

503
00:46:58,370 --> 00:47:04,620
And it really just has this cool effect of just bringing all of the energy together.

504
00:47:05,250 --> 00:47:07,560
And it was a lot more organized than I was expecting.

505
00:47:07,780 --> 00:47:13,960
I'm usually just like, let's set some time on the calendar and be a ragtag group of kids just hacking.

506
00:47:15,560 --> 00:47:17,480
And I think this is just a different approach.

507
00:47:17,770 --> 00:47:21,120
I think it has its benefits and some drawbacks.

508
00:47:21,260 --> 00:47:28,660
But the group that comes through that do really benefit from it specifically say they like the structure.

509
00:47:29,520 --> 00:47:38,560
And if they are looking for less structured ways of doing mentorship, then we'll create other more casual meetings as well.

510
00:47:29,840 --> 00:47:43,740
[CLAIRE] You've said that you've had such great reviews, is any of that published?

511
00:47:43,580 --> 00:47:48,580
Is any of this process and the feedback, like, is there a blog post I can go read or that

512
00:47:48,580 --> 00:47:49,820
I can include the show notes?

513
00:47:50,280 --> 00:48:12,920
[DAWN] Yeah, totally. I think we even have a page where we say, so we have a media one. And then we also have like successes or something like that. I'll absolutely add them in the show notes. But if you're looking to just figure out all of all of that, it's Djangonaut, so djangonaut.space. So we use the space DNS for that.

514
00:48:15,880 --> 00:48:22,020
[CLAIRE] This is just my own curiosity. I am super thrilled with everything that Robert Haas and

515
00:48:22,600 --> 00:48:27,280
everyone involved in the new Postgres Mentorship Program has been doing, but I'm always curious

516
00:48:27,390 --> 00:48:32,600
as to, well, how have other how have other teams done it. So it's for my own my own learning here

517
00:48:32,800 --> 00:48:37,720
that I'm asking but probably some listeners will be curious as well I'm probably not the only one.

518
00:48:40,420 --> 00:48:41,920
All right, so one other thing that I

519
00:48:42,400 --> 00:48:44,240
was Googling you as I prepared

520
00:48:44,320 --> 00:48:46,240
for this podcast, and you've been on a whole bunch

521
00:48:46,240 --> 00:48:46,880
of podcasts,

522
00:48:48,240 --> 00:48:50,180
and you've hosted one

523
00:48:50,220 --> 00:48:51,880
or two different ones right?

524
00:48:52,240 --> 00:48:57,140
[DAWN] Yeah, I am currently the co-host of the Sad Python Girls Club podcast with my co-host who is

525
00:49:00,300 --> 00:49:02,040
also a friend and colleague of yours, Luciana Abud, on the VS Code team. We keep it pretty

526
00:49:06,980 --> 00:49:07,700
loose on topics so we are all VS Code fans, but we absolutely talk about other editing

527
00:49:17,580 --> 00:49:27,680
environments. And then we had a really great guest from Ruby talk about language maintenance

528
00:49:28,600 --> 00:49:35,860
and kind of the symbiotic relationship between companies that support that mission and will

529
00:49:35,900 --> 00:49:43,999
develop, will give full-time engineering hours, to supporting a language. And Microsoft does a

530
00:49:44,020 --> 00:49:49,500
little bit of that, but we also really do a lot of support for the Python coding environment

531
00:49:50,530 --> 00:49:57,840
in VS Code. And I think it's a really, really, a fun forum to chat. And then we always end with

532
00:49:58,680 --> 00:50:06,480
our favorite sad song and our favorite ice cream, because I like to associate ice cream with sad

533
00:50:06,640 --> 00:50:06,840
feelings.

534
00:50:08,660 --> 00:50:15,420
[CLAIRE] Well, speaking of songs, I want to tell you that Aaron and I and another teammate, Isaac,

535
00:50:16,280 --> 00:50:22,740
work together. And your episode, this episode 25 of Talking Postgres, is going to be the first

536
00:50:22,960 --> 00:50:30,760
episode that has music. So I feel like we're finally going mainstream. Not a different song

537
00:50:30,840 --> 00:50:34,940
every time like what you're describing, but we will have music that plays in the beginning and

538
00:50:34,960 --> 00:50:36,920
at the end of each podcast episode moving forward.

539
00:50:37,960 --> 00:50:40,280
[DAWN] I love that. Awesome. And this is for people who are listening or in the channel. This is such a well run organization. It was every step of the way you are class acts and I really appreciate actually I'm learning a lot about how to run a very well run podcast from being here.

540
00:51:02,000 --> 00:51:06,480
So I'm appreciative of being invited.

541
00:51:06,900 --> 00:51:08,800
[CLAIRE] Oh, well, we're thrilled to have you.

542
00:51:10,100 --> 00:51:22,500
Is there anything that you particularly love about working in the Python developer community or the Django space that you wish other open source and developer projects also did?

543
00:51:23,420 --> 00:51:25,120
I'm just looking to learn from you.

544
00:51:24,579 --> 00:51:27,360
[DAWN] Oh, yeah, this is a really good one.

545
00:51:27,460 --> 00:51:39,840
I think that the, so I started in the Django sphere, Django area, and then I moved

546
00:51:41,460 --> 00:51:48,980
into Python and the audience is much larger, and much scarier, but I do think that we have,

547
00:51:49,860 --> 00:51:57,420
some of us have, when what when it goes well, a humility to look to other communities to learn things.

548
00:51:58,380 --> 00:52:05,740
I've seen that in abundance. Just even in this hour-long conversation, we've really talked about

549
00:52:06,300 --> 00:52:13,180
sharing tips and tricks and learning from each other in open source. But like a lot of our

550
00:52:14,060 --> 00:52:22,599
code of conduct conversations or ideas on mentorship or inclusivity have come from

551
00:52:23,120 --> 00:52:29,820
the really cool, and even of having full-time fellows working on the language, they're called,

552
00:52:30,360 --> 00:52:40,260
what is it, they go under a different name in Python, we got that from

553
00:52:40,780 --> 00:52:46,880
another subgroup of the community and borrowed from other communities so I think

554
00:52:48,299 --> 00:53:00,500
having that openness to chat and kind of lower the silos in some of these programming communities,

555
00:53:00,720 --> 00:53:06,520
even when the technologies are disparate and the solutions we're solving for are,

556
00:53:07,220 --> 00:53:11,140
or the problems we're solving for, are very different. I think we can learn a lot. And I

557
00:53:11,200 --> 00:53:13,600
like that about Django and Python.

558
00:53:18,140 --> 00:53:22,760
[CLAIRE] Well, I've definitely, I'm going to follow up on a bunch of the leads and tips and links

559
00:53:22,870 --> 00:53:27,660
and things I'm going to get from you here, because I do think there are, even when we

560
00:53:27,840 --> 00:53:32,380
work in different technology, parts of the technology stack, we're still people trying

561
00:53:32,380 --> 00:53:33,940
to figure out how to make things happen together.

562
00:53:34,470 --> 00:53:35,440
We still need processes.

563
00:53:35,730 --> 00:53:36,840
We still need to help each other.

564
00:53:36,930 --> 00:53:41,020
And there's a lot we can learn from each other, which I think is pretty awesome.

565
00:53:42,220 --> 00:53:47,340
Okay, so is there anything else that you want Postgres people,

566
00:53:48,010 --> 00:53:51,300
whether they are users or developers and contributors and committers,

567
00:53:52,840 --> 00:53:58,980
to keep in mind or to know wearing your Django hat and your Python hat?

568
00:54:01,000 --> 00:54:04,180
Okay, besides that they should all listen to the Talking Postgres podcast.

569
00:54:04,430 --> 00:54:06,220
Okay, because that kind of goes without saying, right?

570
00:54:06,760 --> 00:54:08,280
[DAWN] That's number one!

571
00:54:11,360 --> 00:54:19,560
I think we are in, so this has nothing to do with languages or technology, and I love that this is a human approach.

572
00:54:20,080 --> 00:54:29,420
I think we're in a really interesting time in tech where open source kind of won.

573
00:54:30,220 --> 00:54:35,920
There was a while, and we've kind of won for the last maybe decade or so, I think.

574
00:54:36,440 --> 00:54:37,820
So we can gloat a little bit.

575
00:54:39,380 --> 00:54:49,120
And there is ways that people are able to sustain themselves, have families and have fruitful lives and contribute or focus their careers around open source.

576
00:54:49,300 --> 00:54:58,800
And it's because there is this there's path to symbiotic relationships between the open source tools that you're building and the people who benefit from using it.

577
00:54:59,090 --> 00:55:11,440
And then, you know, funneling funds from one place to another that sustains lives and treats people like humans first.

578
00:55:12,620 --> 00:55:13,200
It's not easy.

579
00:55:13,680 --> 00:55:19,420
I think there's many podcasts now that have popped up talking about how do we fund and

580
00:55:19,650 --> 00:55:23,000
maintain open source and sustain open source.

581
00:55:24,010 --> 00:55:31,520
But if I could like charge with everyone here about looking to different communities, I'm

582
00:55:32,060 --> 00:55:35,700
organizing a conference in Tanzania for the second time.

583
00:55:36,540 --> 00:55:37,700
It's called DjangoCon Africa.

584
00:55:37,870 --> 00:55:41,660
If you're interested in participating, you are more than welcome to join.

585
00:55:41,880 --> 00:55:47,220
I think we're going to have some friends and partnerships with Canonical as well, and Ubuntu.

586
00:55:47,760 --> 00:55:50,820
So if those sound really interesting, join and have fun with us.

587
00:55:51,240 --> 00:55:59,020
But really think about like, think globally and act locally is, yeah, that's what it's boiling down to.

588
00:55:59,120 --> 00:56:06,520
Think globally and act locally on your open source experience, on treating people as humans first,

589
00:56:07,400 --> 00:56:18,920
And lending your knowledge and your skills and your resources to this new era of open source and technology.

590
00:56:20,880 --> 00:56:25,920
[CLAIRE] Well, the good news is, and of course I'm biased, I think the Postgres open source project

591
00:56:26,300 --> 00:56:27,400
is very global.

592
00:56:27,940 --> 00:56:28,400
[DAWN] Yes.

593
00:56:28,510 --> 00:56:38,280
[CLAIRE] I did a talk last fall about as many contributions as I could gather to Postgres version 17, which

594
00:56:38,300 --> 00:56:41,620
was developed over a 16 month-ish long period.

595
00:56:42,400 --> 00:56:45,100
So I looked not just at the code contributions,

596
00:56:45,560 --> 00:56:49,440
although that was actually an important thing to pull,

597
00:56:49,200 --> 00:56:51,600
but also looked at conferences and who gave talks

598
00:56:52,040 --> 00:56:56,380
and who shared their expertise, who published podcasts,

599
00:56:57,759 --> 00:56:59,860
who organized conferences, right?

600
00:56:59,860 --> 00:57:00,940
It's not just about the speakers,

601
00:57:01,340 --> 00:57:03,980
but also about the people who do all that blood, sweat,

602
00:57:04,010 --> 00:57:06,060
and tears behind the scenes to make it happen.

603
00:57:06,720 --> 00:57:12,540
And anyway, I put together a map at one point where we looked at all the speakers and all

604
00:57:12,540 --> 00:57:14,480
the code contributors, and it is global.

605
00:57:15,540 --> 00:57:20,520
So we have people from all over the place, and some of whom are self-employed or work

606
00:57:20,530 --> 00:57:26,760
for teeny tiny companies, and other ones who might get paid by a larger company to work

607
00:57:26,980 --> 00:57:32,580
on Postgres full-time, which is pretty awesome to get paid for doing this type of work.

608
00:57:29,920 --> 00:57:30,320
[DAWN] Oh, cool.

609
00:57:33,780 --> 00:57:34,960
Where did you give that talk again?

610
00:57:35,120 --> 00:57:36,180
I need to go watch that.

611
00:57:36,380 --> 00:57:36,680
That sounds very, very cool.

612
00:57:37,440 --> 00:57:40,160
[CLAIRE] Oh, I'll drop the link in the show notes at PGConf.EU, which takes place in a different European city.

613
00:57:44,820 --> 00:57:49,160
Usually it's in October, and last year it was in Athens, Greece, which is super cool for me because I'm half Greek and I got to talk like a five-year-old, which is about the level of my language skills.

614
00:57:56,260 --> 00:58:01,960
But it was really an amazing event, and shout out to the people who organized it because we all had so much fun.

615
00:58:02,960 --> 00:58:03,580
[DAWN] That sounds fantastic.

616
00:58:03,620 --> 00:58:05,440
[CLAIRE] Okay, Dawn, I know you need to go.

617
00:58:06,660 --> 00:58:12,140
Thank you so much for coming on the show and sharing some of your perspective on Postgres.

618
00:58:12,440 --> 00:58:13,400
Good luck writing the book.

619
00:58:14,780 --> 00:58:18,040
I look forward to buying a copy as soon as it gets published.

620
00:58:19,100 --> 00:58:27,060
[DAWN] You don't have to buy one. I'll send you one. You're fantastic. You're in the awesome friends category. So I appreciate it.

621
00:58:26,080 --> 00:58:28,100
[CLAIRE] Well, then they need a signature on it, right?

622
00:58:28,140 --> 00:58:28,720
[DAWN] Oh, I got you.

623
00:58:29,690 --> 00:58:29,800
[CLAIRE] Okay.

624
00:58:30,140 --> 00:58:30,380
All right.

625
00:58:30,620 --> 00:58:30,680
Cool.

626
00:58:31,220 --> 00:58:31,420
All right.

627
00:58:31,420 --> 00:58:33,000
And best of luck with Anaconda, too.

628
00:58:33,500 --> 00:58:34,800
I'm sure you're going to enjoy it.

629
00:58:33,640 --> 00:58:36,320
[DAWN] Thank you so much. I miss you all a bunch.

630
00:58:37,660 --> 00:58:42,780
But I'm having fun with these new challenges. But we'll stay connected.

631
00:58:43,760 --> 00:58:45,260
[CLAIRE] All right, thank you and

632
00:58:50,440 --> 00:58:54,120
if you like today's episode, those of you who are listening, and you want to hear more of these

633
00:58:54,320 --> 00:58:59,220
Talking Postgres episodes you can subscribe on Apple, Spotify, YouTube, or wherever you get your

634
00:58:59,320 --> 00:59:05,020
podcasts. Please tell your friends too. And if you leave a review that helps even more people discover

635
00:59:05,030 --> 00:59:09,660
the pod. You can get to past episodes and get links to subscribe on the different platforms

636
00:59:10,060 --> 00:59:15,420
at TalkingPostgres.com. And transcripts are included on those episode pages as well.

637
00:59:15,870 --> 00:59:18,640
A big thank you to everybody who joined the live recording

638
00:59:19,280 --> 00:59:23,200
and participated in the text chat. Thank you again, Dawn Wages.

639
00:59:24,140 --> 01:01:11,760
[DAWN] Thanks so much.