#15: Python at Spotify, PSF, and PyLadies Transcript
00:00 A strong community is one of Python's superpowers, and that's what this episode of Talk Python to Me is all about.
00:05 It's PyLadies and Python Software Foundation with Lynn Root.
00:09 Episode number 15, recorded Thursday, June 6, 2015.
00:14 Hello, and welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.
00:48 This is your host, Michael Kennedy.
00:50 Follow me on Twitter, where I'm @mkennedy, and keep up with the show and listen to past episodes at talkpythontome.com.
00:57 This episode, we'll be talking to Lynn Root about PyLadies, Python Software Foundation,
01:02 Python at Spotify, and the Python community at large.
01:06 I'm really fortunate to have CodeChip and Hired sponsoring the show.
01:11 Let me take just a few seconds to tell you about them.
01:13 CodeChip is a platform for continuous integration and continuous delivery as a service.
01:19 They encourage you to always keep shipping.
01:21 Please take a moment and check them out at codeChip.com, or follow them on Twitter where they're at CodeChip.
01:28 Hired wants to help you find your dream job.
01:30 Hired is built specifically for developers looking for new opportunities.
01:34 Check them out and get a very special offer at hired.com slash talkpythontome.
01:39 And you'll find them on Twitter where they're at hired underscore HQ.
01:43 Before we get to the show, I have a quick piece of news for you.
01:47 Thanks to everyone who backed my Talk Python to Me t-shirt Kickstarter.
01:51 This week is the last week to join and get your shirt and promotional slot.
01:55 Check it out at bit.ly slash python shirt.
01:58 Now, let's get right on to the interview with Lynn.
02:02 Let me introduce Lynn.
02:03 Lynn Root is an insomniatic software engineer for Spotify, the founder of the San Francisco chapter of PyLadies,
02:10 a board member of the Python Software Foundation, and a member of the Django Software Foundation.
02:16 Lynn, welcome to the show.
02:18 Oh, thank you so much.
02:20 Yeah, we have a lot to talk about today, a bunch of different topics.
02:23 And, you know, I've read a little bit of what you've written online and checked out some of your talks.
02:28 And you have a lot of interesting things going on.
02:30 Yeah, I feel like I'm juggling a lot.
02:32 But thank you.
02:33 Yeah, the context switching is hard sometimes, isn't it?
02:36 It really is.
02:37 Yeah, but I think in the end, it's worth it to be part of a lot of exciting things.
02:41 So let me be one of the first podcasts to say congratulations.
02:47 I'm being reelected to the Python Software Foundation board.
02:51 That happened just a couple days ago, right?
02:53 Right, right.
02:53 Thank you so much.
02:54 Yeah.
02:55 Yeah, you must be excited.
02:56 How long have you been on the board?
02:58 This will be my third year.
03:00 So I've been on for the previous two years.
03:02 Okay.
03:03 Oh, very cool.
03:03 Very cool.
03:04 So I want to talk about that more.
03:07 But let's start at the beginning.
03:08 You've written a couple really cool articles about sort of your path into engineering
03:15 and into programming and into Python.
03:18 You know, you're doing a lot of work to help other people walk that path and take that journey
03:23 in their own way.
03:24 And I think it's really interesting to maybe cover some of that or talk a little bit about
03:28 it.
03:28 Can you maybe tell us how you got here?
03:30 Sure, certainly.
03:32 So yeah, I actually have a business degree.
03:35 I went to Babson College in Massachusetts.
03:39 And I graduated with like econ finance.
03:42 But I don't know if you remember, but in like 2008, the economy kind of sucked.
03:48 And that's the year I graduated in.
03:50 So it was really, really kind of difficult to get a decent job in finance.
03:57 But in terms of decent like paying.
04:01 So I actually I started working as an analyst for a small bank for a few years.
04:07 The economy is still crappy, but I wanted to get my master's degree in financial engineering.
04:15 And Berkeley here in California actually has a really good program, like a one year master's
04:23 of engineering or financial engineering.
04:25 And but in order to apply, you kind of had to like know how to code.
04:30 And me being a sort of a fresh graduate and like thinking, oh, I could still like learn
04:38 how to study.
04:39 Right.
04:39 I just how hard can it be?
04:41 Come on.
04:42 Right.
04:42 Yeah, exactly.
04:43 I decided to enroll in like a Harvard's extension program, just like their intro to CS class.
04:50 And so that was like the fall of 2011.
04:54 And let me tell you, C is really hard.
04:58 And I really sucked.
04:59 Like I failed like a lot, all the midterms.
05:03 I was crying a lot during the weekly homeworks.
05:07 And it was just it was really tough.
05:10 Were you wondering what you had gotten yourself into?
05:13 Yeah, seriously.
05:14 It was just like I literally just like was hoping to get a passing grade just to like get this
05:18 over and done with.
05:20 Yeah.
05:21 Yeah.
05:21 But like I couldn't who would subject themselves to this kind of thing.
05:24 And but but oddly enough, towards the end of the semester, I saw some Python code and coming
05:34 from C to Python.
05:36 I was just like, wow, I like actually understand what's being written.
05:40 I actually understand the logic.
05:41 Like I can see what's going on here.
05:44 So I actually decided to do my final project for the course in Python.
05:49 I made a little Django website app that looking back now is really crappy code.
05:54 But it worked.
05:56 And somehow I got like an A minus in the course, even though I failed both midterms.
06:02 That's amazing.
06:04 The professor must have thought, well, she's come a long way.
06:07 Look what she built.
06:07 You know, let's just forget about about those bad midterms.
06:10 Right.
06:11 Exactly.
06:12 I wonder if they ever questioned like the legitimacy of that code.
06:16 Like, how could she come from this to that kind of thing?
06:19 But like I really wrote it like I also wrote that crappy code.
06:22 But anyways, I found it a lot more satisfying to like stay up at like 3 a.m.
06:28 trying to like debug like this Django app than like looking at Excel spreadsheets,
06:34 you know, like eight hours a day, five days a week.
06:37 So I basically decided that I wanted to continue to learn but not pay Harvard another $2,000 for a course.
06:46 So at the time I was in San Francisco.
06:49 I still am in San Francisco.
06:51 But at the time I kind of approached Women Who Code, the local meetup group here,
06:57 and see who else could like would be interested in learning Python with me.
07:02 So I started like a study group with other women and kind of led projects.
07:10 Basically, I would do the project the week before and then sort of present it and we'd work through it together.
07:16 That's really cool.
07:16 And I think I recall from your article, there were quite a few people there, right?
07:20 It was like 40 women or something like that?
07:22 Yeah, exactly.
07:23 That's awesome.
07:24 Yeah.
07:24 To be honest, I don't know if they came for like the free food at Dropbox or if they really wanted to know Python.
07:30 But it was awesome to see them there.
07:33 And there's a lot of great interest in continuing on because I had only planned like eight weeks once a week.
07:41 And so that actually turned into like two PyLadies of San Francisco.
07:46 I sort of stole those women.
07:48 Not really steal, but like they helped me build sort of PyLadies of San Francisco.
07:54 From there, I was able to subject other people to wanting to learn how to code with me.
08:00 And I guess the rest is history.
08:03 I sort of just kind of started talking about what I was doing.
08:07 Kind of from the point of view of me being sort of selfish and like wanting to learn how to code with others with me.
08:15 But it sort of morphed into like getting women involved in coding and me speaking about that.
08:21 And that really helped me like land my first engineering job.
08:25 That's really cool.
08:26 You know, I do a lot of training for my job as well.
08:29 And I think this pressure to put together a presentation, to learn it well enough to like present it to others, is a super powerful way to learn for yourself, actually.
08:38 Right.
08:39 Yeah.
08:39 You better have the answer to the questions that you don't even think of right now, right?
08:42 Exactly.
08:43 Yeah.
08:44 Yeah.
08:45 Yeah.
08:46 So you think that really helped you sort of gain the skills you needed?
08:49 It definitely did.
08:51 At least like helped me like understand what was going on rather than just copying, pasting code, which is like not a really good way to learn how to code.
09:00 Sure.
09:01 I think that happens more in this industry than people really want to admit, to be honest.
09:04 I agree.
09:05 I mean, I fully admit that there are some like Stack Overflow posts that I just copied and pasted.
09:11 And it just happened to work and went on from there.
09:14 So yeah, I believe it happens a lot.
09:16 Yeah, I think so.
09:31 CodeChip is a hosted continuous delivery service focused on speed, security, and customizability.
09:38 You can set up continuous integration in a matter of seconds and automatically deploy when your tests have passed.
09:43 CodeChip supports your GitHub and Bitbucket projects.
09:46 You can get started with CodeChip's free plan today.
09:49 Should you decide to go with a premium plan, Talk Python listeners can save 20% off any plan for the next three months by using the code TALKPython.
09:58 All caps, no spaces.
09:59 Check them out at CodeChip.com and tell them thanks for sponsoring the show on Twitter where they're at CodeChip.
10:12 When you're doing C++ or C, it was just really frustrating.
10:16 And just the simplicity of Python really resonated, huh?
10:20 Definitely.
10:21 Yeah.
10:21 It's just like, oh, I can actually understand that you're defining a function and trying to do it, like, mangle the data in this way and return this.
10:28 Like, I actually got that in me to be able to, like, a couple months later, I sort of finally understood, like, inheritance when I was digging through, like, Django, like, source code.
10:39 And I was like, well, this actually makes sense to me than, like, programming, like, a Sudoku board in C where I just have no idea what I'm doing.
10:48 Yeah.
10:49 And pointers to pointers to a raise.
10:50 Like, yikes.
10:51 Uh-huh.
10:52 Right.
10:53 Let's maybe talk a little bit about PSF.
10:57 Sure.
10:59 I kind of know the mission statement of PSF.
11:03 And I know that there's a board.
11:06 But can you maybe tell all the listeners kind of what is the Python Software Foundation and what kinds of things do they do to help all of us?
11:15 Sure.
11:16 Yeah.
11:16 So this question happens a lot, actually.
11:19 And maybe it's a telling sign that we need to do better PR about who we are.
11:24 But the PSF, the legalese or, like, what we are about in formal sense is both protecting the trademark of the Python language and kind of, like, owning that and stuff like that, as well as furthering, like, the language of, like, becoming more widespread.
11:44 And that's essentially what it boils down to.
11:47 And the PSF has, like, has the board with 11 directors and then has, like, a membership model.
11:55 And there's a few different ways to be a member.
11:58 But basically, the purpose of the PSF is to, like, make sure Python as a language can, like, remain a popular widely used language and kind of get it everywhere.
12:11 And as a PSF board, we do a lot of both kind of just, like, answering simple questions, like, can I use Python here?
12:19 Can I represent the logo here?
12:20 Like, simple questions like that.
12:21 We get a lot of, like, requests for, like, funding.
12:25 Like, can you help with these, like, food costs for this, like, Python sprint or something like that.
12:34 We help a lot of workshops, especially, like, the, like, young coder workshops that Katie and Barbara have been doing since 2012, I guess.
12:46 And that is mostly based on, like, help getting, like, Raspberry Pis so that teenagers and young kids can, like, learn how to, like, program in Python and actually take home what they're doing.
12:59 PSF sort of supports Python in that sort of way.
13:03 And I guess that's as best off the top of my head of describing the PSF.
13:09 Yeah.
13:09 That's really cool.
13:11 And I think it's just good to raise everyone's awareness about that.
13:14 It's nice to have a single organization or group that is kind of can answer, like, public questions and make decisions and stuff like that around the publicity of Python and whatnot.
13:27 I also heard that they were doing a lot to help promote the usage of Python 3.
13:32 I feel like the PSF is usually, like, throwing, like, the money at it.
13:35 Like, if someone requests, like, funding to help porting stuff, we're definitely 100% behind that.
13:41 I feel like the louder voices of supporting Python 3 is more like Guido himself and some other core devs.
13:48 We personally, the PSF doesn't really outwardly, like, back, like, public statements.
13:53 But we're definitely, like, since, like, Python 3 is the future, we often get requests to help, like, funding, like, the porting of something from 2 to 3.
14:04 Like, a really, like, established, like, library, like, mailman or something like that.
14:09 Right.
14:09 Of course, I had Chris McDonough on the show.
14:12 I think that was show 3.
14:14 Mm-hmm.
14:14 And he talked about that story with Pyramid.
14:18 Oh, yeah.
14:19 The Pyramid web framework.
14:20 Yeah.
14:21 Apparently, he said, I'm dragging my feet on converting it to Python or, you know, supporting Python 3.
14:26 And the PSF came along and helped out and said, can we give you a nudge to make you go do this?
14:30 And he did.
14:31 Yeah.
14:32 That's awesome.
14:33 Yeah.
14:34 That's really cool.
14:35 That's really cool.
14:35 So, as a board member, what do you do there?
14:39 The board member, being a board member is, it varies on how much work you want to put in.
14:49 And, like, we have monthly meetings or somewhat monthly meetings, regular meetings.
14:55 And we vote on stuff like, should we give money to these people or those folks?
15:01 That's actually a lot of our conversation is deciding who to help out.
15:07 As well as, like, let's see, like, sponsors.
15:11 Like, who can we invite to be a sponsor?
15:13 Who is applying to be a sponsor?
15:15 Things like PyCon and so on?
15:18 Well, so, that's actually, PyCon is, like, the only conference that is, like, directly supported by us.
15:24 But we just sort of have, like, a PyCon officer that's supposed to be, like, the liaison between the two, like, organizations.
15:33 And we definitely, like, a lot of the money comes out of the PSF and the sponsors of both the PSF and PyCon.
15:41 But we definitely stay out of, like, the day-to-day logistics, the planning and stuff like that.
15:47 Sure.
15:47 More high level.
15:47 That's cool.
15:48 Yeah.
15:48 Yeah.
15:50 And just trying to think of other things.
15:52 I just, like, it seems like every meeting we're voting on, like, five, like, new funding requests.
15:57 But it's definitely, like, just to, like, help kind of guide, like, the PSF.
16:04 Like, we recently started, somewhat recently, like, past year or so, started this, like, working group model where it kind of helps, like, people who want to get involved in the PSF and aren't, like, board members themselves can still, like, really contribute to the PSF.
16:19 Like, we have a working group around, like, elections and, like, how to better, like, the process of elections.
16:26 And the PSF's job is to sort of, like, recognize that working group and help provide the tools so that they can be successful.
16:34 That's great.
16:36 So if somebody out there is listening and they want to get involved, what kinds of things can they do and how do they go about that?
16:42 Good question.
16:44 So just to be a member, it's actually quite simple.
16:49 It's just, like, python.org slash PSF slash membership.
16:55 And there's, like, different membership classes.
16:57 The most basic, the lowest tier one is called Basic Members where anyone can sign up.
17:02 However, in order to be able to, like, vote and stuff, you'll either have to, like, be, like, a contributor in terms of, like, code or, like, sort of contributor in terms of, like, community, like a meetup organizer, like PyLadies organizer or something like that.
17:19 Or you can, like, give money either as an individual or as a company yourself.
17:23 And that's, like, how you can, like, vote in terms of, like, the board and, like, who to accept as company sponsors, stuff like that.
17:34 And if you wanted to get, like, if someone wanted to get involved beyond that, at least become a Basic Member and, like, join all the mailing lists that I can't even remember off the top of my head that are interesting to them.
17:46 And somewhere on our wiki, the wiki.python.org, is a list of all of our working groups.
17:57 And I'm sorry, I don't have the link up right now.
18:00 That's fine.
18:01 We'll put it in the show notes.
18:02 Oh, great.
18:03 And that way they can, like, ping individual people of, like, who they want to, like, help out, like, maybe, like, outreach and education or, like, sprint, like, committee or the elections working group or something like that.
18:18 And you can get involved in that way.
18:20 Just participate in the discussion as much or as little as one wants.
18:25 And then, yeah, we have a pretty active PSF members list.
18:30 And that's also a good place to kind of have your ear to the ground and know what's going on.
18:35 Okay.
18:35 Yeah, that sounds really great.
18:37 Basically, the starting points, go become a Basic Member and then go from there, which is just a matter of creating an account, more or less, right?
18:44 Right.
18:44 Yeah.
18:45 We have, like, there's information, like, everywhere.
18:48 And I'll be the first one to say or, like, to agree that it's really poorly laid out, like, where to find what information and, like, what could you be interested in?
18:58 Like, I don't even know kind of thing.
19:00 Is it, like, a new member or something like that?
19:01 So it's definitely really hard to kind of, like, figure out where to go and stuff.
19:06 But becoming a Basic Member and joining, like, the PSF members list is definitely, like, step one.
19:11 And then you can ask as many questions as you want from there.
19:14 Okay.
19:15 Yeah, that's really helpful.
19:15 Thanks.
19:16 This episode is brought to you by Hired.
19:30 Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.
19:36 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:46 Typically, candidates receive five or more offers in just the first week, and there are no obligations.
19:51 Ever.
19:52 Sounds pretty awesome, doesn't it?
19:54 Well, did I mention there's a signing bonus?
19:56 Everyone who accepts a job from Hired gets a $2,000 signing bonus.
20:00 And as Talk Python listeners, it gets way sweeter.
20:04 Use the link Hired.com slash Talk Python to me, and Hired will double the signing bonus to $4,000.
20:12 Opportunity's knocking.
20:13 Visit Hired.com slash Talk Python to me and answer the call.
20:17 Another thing I wanted to talk to you about is PyLadies.
20:30 And it sounds like PyLadies is sort of what became of your study group that you started.
20:35 Right.
20:36 Yeah.
20:36 And I'm really surprised.
20:38 You said that it didn't exist in San Francisco, but it did in L.A.
20:42 And you're like, why is this thing not in San Francisco, right?
20:44 Exactly.
20:45 Yeah.
20:46 Yeah.
20:48 I mean, that's the whole reason I have this podcast.
20:49 I went looking for a Python podcast.
20:51 I'm like, why is there no Python podcast?
20:53 What happened to them all?
20:54 Well, I guess if you really want something, you might have to make it yourself sometimes,
20:58 right?
20:58 Exactly.
20:59 Yeah.
21:00 So you started PyLadies.
21:01 That's awesome.
21:01 How long has that been going on, actually?
21:03 So the San Francisco PyLadies has been around since April 2012.
21:08 So a little over three years, I guess, if my math is correct.
21:11 And the first PyLadies in L.A. started sometime in the fall of 2011.
21:18 I don't know exactly when.
21:19 So it's pretty established in terms of communities.
21:23 And yeah.
21:25 Sure.
21:26 It's a little regional because this is an international show.
21:29 But for those listeners in San Francisco, where do you guys meet?
21:32 Oh, it varies.
21:34 I mean, tonight we have a meetup and we're going to the Uber office downtown.
21:40 But we have a lot of weekly meetups, like study groups that go to the LinkedIn offices down
21:47 in South Bay or Rackspace slash Geekdom up here in San Francisco area.
21:53 But I mean, we have so many locations worldwide.
21:59 And a lot of times it's just like regular meetups at a local coffee shop or something like that.
22:04 Yeah.
22:04 So if I wanted to see if my local city, like I live in Portland, Oregon, I want to know,
22:10 hey, is there one in Portland?
22:10 I think there is actually.
22:11 There definitely is.
22:13 Yeah.
22:13 How would I find out about it?
22:14 Certainly.
22:15 Yeah.
22:15 If you just go to like PyLadies.com, we have like a locations page.
22:19 And we have a list of all like locations.
22:23 There's some that aren't up there because in order to like have like your location up there,
22:29 you have to do like a pull request on GitHub.
22:31 And sometimes it's just too much for people to like do or too little of like a task item to
22:37 like remember.
22:38 So like that's not a complete list.
22:40 But it's definitely a very good place to start.
22:44 Now, if you find out that there is no PyLadies like locally, you're more than welcome to start
22:52 one kind of like how I did myself and how you did your podcast.
22:56 There's a nice little jumping off point, kit.pyladies.com.
23:00 Oh, nice.
23:01 Yeah.
23:02 That's our like starter kit of like how to bring PyLadies to like your location if you want it.
23:07 Cool.
23:08 Yeah.
23:08 We'll put that in the show notes.
23:09 Yeah.
23:10 I think it's really great that you're promoting more diversity in general and specifically about
23:16 women in programming.
23:17 You know, I have three daughters and, you know, I would like to see a world where they are excited
23:25 about these kinds of things and feel like it's a welcoming place.
23:29 Definitely.
23:30 I don't know what it is about Python, but it seems like it has a better story in terms of
23:36 diversity compared to other languages.
23:38 I would agree with that.
23:39 Yes.
23:40 Go ahead.
23:42 Yeah.
23:42 I was going to say, I have no idea why this is the case, but I do a lot of training and I'll
23:45 do training with like classes like MongoDB or C# or other things, JavaScript and so
23:52 on in Python, of course.
23:53 And it seems like the Python classes just have a whole, a whole different population that
23:59 just seems to represent society more correctly than, than the other stuff, which, which is
24:04 really nice, but I don't really know why.
24:06 Right.
24:07 I mean, I started to hypothesize this myself, at least comparing with like other like communities,
24:15 not necessarily like C, but like, like Ruby or Java or Node, whatever.
24:20 It really helps to have like sort of leadership of the community kind of really like buy in.
24:26 But it really helps us that like Guido himself is really passionate.
24:31 He was actually the first, one of the first speakers that I had at like my Women Who Code
24:37 Study group.
24:37 Oh, wow.
24:38 That's excellent.
24:38 Yeah, I know.
24:39 So he's like 100% behind this, these sorts of efforts.
24:42 And it's very convenient that he lives in the Bay Area for me, right?
24:46 Yeah, that's cool.
24:47 He had a really nice presentation that sort of touched on this at PyCon 2015 as well.
24:53 Right.
24:54 Yeah.
24:54 He, he asked, or he wants, he wants basically like women as core developers, because currently
25:01 there are none.
25:01 And I think he was like, he's like, I'll help mentor folks or help mentor women to be a core
25:07 developer.
25:07 And, you know, I think that's like really awesome.
25:10 And I'm, I'm actually, I have like a pretty good idea for a meetup here locally, since he,
25:16 since he's like down the street, practically.
25:18 So that's sort of help kind of get involved in committing to, to see Python.
25:23 But yeah, it really, it definitely helps when like leadership like him and the PSF organization
25:28 itself kind of set the tone of why it's important and, and people sort of just follow.
25:34 Of course, you know, there's always descending voices in any community in any stance, but it
25:40 really helps to see that like when leadership says that this is important, people will feel
25:46 more, more willing to like help out or to like just be proactive about something.
25:52 So I think that that's the difference between like the Python community and other communities.
25:56 I agree.
25:57 You know, there's probably a lot of people on these types of issues that are like sort
26:01 of just sitting on the couch, like, I'd like to do something about it, but whatever.
26:05 You know, those little nudges might be enough to actually make a change.
26:08 Right.
26:09 Exactly.
26:09 Another thing I'd like to talk about is a project that you're involved with called New Coder
26:14 at newcoder.io.
26:15 Right.
26:16 Yes.
26:17 What's the story with that?
26:18 That looks cool.
26:19 Thank you.
26:20 yeah.
26:21 So this was, so I wrote this a couple of years ago, 2012, I believe is when I first
26:27 released it.
26:27 and it's basically, taking, no, it was 2013, I think.
26:31 I'm basically taking all these sort of projects that I subjected to the people that came to my
26:36 study group and, and made it in like written form.
26:39 So like, not just like San Francisco piloties can use them, but like everyone who
26:43 want, who's willing to learn Python and wanting to learn how to code can, can reach.
26:47 So, the, the premise of this is like, say you, you know, did learn Python the hard
26:53 way or dive into Python or some other sort of work book, like, like sort of goes through
26:58 the syntax and a little bit of like logic of Python.
27:02 And you're like, all right, what next?
27:04 What can, like, I'm not going to get hired right now.
27:06 So, what can I actually do?
27:09 So, with new coder is, is there, it's five different, tutorials and, it sort
27:16 of, it definitely graduates in sort of, difficulty.
27:20 but, there's no real order.
27:23 You can like choose whatever order that you want, but, it, the, it's meant to teach the
27:29 new coder, like various things at various points in time with certain noob friendly language.
27:35 and like asides, like you might not know this term.
27:39 Like, or you might not understand what a class is or inheritance is.
27:43 So here's where you can read more information or, or here's a little blurb that you can just
27:46 go ahead and skip.
27:47 If you actually do understand this kind of thing.
27:49 Right.
27:50 That's really cool.
27:51 And I think one of the challenges people have, especially when you're a beginner is to put
27:56 meaning behind the thing you're struggling with.
27:59 So for example, if, if you're like having a really hard time with a for loop, foreign loop,
28:05 or you're having a hard time with like if statements or functions, those are all so small building
28:10 blocks that they're not interesting in and of themselves.
28:14 But if, but if you can see like, okay, if I force myself to learn these little kind of
28:18 trivial, not trivial, but you know, sort of fact based things that I have to just memorize
28:23 or understand, I can do something awesome on the other side of that.
28:26 And I think these projects are the key to like making that shortening that cycle, I guess.
28:32 Yeah.
28:32 Thank you.
28:33 Yeah.
28:33 That's definitely something I was trying to go for with that.
28:36 But yeah, I've got, I've gotten a lot of good feedback from people just like sending emails
28:41 saying, you know, like this is exactly what folks needed.
28:45 And like, I find that when I lead workshops explaining these sorts of things in the way
28:50 that I've written down a new coder, it helps people kind of like, like have those light bulb
28:55 moments, which are really needed, especially when you're a new coder, because there are a lot
29:00 of frustrating moments.
29:01 And to have like a little light bulb moment is really reassuring.
29:04 And then to have, and then to have something at the end of the tutorial that you can show
29:08 off to someone else, that's also rewarding rather than like some simple exercise from like
29:13 when Python the hard way, like, yay, I did a for loop.
29:16 Look at that.
29:17 Yeah, exactly.
29:18 Yeah.
29:19 If you have a tutorial with like, you know, data visualization, like from, map plotlib or
29:25 something, it can actually show that to someone.
29:26 Yeah.
29:28 I think that that serves a lot of purposes.
29:30 You know, I read somewhere, somebody had studied a bunch of entrepreneurs and people
29:35 in Silicon Valley that, that became successful.
29:38 And they said, it seems like by studying these people, we've, it's not necessarily the case
29:42 that the people who succeed versus the people who fail are the ones who are the smartest.
29:46 It seems like the, the most important skill is persistence.
29:50 The ones who just keep trying until they find their way through these, these types of things
29:54 that you have to power through when you're, you're getting started on stuff and, you know,
29:58 more complex as you start companies and so on.
30:00 It seems to be the most important skill.
30:02 Right.
30:03 Right.
30:03 Yes, definitely.
30:04 And I think tutorials and like concrete examples and stuff make it easier to be persistent because
30:09 you see what's down the tunnel.
30:11 You're not like, oh, I hate programming.
30:13 It's all these little facts.
30:14 It's like, it's kind of like learning math in the early days when, when nobody connects
30:18 any dots for you.
30:19 Right.
30:20 Exactly.
30:20 Yeah.
30:21 Cool.
30:22 So you have five tutorials up there now.
30:24 You've got data visualization, APIs, networks, web scraping, and GUI stuff, right?
30:30 Right.
30:31 Yes.
30:31 Yeah.
30:33 So those are fun.
30:34 And people, if they're, they're getting started or they want something more practical
30:37 than just language stuff to play around with, or they need to recommend a resource for someone
30:43 else, more likely if they're listening to this podcast, then, you know, check out newcoder.io and,
30:47 you know, pass it around.
30:48 Thanks for the plug.
30:50 Yeah.
30:50 Yeah.
30:51 You bet.
30:51 No problem.
30:52 That's really cool.
30:53 You also have some open source projects that you're working on connected to your work at
30:58 Spotify, right?
30:59 Right.
31:00 Yes.
31:00 Do you want to talk a little bit about those?
31:02 Yeah.
31:03 I'd love to.
31:04 So conveniently, actually, this week right now is our hack week.
31:10 About twice a year, Spotify holds hack weeks to just kind of hack on what you want, not
31:15 necessarily like Spotify, but it could be Spotify related.
31:18 And a year ago, I actually hacked together a prototype as a Flask app that was, it's like
31:28 a playground for APIs.
31:29 If you go to developer.spotify.com slash web dash API, there's a console linked there.
31:37 And you can actually play with our APIs via the console to kind of figure out what goes
31:42 on, what kind of responses you'll get, what kind of queries that we accept, that kind of
31:46 stuff.
31:46 I mean, it was pretty awesome because like it came out of a hack week.
31:50 Everyone sort of like understood why it was important because I hated answering sort of the
31:55 same questions over and over again.
31:57 How do I use your API?
31:58 So I built this.
31:59 And I guess like a lot of people loved it that we just sort of put it out there and it's been
32:04 really successful.
32:05 And from that, I've, I'm open sourcing the technology behind that.
32:10 And the first thing that I open source, which was just a couple weeks ago, is a RAML parser.
32:15 And the actual library name is called RAMLifications.
32:18 Good name.
32:20 Yeah.
32:20 I love punny names.
32:21 But RAML is like, it stands for REST API markup language.
32:27 And it's like YAML.
32:30 And it's basically a way for you to kind of define how an API is.
32:35 Like we have a Spotify API defined in RAML.
32:40 And you can see the title is like web API and like the base URL, the version, like the endpoints,
32:46 if it accepts like OAuth or, or something else, that kind of stuff.
32:50 So it's a really like great, like source, like end all be all source for a web API.
32:55 And so the RAMLifications, like it parses that into like Python, like objects.
33:00 And then this week I'm taking that and writing like a static documentation generator.
33:09 Just making like HTML files that you can like, like host anywhere that creates documentation off of RAML.
33:16 So if you have your API, your REST API defined in RAML, and like you've written like all the docs in there kind of thing,
33:25 you can just, you know, run it through this new project that hopefully will be open source soon.
33:30 And you'll have some nice HTML files.
33:32 And then from there, this is like the in-between step, I'll actually like open source the console itself.
33:38 So that, so folks can make their own sort of web site for how to interact with, with their own API.
33:46 Yeah, that's really neat.
33:49 I think those are a cool set of projects that all kind of work together.
33:52 A lot of times you'll end up with these, you know, just basically static documentation around, around people's APIs.
33:59 And then, you know, if it doesn't quite work, like the way you're interpreting what they have written, or, you know, if, if it changes and the API documentation comes, becomes out of date, it's super frustrating.
34:11 Right.
34:11 And you end up writing these little, little apps to just like call the API and spit it out to go, okay, this is what I'm actually getting.
34:17 What does it look like?
34:18 And, and your, your web API console is just like, let's skip that.
34:22 And you can just check it right here.
34:23 Right, exactly.
34:24 And some people are just more visual or more interactive rather than reading through documentation.
34:29 So, yeah.
34:30 Yeah.
34:31 It's never really like inspiring to read through documentation.
34:34 I think it kind of goes back to that persistence thing.
34:37 Like, am I willing to power through this so I can have a cool app that uses Spotify or, or am I going to stop because the documentation is, is too much.
34:44 Right.
34:45 But luckily you're solving that problem.
34:46 Have you noticed any change in like the adoption of the API or how long has it been out?
34:53 It's not.
34:53 I think it's been out at least six months or so.
34:57 Okay.
34:57 So maybe that it could possibly have some sort of effect you could see.
35:00 Right.
35:01 I'm going to be honest that I don't pay attention to our usage, web API usage.
35:06 But I do know that like the site that the console itself gets maybe like low tens of thousands of views a month.
35:15 So it is being used.
35:17 And yeah, it's definitely an internal favorite too.
35:20 Yeah.
35:20 I'm sure.
35:21 I'm like, oh, I want to test our own API.
35:24 Let me go have a look.
35:24 I forgot what this does.
35:25 Right.
35:25 I'm sure this happens.
35:27 Or hey, you're new here.
35:28 Go here first.
35:29 Go check this out.
35:30 Right.
35:30 Yeah.
35:32 Nice.
35:33 So it sounds like these projects are really closely tied to what you're doing at Spotify.
35:36 And they're all in Python.
35:38 What's the story with Python at Spotify?
35:39 Can you talk about that?
35:40 Sure.
35:42 It's actually kind of a sad story.
35:45 So my team and what I do, I'm back an engineer with five other developers.
35:53 And we do like strategic integrations.
35:56 We're based in San Francisco.
35:58 So like a lot of the integration projects is with other local San Francisco like companies.
36:04 For instance, the recent Spotify and Uber integration where you can like listen to music during your ride through the car speakers.
36:14 Like that was like us.
36:16 That was our team that did that.
36:18 That's pretty awesome.
36:18 Yeah.
36:19 So it was really awesome.
36:21 Really fun.
36:21 And so we do stuff like that.
36:25 And in some cases stuff is written in Python, but more often than not it's now being like written in Java.
36:31 The reason is we kind of like we kind of had this like corporate like mandate maybe about a year ago that we're kind of writing new services that have end user like facing like capabilities or like whatever.
36:47 They have to be like written in Java.
36:50 And it's because that I know a lot of people will say, well, wait, Spotify is like IO bound, not CPU bound.
36:58 Why the move?
36:59 And it's true that we are IO bound.
37:01 And however, there's a lot of issues when trying to run like, I don't know, like 23 like processes of the same service on one machine trying to connect to the same Postgres database and memcache and stuff like that.
37:18 So there's a lot of orchestration that gets complicated when you have multiple like Python processes running on one server.
37:24 So believe me, I've tried, I've had many arguments.
37:28 I've like sat down with our senior architect and really try to like go for Python and maybe PyPy or something like that.
37:35 But in the end, I kind of like lost the argument.
37:39 And so a lot of our end user facing stuff like the web API is written in Java.
37:46 However, there's a lot of other stuff written in Python.
37:50 For instance, let's see, all of our analytics stuff is in Python.
37:56 We have Hadoop and we can run stuff with Java, but a lot of the actual jobs are written in Python.
38:04 And then we have, let's see, like our DNS sort of service discovery systems written in Python.
38:12 However, I think that's starting to move to our payment system in Python.
38:17 Content management where like the labels that actually give us the music, that they'll dump a lot of metadata and songs itself to us, like FTP or something like that.
38:31 And we process all of that in Python because it's like not really end user or speed.
38:37 Yeah, you're not concerned about shaving that 5% performance off or whatever, right?
38:42 Right, exactly.
38:44 So there is a lot of Python within Spotify.
38:48 It's just like not what...
38:50 It's not at the center.
38:52 Yeah, yeah, exactly.
38:53 Yeah, okay.
38:54 Well, that sounds really interesting.
38:56 You were saying like some of the thoughts about like running a bunch of processes on this machine and on the treble.
39:02 You know, maybe you guys could try some tricks with Docker.
39:07 This could be a possibility.
39:08 We actually...
39:09 Have you tried that?
39:10 We're actually using Docker.
39:11 We're migrating towards Docker.
39:13 We have open source Helios, which is our Docker manager or something like that.
39:18 And that will also...
39:20 That supposedly, in a lot of Pythonistas' eyes, will allow us to be okay with like running our services in Python.
39:27 But it's still in the very early stages of like what Docker and Helios can do.
39:31 Okay, that's really excellent.
39:32 That's at github.com/Spotify slash Helios.
39:35 I'll put that in the show notes as well.
39:37 Very nice.
39:37 Yeah.
39:39 And then have you guys thought about Jython?
39:41 Like if you're so into Java?
39:43 Yeah.
39:45 I actually don't know what our senior architect feels about that.
39:50 I don't...
39:51 Like I've actually never played with like within Jython.
39:53 But it's definitely something to go the direction to look into.
39:58 Sure.
39:59 I know some of the other major companies around there are using it.
40:02 But I probably shouldn't talk about it since I'm not sure if I'm supposed to.
40:05 If I'm allowed to.
40:06 But yeah, there's definitely some large like high-end web companies out there doing cool stuff with Jython.
40:13 For a while, I thought it was dead.
40:15 It seemed like it hadn't been updated in a long time.
40:17 It was like supported like Python 2.5 or something.
40:20 And finally, I think it now supports 2.7, but it still doesn't support 3 as far as I know.
40:25 Mm-hmm.
40:26 Right.
40:26 A couple of years or maybe like a year and a half ago, we had one of the core developers of Jython come speak up, high ladies.
40:34 And he was like, we just released 2.7 and now we can start 3.
40:38 So there is energy and people behind it.
40:40 It's just like not enough people.
40:42 I'm sure it's a massive project.
40:44 And if it doesn't have a lot of support, it's really hard to keep up.
40:47 Definitely.
40:47 But yeah, I'm glad to see it going because I know it enables some people to do cool stuff, which is all good.
40:53 Mm-hmm.
40:54 Right.
40:55 So another thing that you like to do is speak in at conferences and user groups and meetups and stuff, right?
41:01 Right.
41:01 Yeah.
41:02 And I saw you have a page with a whole bunch of sessions, like, I don't know, just a quick scroll count.
41:08 It's like 15 or something, but quite a few at rogueland.com slash talks.
41:12 Mm-hmm.
41:14 Are there some of your favorites up there that you want to, like, point out to people, maybe have videos or something?
41:18 Right.
41:20 As an aside note, I literally just, like, over the weekend redid my site.
41:25 And I only redid it for, like, the words part, like, the blog part.
41:28 So I apologize if, like, people are going to, like, rogueland.com slash talks and be like, ew, this looks ugly.
41:34 Like, whatever.
41:35 Like, I'll get there.
41:36 Let's say it looks minimalist, huh?
41:37 Yeah.
41:38 Yeah.
41:38 Yeah, definitely.
41:39 But yeah.
41:41 So, like, actually, one of my favorite talks to give is how to spy with Python.
41:46 And it's basically, like, working with Scapee, the project Scapee, to basically sniff, like, wireless traffic.
41:55 It's a Python wrapper around TCP dump.
41:58 And it's really fun to show people what you can do because that's basically what the NSA is doing.
42:04 And, like, it's a tongue-in-cheek way to, like, show people, like, what's going on in, like, an international global level of, like, privacy issues.
42:13 But Scapee is a lot of fun to play with.
42:15 And it's one of my favorite talks to give.
42:17 Yeah, that sounds really cool.
42:19 Yeah.
42:19 I recommend people check it out.
42:21 And some of these are on YouTube and other places, Vimeo, whatever, right?
42:24 Right, yeah.
42:26 I try to link to everything.
42:27 I should probably update some of this stuff, too.
42:30 Well, if the page is in for a refresh, maybe, huh?
42:33 Yeah, right.
42:34 Cool.
42:36 I'll put some of those in the show notes as well, and I'll link to that, of course.
42:39 I think that just about covers all the stuff that I wanted to talk to you about.
42:44 And I think it's a whole bunch of interesting paths.
42:49 Like you said, it's a little scattered, but they're all super interesting.
42:52 And so if people are out there with, like, meetups or user groups, can they, you know,
42:56 do you recommend they go to New Coder and try some of your tutorials, maybe make those, like, workshops or sessions or something there?
43:04 Yes, definitely.
43:05 I have a couple of them.
43:08 If you go to New Coder, I think it's just slash workshops, that there's, like, PDF versions of everything.
43:15 They do need to be updated since my last site refresh.
43:18 But everything's also on GitHub.
43:20 And please feel free to, like, take them, adapt them however you want, and teach off them.
43:26 A lot of PyLadies leaders actually take a couple of tutorials to lead their own workshops.
43:32 So by all means.
43:34 You know, I've done some stuff with Hour of Code and so on, and it seems really daunting to lead those types of groups
43:40 and put something together for people to really appreciate.
43:43 But if you can grab a resource like that, or, you know, in the case of Hour of Code,
43:47 some of the little tutorials and stuff they have online, it makes it so much easier to get involved and help out in the community.
43:53 Right, definitely.
43:54 There's one more thing for people to, let's say it this way, there's one fewer excuse for people to use.
44:02 Right, yeah.
44:02 All right.
44:04 Anything else you want to talk about while you're here?
44:08 Let people know about?
44:09 Well, I'll be at EuroPython.
44:11 So if anyone else is going to EuroPython, come to say hi.
44:14 I'm giving a couple talks there.
44:16 That'll be excellent.
44:17 What are the talks?
44:18 One is one that I actually just gave this weekend.
44:21 It's about how my team is doing metrics and how we're, like, it's metrics-driven development,
44:26 how we're powering sort of the data that we are newly collecting behind, like,
44:30 the sort of decisions that we're making.
44:32 And the talk is about kind of taking what we learned and, like, you don't need to necessarily measure everything, but, like,
44:40 what do you need to measure and how do you decide that?
44:43 And then the other talk that I'll be giving is basically kind of sort of like a status update
44:50 slash what we still need to do about, like, diversity in Python.
44:53 We've come a long way, but there's still a long way to go to really sort of create a welcoming environment for everyone.
45:02 And since Python community is a leader, we should, in that sort of thing,
45:06 we should definitely continue to be a leader in being very diverse and welcoming.
45:11 Yeah, I totally agree.
45:12 And it seems like that's still a really positive thing going on there.
45:16 It's just not done.
45:18 Right, right, yeah.
45:19 All right, so one of the questions I like to ask my guests before we wrap up a show is,
45:25 what's your favorite PyPI package or thing out there that you'd like to tell everyone,
45:29 hey, check this out, it's really cool?
45:31 Ramifications, of course.
45:32 Right, yeah.
45:34 But besides something else that I've written, one of my favorite packages that kind of was released a few weeks ago was adders, A-T-T-R-S.
45:47 And it's basically a package that allows you to, like, not have to write a bunch of boilerplate code.
45:54 Like what? Give us an example.
45:55 So actually, I use it in ramifications.
45:59 Adders allows you to kind of, like, make a nice class and, like, set some attributes of, like,
46:08 this should be in the init method or should be in the repr method.
46:12 And allows you to do, like, some, like, comparisons, like a complete set of comparisons.
46:19 It just, it makes, like, writing code even easier, even more simpler.
46:24 Yeah.
46:24 Yeah, that's cool.
46:25 Very cool.
46:26 Like default values and things like that.
46:28 Right.
46:28 Yeah.
46:29 Okay.
46:29 Exactly.
46:29 Very nice.
46:30 Yeah, I'll put that in the show notes.
46:31 And they've got some good documentation as well.
46:34 Yes, definitely.
46:35 And, yeah, ramifications definitely uses it.
46:37 And, like, so much more code would have been written without it.
46:40 Really nice.
46:41 Really nice.
46:42 All right, final question before you go.
46:44 What editor are you using these days?
46:46 I use Sublime.
46:48 Sublime.
46:48 Oh, yeah.
46:49 Yeah.
46:49 I like Sublime as well.
46:51 I do, too.
46:53 My coworker's trying to get me to use, like, PyCharm or IntelliJ.
46:56 But, I mean, every time I try, I just get sad.
46:58 So, I just move back to Sublime.
47:00 Yeah, that's really interesting.
47:01 I use Sublime for a lot of things.
47:03 I'm a big fan of PyCharm myself as well.
47:06 But I certainly, you know, a close second is Sublime for many things.
47:11 It's definitely nice.
47:12 Right.
47:13 All right, Lynn.
47:15 Thank you for being on the show.
47:16 It's been super interesting to touch on all these topics.
47:19 Yes, thanks for having me.
47:20 It's been a lot of fun.
47:21 Yeah.
47:21 Great.
47:22 And we'll put links to, like, your website and your Twitter and everything in the show notes
47:25 so people can just go to the website and find you that way.
47:27 That's fantastic.
47:28 Thank you so much.
47:29 Thanks.
47:30 Bye.
47:30 This has been another episode of Talk Python to Me.
47:34 Today's guest was Lynn Root.
47:35 And this episode has been sponsored by Codeship and Hired.
47:39 Thanks, guys, for supporting the show.
47:41 Check out Codeship at Codeship.com and thank them on Twitter via at Codeship.
47:46 Don't forget the discount code for listeners.
47:48 It's easy.
47:49 Talk Python.
47:50 All caps.
47:50 No spaces.
47:51 Hired wants to help you find your next big thing.
47:54 Visit Hired.com slash Talk Python to Me to get five or more offers with a salary and equity
48:01 presented right up front.
48:02 You'll also get a special listener signing bonus of $4,000.
48:05 There are just two more days to get the Talk Python to Me t-shirt.
48:09 Quick, go to bit.ly slash python shirt and reserve yours before the Kickstarter closes on Thursday.
48:14 You can find the links from the show at Talk Python To Me.com slash episodes slash show slash 15.
48:22 And before you go, be sure to subscribe to the show.
48:25 Open your favorite podcatcher and search for Python.
48:27 We should be right at the top.
48:29 You can also find the iTunes and direct RSS feeds in the footer on the website.
48:33 This is your host, Michael Kennedy.
48:35 Thanks for listening.
48:36 Smix, take us out of here.
48:38 I'm first to follow.