Learning about programming libraries and languages is useful and interesting,
but sometimes knowing why certain decisions were made or the history leading up to some change
or a package being created gives you a deeper understanding.
And that's what this episode is all about.
You'll meet Mike Driscoll, who runs PyDev of the Week.
He also just published a really relevant book,
Python Interviews, Discussions with Python Experts.
This is Talk Python to Me, episode 156, recorded March 21st, 2018.
Welcome to Talk Python to Me, a weekly podcast on Python,
the language, the libraries, the ecosystem, and the personalities.
This is your host, Michael Kennedy.
Follow me on Twitter, where I'm @mkennedy.
Keep up with the show and listen to past episodes at talkpython.fm
and follow the show on Twitter via at Talk Python.
Before we get to our conversation, I want to tell you about a project I've been working on for the past three months.
Do you remember Bob and Julian from episode 140,
where we talked about the 100 Days of Code challenges and their projects around it?
Well, since then, we've teamed up and created a new course, 100 Days of Code in Python.
This course has 18 hours of video lessons and around 80 hours of guided exercise.
That's 100 hours, one for each day.
If you're considering doing one of these 100 Days of Code challenges,
please have a look at our course over at talkpython.fm/100 days.
Now, let's get on to the interview.
Mike, welcome to Talk Python.
Thank you for having me, Michael.
Yeah, it's great to have you here.
I've been a fan of your Python Dev of the Week project that you've had going for a long time and things like that.
How long has that been running?
I think it's been going on now for almost three years.
Yeah, that's pretty good.
That's like 156 interviews or something on that scale, right?
That's cool.
Yep, yep.
That's correct.
Yeah, nice.
Awesome.
We're going to talk about some of the interviews you did,
not necessarily for that project, but somewhat in the same vein as that for this really cool book that you put together called Python Interviews,
which I think is a great idea.
But before we get to it, let's get started with your story.
How did you get into programming in Python?
Okay, so I started out with your traditional languages in school like C++ and COBOL.
I know COBOL isn't really that interesting anymore, but that was what I was learning back then.
There was a part of the time where it was really good consulting, right?
People really needed COBOL to help the transition, right?
Yeah, yeah.
I do know a contractor who makes really good money doing COBOL for the government.
So there's definitely a job still out there for you people who want to learn ancient, dead languages.
I guess so.
All right, so you started with those languages, right?
And you studied comp sci in college?
Yeah, I went for computer science, and then I transitioned to MIS.
Then I graduated, and the dot-com bubble burst, and there were no jobs.
Oh, that hurts.
And probably while you were in college, you were like, oh, my God, the jobs are so hot.
I can't wait to get out there and work with a place with volleyball and massages.
All the excesses of the day.
Yeah, it sounded like it was going to be an awesome opportunity, and then I get out, and
I'm like, wow, I can't get a job anywhere because everyone has to have five years' experience
or more.
Oh, that's rough.
So what did you do?
I actually worked kind of as a so-called webmaster doing front-page-based websites for an auction
company.
Front-page is a product, right?
Like the thing that looked a little like Word but made websites?
Yeah, the Microsoft product that's now dead.
But yeah, I had created templates, and it was kind of pathetic.
Yeah, it was a really interesting take on how you make the web.
And of course, it was pretty typical of how Microsoft thought at the time.
They don't do that anymore either.
No, they don't.
But anyway, I did that, and then the local county actually was hiring.
And for some reason, they ended up choosing me, and they said, we're transitioning away from
Microsoft because every time we upgrade our VBA applications, like Office, it breaks all
of our apps.
And we want to go to open source.
And the language that my boss had chosen at the time was Python.
And so he said, you can learn Python or, you know, you won't be able to work here.
So I picked up Python on the job, and I got really good at it, and basically fell in love
with the language.
That's really cool.
What was your first thought when you kind of got that news?
Well, I was pretty nervous because I was like, I studied all this stuff in college, and now
I'm going to do a completely different language, which is very different than what they were
teaching in college.
And they're just like, whoa, transition shift, you know?
It was a little trial by fire, but it worked out in the end.
Yeah, that's awesome.
And then after that, you pretty much have been just sold on Python?
Yeah, I'm definitely a Python advocate.
Yeah, of course.
That's awesome.
All right, so that's how you got into it.
How about today?
What do you do day to day?
Currently, I'm working for an aid company that creates tools to actually kind of automate
and track what you're doing when you're planting and when you're harvesting.
And they can basically plant your corn or your beans or whatever down to the centimeter,
depending on your GPS quality.
And what's cool about that, yeah, I know.
And when I got into this, I was like, I didn't know that tech had reached the far world.
That's really amazing what they are doing now in agriculture and, you know, in food produce.
Yeah, one of the things I think is super interesting is just how diverse the uses of Python and programming are, right?
Like, I suspect a lot of people, when they think of farming, they probably think of large farms.
They probably think of, like, John Deere tractors and stuff doing their thing.
But they probably don't think deep IoT and a lot of code and automation and all that kind of stuff, right?
Yeah, yeah.
Yeah, I know I didn't.
Yeah, I think there's actually some really cool stuff in IoT and farming, for sure.
Oh, yeah, yeah, definitely.
They're getting more and more connected so that you can track what you're doing on your iPad and the display in the cab and on your phone, too.
And everyone in the business or your relatives can kind of see how you're doing, basically.
Yeah, that's cool.
Yeah, there's a guy who was listening to this podcast and sent me a picture of, like, it being played or something while he was plowing a field in his John Deere tractor.
He's like, yeah, man, I'm studying up while I'm working on the farm.
I'm like, wow, that's really cool.
So tell us about the app that you work on.
What I actually work on is the testing of the applications that we work on for the agricultural company.
So I write Python that uses a tool called Squish that connects to the C++ embedded application that we've written.
And it'll actually instrument it and be able to press any buttons or grab any information out of it.
And it allows us to test all of our different configurations.
And do the buttons exist when they're supposed to or not?
Because we have permissions related to the type of owner or operator who's using the tool.
Stuff like that.
Basically, it gets pretty complicated.
We have probably, you know, 300 or 400 tests just for the UI, not counting all the unit tests and other things underneath the covers.
Right, yeah, that sounds pretty awesome.
Sounds like a fun project.
Yeah.
Yeah, so let's talk about some of your books.
So we talked about the Python Dev of the Week project, which is on the web.
But you've written a number of books, right?
Yeah.
My audience for my blog had been encouraging me for a couple of years to write a book.
And I finally took them up on that and wrote Python 101, which was pretty well received.
I did a Kickstarter for it to help get some publicity and just to see if there was any interest in it.
And that was by far the book that got the most interest of any of them that I've written.
And people are still buying it and reading it and, you know, telling me that they like it for the most part.
Yeah, that's really awesome.
So I definitely think these, like, if you look at what people are interested in, it seems like it might be most amazing to write some really advanced book.
But it's really the foundational stuff that actually most people are interested in, right?
Like, if you wrote, like, the internals of AsyncIO, even though it might sound cooler than Python 101, like, it wouldn't be the same, right?
Yeah.
I've noticed that with the more specific topics you get, the smaller the audience chunk is because there are just less people that are going to be interested in that specific topic.
Yeah, for sure.
So I think launching it on Kickstarter was a really good idea.
You know, I launched my training company on Kickstarter as well.
And it just was really surprising.
But it was also, it really took a lot of the edge off.
Like, after a week, you're like, okay, there's enough interest in this for me to pursue this project that it's not just me thinking of an idea and going, I hope it's good.
We'll find out in six months.
But, you know, you put it up there, people, like, commit to it right away and give you feedback.
And it actually guides a little bit of what even you might build, right?
Yeah.
That's actually why I liked Kickstarter is that I got to work with the people.
My early readers got to have feedback early on in the process.
And I was able to actually take some of their ideas and be like, this is awesome.
Let's add this to the book.
Or let's add that to the book.
Or this actually isn't a good idea to talk about.
Nobody's interested in this topic.
Yeah.
Yeah, that's really, really cool.
So then you also did Python 201, Intermediate Python, right?
Was that also on Kickstarter?
Yes.
It definitely was.
And it got a lot of interest as well, although maybe not as much as, of course, the first one.
But a lot of people thought it was really interesting, and they took it as a good stepping stone to the next level, I think.
One that you did that really sounds super interesting to me these days is WX Python Cookbook and Recipes.
Yeah.
So Daybreak's Python Cookbook.
I've been working with that community practically from the beginning of my time starting with Python.
And I thought, you know, I've written a lot of recipes on my blog.
I should clean those up and write some new ones and create a book around it.
And so that's kind of what I did.
And then A-Press came along and said, hey, we like that book.
We want to compete with Pact.
Could we, you know, license it and give it our brand and call it Recipes instead of Cookbook?
And so...
That's interesting.
That's kind of how that ended up happening.
Yeah.
So does this cover the WX Python Phoenix or does it predate that?
And how different are those?
Yeah.
It does cover Phoenix, which is now WX Python 4, actually.
I tried to do both 3 and 4 when I wrote the cookbook itself.
And then when A-Press came along, I kind of updated it.
So most of it is just for 4.
But I did leave a little bit of legacy code in there to kind of show the difference.
The big things that have changed is that Robin Dunn, the creator of WX Python, switched from SWIG to SIP.
And so the layer between Python and C++ is thinner.
And it makes doing Python 2 and 3 a lot easier for him.
But otherwise, it's just like, you know, he deprecated some certain naming conventions and just little things that have bothered him for, you know, who knows how long.
Probably a decade.
And now he's finally gotten it nicer.
Yeah.
Yeah, that's cool.
All right.
I want to talk about your main book and really dig into that one.
But you have one that also was on Kickstarter.
I know because I backed it.
And I don't know if the – I think the Kickstarter is done, right?
Called Report Lab.
Want to tell us about that?
Yes, that Kickstarter is over.
Okay, cool.
How did it go?
I thought it went okay.
I thought it might be a little bit more interest than the WX Python one.
Because my Report Lab articles on my blog get way more hits than my WX Python ones do.
So I just thought, you know, Report Lab is going to be more interesting than WX Python is, at least book-wise.
But, oh, well.
It's been really good.
I've gotten good feedback.
I've got good people telling me some good ideas.
And the book itself is coming together really, really well.
And since a lot of it's like brand new content, I feel like that – I just feel really positive about it.
Because usually when I'm writing everything from scratch, it takes a lot longer.
And it's just kind of like coming right out really smoothly for me.
Oh, yeah.
That's really great.
And so this basically teaches you how to do PDF processing in Python, right?
Yeah, yeah.
And Report Lab is for creating PDFs and basically laying out the page in your PDF.
I also have a part of the book that's going to talk about some other Python-related PDF tools like PyPDF2 and PDFMiner that will show you how to export data from your PDF or split your PDF into multiple pages or join multiple PDFs together.
Different things like that that Report Lab doesn't really do natively.
Yeah, that's really cool.
I definitely want to study this because I need to create some PDFs for various things on my site.
So I'm excited for this to come out.
When's it coming out?
It'll come out in June or maybe even May if I'm lucky.
Yeah, that's awesome.
All right.
So let's talk about your book that you do have out.
This is probably the most recent one published, right?
The one called Python Interviews, Discussions with Python Experts?
Yes.
That one was released earlier this month, actually.
Yeah, nice.
And this one is published through PAC, whereas your original WXPython cookbook and your other ones as well, were they self-published?
Yes, that's correct.
Interesting.
Okay.
So maybe give us the quick trade-off between self-publishing and, say, working with PACT or someone else.
The main thing I like about self-publishing is I know when I release, I know the name of the book.
I have the control over the book.
I have the control over the quality of the book, and I can also see how it's selling at any moment in time because Amazon and LeanPub, the two primary places I sell my book, actually have graphs.
And they can tell you in real time how many units have sold in a day, whereas if you work with a publisher, you have to wait quarterly for updates.
Right.
So you have no idea if the book is selling well or not.
And you have no idea how much of that cut you're going to get either, depending on the sales that were done during that time period.
Yeah.
So.
Yeah, interesting.
Okay.
So this one is with PACT, and I think it's a really interesting idea.
So you went through and you interviewed 20 notable experts in the field.
I'll just read off some.
Mike Bayer, Brett Cannon, Nick Cogan.
You had Jessica McCuller, Carol Willing, Al Swiger, Jake Vanderplast, and a bunch more.
All those people I named, by the way, have been on the podcast.
So I feel like you've done this sort of interesting book equivalent, sort of a podcast, right?
Like I'm going to go inside and get the stories of these people behind these major projects, right?
Yeah, yeah.
Yeah.
Nice.
So I guess maybe let's start at kind of a high level.
One thing I wanted to ask you is like, what's your takeaway from all the time you spent interviewing these people?
Like what perceptions or thoughts maybe changed about ideas that you had going in that afterwards you're like, oh, no, actually, this is totally different than what I thought it might be.
I think the biggest takeaway for me is how big AsyncIO has gotten in asynchronous programming in general.
A lot of the people I talked to were excited about it and excited to have it added to the standard library.
I think I had a couple people who were pretty kind of cautious about AsyncIO and they thought its implementation wasn't as good as it should be.
Or they just didn't think it was a good idea in general.
But overall, I got a kind of a positive feedback loop from that that, hey, this is really good.
It needs some improvement.
We're going to make Python use it in a way that is really easy to use.
Yeah, I feel like if you're in a situation or position where AsyncIO will really solve the problem, it's like such a great thing to have it.
But a lot of people write code that has no use for it and it just seems like confusing.
It adds complexity and why is this thing here?
But if you happen to need it, then you definitely, definitely can benefit from it.
Yeah, I totally agree with that.
Yeah, I think the one area that we could use some more help on to really jumpstart this is really the major web frameworks.
If they could somehow be like natively Async capable.
Yeah, I know Glyph was trying to do that, but he was trying to make Async native.
Even though it is technically the Async socket library already, he's going to start using the Python Async library in the internals of Twisted.
That's pretty awesome.
That way you can chain your Async stuff with the lower level Async stuff in a more continuous way.
Yeah, I thought that was a really neat idea.
Yeah, pretty cool.
Okay, other takeaways?
The other takeaway, and I kind of noticed this at PyCon last year, is that machine learning and data science has gotten really big with Python.
And so there was a lot of excitement about that and how Python is just like kicking butt in that sphere, that business area.
And it's bringing in a lot of new people that don't really know Python at all or programming in general.
And they're getting introduced to Python, which I think is really cool.
Yeah, I think it really has opened up a whole other aspect.
And you're right, it is a big theme in the book from what the people talked about.
So what I want to do is just go through and we'll pick out a couple of the folks you interviewed and some of the things that I found notable in your conversation with them from the book.
And maybe we could just touch on those a little bit.
So there's 20 people here, and we can't go through all 20 of them, I don't think, unfortunately.
So people are saying, if I don't cover your thing, it's not that I didn't like it, just like I ran out of time.
So time and space.
So let's start with one of the core developers.
I really like Brett Cannon.
So yeah, Brett, he lives sort of in my neighborhood, if you think globally and define a sufficiently large neighborhood.
Sort of the Pacific Northwest area anyway.
And so one of the things that he touched on that I thought was pretty interesting was the sort of idea of like, can you know it all, even within this Python sphere, right?
Like, can you know all of Python?
Like, should this even be a goal?
And of course, like, there's the Python and the runtime, but then there's also all the libraries and external stuff, right?
Yeah.
Talking about that, he said something to the effect of, Guido famously was once asked at Google, on a scale of 1 to 10, how well do you know Python?
He said 8.
Yeah, I've noticed that Google has that on one of their, and part of their interview processes.
You know, how well do you know something?
You know, one is, you don't know it at all, and one is you wrote the book on it, or you wrote the language.
So I find it really interesting that Guido himself is like an 8.
But I totally agree with that.
While I consider myself to be really knowledgeable in Python, there are libraries that I've never used in the standard library yet.
Yeah, same here.
Yeah.
I think it's really interesting, right?
And at first you might think, well, how is that possible?
He created Python.
But he's not the only one, right?
There are tons of people working on major changes and optimizations and whole new aspects of Python that maybe he just looked at the PEP and said, that's a good idea.
Send us a PR.
Yeah.
Yeah, I totally agree with that because there's a lot of people who did it who worked on it.
And I think even Brett would say he doesn't know it all, even though he did claim, I think, during the interview that he had touched pretty much everything in the Python internals at one point or another.
Right, but how much of that sticks, right?
Yeah, I know.
So another interesting –
I just have to look up stuff.
Yeah, of course, like distributed cognition.
We have the internet.
So another thing that he touched on that's really important right now and is going to be increasingly important over the next year and a half is moving to Python 3.
He said, I hope people realize that you can transition to Python 3 gradually.
It doesn't have to be abrupt or painful, and he referenced the Instagram thing where I was actually at the keynote at – what was that, 2017?
PyCon 2017?
I think it was.
Mm-hmm.
Definitely in Portland.
Yeah.
I was actually doing this at work last year.
I was trying to transition our automated test framework from Python 2 to Python 3, and it really wasn't that bad.
I got the code working, but I wasn't able to get all the tooling to work because of issues with our vendor.
But it really isn't that painful.
I thought it was actually fairly easy, and we have probably 10,000 lines of code or more just in that one testing framework.
Yeah, I think to me, when I look at the changes, I'm like, none of these are major.
They're really, really not.
The one place where it gets really kind of tricky is at the network layer where you're trying to sort of switch to Unicode versus bytes and strings and all that.
But other than that boundary, it's really not that big of a deal.
I think part of the major challenge for people is we have this huge thing.
It's working.
Please don't touch it.
Yeah.
Yeah, I agree.
The issue that I think we found the most painful was writing binary files out, and we were using byte strings, and we had to convert one way or the other.
And that was a little bit trickier in Python 3 when I wasn't expecting that.
This portion of Talk Python to me is brought to you by Linode.
Are you looking for bulletproof hosting that's fast, simple, and incredibly affordable?
Look past that bookstore and check out Linode at talkpython.fm/Linode.
That's L-I-N-O-D-E.
Plans start at just $5 a month for a dedicated server with a gig of RAM.
They have 10 data centers across the globe, so no matter where you are, there's a data center near you.
Whether you want to run your Python web app, host a private Git server, or file server, you'll get native SSDs on all the machines,
a newly upgraded 200-gigabit network, 24-7 friendly support even on holidays, and a 7-day money-back guarantee.
Do you need a little help with your infrastructure?
They even offer professional services to help you get started with architecture, migrations, and more.
Get a dedicated server for free for the next four months.
Just visit talkpython.fm/Linode.
So another thing that Brett talked about that was pretty interesting was the mythical Python 4.
Like, will it be a Python 4?
What's going to be in Python 4?
Will it be as painful as 2 to 3?
Yeah, so he had some interesting ideas.
Obviously, it's not going to be any sort of thing like going from Python 2 to Python 3.
But he talked about some things like switching to a tracing garbage collector instead of reference counting.
To help with things like parallelism and stuff.
And this parallelism is another theme that actually came up a lot in the book.
Basically, taking advantage of multi-core processors.
Yeah, there was several people who were bringing up that topic and how Python is usually kind of given a black eye about being too slow in a lot of cases.
When in actuality, if you use it correctly, you can get a lot of speed out of Python.
Or write your stuff in Python and then switch to PyPy or some other type kind of thing like that.
And you can quadruple your output or your speed just by little tiny changes like that.
But yeah, Brett was definitely talking about that.
And I think Barry Warsaw was talking about removing the GIL.
So yeah, there was a lot of different back and forth about how we could make parallelism in Python better.
Yeah, absolutely.
So let's switch on to another one of your interviewees, Steve Holden.
So one of the ideas that I thought was really interesting, and I touched on it recently in another episode,
and I can't remember who I was talking to about it, which is really unfortunate.
But it's the idea that the sort of forward progress and overall maintenance of Python and the ecosystem and whatnot
continues with no professional organizers, right?
Like you've got Microsoft completely controlling something like C#.
And anything that happens, there might be community input, but there's this giant company whose job it is to decide what the next steps are.
Whereas with Python, I guess there's just none of that, right?
There's just us.
Yeah, yeah.
The only thing that's really behind Python is the Python Software Foundation.
And it just kind of guides the community into how things should work.
Yeah, they're more to support things than it is to specify directions, right?
Like the PSF doesn't go, we need these three features and this library upgraded and this thing done for Python 3.7, right?
Yeah.
Yeah, they just provide funding and protect the Python brand.
They don't really say, we need X, Y, and Z.
Exactly.
Yeah, they actually have a, they kind of handle the corporate details and like chasing people down if they mess up with the copyright and funky stuff like that, which is a bit of an odd job.
It struck me as odd when I first heard it, but it's, you know, if someone's got to do it, like they're the people to do it, right?
Yeah, someone's got to do it.
You don't want people using the Python name inappropriately.
Yeah, for sure.
So another thing that Steve Holden talked about was also the mythical Python 4, but he had a different take, which I like this idea in general.
So he said, basically, you hear loose talk of Python 4, but to my mind, Python is now at a stage where it's complex enough.
There's so many languages that just seem to like need another feature every release.
We're going to have four new keywords and you're going to use it in this way.
And it doesn't matter if you really need those keywords.
Like there are language designers whose job it is to design the language.
So when a new version of language comes out, like they have new features, needed or not.
All right.
I'm thinking like JavaScript is a little bit like that.
Maybe C# is definitely like that.
There's a number of languages where there's just this expectation that there's always new stuff.
What do you think about that?
Yeah, I kind of feel like we don't really need anything brand spinky new in Python anymore.
There's some controversy over adding f-strings because we already had two or three ways to do string interpolation already.
I think f-strings are kind of cool, but did I need them to do my job?
No.
So I can see where Steve's coming from with that.
Yeah, I feel the same way, actually.
The one language feature that comes to mind, I'm like, yeah, that really does something different is the async and await keywords.
Yeah, that one is definitely new.
And while, like I said, a little bit painful, especially with the first implementation, it is getting better.
And it definitely does something new and different in the language.
Right, right.
Whereas like the fifth way to format a string is certainly debatable about whether it's needed.
There's not a fifth way to like asynchronously work with I.O.
That is part of the language, right?
Yeah, yeah.
Obviously libraries.
Yeah.
I kind of wonder sometimes, though, why they didn't continue working on the futures library because it seems to be kind of just kind of died off now.
Oh, yeah.
That's a really good point.
Like maybe put some trial stuff.
Float some trial things.
Maybe even an external package that you can bring in and try and see what sticks.
Yeah, yeah.
That'd be pretty cool.
So another thing that Steve talked about was sort of the excitement of Python being the main programming language for people coming in in education.
And I think this touches back to his previous comment as well, which is like hopefully this will keep Python in a space where it's relatively comprehensible.
And these like easily accessible tools for building rich applications will be available to people for like the next 20 years at least, right?
So like really having a – not losing the ability of people to get into Python easily.
Yeah, I think that's really awesome that Python has gotten a hold in the education sphere so much.
I think I read earlier this year that MIT, all of its intro stuff is in Python now.
Oh, that's sweet.
And I think I was at university, which is where I did some of my studies.
They're starting to use Python now in some of their intro courses.
And I just think it's really cool that it's spreading like that.
People have asked me if they can use my book as kind of a trial run in their classes.
And I'm like, go for it.
See if it works.
If it doesn't, let me know.
So it's just really cool what's going on with Python in education.
Yeah, and I think – absolutely agree.
And I think part of what he was touching on, you know, I called out JavaScript in particular earlier about gaining all this complexity.
Like before Node.js, JavaScript was this incredibly easy place to get started.
Like maybe you'd go crazy and throw in some jQuery or something.
But you write a few functions.
You do some stuff.
And now, you know, you're requiring this.
You're injecting that.
You're transcompiling that other thing.
It's just like, whoa, this is like not the same space.
It's quite complex.
In a couple years.
Yeah, JavaScript is kind of mind-bending right now with which products do you need to know to actually produce a website that's, you know, cool and useful that isn't full of a bunch of buzzwords and broken pieces in a year or two.
Yeah, it just seems like this went so far off the deep end of going, oh, we're going to do all these things and bring all this stuff in.
And there's also not consistently one way to do things.
It's just, it just seems unnecessarily complicated.
Like I think one of the powers of Python is it starts super easy.
You can have a really complicated, complex architecture, but it's not required.
You know, where it almost is these days to use a lot of the web stuff.
Yeah, Python is definitely has a nice easy learning curve until you hit some of the more advanced topics.
Yeah.
Which is what you'd expect.
It's ideal, yeah.
So let's move on to another interviewee, Carol Willing.
So she ran the PSF for a while and she's done a bunch of cool stuff.
And I think the first thing that I noticed from your conversation with her was the concept of Python as a mosaic.
And this was really laid out super clearly by Jake Vander Plaas at PyCon 2017 at his keynote.
Where it's just these people are coming from all these different disciplines.
And you touched on this as well at the beginning.
That like all these different ways and types of programming and areas of programming are coming into Python.
And probably making it stronger for giving it these different perspectives.
Yeah, I've noticed, especially like I said at the last PyCon, you had data scientists, astrophysicists.
People, they had a course for middle school and teenagers to learn Python at PyCon.
And then, of course, you had the people like Glyph who does Twisted.
You have all these asynchronous people and people from Instagram and the business side.
And it's like, wow, you have all these disciplines.
And they're all using the same fun language to do really cool things.
Right, exactly.
You had Instagram talking about how they were running their whole thing on Python.
But you also had Jake Vander Plaas going, these three major telescopes that are being launched in the next couple years.
Here's their API.
It's in Python, right?
It's just like the juxtaposition.
It's amazing.
You can go read their code.
Exactly.
Yeah, it's really cool.
And you're just touching on astronomy for a minute.
Like what's really cool is they had another language.
It's still around, I'm sure, for astrophysics called IDL, I believe.
And that was a commercial language.
You wouldn't even compile your code.
You pay money to get the compiler and the license just to work on that.
And here you have, oh, yeah.
Now we're just going to put it on GitHub.
And it runs on Python.
And now we're talking to space.
Pretty cool.
Yeah, I think a lot of the data scientists are getting away from that because they have Mathematica and some of those other math languages of sorts.
And they have to pay big, big bucks to do their job.
And now they can use open source and share it with the world.
Yeah, it's super amazing.
Like I came from a math background.
I've worked at this company where we had to do wavelet decomposition of like time series stuff.
And that originally was in MATLAB.
And we were converting it over to a proper programming language.
But just to get the little extension to MATLAB so that we could do that, I believe, was $2,000 a person.
Just for the extension for the wavelet deco.
Not the whole thing.
Just that little bit, right?
It's like, wow.
That is intense.
Yeah, we have some tools in the agriculture field that are very similar to that where you have to spend a lot of money to compile from one language to another language or do exactly what you just said because we also use MATLAB as well.
Yeah.
Yeah, but we have things like SageMath, Jupyter.
There's a lot of stuff that's coming along to disrupt that.
I think those days are somewhat numbered except for maybe really niche stuff, which probably is for the better.
Yeah, totally.
So another thing that Carol touched on I thought was cool is what I'm going to call sort of Python for all.
So she has a data science background and does a lot of stuff with Jupyter.
And so she talked about the rise of Python in education, but also the rise of Chromebooks in education where you can't really install anything on your Chromebook.
And so, you know, providing every student some kind of web account into something they can do Python on and give them the same tools and the same experience, which I think is really empowering.
Yeah, I think if we had a couple more places where you could actually do Python in the browser, that would be really, really powerful.
You know, I know that a little bit and it's pretty limited right now.
But I think we're getting there to the point where we could actually start saving the Python scripts to the cloud and running them in the cloud in such a way that the student could learn how to do it.
And that would be really awesome.
I think it is really awesome.
And I think at that level, the notebook type answers are really, really interesting.
So like Azure has, I think, free notebooks.
Google has a notebook solution.
JetBrains just came out with Data Lore.
All these like are hosted online.
You log in, you save your stuff, you know, you run and it runs there.
So those are pretty cool.
Even on the Google one, you could even hit like, you know how you like shift enter in notebooks to run it.
There's like a modifier key to run this cell on a GPU.
Like, and that's it.
You just, you have like a different hot key to run on the GPU.
I mean, it's like, wow, that's quite different than.
Yeah, I hadn't even heard of that.
Yeah, yeah, yeah.
So I covered it on Python Bytes a little while ago.
I can't remember the name.
I'll try to put it in the show notes.
But yeah, there's, so I think some of these things are coming along.
You have Python anywhere?
Python everywhere.
Sorry, guys.
It's actually, if you go to python.org.
I didn't realize this for the longest time.
If you go to python.org, there's those little screenshots of text.
And there's a little like prompt looking button.
If you press that, it'll actually open up a remote terminal, Python anywhere.
And you just start typing.
I knew it had a terminal, but I didn't realize Python everywhere was underneath it.
Yeah, yeah, yeah.
So pretty, pretty.
That's awesome.
Yeah, it's pretty cool, right?
But I think we need to be aware that so much of education at the lower levels is running
on Chromebooks.
And you can't pip install anything on the Chromebooks, right?
You don't get a terminal.
You get basically flavors of Chrome.
So having a really good way to bring people on there is quite cool.
So, you know, another thing that comes to mind is Anvil.
Anvil.works.
They basically let you create web apps and the whole IDE is in the browser.
So you can pretty much do that from Chromebooks as well.
It's kind of cool.
That is really neat.
So another thing that Carol touched on was the community.
And so did Brev.
It was basically, I came for the language.
I stayed for the community.
I think that's one of Python's superpowers.
How about you?
Oh, yeah.
That's definitely what kept me going with Python is, you know, I have questions.
I go ask and I ask them.
And you don't usually get into a flame war.
You usually get people saying, hey, this is how you do it.
Or ask the question better.
They're not like, that's a dumb question.
It's actual real answers the time.
And I really appreciate that they're so helpful.
And they'll sometimes even give you some sample code to point you in the right direction.
Yeah, that's really cool.
Also, I think, you know, you go to the Python conferences and they just feel different than like a standard tech conference.
They feel, I don't know, more representative of the general population.
People seem quite open.
And, you know, just the whole community seems to really carefully nurture that aspect more than other communities I've been part of.
Well, what I really liked about it is that you'll sit down at a table with a bunch of strangers and you'll be surrounded by people who are just starting Python or people who are like working for major companies.
Like I sat at a table with Apple and Pixar and major school, university.
And I'm like, wow, I wasn't expecting to sit with these kind of people today.
Yeah.
You know, they're all friendly.
Yeah, it's really, really cool.
Definitely.
So opposite of superpowers, maybe one of Python's weaknesses.
And I've been on a bit of a rant about this as well lately.
But Carol talks about, you know, we need a better story for mobile.
And I'll throw desktop development in there as well.
There's Kivi, which does let you create apps, but it's not the same experience as, you know, storyboards and Xcode stuff or, you know, IDE for Kotlin for Android, things like that.
Yeah, Python really doesn't have much besides Kivi.
And I think Toga is the other one that I've heard about, but haven't actually tried.
But yeah, there's basically nothing besides those two and maybe some like underlying libraries that Kivi relies upon.
And it would be awesome.
Does that shock you a little bit?
Yeah, it does.
And it kind of bugs me that that happened.
And I think Alex Martelli said that Guaido had tried to talk to the people at Google when he was working there to get them to include Python.
Right, right, right.
And Andy Rubin, yeah.
And the guy was like, we don't need more than one language for Android.
Java's amazing, so we'll do that.
And I'm just so disappointed that Google decided to do that, you know.
Yeah, that's really, it really is unfortunate.
Anyway, it just seems strange to me that there's such a hot development space and there's just not really an answer for it.
And I think it's a couple of things.
I think it's a little bit of the myth of boiling the frog slowly in the hot water type of thing in that.
Like it's even hard to just take your Python application and give it to anybody like say on Linux or Windows or whatever and go here, double click this.
Right, that's not an easy thing in Python.
And it should be, right?
So if it's hard to even like move your code from one place to another, like to package it and compile it for another platform, it's just like, well, we haven't solved this like first step.
So we're not going to go on the, you know, one mile journey to get to mobile.
Yeah, that's something, and then we didn't really talk about it during the interview process, but that's something I think would be awesome in Python for is let's have that built into the library so we can actually export the application to any XE or Linux tarball or whatever you need to install on Linux, you know, because every flavor of Linux is different.
That would be a game changer if you could just go Python space, you know, --build this folder with this entry point, and then you get a thing that you hand out and there's no dependency on Python, there's no dependency on the libraries, it's just packaged up, and it's ready to go.
Like, I know there's PyInstaller and certain things, but there's just all those things feel 85, 90% done, but then there's this weird glitch on this one framework or on this one platform.
You're like, why does this come on Windows show when I say no console?
Like, it's just, you know, just stuff like that makes me crazy.
Yeah, those things are pretty aggravating.
I think the Windows executables that they create are probably better than, I've had better luck with that than I've had with any of the other platforms so far.
But it's just, it seems so fundamental that, like, I want to build a program and give it to someone else.
Like, why is that not one of the first things that is, like, super focused on, I want to build a program and distribute it, right?
I know, it bugs the heck out of me when I first started learning Python was, how do I do this?
And it took a while.
It took a lot of trial and error to get it right.
Right, and you can't do it.
I mean, it has just lots of sharp edges, though.
So, yeah, if I can put in a vote for what is a major feature in the next version of Python, whether that's 4 or 3.8 or 3.9 or whatever, like, make this packaging thing just absolutely a non-issue.
A binary comes out, you hand it off, it runs and all the, you know.
Maybe you've got to build up each platform.
I don't care.
That's fine.
But something you can send out, right?
Yeah, I totally agree with that.
That would be wonderful.
All right, two votes.
I'm sure it's going to happen now.
Fingers crossed, anyway.
So, you already spoke about Glyph.
Let's talk about Glyph Alipowitz.
So, one of the things he talked about, and this was also touched on by Guido in the PyCascades keynote, which was in this past January, the transition of Python 2 to Python 3 as it was sort of managed by the core developers and the PSF and just generally.
And I think the main takeaway was they didn't realize how popular the thing they had created was and how much code was already in place.
So, basically, how much would have to be migrated?
Yeah, there's a lot of legacy Python 2 code.
I've been doing Python since, like, 2.4, I think.
And Python 3 came out, like, two or three years after I started doing Python.
And I've never worked in my 12 years of doing Python in a company that actually uses Python 3 regularly.
Everything uses Python 2.
So, what do you think about the 2020 end-of-life date?
Do you think that's going to make a big difference for you guys?
If I'm still at my company, I'm going to make sure we're already on 3.
But there are a lot of companies where I can see where they're like, it's going to cost a lot of money.
And we're just going to keep running this code until we have to for security reasons or some other monetary reason for change.
I wonder how well-managed that's going to be versus how, like, headline-driven it's going to be.
So, for example, I think the biggest distributed denial-of-service attack that's ever been launched was because a bunch of Memcached servers were left on the internet unprotected.
And they had this, like, vulnerability where you could send one UDB packet at it.
And it would basically dump the memory contents at, like, an address you pointed at.
So, you could get, like, a 50,000 multiplier of, like, your bandwidth against, you know, there's just, like, thousands of these on the internet that somebody pointed at GitHub and went after.
Somehow GitHub survived, actually.
But anyway, if there's something like that and you're like, oh, you just do this to all the Python 2 things running and you own it.
Or, you know, you look at Equifax or something like that, right?
One of these really bad sort of headline-driven things.
I mean, that would possibly get people's attention above the developer level.
Yeah, I think that's what's going to be, you know, unless they can just, like, kind of sneak it in.
A lot of developers are going to be stuck with Python 2 for a long time.
And, you know, it's a good language, but they really need to move to Python 3 if they can.
Yeah, absolutely.
And increasingly, there's a lot of things that are inaccessible to Python 2 developers.
You know, API Star, Django 2.
There's just a bunch of things that are coming along that are only Python 3, which is an interesting twist because the story is to be told exactly in reverse why you stay on Python 2.
Yeah, we're finally at the point where Python 3 is getting all tools and all the tooling, and it's not always getting backboarded to 2.7.
So, you know, if you want to use the new cool stuff that the cool kids are using, you've got to go to Python 3 right now.
Yeah, for sure.
So, another thing that Glyph touched on was a little bit of a similar idea that you and I were just talking about with packaging.
And said, like, one of his main thoughts of where he thinks Python should go is to make PIP, to get away from using pip as a tool for installing apps for users.
And also touched on just the GUI, like, there's not really any built-in way to create a Python GUI, be it mobile or be it desktop.
So, I don't know what else to add to that, but we've kind of, you know, just one more voice.
Maybe he's a third vote for us in this packaging story.
Yeah, TK Enter is still kind of ugly, but I will say it has gotten a lot better than it was when I first started using it.
Yeah, I've definitely seen a few examples recently, like, oh, that's actually not as bad as I remember it.
But it doesn't feel like, wow, this is an amazing UI framework that I just can't wait to build my apps on.
It seems like, well, it's not as, I guess I could live with that.
And that's probably not where you want it to be.
What's funny is they added a new library called TTK to it.
And there was, like, no advertising, no nothing.
So, I didn't even know it improved a lot.
Yeah, I didn't either.
And I don't think a lot of people realized that.
Yeah, the only way I found out was I complained about it.
And somebody said, hey, I made some pretty good-looking apps with it and sent me some GitHub repos.
I'm like, those are good-looking apps, really?
Oh, interesting.
Another person you spoke to was Doug Hellman, who does the Python module of the week.
And he's been doing that for 10 years.
That's a pretty interesting series.
His website is pretty good.
I used to use it a lot for when I needed to look up something.
Yep, it's definitely, definitely cool.
So, you know, another thing, Doug mostly works on cloud and OpenStack and things like that.
But, you know, just keeping with this theme, like, the main takeaway from your interview with him was that we need better packaging.
Right?
We still need another way.
But his take was that this is not directly related to Python itself, but it'll get into all the tools, like set of tools, Twine, Wheel, Pip, Warehouse, and so on.
Yeah, it would be really nice if we had a common base framework to just make all those tools work the same way.
And we'd have a unified way of distributing and packaging our applications.
Yeah, definitely.
I could go, we could have an entire show on that.
But, I don't know.
I don't, I don't really like to complain without providing the answer.
Like, at least a suggested, like, this is bad.
Here's a possible solution.
But, yeah, I think this, the packaging thing would really make a huge, huge difference.
I was just going to say, I keep hearing good things about Briefcase, but I've not used it myself.
So, that's something people could look at, I guess, or at least contribute to if they thought that would be helpful.
Yeah, absolutely.
I just, you know, it seems like something built in that you just know you have and it just works.
I don't know.
We need some advocates and the core developers to do that.
Well, and that's why I said it's kind of like a boiling the frog problem.
Like, as, by the time you get into, where, like, you're in a position you could make these kinds of changes, I feel a lot of people are like, well, we're kind of good enough.
I've got a requirements.txt or, hey, didn't we just create pip file?
Like, didn't that solve?
I feel like the pain, by the time you get far enough into it, the pain is not high enough anymore.
But if you go and you, like, teach a little one-week workshop at a high school and the kids say, well, how do I share this with my friends?
Well, you can't share this with your friends.
I'm sorry.
Like, I mean, that's almost the answer.
Not quite.
But can you tell your friend to go, like, download Python from python.org, change the path, pip install the stuff, and then run?
Like, that is a large step if that's, like, a 12-year-old kid, right?
Yeah.
And that just seems not amazing.
Okay.
So let's speak about amazing stuff, though.
Another person that you interviewed that had tons of interesting things to say was Alex Martelli.
Yeah.
Alex was awesome.
Yeah.
He really mentioned the Stack Overflow thing that talked about Python's incredible growth.
He said, the forecast is that Python will become the most popular programming language and one of the most active, with one of the most active developer groups behind it by early 2019.
That's pretty awesome.
Yeah.
I've been amazed just looking at the statistics about Python over the last, like, two or three years and how it keeps skyrocketing higher and higher.
And, you know, that brings back the data science part.
I think that is driving a lot of that interest is we have a really big chunk of that now.
And if everyone wanted to do machine learning and AI and neural networks, it just, use Python.
It's easy.
And when you need to speed it up, you can drop back down to, you know, a low-level language.
Or Cython or PyPy or something like that.
So one of the things that I haven't heard talked about, I haven't talked about it before, but if you look at that Stack Overflow article, the incredible growth of Python, they have some really cool graphs, right?
And they show Python sort of just eclipsing Java and JavaScript.
But then the predicted growth, like, the derivative is obviously much higher, right?
But the other thing that I haven't heard anyone talk about is if you look at the Java curve and the JavaScript curve, they have huge, like, bi-yearly humps that are, like, many percent.
And what I think those mean are those are the people taking the class at that time.
So they go and they do a bunch of interaction with Java or JavaScript.
And then their semester ends and it drops back down and then it humps back up.
And you see these humps, like, twice a year every year.
You don't see that in Python.
Isn't that interesting?
I mean, it accounts for, like, 5% or 10% of the traffic.
And you look at Python.
Python is a smooth curve.
And it seems to me like people are made to take some of these courses voluntarily and voluntarily.
They are part of their schooling.
Whereas Python doesn't have these humps, which I think means, like, it's more genuinely adopted.
I don't know.
I may be reading too much into it.
But I thought that was a pretty interesting thing.
I could totally see that.
I mean, once you've used Python, why would I use another language unless I have to?
Okay.
So let's see.
I think one of the things you're kind of getting short on time here.
But one of the things I want to talk about that Alex focused on was what I'm going to classify as Python as a competitive advantage.
I guess there's a couple of things.
He said he ends up talking to these big internet companies.
And they seem to use Java or some other core language, Go maybe, I don't know, as their main language.
But they're acquiring these other companies, right?
Like, they're buying these little startups that are, you know, getting ahead and creating amazing things.
He said a lot of them are buying these Python-based startups.
And that's coming back in.
And they're having to sort of absorb Python into them.
But he said what's really interesting about that is an example with, say, YouTube.
So before I read your book, I didn't know there was a thing called Google Video.
Had you heard of that before?
Yeah, I actually had.
I used it briefly.
Yeah.
So Google Video was this thing that was a YouTube competitor or something to that effect, right?
And Alex was at Google at the time.
I think he still is.
Anyway, he said Google Video kept losing the feature battle to this tiny startup just a few miles away.
Each time this little startup unveiled a new successful feature that the customers liked a lot, our engineers would scramble to pick up something similar in a few months, right?
And they said they were basically amazed that these 20 guys were outclassing hundreds of engineers at Google.
And, of course, he said, well, the reason they were so productive was they were using Python and Google Video was using C++.
And that's the thing that became YouTube.
I've been trying to advocate in my current job that we might not be able to use Python in the embedded application side.
But we could do so much prototyping and other things with Python to help us figure out what works and what doesn't work before we go to the embedded side.
We could be so much more productive.
We have so many more new features or products.
And it's just a slow uphill battle when you have a lot of C++ people there.
Well, and the people writing the embedded code are probably, you know, they've probably been doing C++ for many, many years.
And, like, why would they change?
Et cetera, et cetera, right?
Yeah.
Have you guys looked at MicroPython?
Is that relevant to you?
I don't know.
It might be relevant to module side.
I don't think it would be for our actual main bread and butter display because that thing has to run really, really fast with the number of operations it works with.
Okay.
Interesting.
All right.
I think there's still so many more things we could cover.
I'm going to do one more, which I think is a really interesting and positive way to leave it.
So you also interviewed Barry Warsaw, who's been around the Python space for a long time.
And one of the things that he talked about was Python's strength.
And he said, I think one of the real strengths of Python as a language is that it scales.
And he's not talking about, like, well, on this Linux server and I add this many requests to it, it gets, like, this sort of scale curve or whatever.
He says, I'm talking about the human scale.
So, for example, you can have one person write a little script on their laptop and solve a problem.
And Python's good for that.
You can have a little startup or an open source project with 10 to 15 people working on it, and that's great.
And you can have hundreds of people working on large projects, and it's still great.
And it's sort of this idea of the elasticity of the architecture needed to build Python apps, right?
They can start really small, but they can stretch without breaking the language to things like YouTube.
Yeah.
That's something I've always liked about Python is you can start small and keep adding more and more to it.
And while there's a little bit of hesitancy on my part for the new typing module, I can see that that would be really helpful for people who are used to statically typed languages and how that might help them get into the Python sphere and, you know, get used to the language quickly.
We just have to be careful that they don't bring too many of their idioms into the Python part.
Yeah, it's going to be an interesting marriage.
You know, the more I play with the type annotation stuff, the more I like it.
But I find I don't cover everything with it.
I cover just like a certain few functions, and then the types sort of flow to the rest of it.
And I'm pretty positive on it these days.
Yeah.
I think it has some downs.
But yeah, I agree.
Yeah, for sure.
So I guess we'll leave it there.
You know, I found your book to be really interesting.
There's a lot of folks we didn't get to cover, and there's just a bunch of little insights like this.
So hopefully people will check it out.
Where can they find your book?
It's on the PAC site, I'm sure.
It's on Amazon, things like that.
Yeah, it's on PAC publishing.
And yeah, and then Amazon.
Yep, yep.
All right.
So well done.
I thought it was a good book, and I definitely enjoyed the insights that you got out of it.
Well, thank you.
I'm glad you enjoyed it.
Yeah.
How long it takes to write?
I did the interviews over about nine months, and then you had to do editing after that.
So we'll call it around 12, just to kind of even it out, even though it didn't really take quite 12.
It's a pretty serious project, though.
It took some time.
Yeah, it took a long time.
Yeah, cool.
Well, hopefully you're proud of it.
I think it came out good.
Thank you.
Yeah, you're welcome.
I think we have time for the final two questions.
So if you're going to write some Python code, what editor do you open up?
I usually use Wingware's IDE.
I prefer that, because I found the debugger to be the most useful for live debugging.
But I also use PyCharm, because we have to use it at work for the automated test stuff.
And I can see why people like it.
So I'm a little torn at this point.
Which is my favorite.
Do you want some kind of offspring of the two?
Yeah, pretty much.
Yeah.
Someday.
Who knows?
Very cool.
Yeah, I definitely am a fan of those as well.
And then notable PyPI package or packages.
So for me, I've been using Report Lab a lot because I'm writing a book on it.
But I also used it a lot in my previous job.
And it's just incredible what you can create with Report Lab.
Pretty much any document you see, or even this book, the Python interview book, I could probably
create with Report Lab with a little bit of time.
Because you can just create templates and it'll whip through that and generate whatever you
want.
That's awesome.
Yeah, I'm definitely checking it out.
Yeah, that's cool.
I like WX Python, which I've already mentioned.
It's great for creating UIs across all three major platforms with very little or no changes
across platforms.
I've written a code that works on all three without having to do anything running the code.
I definitely think it has the best overall experience for the cross-platform Python-based apps, right?
It looks like it belongs on those platforms and it feels modern and nice.
Yeah, it works really, really well, in my opinion.
Very cool.
All right, Mike.
Well, thank you so much for taking the time and also for doing all these interviews with
everyone.
It was great to chat with you.
It was good to chat with you, too.
Thanks for having me.
This has been another episode of Talk Python to Me.
Our guest has been Mike Driscoll, and this episode has been brought to you by Linode and
us over at Talk Python Training.
Linode is bulletproof hosting for whatever you're building with Python.
Get four months free at talkpython.fm/Linode.
That's L-I-N-O-D-E.
Want to level up your Python?
If you're just getting started, try my Python jumpstart by building 10 apps or our brand new
100 days of code in Python.
And if you're interested in more than one course, be sure to check out the Everything
bundle.
It's like a subscription that never expires.
Be sure to subscribe to the show.
Open your favorite podcatcher and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct
RSS feed at /rss on talkpython.fm.
This is your host, Michael Kennedy.
Thanks so much for listening.
I really appreciate it.
Now get out there and write some Python code.
We'll see you next time.
Bye.
you
Thank you.