#30: Python Community and Python at Dropbox Transcript
00:00 What does it mean to be a leader in the Python community?
00:02 Does it mean you contribute to open source projects?
00:05 You speak at conferences?
00:07 You start the largest user group?
00:09 You write a book?
00:10 You be a core contributor to the language?
00:12 The answer is yes.
00:14 And that's why Jessica McKellar won the Frank Wilson Award for contributions to the Python community.
00:19 She is the guest on this episode of Talk Python to Me.
00:22 It's number 30, recorded Thursday, September 24th, 2015.
00:27 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.
00:59 This is your host, Michael Kennedy.
01:01 Follow me on Twitter, where I'm @mkennedy.
01:03 Keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via at Talk Python.
01:09 This episode is brought to you by Hired and OptBeat.
01:13 Thank them for supporting the show on Twitter, where they're at hired underscore HQ and at OptBeat.
01:18 Hey, everyone.
01:20 I don't have any news this week, so let's get right to the show.
01:23 Let me introduce Jessica.
01:25 Jessica McKellar is a startup founder, software engineer, and open source developer living in San Francisco, California.
01:31 She works at Dropbox and enjoys the internet, networking, low-level systems engineering, relational databases,
01:38 tinkering on electronics projects, and contributing to and helping others contribute to open source software.
01:43 Her motto is, be the change you want to see in the world.
01:46 And she has been a director for the Python Software Foundation.
01:50 Jessica, welcome to the show.
01:53 Thank you for having me.
01:53 Yeah, I'm really excited to have you on the show.
01:56 You've been a long-time sort of Python hero to me.
02:00 I've seen some of your talks that you've done at conferences and keynotes,
02:05 and they were really inspiring.
02:07 So I'm excited to talk to you.
02:08 I really appreciate that.
02:09 You're welcome.
02:09 I'm excited to talk to you about this.
02:11 Thank you.
02:12 So before we get into all the awesome stuff you're doing at the outer edge of the Python world,
02:18 let's maybe take a step back and you could tell me a little bit about how you got into programming
02:23 and how you got into Python.
02:25 What's your story?
02:26 Yeah, absolutely.
02:27 So I was not one of those people who was programming since birth.
02:32 I was a big science nerd in high school, and I actually declared chemistry as my first major.
02:37 And I actually have a chemistry degree.
02:39 That's my first bachelor's degree.
02:40 But I had a bunch of friends.
02:42 I went to MIT, and I had a bunch of friends who were pursuing computer science degrees while I was busy pursuing my chemistry degree.
02:50 And, you know, I would sort of look at them out of the corner of my eye, and I would look at what they were learning.
02:55 And it seemed like this, they were really learning this toolkit.
03:00 Like they were learning a toolkit full of tools for solving many different types of problems in the world.
03:05 And that seemed very attractive to me, and also, frankly, very different from what I was getting with my chemistry degree.
03:11 And I wanted to try out what learning that toolkit felt like.
03:17 And I ended up taking some computer science classes.
03:19 I was pretty immediately hooked and ended up getting a computer science degree and then also a CS master's.
03:25 That's cool.
03:26 What was your first programming class language?
03:28 Well, yeah.
03:29 So I was at MIT right when they were in the middle of this big transition from Scheme, which is a dialect of Lisp, to Python.
03:38 So my first couple of classes were in Scheme.
03:41 And then sort of the back half, many of them were in Python.
03:45 Oh, that's nice.
03:47 So my first computer science class was also in Scheme.
03:51 And I do wish it was in Python.
03:54 You know, no disrespect at all, but Python is just so much better, in my opinion.
03:58 I mean, Scheme is a very interesting learning language.
04:01 But I think that, so there was a very conservative, so the reason why there were, well, one of the reasons for this transition was, like, some pretty serious declining enrollment numbers in the computer science program.
04:13 So it was part of this big revamp to make the program accessible, A, to, like, a diverse set of backgrounds.
04:20 You know, I think that there had been a sense previously that you really sort of needed to have already been programming, you know, in high school for you to really seriously consider doing it at university.
04:32 And they wanted to open up the door towards a more diverse set of backgrounds and to make it also a more interdisciplinary curriculum.
04:39 And I think enrollment has been, you know, sort of skyrocketing since that change, which is exciting for me.
04:46 That's really great.
04:47 I don't know why, but it's definitely, I definitely get the sense that Python is more welcoming to people from different backgrounds.
04:55 And it just seems to bring greater diversity.
04:57 I do conference speaking.
04:59 I do training in a variety of languages.
05:02 And when I do Python, it feels like the people in the audience are much more representative of the general population.
05:09 I don't know why.
05:10 Maybe you have better insight than I do.
05:12 But it's a good thing for whatever reason that's true, you know?
05:15 Yeah, so certainly, A, the Python community has made very concerted efforts internationally to be a very welcoming community, in particular to first-time programmers.
05:26 And then also, I mean, the language, sort of this batteries-included philosophy means that if you're just learning how to program and maybe you're not sure if this is for you,
05:35 I mean, you know, the fact that after just a couple of hours of learning the language basics and then a couple of lines of code,
05:42 you can do something that is actually pretty exciting, it really hooks people.
05:47 Yeah, I think you're right.
05:48 I mean, programming is so fun and so interesting.
05:53 But when you're new, it's not fun and interesting.
05:55 There's all these little terrible details like, how do I declare a variable?
06:00 And why does a semicolon go there?
06:03 And why do I need to know how to declare a class to declare a function just to, like, print?
06:07 You know, there's, like, all these stuff you've got to make, sort of, make your way through believing on the other side and there will be something interesting and cool you can do.
06:15 But it takes a long time with a lot of languages.
06:17 And like you said, like, Python, you get to that gratification a lot quicker.
06:20 Yeah.
06:22 So what was it like doing computer science at MIT?
06:25 I mean, that's one of those schools that's definitely up there on a pedestal.
06:29 And I bet it's a pretty interesting environment.
06:31 Can you tell me what that was like?
06:32 Yeah.
06:33 Well, the pedestalization is funny because, honestly, the school is very similar to lots of other, you know, STEM-focused universities, you know, in the country and around the world.
06:46 And the thing that you really benefit from at MIT is the network.
06:48 But, yeah, you know, I received a nice, rigorous computer science education.
06:51 I learned a lot.
06:52 One of my fondest memories, although maybe it wasn't fond at the time.
06:59 So I had this, like, fairly compressed computer science education there because I spent the first two years getting a chemistry degree and then the last two years getting a CS degree.
07:08 And so I ended up sort of like the time from first computer science class to taking grad classes was rather condensed.
07:16 And I have this really distinct and fond memory of taking, there's this sort of famous operating systems class, 6828.
07:23 And, like, that was the class where I really learned how to be a systematic debugger.
07:29 Because, I mean, when you're building an operating system from scratch, and this wasn't in Python, but, you know, debugging is universal.
07:35 It's all programming languages.
07:36 But when you can't trust, like, your page table implementation, you can't, like, trust anything about your kernel, you really learn how to be systematic about these things.
07:47 And I look back on that very fondly.
07:49 It's, like, sort of very rigorous.
07:50 It was very hard for me at the time, but I learned a ton from it.
07:54 I can imagine that, you know, if you mess up the memory implementation or something, like, that's pretty critical.
08:00 It's not just, like, you're off a little bit, right?
08:03 Something goes really wrong.
08:04 So, yeah, that's really, I'm sure that was interesting.
08:06 Was that in C?
08:07 Yeah, and a lot of assembly.
08:08 Yeah, I'm sure it was fun.
08:10 Like you said, I'm sure the most important part is just being around a bunch of smart people, super excited about programming, just kind of immersing yourself in that world.
08:20 Yeah, totally.
08:22 The reason I reached out recently to you is you got a big honor in the Python community, and you won this thing called the Frank Wilson Award.
08:31 Yeah.
08:31 Yeah, congratulations on that.
08:33 Oh, thank you.
08:34 You want to talk about that a bit?
08:35 Maybe tell us all what it is first.
08:36 Sure.
08:37 It's mostly a recognition of a sort of sustained involvement and investment in the community in particular.
08:43 And that is pretty much my cup of tea here.
08:47 So I do, you know, I have contributed to the language.
08:50 I'm a maintainer for various open source Python libraries.
08:54 But a lot of what I'm invested in is the community side.
08:58 I guess some of the things that I've done over the years have included being an organizer for the Boston Python user group, which became the largest user group in the world.
09:07 How big is that?
09:08 Several thousand people.
09:11 That's pretty awesome.
09:12 You can't have everybody attend, right?
09:14 No, you can't.
09:16 But it's this really wonderful both sort of online and offline community.
09:19 And there are a bunch of people who deserve a ton of credit for this.
09:23 It's certainly not a one-person effort.
09:25 A big part of the growth was around us making a very concerted investment in attracting and retaining sort of diverse backgrounds in the community in Boston.
09:38 So Boston, it's a college town.
09:40 You have a ton of students.
09:41 There are a bunch of fields adjacent to just sort of pure software engineering that are very well represented.
09:48 It's a big biotech community.
09:51 The sciences are very well represented there.
09:54 Yeah, you've got all that high-tech stuff.
09:56 What is that?
09:57 Route 128 or something sort of on the ring out there.
10:01 There's a lot of really cool companies.
10:04 Yes.
10:05 So you have this opportunity to have a bunch of sort of really interdisciplinary, wonderful interdisciplinary discussions,
10:10 and then also to be very concerted about attracting diversity amongst other demographics.
10:16 So we had a very concerted push where it was getting more women into the community, for example, to get more students into the community.
10:21 And that was a big part of our growth.
10:23 And that model, sort of the model that we built out was starting with sort of an introductory series of programming workshops
10:32 and building that into a pipeline of sort of project nights where you come and you can get mentorship on whatever projects you're working on to intermediate Python workshops.
10:44 And then sort of being well-situated at that point to be just a general, fluent member of the community.
10:50 And so this sort of pipeline model has been emulated in a bunch of other cities and has proven pretty successful.
10:58 Sure.
10:58 I currently am not in Portland, Oregon, but I live in Portland, Oregon.
11:02 The Python user group there seems to be modeled very much like that.
11:07 They've got like a peer mentoring night.
11:08 And then once a month they've got like, you know, more formal speaking.
11:11 And then they've got a lot of different levels.
11:13 And I think that that's really pretty key to making it successful, like you say.
11:17 Yeah.
11:18 I've actually been to the Portland user group on a couple of occasions.
11:20 Oh, nice.
11:21 Yeah.
11:22 Yeah.
11:22 Yeah.
11:22 Very cool.
11:23 You know, it seems to me like if you're just a student or somebody, if you were to go to, I don't know, user group with some famous speaker talking about the nuanced bits of some advanced piece of the language or some library or technology, right?
11:37 That's sort of inaccessible to you.
11:39 But I think having this pipeline that slowly brings people more in is probably good.
11:44 Yeah.
11:45 And you want the super advanced stuff too, right?
11:48 I definitely want to be, you know, have an opportunity to talk with experts on advanced topics.
11:54 But having, you know, sort of having the beginner, the intermediate, and the advanced topics covering your attendee base is definitely important.
12:01 Yeah.
12:01 That's super cool.
12:02 Okay.
12:02 So Python user group in Boston, we're going to name some other things.
12:07 I derailed you.
12:09 I know you have a bunch more.
12:10 I spent a lot of time speaking.
12:12 I'm sorry.
12:12 I mean, I was a director for the Python Software Foundation for a couple of years, a co-chair for the Outreach and Education Committee, which is sort of specifically dedicated to bringing Python into schools and learning communities and attracting diverse audiences.
12:31 So what level were you focused at?
12:33 Was that university?
12:34 Was that high school?
12:35 In general?
12:36 It's really everything.
12:37 And actually, a lot of it is sort of learning opportunities and learning communities outside of the formal education system.
12:46 So supporting a lot of these, you know, workshops for sort of a diversity-focused workshops or perhaps like an after-school program for kids where they might not otherwise have a formal opportunity to learn how to program.
12:59 It was really the full spectrum.
13:00 Okay.
13:01 Yeah, that's cool.
13:01 A lot of international investments, which is really cool.
13:05 So we've definitely given grants to people on probably every continent except Antarctica.
13:11 Yeah, which is very cool.
13:14 Yeah, there's not a lot.
13:15 There's probably only scientists on Antarctica, aren't there?
13:18 We'll get them, though.
13:18 We'll get them.
13:19 They probably brought Python with them, actually, keeping it warm and somewhat.
13:24 One of the things that I really liked that you did was a talk, I think it was in New Zealand at KiwiPyCon.
13:33 Is that right?
13:34 I did give one of those, yeah.
13:35 Yeah, yeah.
13:36 And you said you titled it something like Choose Your Own Python Adventure.
13:40 Do you remember that talk?
13:42 I do.
13:42 Yeah.
13:43 Yeah, that was really, really good.
13:45 And let me see if I can summarize it.
13:47 We could talk about it a little bit.
13:48 So, you know, you kind of said, like, look, we want development and programming in Python to be wonderful and delightful.
13:56 And there's a lot of positive stuff happening, like you talked about, the adoption growth and things like that.
14:03 But you wanted to make sure that it keeps growing.
14:06 And there was maybe some challenges that you said, look, we need to address these things.
14:12 The number one issue that you brought up, which I thought was pretty interesting and resonated with sort of my experience as well, was Python on Windows.
14:19 Yeah.
14:21 So what's the problem with Python on Windows, even though it is getting better?
14:24 It is definitely getting better.
14:26 And the talk was a couple of years ago.
14:27 And there have been some, you know, there's been a lot of investment since then.
14:31 But this stems from, I think, an issue that is common in many communities and, you know, also, like, many startups.
14:42 Like, there are many contexts in which this is true, which is just that the developers are using a different environment than the preponderance of the users.
14:51 So the vast majority of people who are programming in Python are programming on Windows.
14:55 And very few of the people contributing to, like, the CPython code base use Windows.
15:01 And that creates a disconnect around, you know, you need to be, you need to have a good understanding of what the experience is.
15:10 In particular, sort of the early experience, the onboarding experience, the installation experience for the vast majority of your users.
15:16 And, like, take that empathy back and invest it in the language.
15:21 And so a lot of it stems from that.
15:24 Just not having a lot of people regularly experiencing what it's like to be a beginner in the language on Windows.
15:31 And so I think the key challenge is, A, like, attracting folks who do have that background and welcoming them into the development community.
15:39 And then also just being more conscientious about and proactive about addressing that very large segment of our user base.
15:47 And some of this is, so I come from sort of startup land.
15:52 I've been through a series of startups and acquisitions.
15:54 And I tend to think about everything in life, including the Python community, in terms of, like, a pretty standard, like, user retention funnel analysis.
16:04 And if you think about it, it's like, okay, Python wants to be a language that hopefully, like, many, many people are still using for a diverse set of, you know, in many diverse areas for many years to come.
16:18 And to do that, we need to be getting new developers and retaining them.
16:24 And it's sort of like, at your big top of the funnel is all of these new users, most of which are on Windows.
16:30 And then, you know, you get those folks to use the language, maybe in a basic way, maybe in school.
16:35 You want to retain them through them using it professionally.
16:38 And then you want to convert some of those folks, hopefully, into becoming active contributors back to the language and community.
16:43 And the thing that we can, it's easy to, it's easy to focus on things that impact a smaller set of the funnel, if you're not really conscientious of what the broader funnel looks like.
16:57 Because, like, there's a disproportionate impact for focusing on the top of the funnel, the widest part of the funnel.
17:02 So, like, investments that you make that make the first five minutes of using Python better are going to have an impact on, like, hundreds of thousands of people.
17:13 And then fixing, like, a particular bug that affects, like, some specific bug and some specific library potentially is still very important, but may impact a smaller number of people.
17:26 Which is not to say that we shouldn't do both, but we should be conscientious as a community about ensuring that we're investing enough in the top of the funnel.
17:34 Yeah, it's really interesting to view the ecosystem and lifecycle of a language through growth hacking terms.
17:42 But that's really cool.
17:43 Yeah.
17:44 But it makes perfect sense.
17:46 I can't help it.
17:46 No, of course.
17:46 And it makes perfect sense.
17:48 You're right.
17:49 There is a disconnect.
17:50 I mean, if you take the time and you make, let's just focus on Windows, but it could be basically getting started anywhere.
17:55 If you make getting started with Python on Windows better, you're not going to go to the conference necessarily and go, oh, that's the guy that made that better.
18:04 Because everybody there, like, doesn't hit that problem.
18:07 They're way past it.
18:08 Right?
18:08 But if you make, you know, coroutines just slightly more efficient, they might cheer when they see you or something, you know?
18:14 But like you said, the people that are coming in, they feel that pain.
18:20 And I've done a lot of training where, you know, there's 30 Dell and HP laptop screens or, you know, backs facing me.
18:28 And there's a lot of, well, it says Python is not found when I type Python.
18:34 It's like, okay, well, did you restart the command line, the command prompt after you installed it?
18:38 There's just all that friction, right?
18:41 Yeah.
18:42 And to be clear, I'm definitely not knocking.
18:44 Folks should do what they're passionate about.
18:46 And if the thing that people are passionate about is, in fact, like optimizing how coroutines work, that's fantastic.
18:52 It is sort of collectively as a community.
18:55 We should value and we should incentivize and recognize the efforts that do impact this big part of the funnel that has historically been underserved.
19:05 Yeah.
19:06 So, you know, I just, I totally agree.
19:08 And I guess I should recommend that people watch that video of yours, even though it is a few years ago.
19:13 I'll put it in the show notes because I think it is, like you said, it's a place to have where there's sort of low-hanging fruit that can have really big impact on people.
19:23 So, what do you think about things like IDEs and stuff like that that maybe do a little more hand-holding for getting people started?
19:30 This episode is brought to you by Hired.
19:43 Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.
19:50 Each offer you receive has salary and equity presented right up front and you can view the offers to accept or reject them before you even talk to the company.
19:59 Typically, candidates receive five or more offers in just the first week and there are no obligations, ever.
20:05 Sounds pretty awesome, doesn't it?
20:07 Well, did I mention there's a signing bonus?
20:10 Everyone who accepts a job from Hired gets a $2,000 signing bonus.
20:14 And as Talk Python listeners, it gets way sweeter.
20:18 Use the link Hired.com slash Talk Python to me and Hired will double the signing bonus to $4,000.
20:26 Opportunities knocking.
20:27 Visit Hired.com slash Talk Python to me and answer the call.
20:41 I mean, in general, I think that that's great for people where it works and for environments where it works.
20:47 And it's certainly very common in schools.
20:49 I have a...
20:51 I don't actually know if this is a majority opinion or a minority opinion, but I have a strong opinion on this, which is that I think that...
20:59 So in general, with Python, it's like there's one...
21:02 Explicitness is better than implicitness.
21:04 And there's hopefully one obvious and good and correct way to do things.
21:08 One of the places where we don't sort of adhere to that philosophy is in how we recommend that people get started.
21:15 And I actually think that there's an opportunity for us to be more opinionated with new learners about how to set up their environment in a way that will sort of maximize their chance of being successful new learners of the language.
21:31 Like, if you currently...
21:32 Like, if you go to Python.org right now and you, like, try to follow the instructions for how to get your development environment set up, it's like there are many forking recommendations.
21:41 And we try to be this sort of neutral place.
21:44 And I understand why there's a temptation to present yourself as, like, neutral and providing all the options.
21:51 But the problem is that a new learner doesn't know enough to know what the...
21:56 Like, to determine what the right answer is.
21:58 And so, like, being opinionated about potentially an IDE...
22:02 I mean, maybe the answer is an IDE.
22:03 Maybe it's not.
22:04 And just, like, a super vanilla, like, sort of terminal-based education is okay.
22:09 But I think we should be considering having a more opinionated stance on what development environment we recommend for new learners.
22:14 Yeah, I think that makes a lot of sense.
22:17 I mean, you don't want to alienate some significant portion of the population saying, use EMAX, don't use EMAX, use PyCharm, don't use PyCharm, whatever, right?
22:25 But when you're new, recommendations, if you say, well, here's four good choices, and then, like you say, it's just...
22:33 It's tough.
22:33 So, do this, get started, then make your choices down the road or something.
22:38 Yeah, I'm not really sure what the choice is or the right choice is either, but...
22:42 But I think it's a conversation worth having.
22:43 Yeah, I definitely think it's a conversation worth having.
22:46 So, one of the things you did, as you said, for a while, you were the PSF director.
22:51 So, what does the director do, and what's that like?
22:54 I bet that's a crazy role to have.
22:56 And so, and just to clarify, there are several directors that work together, sort of as a committee.
23:01 And so, this is the...
23:05 So, the Python Software Foundation is a 501c3 nonprofit.
23:08 And it's sort of the stewarding arm for the community.
23:11 And it also, as this nonprofit, has the ability to collect and disperse funds towards investments in the community.
23:17 So, a big part of what we do is to sort of get funding and then reinvest it in the community in a smart way.
23:25 We also do things like underwrite PyCon.
23:28 So, those are the two big things that we do.
23:30 And there's also sort of an aspect with this investment of...
23:35 And so, like, what are you investing in?
23:37 You want to invest in accelerating development of the language.
23:41 Invest in development of the popular libraries and maybe new libraries.
23:47 New initiatives.
23:48 Not new anymore, but, you know, back in the day, we gave a big grant to PyPy, for example.
23:52 So, you know, potentially new initiatives that would accelerate the language or broaden the set of domains in which Python is an excellent language to use.
24:00 And then also investing in, like, local community initiatives, which includes everything from local workshops to regional Python conferences.
24:08 Okay.
24:09 Yeah, that's really cool.
24:10 Does trying to promote Python 3 fall under that banner?
24:13 Yes.
24:15 Yes, I would say yes.
24:16 We tend to...
24:17 I mean, so, just to be clear, the PSF doesn't try to dictate sort of details of the language.
24:24 But definitely, Python 3 is important, A, because it's the future of Python, and B, because it's important that as a community, we communicate a clear direction externally.
24:35 Like, it can be very confusing, again, potentially to new learners and maybe companies that are thinking about,
24:40 what languages they want to use for a new software stack.
24:43 Like, they want to be confident that the Python community knows what it's doing and has a clear sort of future direction.
24:48 So, to the extent that that is a part of sort of the outward communication mission of the PSF, yeah, that's definitely important to us.
24:54 And we also, like, we have funded...
24:56 We've given away grants to port, like, major libraries to Python 3 and things like that.
25:01 Right, sure.
25:01 I had Chris McDonough on the show, and he's talked about, you know, you guys, I don't know if you were involved directly, but, you know, PSF sort of nudged him to get Pyramid to run on Python 3, where he was...
25:13 Yeah, totally.
25:14 You know, not exactly.
25:15 Rushing in to get it done, because he was actually working.
25:17 Things like that.
25:19 Right now, professionally, you're working at Dropbox, right?
25:23 Out in San Francisco?
25:24 Mm-hmm.
25:26 That must be a pretty awesome place to be.
25:27 Yeah, it's been a lot of fun.
25:29 So, as I said earlier, or as I alluded to earlier, I come from sort of a series of startups and acquisitions, and the latest startup and acquisition have landed me at Dropbox.
25:40 And I had been in Boston for 10 years coming out of university, and sort of the inexorable pull of Silicon Valley finally got a hold of us.
25:48 We all moved out west.
25:50 And, yeah, so I'm a director of engineering at Dropbox.
25:52 I run the engineering group that is responsible for all of the sort of platform software.
25:59 So, this includes the desktop clients, our mobile apps, and web as a platform.
26:03 Incidentally, Guido is a part of this group.
26:06 Yeah, that's awesome.
26:07 So, what's it like to work with him?
26:09 Yeah, I mean, he's...
26:10 Well, if you've ever...
26:12 For anybody who lurks on the Python dev mailing lists, it's about like that, but at work.
26:18 But, you know, Guido has, you know, he has such expertise with...
26:23 Like, when you think about, like, what developing a language...
26:26 Like, what skills developing a language entails, those are skills that are incredibly useful when architecting complex systems, like thinking about abstractions that need to be very long-lived, perhaps with API design, for example.
26:39 So, you know, he's a very...
26:41 He brings a lot of excellent expertise to the table at Dropbox.
26:45 I'm sure.
26:45 We also tend to get...
26:46 We get into an occasional Python-related flame war, but that's par for the course.
26:51 Yeah, I'm sure.
26:52 Yeah, I mean, one of the really valuable skills that I can think of is, like, simplicity.
26:57 Yeah.
26:58 People see something that is simple, and they think, well, that must have been easy to build, because it's simple.
27:02 Right.
27:03 You know, that's hard with languages.
27:06 That's hard with complex software.
27:07 But it seems like he's at least nailed it for Python, the language.
27:12 I haven't seen the Dropbox codes.
27:14 I can't say for sure, but I bet that skill transfers over.
27:17 Yeah, definitely.
27:19 Well, and, you know, so the Dropbox desktop client is written in Python.
27:21 It's one of, if not the largest, you know, pieces of desktop client software that is out in the world.
27:30 You know, Dropbox has 400 million users.
27:31 There aren't that many pieces of desktop software that aren't sort of bundled with an operating system distribution that have that level of user base.
27:39 So that's all in Python.
27:40 It's not in Python 3, although we periodically...
27:43 You know, it's a very large historical code base, but we do periodically revisit, if we're going to...
27:49 Make the jump to Python 3.
27:51 That's super interesting.
27:52 I did know that, and I thought it was great.
27:55 So I'm glad you brought it up.
27:56 Can you talk a little bit about, like, just, you know, the internals, the libraries you're using, how you build it, how you distribute it?
28:04 Like, what's the story with that?
28:07 I don't actually think that I'm allowed to.
28:09 Sorry.
28:11 Okay.
28:11 I don't want you to do anything you can't do.
28:14 But, you know, a lot of people build, you know, little utility scripts, or there's a ton of web applications and data science apps.
28:21 But the sort of, here's the thing with the UI that I can ship in Python is really interesting.
28:28 Yeah.
28:29 Well, Python has taken us a long way.
28:30 I mean, Dropbox has been around since 2007.
28:32 And, you know, Python gives you this cross-platform desktop client software that you can develop against pretty rapidly.
28:41 You know, we've certainly benefited, I think, quite a bit from making this early language choice.
28:47 I mean, there are pros and cons.
28:48 Like, there are definitely alternative models for desktop client development, but it's definitely served us pretty well.
28:52 Yeah.
28:52 It seems like it has served you guys really well.
28:55 And when I think of companies that are, like, making major use of Python, well, Dropbox, maybe along with Google and a few others, is right there at the top.
29:03 Can you give us kind of a sense of, like, all the things you're doing with Python there?
29:08 Or you and other people, obviously.
29:10 In addition to our desktop client being written in Python, the majority of our server-side code is in Python as well.
29:17 So we pretty much use it for everything.
29:19 There's a little bit of Go.
29:20 I mean, our mobile apps are written in the languages you would expect, but Python is definitely the majority language.
29:25 So do you want to talk a little bit about some of the open source projects you work on?
29:30 I saw your core contributor to Twisted, for example.
29:33 Yeah.
29:34 So, and I have to admit that sort of there's an ebb and flow to how much of my time is spent on sort of the community and the people parts versus the technical parts.
29:45 Yeah, so I, the first open source project that I ever contributed to was Twisted.
29:51 It came out of an internship that I was doing at VMware.
29:55 I was using Twisted.
29:57 So Twisted is an, I mean, maybe everybody knows it, but Twisted is an asynchronous networking library written in Python.
30:02 And I was using some of the primitives and some of the documentation was a little unclear to me.
30:08 And I thought, oh, hey, this would be a great opportunity to, like, try my hand at making my first ever open source contribution.
30:15 So I created a little tiny diff for, like, a little bit of a documentation change.
30:19 And, like, very nervously, I, like, quadruple checked all of the instructions, like, contribution instructions.
30:27 And then, like, you know, opened up a ticket and, like, quadruple checked all of the ticket fields.
30:33 And then, like, sort of sweat a little bit with my hand hovering over the submit button.
30:37 Like, finally press submit.
30:38 And, of course, everyone was super nice.
30:40 So Glyph, who was the creator of Twisted, who incidentally, this is what San Francisco is like, incidentally, he lives in my apartment complex now.
30:46 Oh, wow.
30:47 What a small world, huh?
30:48 Right.
30:48 So Glyph, who's the creator of Twisted, and a bunch of other folks were super friendly, very willing to handhold me through the process.
30:56 You know, I ended up making some more small documentation contributions.
31:02 Like, ended up sort of getting pretty involved in the community.
31:04 Ended up becoming a core committer.
31:07 I ended up writing a book about it with O'Reilly.
31:09 So that first little, like, nervous documentation contribution ended up being a very important...
31:16 A, it was very important for me because that was such a positive first experience with contributing to an open source project.
31:24 Like, I want everyone to have that positive first experience.
31:27 It was very important for me.
31:28 And hopefully, also, it's been a good investment for Twisted, given that I've managed to stick around.
31:33 So that's one of them.
31:36 And then OpenHatch is...
31:38 Well, it's both a website and a nonprofit dedicated to lowering the barriers to entry for open source contribution.
31:44 And I've been fairly involved with them as well.
31:47 And then I just, like, miscellaneous patches here and there to various other projects.
31:51 Yeah.
31:51 Core Python.
31:52 Yeah, that's really cool.
31:53 I think that's one of the nice things about the Python community.
31:56 They seem pretty welcoming to new folks.
31:58 Whereas, you know, if that was like a C++ project, they might have, I don't know, not been as welcoming, right?
32:04 It could have been, oh, you did this wrong or whatever.
32:07 Well, I hope that all language communities and all sort of libraries are recognizing how important it is to provide a good initial experience for potential contributors.
32:18 Because it's so important for you.
32:20 Like, if you want your language or your library to continue to evolve and be popular, like, you need to be ingesting new contributors who can pick up some of the development.
32:31 So hopefully people are learning that.
32:33 That's for sure.
32:34 And I think things like Git and GitHub and Bitbucket are really sort of opening the door to make this feel, you know, less threatening as well, right?
32:42 You're not cruising around SourceForge trying to use some old clunky tool to get a check-in to go in or something.
32:49 Yeah, definitely.
32:50 Do you have a favorite open source project?
32:53 Whether you contribute to it or not.
32:55 Geez.
32:58 Or how about one, you know, one or two of your favorites?
33:01 You don't necessarily have to exclude, be exclusive.
33:05 I mean, that's, I feel like I can answer this question on a number of different levels.
33:09 So I have used Django at this point through several startups.
33:15 And I think that Django was a very important thing to have flourished in the Python community.
33:21 Like for, you know, it really was a big part of opening up Python being a serious language for many types of website developments.
33:32 So A, on a personal level, having used it quite a bit.
33:36 And then B, because I think it's had like a very material positive impact on the community.
33:40 That's probably a choice.
33:42 Yeah, I would say Django definitely has had a really big impact.
33:47 So that's a good one.
33:48 Yeah.
33:49 You know, Python itself.
33:51 But that's kind of assumed, right?
33:53 Sure.
33:54 Yeah, yeah.
33:55 And having contributed to CPython, my challenge for us would be that I think we haven't quite cracked the nut on getting really good, sustained new developers to core Python.
34:11 And that's a thing that we should, that's nothing we do need to crack.
34:15 Yeah, absolutely.
34:16 And Guido actually made a, you know, that a key part of his keynote at PyCon, right?
34:21 Yeah.
34:22 Yeah.
34:22 So it's tough, though.
34:24 You know, it's a very different world than Python.
34:28 And people are drawn to Python, the language.
34:31 And then you go look at CPython, and it's, to some degree, a totally different type of programming and skill set and so on.
34:38 Yeah.
34:39 One, it's a very mature project.
34:41 Just in terms of it's been around for a while.
34:44 It, you know, it's, it is the language.
34:48 So sort of the commitment to quality needs to be very high.
34:54 Like, we can't sort of regress, regress functionality for the hundreds of thousands of people who develop against it.
35:00 And then, you know, millions of people who end up sort of using the end software that's developed.
35:05 So it's like, it's very mature.
35:07 There's like a fair amount of process.
35:09 And that's all important and necessary.
35:11 But figuring out how to balance that, again, making it an accessible environment for new contributors.
35:16 Yeah, sure.
35:17 I mean, if you're writing software used by that many people, you've got to deal with every edge case.
35:21 Be just super careful.
35:23 And then on top of that, it's C, which means it's a little harder to do.
35:26 This episode is brought to you by OpBeat.
35:42 OpBeat is application monitoring for developers.
35:45 It's performance monitoring, error logging, release tracking, and workflow in one simple product.
35:50 OpBeat is integrated with your code base and makes monitoring and debugging of your production apps faster.
35:56 And your code better.
35:57 OpBeat is free for an unlimited number of users.
36:01 And until recently, it's only been available for Django developers.
36:04 But I'm happy to tell you they are launching Flask support.
36:07 Visit opbeat.com slash Flask to be amongst the first to join the Flask private beta.
36:23 I think it's important that people that work in Python kind of at least have a conceptual understanding of what's happening down in the CPython layer.
36:32 There's a guy named Philip Guau who did a really cool thing.
36:37 He took his graduate class that studied the CPython code base and then took that and put it on YouTube.
36:44 So there's this thing called, he called it the CPython 10-hour code walk or something like that.
36:50 And then I had him on show 22 to talk more about it.
36:53 So I totally recommend people check that out if they want to know more about CPython.
36:57 Yeah, totally.
36:58 And I also, this is such a who's you.
37:01 So I know Philip.
37:02 We were actually, well, I actually know him through a couple of channels.
37:06 But then we were at this, how would you describe it?
37:10 So there's a community that used to be called Hacker School that is now called Recurse Center.
37:15 Which is, it's sort of like an artist in residence program for programmers.
37:19 It's sort of, it's a fairly unstructured environment where you go and you sort of invest in your programming skills for several months.
37:27 And I have sort of been a visiting speaker at that program, as has Philip.
37:33 So, and we've actually crossed paths physically there as well as on the internet.
37:36 So small world as per usual.
37:38 It definitely is.
37:40 Where was, if that was a thing in person, where was that?
37:42 Oh, so Hacker School and now Recurse Center is in New York.
37:46 So, you know, I brought up your video, the Choose Your Own Python Adventure.
37:50 Are there other videos that are out on YouTube or other places we can find that people should check out if they're interested in more?
37:57 Like, of me?
37:58 Yeah, I mean, of like talks that you've given that you think, hey, people should check this out.
38:02 Or I guess other ones as well.
38:03 I mean, so many of the talks that I've given at various Python conferences are online.
38:09 And you can find them on PyVideo.
38:11 But maybe one of the most gratifying things for me is, so for a couple of years at PyCon US, I did an intro to Python tutorial.
38:22 So, you know, it's a three-hour tutorial for absolute beginners as soon as no prior programming experience.
38:27 Like, we do, we walk everyone through everything, like, from the installation and environment setup on through the first couple of hours in the language.
38:36 And that's, I've read something like 200,000 people have watched those videos, which is, like, that's a lot of people.
38:45 Like, that's incredibly gratifying to me that there are that many people who were, like, wanted to learn Python and then took the time to have that first experience watching, you know, like, sort of watching that PyCon tutorial.
38:57 So that's the one that I maybe was proud of.
38:59 Okay, that's really cool.
39:00 I mean, just the thought that you've, you know, influenced that many people down that path has got to be gratifying.
39:06 Yeah.
39:08 And I, you know, I really, like, the beginners are where my heart is.
39:13 And I think some of that comes from being, I mean, comparatively, sort of, comparatively, quote, unquote, late to learning how to program.
39:22 So not starting until university.
39:24 And then being, you know, honestly, being surrounded at school by people who had been doing it for a lot longer and really sort of feeling like I was catching up for a long time.
39:34 I think that built up a lot of empathy that has stayed with me through the years around, like, what it's like to be a new programmer, what it's like when everything maybe feels foreign and you maybe are surrounded by people who it feels like have been doing this for longer than you.
39:48 And it's really wanting to provide an excellent experience for those people.
39:51 That's really interesting.
39:53 I hadn't really thought of it that way before.
39:55 But I didn't get into programming until, like, a ways into college.
39:58 And, you know, super deep into it until kind of my senior year almost in college.
40:04 And I think it does help you teach people who are new because the sort of pain of learning is fresh.
40:11 Like, if you learn it when you're 10 years old, it's like learning language.
40:14 Like, I don't remember how I learned English.
40:16 I just know English.
40:17 Right?
40:17 So I feel totally unqualified to teach English.
40:20 But I do remember learning programming and all the mistakes I made and so on.
40:25 So that's quite an insight.
40:27 What else would you like to talk about while you're on the show?
40:30 I think there's maybe a call to action here.
40:33 Yeah, absolutely.
40:34 Listeners.
40:34 Well, and I'm not sure, you know, they're probably listeners from many, many backgrounds.
40:39 But I would encourage everyone to think about sort of what they get out of Python, the language and community.
40:44 And to consider, if you're not already, giving back in at least one way, either technically or in a more community-oriented way.
40:52 And if that is, like, taking the plunge and making your first open source contribution, if that's volunteering with your user group at an upcoming workshop, you know, whatever it might look like.
41:05 I would definitely, you know, one of the important things about Python is that it is almost entirely community-driven.
41:15 There is not a giant company or consortium behind the language and community.
41:22 Most of the conferences are volunteer-driven.
41:27 And so it really is, like, sort of the success of the community and requires us all working together to drive the language and community forward.
41:34 So I'd encourage everyone sort of to take that opportunity seriously and, you know, pick at least one thing that you'd want to get, that you'd want to contribute by the end of the year and go ahead and do it.
41:45 Yeah, that's a great call to action.
41:46 And I definitely second that.
41:48 I'll throw a few more ideas out there in that vein.
41:51 Hour of Code is coming up in December.
41:54 You know, volunteer at your local school.
41:56 It's surprisingly easy.
41:58 There's actually a lot of Python sort of online Hour of Code-focused things.
42:02 So, you know, you could maybe help push a kid in a direction that they start down the programming path where they might not have otherwise.
42:10 Last year, I volunteered at my daughter's elementary school.
42:14 And we did programming for first, second, third, fourth, and fifth grade.
42:18 We did a whole bunch of little classes throughout the week.
42:20 And then three or four months later, I saw a kid who was in third grade walking to school with a JavaScript book.
42:26 And I talked to his dad.
42:28 And he said, yeah, that's because he did that Hour of Code thing with you.
42:31 How awesome is that?
42:32 Oh, that's awesome.
42:32 Right?
42:33 So, I mean, that's, like, a few hours once a year you can do that.
42:36 And if you learn something, you're exploring some new library and you're having a hard time finding documentation or it didn't seem clear, record a video and put it on YouTube.
42:44 Right?
42:45 Of what you figured out and just, like, to teach somebody how to get started.
42:48 Right?
42:48 A lot of ways to get back.
42:49 Jessica, let me ask you a few questions.
42:52 Put you slightly on the spot before I let you go.
42:54 Sure.
42:55 Yeah.
42:55 A question I always ask my guests at the end of the show is, what's your favorite editor?
43:00 If you're going to write some Python code, what do you open up?
43:02 Sure.
43:03 I mean, I'm an Emacs user through and through.
43:05 Yeah?
43:06 Learned it at MIT and that was that?
43:09 Yep.
43:09 Pretty much.
43:09 Hey, you can, look, you can run a web browser inside of Emacs.
43:13 Why would you not want to do that?
43:14 Of course.
43:15 That's awesome.
43:17 And then, you know, there's so many awesome packages out on PyPI that people can just go and grab, you know.
43:24 What are some of the ones that you think people maybe don't know about that you'd like to highlight or talk about?
43:30 Gosh, I think my answers to this are probably, unfortunately, quite niche.
43:34 There are lots of, there are libraries that facilitate, how do I even describe this?
43:40 I do, I participate in a lot of capture the flag events.
43:45 And so there are a lot of like Python bindings for various types of like program introspection that you would do.
43:53 Like if you want to disassemble something and then like trace flows to the program, there are like there are Python libraries that facilitate that.
44:00 So like where, or to automate some of those processes.
44:04 So where you might use like IDA pro or whatever to be disassembling and analyzing a binary for a capture the flag event.
44:12 Like you can actually do a lot of this stuff in Python.
44:14 But that's like a super niche answer that is maybe not what you were going for.
44:18 No, that's good though.
44:19 I mean, everybody has their own specialty and it's cool.
44:22 It's like, otherwise we'd hear NumPy, we'd hear requests, we'd hear SQLAlchemy.
44:27 Yeah, right.
44:28 I mean, so that's exactly what I was looking for really.
44:30 Although the other thing I would say is that it's very, very cool that there are such strong,
44:38 there are such strong communities around certain various disciplines.
44:42 And that's very exciting for me.
44:44 So it's like astronomers have all kinds of like super sophisticated astronomy focused packages on PyPI.
44:50 Like basically all of the science disciplines for like finance, there are a bunch of like very sophisticated Python packages.
44:58 And it's like the fact that we've gotten to that level of specialization and like the ability to support these domains in this very sophisticated way.
45:04 I think that is very cool.
45:06 That is.
45:06 Yeah, right.
45:07 That's an absolutely huge win for the Python community.
45:09 And I think it's just accelerating the diversity of people coming from these different disciplines.
45:15 Yeah, that's great.
45:16 Final call to action.
45:18 People get out there, contribute, donate your time, give a little back.
45:22 Jessica, thanks for being on the show.
45:24 Thank you so much for having me.
45:26 Yeah, you bet.
45:27 Talk to you later.
45:27 This has been another episode of Talk Python to Me.
45:31 Today's guest was Jessica McKellar.
45:33 And this episode has been sponsored by Hired and Optbeat.
45:36 Thank you guys for supporting the show.
45:38 Hired wants to help you find your next big thing.
45:40 Visit Hired.com slash Talk Python to me to get five or more offers with salary and equity presented right up front and a special listener signing bonus of $4,000.
45:49 Optbeat is mission control for your Python web applications.
45:54 Keep an eye on errors, performance, profiling, and more for your Django and Flask web apps.
46:00 You can find the links from today's show at talkpython.fm/episodes slash show slash 30.
46:05 Be sure to subscribe to the show.
46:08 Open your favorite podcatcher and search for Python.
46:10 We should be right at the top.
46:11 You can also find the iTunes and direct RSS feeds in the footer of the website.
46:15 Our theme music is Developers, Developers, Developers by Corey Smith, who goes by Smix.
46:21 You can hear his entire song on talkpython.fm.
46:24 This is your host, Michael Kennedy.
46:27 Thanks for listening, everyone.
46:28 Smix, take us out of here.
46:30 Staying with my voice.
46:32 There's no norm that I can fill within.
46:34 Haven't been sleeping.
46:35 I've been using lots of rest.
46:37 I'll pass the mic back to who rocked it best.
46:40 I'll pass the mic back to who rocked it best.
46:51 you .