#192: Python Year in Review 2018 Edition Transcript
00:00 It's been a fantastic year for Python. Literally, every year is better than the last with so much
00:05 growth and excitement happening in the Python space. That's why I've asked two of my knowledgeable
00:10 Python friends, Dan Bader and Brian Okken, to help pick the top 10 stories from the Python community
00:15 for 2018. Join us on this episode of Talk Python to Me to Count Them Down. This episode was recorded
00:21 on November 27, 2018.
00:23 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the
00:41 ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter,
00:46 where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm
00:50 and follow the show on Twitter via at Talk Python.
00:53 Brian, Dan, both of you, welcome back to Talk Python.
00:56 Thank you.
00:57 Hey, thanks. Great to be back again.
00:58 Yeah, it's great to have you back as always. It's going to be so much fun.
01:01 And it is time to look back on 2018. Can you believe it's the end of 2018? I just remembered
01:08 how to write 2018 and not 2017 on all the stuff I have to sign.
01:11 Yeah, it's gone by fast.
01:14 It definitely has. It definitely has. So it's good to have you back. We're going to go through
01:20 what the three of us have decided are some of the top stories in the Python space for 2018. And I just
01:28 want to quickly throw out there for folks listening. This mostly does not include data science stories.
01:33 There's a little bit here and there, but it's mostly pure Python. And the reason is, I'm also doing a
01:38 show on data science year in review. So save those big stories for that one. Don't want to overlap.
01:43 All right. Well, we're, we're going to start and do a top 10 countdown. And we're going to go from
01:51 really interesting to the absolute big news at the end. And you can see what story we have picked to be
01:58 the number one story of 2018 for the Python space. Let's do a little warm up here. And Dan,
02:04 I'll let you kick this off. What was our number 10 item?
02:07 Sounds good. So our number 10 is the Python 3.7 release and more specifically the performance
02:13 optimizations in there. And I know you had a really good show on the podcast here with Anthony Shaw,
02:19 where you guys talked about, you know, some of the changes in 3.7. And I just thought that 3.7
02:26 should be on this list because it was a really, really good release. You know, there's a lot of like
02:29 free performance improvements. It's always nice to see that. And it's just been awesome to see Python 3
02:35 and see Python 3 specifically gets so much love and that it's under active development and it's
02:39 making this forward progress. And I think it's also the release, or I think it was either 3.6 or 3.7,
02:46 where Python 3 is now faster in all of the benchmarks than legacy Python, except for startup time. So I
02:54 thought, you know, that's kind of a nice milestone for Python 3.
02:57 I think that's a huge milestone for Python 3. I mean, this is sort of the year that the tide has turned
03:02 turned for Python 3 in a big way. I think it was starting to turn before, but really this year,
03:07 I think that's, that's one of the themes. And this is a major aspect of it, right? That Python 3 is now
03:14 faster. There were always these couple of reasons people say, I'm holding out to Python 2. You guys,
03:19 with your fancy Python 3 and your new keywords can just go play because my code is faster and faster
03:26 beats everything. Right? Well, maybe not. Yeah. Well, I mean, faster never really beats everything.
03:32 It's, it's faster development time too. And when you have a better data structures, you can sometimes
03:36 develop faster. However, you're right that a lot of people were holding out because of the, some of the
03:42 speed and, you know, and for certain, some applications that makes sense. But yeah, I think 3.7 is definitely
03:49 faster. And, and the other thing is a lot of people had already, some people for some of their projects
03:54 had already switched to Python 3.6. And that was probably from 2.7 to 3.6 was not an easy switch.
04:02 Having a switch from 3.6 to 3.7 be like, oh, I don't have to do anything. It's just better now.
04:08 That was a nice thing to have. Yeah. That's super nice. And I think that's a really great point you
04:13 raised, Brian, that, you know, careful what you're optimizing for, right? Like if it was really all about
04:18 speed, wouldn't we just be writing assembly code still, you know? Yeah.
04:23 I bet you, I bet somebody good at writing assembly could crush the performance of Python or a lot of
04:30 C++, but you know, they would release an app, a small app every 10 years and it would be buggy,
04:36 right? Like there's just, it's not the most important thing. That's, that's for sure.
04:41 One of my, my favorite examples there is, what's this, it's, what's this game called?
04:45 it's rollercoaster tycoon, which was written by one person in wind 32 x86 assembly. It's like a hundred
04:53 percent assembly code. And it's actually an amazing, amazing game. And it's, it's just,
05:00 it just blows my mind. Like everything is, was written in assembly language.
05:04 Wow. And it probably runs like totally smooth on like a 286 or something, right?
05:09 Yeah. No, I think you needed a Pentium or something, but, now somebody's worked on like a Python
05:17 going to need, I don't know, multi-core CPUs and whatnot to run at the same performance.
05:23 Yeah. Who knows? But you know, another, another interesting thing that's coming out
05:27 is more and more talk about actually compiling Python, which I think, you know, didn't make
05:32 the list, but it's definitely something that, that came up like my Pisces, for example, and Cython and
05:37 whatnot. Yeah. Yeah. So if we're going to release a new library or an awesome game, like roll rollercoaster
05:45 tycoon or something like that, and we were going to do it in open source, probably the main full release
05:51 after it's like totally stable and spent out for a year, it'd be like a zero dot. Oh one or,
05:57 or O three, maybe an O three, like a zero dot 12. I don't know, something really, really small,
06:02 right? Like that. Right. And that's been a theme that's gone through a lot of, a lot of open source.
06:09 So I think I'd like to highlight a little bit of shift in just the versioning that seems to be
06:14 happening around projects. I want to kick off this part of the conversation with talking about
06:19 Mahmoud Hashemi's project called zero over Brian, do you remember covering that on Python bites?
06:25 Yeah. He released it like as an April fool's thing, but it actually highlighted a lot of,
06:30 a lot of things about different projects that were zero over after like, you know, years.
06:36 Yeah. So the idea is kind of like I was describing at the beginning, like so many projects just never
06:41 even reach version one dot O. And in some sense, it doesn't matter, right? Is the version number
06:47 smaller or bigger? That tells you whether you have an older or new one, right? So that's fine. But there's a lot
06:53 of people, especially coming from the enterprise space or from the commercial software space that
06:58 sees things like zero dot 20 and go, Oh, that thing's like a super alpha. We're going to stay
07:03 away from that until that reaches one O. And I think it has a tangible effect on turning off a certain
07:09 category of folks, especially people who are maybe unfamiliar with open source and things like that.
07:15 Yeah, I think definitely. We, I mean, a lot of people do a commercial software development
07:20 and like I do, and, the zero, zero versions always, or almost always mean
07:28 the API is in flux. You can't trust it. You shouldn't program against it because it can,
07:34 the developers can change their mind at any time. And it isn't until the 1.0 version where we have a,
07:39 a stable, a stable API that people can count on. Yeah. And so I think a lot of people perceive it
07:45 that way, right? Yeah.
07:46 And it's interesting to consider the, the version number as part of the user interface,
07:51 you know, for, for an open source project, which makes absolute sense because of those,
07:56 those effects where people are like, yeah, you know, is this, is this really ready to go here?
07:59 Is this an early release or whatever? I mean, I'm wondering if it's really going to have a big
08:04 impact, you know, if people are moving to something like, like dating their releases, like just
08:08 calling them 2018 dot something, something, and you sort of get the November release, but it's,
08:13 it's an interesting experiment for sure. I mean, it, it definitely looks a little bit nicer than,
08:17 you know, having, I don't know, like somebody put pandas, pandas here, which had like 83 releases
08:22 and it's been running or it's been active for eight years and it's sitting at 0.24.
08:27 0.0.dev.
08:29 0.dev.
08:29 0.0.
08:30 Nothing wrong with that, but I can see how it turns some people off. Yeah.
08:36 I don't know how dev zero means production, but you know, to me that just says like, dude,
08:41 stay away from this. Don't ship this.
08:43 That's really scary.
08:43 Yeah. I think the, you know, maybe the grandfather of zero for it might be putty,
08:49 you know, that little, SSH tool you get for windows cause it doesn't come built in.
08:53 that'll trade app. it's 20 years old and it's 0.7.
08:57 One concern that I have with moving to the date based or like year based version numbers is how,
09:04 like if you have the semantic versions, you can do things like, okay, I want,
09:08 give me all the minor patches for this package and all the security updates, but I don't want to jump
09:13 to the next major version, which maybe has a breaking changes in it. And I know that's not a perfect system.
09:18 in general, you want to pin your packages, but it's kind of nice to have the ability to do that.
09:22 And with, you know, who knows what's going to happen in like July, 2018 or something 19.
09:27 Yeah, absolutely. So if you look at some of the tools that I know you use and I use, for example,
09:32 I use pyup.io and use something slightly different, but they let you go to your requirements file or
09:37 your pip file and say, I want you to keep this on the latest pin version possible with this constraint
09:44 where you could say like 0.1.star or something like that. Right.
09:47 Right. Yeah. But like, how would that work with, you know, date based.
09:52 Exactly. So let's dig into that a little bit. So what are the two options? I guess the two options
09:57 are just like to start shipping like full versions, like Django is now Django two and the Django two,
10:03 the main change from one to two is we're dropping Python to support, which is kind of ironic. Maybe it
10:09 should be Django three, but whatever, you know, it indicates a major change, like you were saying
10:13 there. Right. So one of the projects that's switching to calendar based version is Sanic,
10:20 right? The async web framework. And what they're doing is they're trying to ship a version,
10:25 a major release every quarter. So they might be, you know, 2018.07.0, then .1.2 to,
10:35 for like incremental changes, but they're also doing LTS releases around their calendar version.
10:41 So every December is an LTS version. So 2018.12.0 and so on would be supported for a year and would
10:50 be the LTS equivalent, the long-term support equivalent. If you don't want to switch to
10:55 something beyond that, that's how that group is handling it. Interesting. Yeah. I kind of like that.
11:00 Then you can glance at a version and, I mean, if everybody sort of supports something like that,
11:05 you can glance at all of your versions and go, Oh, everything's within a year or so. So it's,
11:10 it's probably fine. Exactly. Like Brian, you know a lot about testing. If I told you I'm using
11:14 web test.2.0.32, is that new? Is it super old? Is that a beta version? Like what is it? Like,
11:21 what is that? Right. You don't know. Yeah. But if I told you I was using web test 2019.1.0,
11:27 like, Oh, you must be like testing the new one that's coming or, you know, something I,
11:31 it's just communicates it. So Sanic is doing this. pip is doing this. and then you threw some
11:36 others in there, Brian, what are these? I'm not familiar with them. There's some descriptions of
11:39 calendar version and semantic version, calver.org and semver.org. I love that those are domains.
11:44 I think Mahmoud did at least one of them, maybe both. He has this knack for creating these little
11:51 sites and these little projects that just pop out of nowhere. But the, the, the, one of the things I want to
11:57 point out is I was talking with, somebody about calendar versioning and that versus semantic
12:03 versioning. And one of the things is that the major number, whether it's two or three or it's a date
12:08 based often means, you're not going to, you're not going to remove features. So you promise not to
12:16 break customer code within a major version. The date base kind of says we're at least going to stay.
12:22 It's safe for a year. Yeah. Whereas a semantic versioning, you know, a development team can go
12:27 through major versions as fast as they want to, if they feel like breaking things fast. That's true.
12:31 That's true. It's just when you get the feeling to switch the major version from two to three or
12:36 three to four, you just do it, right? Yeah. But it has impact. So, yeah, I think there's some
12:42 interest there. So I think another thing that was really interesting about the calendar versioning that
12:46 I learned talking to Adam Hopkins from the Sanic project was that there's this sense of you need
12:53 to keep shipping, right? Like if you have a calendar version and it's from last year and that's the
12:58 latest version that sends a message in and of itself that this project is, is not getting a lot of
13:04 activity. Whereas without it, you know, you kind of got to be more deeply familiar with the project to
13:09 understand its rate of improvement. Yeah. I think even it'd be cool to have people,
13:14 even if there's not really any changes needed just to release it and say, Hey, we tested it. It's,
13:18 this has all been tested on the new versions and you're good to go. We updated like the readme file
13:24 or something. Right. Well, there's almost always like some minor little thing that can be,
13:29 can be improved and shipped. Right. Another story of 2018 and maybe slightly before,
13:36 but really was coming in strong in 2018 is Python's kind of popular.
13:40 Yeah. So, Python's very popular. It's taking over the world. There was a neat economist article
13:48 that came out and that, I guess that's just sort of related to the, they're highlighting a trend.
13:54 And the article was, Python has brought computer programming programming to a vast new audience.
13:59 But some of the things they point out within there is that, right now, according to a stack
14:06 overflow survey, 40% of professional developers use Python and another 25% wish they did, which is
14:13 interesting. It just, just go do it, man. Also the, they interviewed, Codecademy,
14:19 which is an online training site and their biggest increase in demand, for 2018 is with Python.
14:25 Yeah. That doesn't surprise me. I mean, you think about a very fast growing technology that also has
14:31 a lot of career possibilities. Definitely people are going to be wanting to learn that, right? So if
14:37 you go to somewhere like Codecademy or any other online trading place, like there's going to be,
14:41 unless they're doing something wrong, there should be a lot of demand for Python.
14:44 They noted that since 2014, at least in a, from a survey in 2014, Python was the most popular
14:51 language, intro language at American universities, but that was amongst, people, studying
14:57 sciences or computer science or something engineering. But what we're seeing now in 2018 is the growing
15:03 movement of people that are not traditionally think of themselves as programmers, primarily learning
15:09 Python. And, we'll see that in data sciences, embedded development is now moving towards
15:15 Python and in, in, in a lot of maker senses. And then also the article also pointed out that more
15:22 and more people are just sort of worried that all jobs will be taken over by automation. So they want
15:27 to be part of that. So in order to, to learn some automation on your own, Python is a good way to,
15:32 to be part of that.
15:32 You either control the robots or you get replaced by the robots. Take your pick, right?
15:37 Yeah. Also to throw in there, I saw this on, Nina Sakarenko's Twitter feed recently. so Python
15:45 is becoming, or has been nominated as the official programming language for education in France. So I
15:50 think it's going to be part of the high school curriculum there, which is, that's super cool.
15:55 I think it's, we're seeing the snowball effect, you know, where, where people, it's really becoming
15:59 the dominating language for beginners and educational language. And I think that's super cool.
16:03 That is so cool. And when I saw that on Nina's post as well, I'm like, Oh, that is amazing. And you know,
16:09 I've been thinking a lot about this. Like why is, is Python both popular as a teaching language and
16:14 popular as a professional programming language? Like C++ is popular as a pro professional
16:20 programming language, but they don't suggest that kids start with it. Right. Things like this.
16:25 I think there's this special balance that when the language was created, it has this way to get
16:30 started easily and to pull in just the aspects that you want. Right. So you can start out with not
16:36 even functions and then like, okay, I need some structure. I'm going to put some functions in here.
16:40 Oh, let's start working with classes and things like generators, but none of that, you don't have to
16:47 understand or use or care about that until you're ready. So like Python has a special ability to start
16:52 easy and small, but expand into professional type of apps. Whereas a lot of them are either,
16:56 you're always a beginner type of language, or you're always like, yeah, that's a void star star kids.
17:02 Let's talk about that.
17:03 Totally. Yeah. Actually, Mike, I think you, you called it a full spectrum language way back when,
17:10 when we did an interview in my, my blog with you. And that just really stuck with me because I think
17:16 that's, that's so true. You know, it's, it's not just, it's not like you're learning, you know,
17:19 like the little like turtle, like logo or something like that, where it's like, you learn the basics
17:23 of programming, then you're sort of stuck and you have to move on and learn something else. But no,
17:27 you can, you know, all the skills you learn working with Python, they kind of scale and,
17:30 and grow with you. And that's, that's just a beautiful thing.
17:33 It's special. There's not many other languages like that.
17:35 What a time to be alive.
17:36 It really is an amazing time to be alive.
17:42 This portion of Talk Python to Me is brought to you by Cloudbolt.
17:44 Friends don't let friends violate PEP 8, nor do they let them spend their days in an unfulfilling
17:50 work environment. Good news. Your friends at Cloudbolt want your help developing their state-of-the-art
17:54 cloud management software. Built with Django and ranked as the number one product of its kind,
17:59 Cloudbolt's looking for talented engineers of all kinds. Located in beautiful Portland, Oregon,
18:04 Cloudbolt is an hour from the Pacific Ocean and Mount Hood. You're not in Portland? Not a problem.
18:09 Cloudbolt offers a relocation stipend to the Pacific Northwest and is also hiring solution
18:14 engineers everywhere. Whether you're interested in containers, hypervisors, or just writing clean
18:19 performant Python code, Cloudbolt would love to hear from you. Visit talkpython.fm slash
18:24 Cloudbolt for more information. Brian, you, you touched on that a lot of the growth of Python was
18:31 centered around people who are using Python as a tool, maybe not as their identity, right? Like
18:37 Python developers are like, oh, I'm a Python developer, but other people are just using
18:41 Python, maybe for data science or things like that. And so number, number seven in our list
18:48 is that I'm going to declare 2018 as the year that the number of data scientists have come to equal the
18:56 number of web developers in Python for professional Python developers or users, let's say.
19:02 Okay, you're going to have to back that up a little bit.
19:03 All right. So there was a really cool survey done by the PSF in conjunction with JetBrains. So JetBrains
19:11 did the infrastructure for sort of analyzing it and hosting it and so on, but it was promoted just
19:17 through the PSF and other public sources. So it's not like tied to JetBrains, but they did this really
19:23 great survey. And it's called the Python developer survey 2017, which might sound like I'm wrong in my year
19:29 and sort of I am, but this is at the very end. This is like November, December or something like
19:34 that of 2017. So it's pretty much there. And they did a bunch of interesting, they asked a bunch of
19:40 interesting questions and they found out a lot of things like, for example, four out of five Python
19:45 developers use Python as their main language. So when you see people are using Python, mostly they're using
19:51 that as their main language. It's not like, well, I write and see, but I also have this script that like
19:56 compiles it in Python or some weird thing like that, right? So the majority of people using Python
20:00 use it as their main language. And that's, that's pretty interesting. But the thing that I want to
20:06 point out is they said for, you know, what do you use Python for? And if you pick where Python is main
20:13 versus where Python is secondary, you get slightly different answers. But generally it says for data
20:19 analysis and data science, 50% of the people use it for that and 49% of the people use it for web development.
20:27 And then there's a whole bunch of other areas that like, you know, it's a multiple answer type of thing.
20:32 So they've also checked those off. But in this survey, basically they said 50% of the people said data
20:39 analysis, 49 web development. Does that surprise you guys?
20:42 Not really.
20:43 I think it surprised me. I know there's a lot of data scientists. I feel like on a web development team,
20:51 there's more participants than on a data analysis team. I feel like a data analysis is often done by
20:57 a smaller group of people than like the 30 people that maintain the website or, you know, whatever,
21:01 right? Like that was my conception. I don't know if that's accurate, but apparently no. Either there's
21:07 even more data scientists than I guess, or the there's larger teams of data scientists and smaller
21:13 teams of web developers. So this is all interesting. Another thing that I, I thought was pretty
21:18 interesting around this is they asked people to guess that ratio in this survey and they gave them
21:26 like a five choices, four choices, something like that. And they said, what do you think the ratio is?
21:30 Five times the number of web developers to every data scientist, one to one, you know, maybe worse.
21:36 I can't like 10 to one. I can't remember. But when they asked that question to the group,
21:41 half of whom were data scientists and half of whom were web developers based on the original question,
21:46 the responses they got was only one, only 10% of the people got it right. 20%. And,
21:53 most thought that it was five to one, five times web developers to one data scientist. So I think the
22:02 general perception is there's more stuff happening on the web around Python than there are data
22:06 scientists. But I think also what the most surprising thing to me when I saw that result was half of the
22:12 people that answered that question were data scientists, you know? And so to me, my interpretation
22:18 is that means that a lot of the data scientists feel like they're not as big of a representative group of
22:24 the community as they are. They feel like, Oh, we're like 20% of the community. But in fact,
22:28 they're like half. And I don't know why that is, but I think it's interesting.
22:32 It is interesting. Well, there's definitely like a, if you look at the hype around different packages,
22:37 for instance, there's more packages that are web related than there are data science related.
22:44 Mostly I think because a lot of the data science tools have been bundled into these large groups of
22:50 tools, even though. Yeah. Yeah. So they have like a common set of things that they were like,
22:56 data scientists like to all use sort of this, you know, a handful of different tool chains,
23:01 whereas web developers like to go off and create their own asynchronous library.
23:05 Yeah. Everyone's got their own library to match their new JavaScript library.
23:09 Yeah. I wonder if the Anaconda distribution and things like that also play into that feeling,
23:14 right? You just install it and you just have the tools, right? You don't necessarily go and hunt
23:18 for every little library as much.
23:20 This sort of reminds me of who coined that term? Scott Hanselman, I think the concept of the dark
23:26 matter developer.
23:27 Yes. I was thinking that too.
23:28 Yeah. Yeah. I think, I think you actually told me about it. So I guess the idea is that there's a
23:32 large segment of the programming population or, you know, people who program for even for a living
23:38 sometimes that are just not visible in the community. They, you know, get their work done and it's just
23:45 not, maybe they don't identify as a programmer or it's not just something, it's just not something
23:49 that they do publicly or have like side projects and stuff like that. Nothing wrong with that.
23:54 Yeah. And most people, they don't go to conferences or go on social media and go crazy about their job.
24:00 Like, like if I was a barista, nothing wrong with that, but like, I probably wouldn't go to barista
24:05 conferences and go to barista meetups and like, you know, talk about being a barista on social media
24:10 very much, right? Like it just, it just, yeah, you actually write some awesome stories if you did that.
24:15 Make coffee for me.
24:17 Hey, anyone out there listening, go for it. That's all you.
24:22 I'm going to get that.
24:23 I would listen to that. I think there's a lot, a huge number of companies that have
24:27 one data scientist or data analyst in their company. And so they feel outnumbered because
24:34 they're the only one in their company or there's like the, the ratio is very much skewed within
24:39 their company, but they're kind of all over the place.
24:41 Yeah. Yeah. I totally agree. And I do think there's a little bit of this dark matter.
24:45 stuff possibly happening here. Maybe you're not allowed to talk about your analysis that
24:49 you're doing. So you just don't, maybe you've backed into becoming this data scientist business
24:54 sort of analyst type person. You started out as like a trader and then you, you kind of were the
25:00 person that had enough code to like figure out how to do the overall reporting and analysis and whatnot.
25:05 And you still don't think of yourself as a developer, but you effectively are. Right. So I don't know.
25:10 I think there's a lot of interesting angles here.
25:12 Yeah. Yeah. Also I was just thinking like, you know, a lot more secrecy maybe in the, in those
25:16 areas. Like if you're working on some state of the art, like machine learning thing, I don't know,
25:20 self-driving cars or whatever, maybe you don't necessarily want to go out there and share with
25:25 the world what you just did. Whereas in the web development work, I feel like we're sort of,
25:29 you know, we figured most of it out. And so people are more willing, I think, to,
25:33 to share what they're working on. At least that's the impression that I got.
25:37 And often it's, yeah, I agree. And it's on the web already.
25:39 Yeah.
25:40 Whereas if you're working on the Apple self-driving car, like you can't even acknowledge its existence,
25:44 right? You're like working for the CIA. Yeah. I work for the state department. Okay. So anyway,
25:50 if you want to dig into more of this, I had Eva Jelowalski and, Dmitry Filipov on,
25:57 they're the two folks who did the, this and they printed it in a Python. So on Talk Python 176.
26:02 All right. Item number six, Brian, what do we got?
26:06 We have a darkening of the community. This is a very dark topic.
26:10 It is a little dark, but kind of in a good way.
26:12 Black is taking over. Black is, there's not in a bad way. So the project black is a code
26:20 formatter that just sort of formats all your code for you. And, and, and it like PEP 8 and
26:26 some of those flake eight and stuff tools were to tell you where places where you might want to look
26:31 at your code and change it. Whereas black is, yeah, I'm not, I can tell you if you want me to tell you,
26:37 but I'll just go ahead and change it.
26:39 It's awesome. Sort of taking, there's a lot of projects around the web or around, Python that are picking it up and, and using it as their standard. And, I think
26:49 it's been definitely very interesting in 2018 watching this happen.
26:52 I love that tool. So it's so good. Like, especially if you, if it's a community project, you're working
26:58 on a project with several developers and it's just so easy to standardize everything and you don't have
27:03 to have the back and forth conversations of defining your own code style. And I mean, assuming you like
27:08 the output that black produces, which I personally really like, and, it's, it's been super helpful
27:14 for real Python. We have like an, materials repository, some sample projects. So like every single
27:19 folder in there was created by a different person, by different author. And so I went down that, that
27:24 route of like, okay, we're going to define like a beautiful code style and then tell people how to
27:27 format everything and make sure it's, it's sort of adhere to. And that's really, really hard to do.
27:32 And so I just ran black on the whole thing, set it up on CI. So we'll check, it'll check the
27:36 formatting problem solved. And it took 15, 20 minutes to do that. So yeah. But what a lifesaver,
27:42 such a great tool.
27:43 So a couple of things about it. It's taken, it's one of the things that takes things like style and
27:48 format and stuff like that, and takes those out of code reviews. And so code reviews can just be
27:53 focused on algorithm and design and not on whether you use single quotes or versus double quotes or
27:59 something. The other thing is, black shows an example. It has part of it is a pre-commit hook
28:06 so that you can add a black pre-commit hook to your code. So everybody just as they're,
28:11 as they're checking it in, we'll have black run on their code. And, that highlighted the pre-commit
28:17 tool for me. And I think pre-commit is being used more and more because of black using it.
28:22 Yeah. I've heard that more than once. That's pretty awesome. You're like, wait,
28:25 what's a pre-commit hook? That thing exists in Git? Yeah, definitely.
28:29 Nice. I like it. The slogan, like you can have it in any color you like as long as you want it in
28:35 black. Yeah. I didn't know that that was from Henry Ford until somebody told me about Henry Ford saying
28:39 that about the Model T. Does it have like a theme song or what's going on here? Oh, well, every time I
28:44 use black, I hear Black Hole Sun from Soundgarden. So, I went ahead and just mentioned that in the
28:50 Black Hole Sun is Soundgarden was such a good band. They, I mean, they really came from like a special
28:55 era of music. We had them, Pearl Jam, Alice in Chains, Dinosaur Jr. Like there's a lot of good stuff
29:01 back there, but this is the only one that seems to be making it to a Python package. So way to go.
29:05 All right, Dan, for item number five, I feel like for a really long time, it was like, well,
29:14 pypi.python.org slash pypi is a little bit out of date and a little bit crummy, but we're working on it.
29:21 And it just, it seemed to be in this like stasis of like half improved forever, but not anymore, right?
29:28 Yeah. The new, new pypi, new Python packaging index went live this year and what an amazing
29:34 improvement. I mean, like, you know, throughout the whole project and I know you had a really,
29:38 really great show where you interviewed, you know, a bunch of people working on that transition and
29:42 launching the new and improved pypi. And it's just crazy, you know, like throughout the whole thing,
29:46 it's, it's been like rewritten from the ground up the way I understand it. It's new hosting
29:50 infrastructure and it's much more friendly now for new contributors. Like beforehand, I think it was
29:56 sort of like a home grown web framework because, well, it was that pypi, old pypi was created before
30:03 web frameworks really were a thing in Python. Here's the socket. Let's start with that. Like,
30:07 wait, wait, wait, wait, what? Yeah. And so, yeah, I just love it. You know,
30:11 like every time I'm searching for a package now, it just, it just looks so much better.
30:15 It looks like, it looks good. You know, it's like, it's when you compare it with JavaScript,
30:19 like the, the note JS world and NPM, I felt like, yeah, that was sort of the gold standard for a while
30:25 for what a online package repository should look like and the features it should have.
30:30 And I feel like pypi is now playing in that league and it's super nice.
30:34 I think it is super nice as well. And it's silly to say that it matters that it looks good because
30:40 it's just pip install a thing. But I think it really communicates a message to people who come into Python
30:46 or who are using Python, but especially people who are new and they don't, they're like, oh,
30:50 what is this stuff? Oh, there's a package injection. You're like, whoa, that thing is like from the
30:53 90s. What is that? Right? Like that, I mean, that communicates something about how much the
30:59 community cares for, for that kind of stuff. Right. Yeah. They also rolled that over with like
31:03 everybody in the world using it and very little hiccups. Yeah. It definitely is.
31:09 Really impressive. Yeah. It's super impressive. So a couple of interesting notes here when they
31:13 rolled it out first, it was pypi.io and I thought, oh, they're just being part of this hip new.io.
31:19 You know, it's like, it's like the .ly of yesteryear, you know, it's like Libya all of a sudden became a
31:28 super awesome place to have like your domain name because it had ly in the end. And so io, right,
31:32 it's super popular now, but now it's pypi.org. And the story is the pypi.org was owned by somebody else
31:40 and it took a long time for the PSF to get it from them. Whereas they could go and buy pypi.io. So
31:46 that was like an intermediate step in the whole rollout. Yeah. Some of the nasty details of web
31:52 development. Exactly. And then the other one is, this is a pretty interesting example of a popular
31:58 Pyramid web app, right? They, they started out in Flask and actually said, no, we'd rather go with
32:02 Pyramid, which I thought was a pretty interesting choice being a fan of Pyramid myself. And then Brian
32:08 finally marked down, right? Yeah. So they, the old PyPI was, did not support readme mark.md. It
32:14 would only was a readme dot, what is that? RSL or something or. Yeah. RST. Yeah. So I try to avoid
32:23 restructured text as much as I can. No offense to everybody that loves it. Yeah. I don't hear you.
32:28 It's like markdown, but it's broken. The stuff you put in there doesn't quite work.
32:33 Just kidding. No comment. Just kidding. Just kidding. I'm just saying the markdown
32:38 stuff doesn't always work in there. All right. Number four, item number four, Brian, what we got?
32:43 You touched on this a little bit before. Yeah. I think it's been fun to watch. It was unexpected.
32:48 The rise of Python in the embedded world. We actually did a segment on this in, on Python
32:53 Python bytes, but there's so many in partly from the maker movement and, and a lot of people trying
33:00 to get into controlling their, not just their computers, but their world with, internet of
33:05 things. And also just playing with, you know, adding lights to your bicycle and things like that with
33:10 microcontrollers and hardware hacking. Adafruit's been a big part of that, of, pushing it, but,
33:15 but there's a lot of projects around Python and embedded. Micro Python is one of those.
33:20 And micro Python's being used by both, by both hobbyists and, and serious, developers.
33:27 Hobbyists are serious developers too, but, but I think some companies are using micro Python as well.
33:32 Adafruit has its own version of this called a circuit Python. Actually, I don't know if it's
33:37 related to micro Python or not, but Adafruit has circuit Python. And then micro bit is,
33:44 code, Python base for, the micro bit processor. And then we even have, mu, which is a,
33:51 editor that directly interacts with, microcontrollers running Python.
33:56 It's been pretty fun to watch this year.
33:58 I really think the rights of IOT and Python is just taking root now. And micro Python is so
34:04 interesting to me. I mean, the fact that can take a Lambda expression and tie it to a hardware
34:09 interrupt just like never ceases to amaze me, you know?
34:12 Yeah, that's really cool. And so, and a lot of this is because somebody wants to learn electronics
34:18 or something, but they also want to make it do things. So you have to learn a programming language
34:22 and it used to be, we taught people C and like the barrier to entry for C is huge. Having a Python
34:30 be able to do that is wonderful.
34:31 Yeah, it is. So you talk of the IOT stuff. I learned something from Matt McKay, recently
34:37 on an episode, and I want to share this with you and just see what you think. So you guys click on this,
34:41 this link here. So here's an IOT device using a Python. And the idea is the title of the article,
34:49 this is on the Twilio blog. It's how I potty trained my kids using Twilio and an AWS IOT button.
34:55 So, so it's a little button like those Amazon dash buttons. And he put it near his son's bed.
35:02 And apparently there are kids sharing the room and wanting to make sure he didn't wake up and make a
35:07 lot of noise and wake up with the other kids. So he put this button that basically has like a poop
35:10 emoji and you click it and it says, I got to go. And the, the, the parents would come in and like
35:15 help out the kid while he was learning. And this is written using like the Python API on like AWS
35:20 Lambda and stuff like that. So yeah, the rise of Python and IOT.
35:24 So Q4, 10 years. And his kids are like, dad, did you have to put that on the internet?
35:29 This is awesome. I love this.
35:32 Exactly.
35:32 Yeah.
35:34 This is great.
35:35 Isn't this funny. So yeah, I mean, funny and like an amusing, but also like, actually
35:39 that's kind of helpful. Like I can see how that would be helpful as a parent. Cause you definitely
35:44 don't want your kids waking up and you have to be up for a few hours in the middle of the night.
35:47 So if an IOT button can help that, then get the IOT button. All right. Item number three
35:53 and it's packed full of goodness here, you guys. So legacy Python's days are fading. What do you
35:59 think? Well, I haven't used it for ages. So yeah, I haven't either. Dan is real Python
36:07 running on like what? Two, six.
36:09 Yeah. Not a lot of legacy Python for me anymore. Thankfully.
36:13 That's awesome.
36:13 And yeah, it's, I mean, it's, it's kind of crazy that it's, you know, it's a sort of crap
36:17 on us, the Python two end of life. And now we're not that far away anymore from it. So
36:22 yeah, we're actually super close. And the official item that I'm linking to as this piece of news is
36:29 Guido von Rossum's official statement. So I don't know, four years ago or something, it said, yeah,
36:35 Python two, it'll be done in 2020, whatever. Right? Like that's like a broad range for a period where
36:42 things stops a whole year. So we needed a more clear date. People are speculating. Maybe the date
36:48 of PyCon might be a cool one. Maybe the end, maybe the beginning. So he came out and said, let's not
36:53 play games with semantics. The way I see it for the situation for Python two seven is that end of life
36:59 is January 1st, 2020. And there will be no updates, not even source only security patches after that date
37:04 period. That sounds like the end.
37:06 Yeah. It's a good end though, because the, and some people might complain about the whole security
37:10 patches, but this is volunteer driven. So it's volunteers time. And I think that to let them work on new
37:16 things is good. Yeah, absolutely. And it's not like people are surprised, right? It's not like,
37:24 wait, last month they didn't, nobody told us there's going to be a new Python. Like it's been going on for
37:29 10 years. This will make it 12. It's time. Yeah. And there's a couple of loudmouths that two podcasts
37:35 that have been talking about it for a couple of years. So yeah, I think we're actually making a dent
37:39 with this referring to Python two as legacy Python. I think it's, it's making a difference and not everybody
37:44 loves it, but I know some people it's been working for.
37:47 Do you guys know, you know, with the, no more official security patches, after the, the end of life
37:53 date, I mean, obviously that this is a big like business opportunity for other companies to come in and
37:58 offer, you know, long-term Python two updates and stuff. Does anybody know who's, who's doing that right now?
38:03 Like some Linux distributions, I would guess, but I don't really know what's going on in that space.
38:08 Yeah. Possibly the big news that I just heard. So, you know, there's red hat enterprise Linux,
38:13 right? And they do a lot of that kind of stuff and the versions that they have live on for a long
38:19 period of time, but they just announced that they're dropping Python two support from red hat
38:23 enterprise Linux, which to me sounds like, okay, even the laggards are stepping forward.
38:28 So I think that that's pretty big, but I suspect that there's still a lot of support on the backend.
38:33 There's been a few people who've like talked about forking Python two and just supporting it
38:39 themselves as a single individual, but it seems, I'm sure there's going to be some of that, but like
38:44 as a company, like, let's say, I don't know, your bank of America, you're like, dude, we don't need
38:49 to upgrade. There's this guy. He forked it. We're good. You know what I mean? Like that just doesn't
38:53 seem realistic. It's also not just the C run, the CPython runtime anymore. It's like so much more
39:01 than that. So Django no longer supports Python two, like the scientific stack, like NumPy and stuff are
39:07 dropping support for Python two. So even if you still have the older stuff, you know, you're like,
39:12 well, we can just keep running. It's not just about what's running your code. It's also what you can use
39:16 in your code. And you know, that's going to start looking like it's just zooming off into the distance.
39:20 So not good.
39:22 Well, I mean, I think Python two will actually live on forever in some situations where like, for instance,
39:27 you got something that doesn't need a security patch because it doesn't touch the internet at all.
39:32 And as long as it will run on whatever CPU you're sticking it on for some people will have like a huge
39:39 program that they never touch because the requirements never change. And they use it every day,
39:45 but it doesn't need to be flexible. It doesn't need to be worked on that much. They'll probably upgrade
39:50 when they have to change the program. So yeah, I'm wondering if that also means that Apple is
39:56 finally moving to Python three and making that the default for macOS because the latest release,
40:02 it's still with two, seven, 10, I think. Yeah, that would actually be really, really nice.
40:09 You know, it's starting to shift in Ubuntu and just different Linux distributions, but also on macOS.
40:15 So yeah, that would be, that'd be super cool.
40:17 This portion of Talk Python to Me is brought to you by us. Have you heard that Python is not good
40:25 for concurrent programming problems? Whoever told you that is living in the past because it's prime
40:30 time for Python's asynchronous features. With the widespread adoption of async methods and the async
40:36 and await keywords, Python's ecosystem has a ton of new and exciting frameworks based on async and await.
40:42 That's why we created a course for anyone who wants to learn all of Python's async capabilities,
40:47 async techniques and examples in Python. Just visit talkpython.fm/async and watch the intro video
40:54 to see if this course is for you. It's only $49 and you own it forever. No subscriptions. And there are
41:00 discounts for teams as well. Brian, you're talking about things that don't require security patches.
41:07 I just saw a video from NASA talking about their trip to the moon and setting up a base there,
41:12 which is just awesome. So they had like all this sort of quick, different scenes of people doing
41:18 stuff. And one of the scenes was them working, they had sublime open, like editing a bunch of Python
41:24 code controlling like something about the, the moon mission, which was pretty cool. But I didn't catch
41:28 whether it was two or three. I couldn't tell.
41:32 That's pretty cool. Yeah. Someone else on Reddit did catch that the sublime was unregistered by the
41:37 way. Okay. So I guess the final thought here is we've also talked about this on Python bytes is that
41:48 there's the Python clock.org, the Python to death clock. And it has been updated for this, this new
41:53 end of life statement. And it reads one year, one month, two days. So if people are out there and
41:58 they got to start upgrading, like the death clock is ticking. All right. I also got item number two
42:03 and that I would categorize as the end of the innocence for PI PI and PIP. So we've heard about
42:10 a couple of issues, one, like right before 2018, like late 2017. And then another one again, this year
42:17 about people posting or taking over control and posting some form of evil PI PI package.
42:26 And primarily they look like they're kind of either a research project, a prank, or some kind of like
42:34 Bitcoin theft. So one of them installed like a clipboard monitor that would watch for a Bitcoin
42:42 addresses. And as soon as it saw one, it would like ship that off to like the mothership or something to
42:47 that effect. But I don't know if anything super bad that's happened, but it, I guess until, you know,
42:53 2016, 2017, PI PI as a place was just, it's incredible to me. It's a place on the internet
43:00 that was entirely unprotected and yet safe. I can imagine that. Yeah. If you had like a open FTP
43:08 server and you just put it on the internet, like all sorts of badness would happen to that thing
43:12 in a day. It would be full of all sorts of things you don't want it to be full of.
43:16 And here PI PI was going along and it was just, you know, the community sort of policed itself and
43:21 took care of itself. Plus it used to be really hard to become a person that could push things to
43:26 PI PI. Yeah. Maybe it correlates to the shipping of PI PI.org. Yeah. There seemed to be a lot of,
43:31 like, not a lot, like I'm trying to be more specific, but I think NPM again, in the JavaScript,
43:37 like Node.js world, they had a big, they actually was, it was something similar. I think it started with a
43:42 typo squatting attack, but then it was actually a worm that would then go. So if you got the malicious
43:46 package, nothing would really happen except that package as it was installing was looking for your,
43:53 like if you were registered with the NPM package repository and it would go in and patch the packages
43:59 that you owned to spread that worm further. I don't know if it was some payload, but it was,
44:04 you know, really exploding quickly. And I guess the same thing could happen with PI PI. Like,
44:08 I don't, I don't see why not. Yeah, it definitely could, but it hasn't. And let's,
44:13 let's not give any people ideas. So the, yeah, exactly. Don't say that security by obscurity.
44:24 Come on. Exactly. Right. Security by lack of creativity. Okay. So the two main problems were
44:31 basically like you pointed out, Dan type of squatting, which is like, we're going to upload a
44:37 package that takes a copy of Django and then slightly modifies it, set up.py and publish it under Django
44:47 or Django or whatever, like how you pronounce it without the J, right? So if people pip install and
44:53 they miss the spell, they get your bad thing. Right. So that's one. And the other was to take
44:57 advantage of folks who didn't understand why something wasn't available to them. So like,
45:04 if you tried to use regular expressions and you say re dot, and there's like, it says,
45:09 well, re is not defined. You're like, well, maybe I need to pip install re. No, you just need to import
45:12 it. Right. It's built in. So they were targeting the built-in libraries and I believe all the built-ins
45:16 are not patched. And Brian, didn't we cover something on Python bytes that would help guard against typo
45:22 squatting? It would like try to grab packages that also had misspellings around your package name.
45:28 I think there was something like that. Yeah, I think so. I don't remember what it's called,
45:31 but I think that exists and people could find it. Oh yeah. Yeah. I remember listening to that episode
45:35 and you guys were talking, I forgot what it's called too, but like it generates different variations of
45:39 your own package names and try and like register all of those. Yeah, exactly. It's very work intensive.
45:44 Yeah. So it's interesting on what is the fix? And I don't know what the fix is. The PSF is trying to get
45:49 more resources to support PyPI and the Python packaging infrastructure in general, but like
45:55 largely that's been improve it. Do things like you talked about previously, Dan, on just shipping
46:00 pypi.org. Right. But this validation, if you have so many releases of so many packages, how do you even
46:06 verify it? I don't know. It's tricky. It's not necessarily something that could be, that can be solved
46:10 with a straightforward technology fix, right? Like essentially you're, it's a problem that all of
46:15 these, let's call them online marketplaces for code repositories or whatever you want to call them.
46:20 You know, if you look at the Android app store, Apple app store, I mean the Apple app store, they have
46:25 these, these like crazy intensive review processes, you know, considering that there are millions of, of, of
46:31 apps in this app store and they're reviewing every single one. And I think there's even some manual steps
46:35 involved there. And even there, we've had malicious apps that were trying to steal people's, you know,
46:40 private information and it's a really locked down platform. So I think it's really, it's a challenge
46:45 that, that we're facing now because we're all connected over the internet and, you know,
46:48 people are really relying on these, on these package platforms. So, it seems like it's
46:54 something we'll, we'll have to try out a bunch of solutions and see what will work there.
46:57 I think we should get some of the, all of these new machine learning Python people to get involved
47:02 in and take a look at it because conceptually the normal updates for a package are little tweaks
47:09 on, on what it's doing. And if suddenly it starts, connecting to different servers all over the
47:15 world, or even just one where it used to not connect to anything, that would be a change. It would be a
47:21 different behavior than it was ever doing before that, that should be something that a machine could
47:26 catch.
47:26 Yeah, actually, I think you're right. I mean, there's almost no scenario where pip install a thing should
47:32 create an outbound connections besides to download the package.
47:35 Or, you know, even a package that doesn't normally use any connections or use requests suddenly adds,
47:42 you know, socket connecting or something. that's something to take, you know, at least we
47:47 can filter it down to things people could take a look at and say, is something weird going on here?
47:51 Well, it would actually be sweet to have like a CPython interpreter that is fully sandboxed that,
47:57 you know, can't like, you could just run code that people send you and you can run it safely and it
48:03 wouldn't be able to write to any folder on your disk or open sockets and whatnot. That would actually be
48:07 kind of sweet. I mean, it's all interpreted. So it's seems like that should be possible. I mean,
48:12 it's going to take a lot of work, I guess, but I think it's possible as well. You know, Dan,
48:15 you mentioned the online app store as maybe something. I wonder if there's something like
48:20 that in terms of packaging that we could add. And what I'm thinking is like, if I go build an iOS app,
48:26 I have to declare the things that's going to ask for, like it has to ask for access to contacts.
48:32 It has to ask for access to GPS. So, you know, you declare it needs the GPS feature. It needs these
48:39 other features, right? So what about a package that declares, like I don't declare any network
48:44 capabilities. So I don't talk on the network and things like, you know, I can depend upon packages
48:49 that do, for example.
48:50 On the flip side, none of these have caused a huge amount of damage. And I don't want to go
48:55 to the point of overreacting so that everybody has to take off their shoes to travel.
48:59 Yes, I know.
48:59 Things like that.
49:00 I know. We don't want feel good security that doesn't actually make any difference,
49:04 but makes life hard for everybody.
49:05 Yeah.
49:06 Yeah, I agree.
49:06 That's a good point.
49:07 I don't know what the answer is. I don't know what the fix is or if there is a fix,
49:10 but I would definitely declare the end of innocence for PyPI. That's my declaration as item two
49:15 for 2018. Dan, you have the honor of kicking off.
49:19 What is the number one story in the Python space for 2018? What happened?
49:23 Oh, man. What a sad honor, though.
49:25 Well, yeah, I know. It's not about the messenger, right?
49:30 Well, yeah. I mean, Guido van Rossum stepped down as the BDFL, which is both sad and ironic
49:37 because I guess BDFL stands for Benevolent Dictator for Life, which I think he still is now
49:44 technically, but he's just going to be less involved with the stewardship and leadership of CPython.
49:50 Yeah. He's a little more like the Queen of England now, in a sense, right?
49:55 Like he's still representing Python. He's still very active in the community, but he just said,
50:02 I'm going to let other people deal with the decisions around it. And basically,
50:07 went so far as saying, like, I'm not going to decide for you how you decide. Like it was even
50:12 a meta non-decision. So he said, all right, you all have to figure out how to govern yourselves.
50:17 And it looks like he's coming back in a little bit more in terms of participating.
50:23 Well, right. I mean, I think that's one of the reasons is because his involvement with Python
50:29 was just the stuff that wasn't fun. And now he gets to be involved with some of the things that
50:35 are fun, like speaking and mentoring and things like that.
50:38 You know, I think that's a really interesting point. I'm not sure I would want his job the way
50:44 it kind of looked a year ago, right? Just, you know, arguing over peps and stuff like that.
50:49 And you know that if you do stuff on the internet, that it's, there's definitely a very small minority
50:58 people that are, you know, abrasive, unfriendly. It just sucks. But even just a few people like that
51:04 will suck your energy for sure.
51:05 Yeah. And we still don't know what's going to happen. So we'll, maybe that'll be the story
51:10 for 2019 is what, what happens now.
51:13 I think you're right. I think 2018 is the year Keto step back. 2019 will be the year that
51:18 whatever, whatever takes place going forward is going to be that year.
51:23 So regarding the new governance structure for CPython, which obviously, you know, for any Python
51:28 developer, that should be really dear to our heart because it's going to have such a big impact
51:32 on the future of, Python and the CPython project. And so the last update that I saw,
51:39 basically we have a PEP 8,000 now, which is, a PEP that discusses the, the various new proposals that
51:48 have been forward, that have been put forward regarding the Python language governance. And,
51:53 I just recently saw, it was like two or three days ago, Victor Stinner's post on discuss.python.org,
52:01 where he's comparing the seven Python governance peps. So I guess like actually like the different
52:06 proposals, they're separate peps, but they're also listed under PEP 8,000. And so there's different
52:10 models that have been put forward. Like for example, leading the project with a trio of, three co-leaders.
52:17 there could also be a community governance model where there's no central authority. So
52:21 like a total 10 80 from, you know, a dictatorship to no central authority. I don't know how it would,
52:26 how that would look like, you know, in concrete terms, but there's like different models that are
52:30 being discussed right now. And, I think it's going to be very interesting to see what the CPython
52:35 team ends up with there.
52:37 I agree. And it's, it's pretty important. Like even simple stuff like Lucas Lange, also
52:43 creator black, what we spoke about earlier, he's doing the release management for CPython for the
52:48 next couple of releases. And he was thinking like, Hey, it would be great to release this yearly,
52:52 but we can't even discuss having it released yearly instead of every 18 months because we don't even
52:58 know how to decide whether we, how would we, who decides, how do we vote? We don't know. So,
53:04 so many things like that are just like on hold until this gets figured out. So there's a lot of
53:09 pressure to make it happen.
53:10 Definitely. Yeah. It's like, it's, it's a total bottleneck, I guess for, yeah, like you were saying,
53:14 you know, just to put out a new release, you would have to, they would have to figure that out first.
53:17 And so, I'm, I'm pretty sure that also means it's going to be a decision that's going to be made
53:21 relatively quickly there so we can all move on.
53:24 Yeah, absolutely. One thing you did note though, is that Guido starting to come back and be more
53:29 active in the community again, just not in this BDFL decision maker way, right?
53:34 Yeah. And I thought that was kind of cool. you know, I, I don't know, it might be coincidence,
53:38 but I don't think it was. So as I was putting together, you know, the recent, PyCoders
53:43 weekly issue, I saw that there were a couple of interviews with, Guido out there or articles
53:49 that, you know, had like little sound bites from him. So he did, a really long,
53:53 like video based interview on the MIT AI podcast. So it's actually on YouTube. It's more like a video
53:58 based show, but I think it's also podcast, that I thought was really interesting.
54:02 And, he also started blogging again. So he has this personal blog at, I think it's
54:08 neopythonic.blogspot.com or something like that. And he put out a new post there and it's, I think
54:13 it's, it's, it was kind of nice to see some activity there again, because I'm, I'm sure it's also a sign
54:18 that, you know, now he maybe feels like he has more, more time to do that or feels inspired to do
54:23 things like that again. And I think that's a really, really positive sign and just for his
54:27 personal wellbeing, I think.
54:28 I think it's a positive sign as well. And just like Brian and I were talking about earlier,
54:32 a lot of his energy had previously gone into like debating PEP 572 and just dealing with all the,
54:39 the decision-making and now he can focus back on, you know, what most people would want to focus on
54:46 coding software, cool stuff like that. And it sounds like he's getting back into it. So that's awesome.
54:51 Yeah. Yeah. And I mean, you know, what a, what a crazy responsibility to be at the center,
54:57 like at the focus of it all, you know, and, and to be, to be the one person that needs to make all of
55:02 these decisions. And sure, you know, like he was delegating a lot of these decisions and everything,
55:06 but the way the CPython governance was set up before it was like all focused on one person. And,
55:13 yeah, I mean, it's tough to do that for several decades, right?
55:17 Yeah. I honestly, I was surprised that he had kept going in that role for that long. I mean,
55:22 it's sad to see him step down, but at the same time that was 25 years. Like how many other people
55:28 have a job that goes 25 years? That's high pressure, right?
55:31 Yeah. It's incredible. I mean, thank you so much, Guido.
55:33 Yeah, absolutely. It's Python's a special place and it has a lot to do with him. All right, guys,
55:39 that's it. Those are our top 10 for 2018. It's been a fun year, hasn't it?
55:43 Absolutely.
55:44 Yeah.
55:44 Yeah. I think 2018 just has a more, more good stuff to come. So it doesn't seem like anything
55:50 is slowing down then. And that's pretty awesome. Now, before we round out the show, you have to
55:56 answer the two questions, both of you. So Brian, let's start with you. If you're going to write some
56:00 Python code, maybe test a little something or other, what editor would you use?
56:04 My turn.
56:04 Right on.
56:05 And Stan.
56:06 Yeah. Good one. Dan?
56:07 I'm still a Sublime guy, although I have been experimenting with Visual Studio Code and it's
56:12 pretty sweet actually.
56:13 Yeah. I would say like the Sublime Visual Studio Code, there's probably a lot of bleed over between
56:18 those and with all the activity around Visual Studio Code, it's got to be eating into the
56:22 Sublime world.
56:23 Yeah, definitely. Probably. I like what VS Code is. I like watching what VS Code is doing.
56:28 They're just not quite there with the testing yet. I'll take a look again when they get that
56:33 up to speed.
56:34 Yeah, I agree. I think they're doing really sweet stuff. Okay. Brian, notable PyPI package?
56:39 One preferably that doesn't have any badness in it?
56:41 pytest.
56:42 pytest. Right on. Dan?
56:43 Sweet. So I was going to say black again, but we talked about this at length. So I'm going to say
56:49 pytest-ICDIF. So it's a pytest plugin that gives you better error messages for your pytest
56:58 assertions in some cases. So it'll basically do like a more extensive like diff on, let's say,
57:04 when it's comparing two dictionaries and it'll tell, you know, those keys were added, those keys
57:08 were removed, and it has like color highlighting. And I just found that this is like a really,
57:13 really sweet little tool. And I started installing it in all of my projects that have tests.
57:17 And I highly recommend it.
57:18 That sounds great. I may have to go check this out.
57:20 Cool.
57:21 All right. So a straight sweep for pytest there. That's great. All right, guys. Thanks so much
57:25 for being on the show and being part of this. It's so many cool things to talk about. And I
57:30 really appreciate it.
57:30 Thanks for having us. Thanks.
57:32 Yep. Bye.
57:32 Bye-bye.
57:33 This has been another episode of Talk Python to Me. Our guests in this episode were Brian
57:39 Aukin and Dan Bader. And it's been brought to you by CloudBolt and us at Talk Python Training.
57:44 Spend your work time fulfilled. Write Python and Django code at CloudBolt, developing their state-of-the-art
57:50 cloud management software in beautiful Portland, Oregon. Visit talkpython.fm/CloudBolt to join
57:57 the team. Want to level up your Python? If you're just getting started, try my Python Jumpstart by
58:04 building 10 apps course. Or if you're looking for something more advanced, check out our new
58:08 async course that digs into all the different types of async programming you can do in Python. And of
58:14 course, if you're interested in more than one of these, be sure to check out our everything bundle.
58:18 It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite
58:23 podcatcher and search for Python. We should be right at the top. You can also find the
58:27 iTunes feed at /itunes, the Google Play feed at /play, and the direct RSS feed at /rss
58:33 on talkpython.com. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it.
58:39 Now get out there and write some Python code.
58:41 We'll see you next time.