2020 will be one for the history books, won't it? I've put together a great group to look back on
2020 from the Python perspective. Join me along with Cecil Phillip, Ines Montani, Jay Miller,
Paul Everett, Reuven Lerner, Matt Harrison, and Brian Okken for a lighthearted and fun look back
on the major Python events of 2020. This is Talk Python to Me, episode 297, recorded November 30th,
2020. Happy New Year, everyone, and thanks for listening.
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,
and keep up with the show and listen to past episodes at talkpython.fm,
and follow the show on Twitter via at Talk Python.
So let's go ahead and just kick off this episode. This one is a little bit different than the standard
show. Everyone here has been a guest and a great guest, and some of you even repeat guests. Some
of you are a repeat guest and scheduled for more episodes even, hint, hint, Ines. But let's go
ahead and kick it off. So this is going to be a year in review. There's a bunch of us here,
seven or eight of us, and I'll just do a quick introduction. Let me just welcome you individually
on. You could say, you know, a couple sentences about who you are and whatnot so people know.
And then we're just going to get into what you thought was the most interesting, impactful thing
of the year. And I have some software to help me do this. So let me run it here. Darn it,
it's me. All right, we'll go back to that. Well, let me welcome you all, then we'll go
through this. So Jay, Jay Miller, welcome to Talk By The Me again.
Happy to be here. I haven't been a guest in like three years. So
I know, but your episode was so popular, like over a hundred thousand people listened to your
episode. Can you believe that? That's so insane.
I'm shutting down my podcast. I don't get those kinds of listens.
Tell people about yourself.
Sure. Jay Miller. I'm a podcaster, developer, now developer advocate for Elastic, you know,
the people that do search and we are database shots again, Michael. But yeah, I'm just happy
to be here. Yeah, that's it.
Awesome. Welcome. Reuven Lerner. Welcome back. Good to see you, man.
Hey there. Nice to be here.
How early is it?
It's not that early. It's only 530.
Oh, okay. Well, thank you so much for waking up early and making, yeah, we have people from
basically every corner of the world. So yeah, tell people about yourself again,
if they haven't heard the episodes.
Sure. So I'm a Python trainer. So most days I'm in different companies doing on-site training.
Nowadays, a little less on-site for some strange reason. And so I normally do corporate training,
everything from intro to Python for non-programmers all the way up to advanced Python workshops.
And I also sell a whole bunch of courses online to individuals. Oh, and I have my book,
my book, Python Workout.
Yay.
Yeah. And we're streaming live with video, so you can hold it up. Yeah, that's awesome.
Oh, I can hold it up.
Python Workout. Awesome.
And this is the picture of me on the cover, of course.
Of course. Yeah. That was when you were working out, preparing for the Olympics.
Precisely. Precisely.
Yeah, exactly. So we'll be sure to link to your book and some of your courses as well.
Ines, welcome from the other side of the world.
Yeah, I'm currently in Australia. Escaped the EU lockdowns. And now I'm here. Yeah. Happy to be back.
I think I've been on a few of your podcasts, but it's always my favorite podcast.
Oh, thank you. Yeah. It's awesome to have you here. And I have definitely dreamed about,
well, my daughter goes to school online. I always work online. Maybe we should just go somewhere by
a beach away from people. How can we do that where it's warm? Right. And it seems like you pulled it
off. Beautiful. All right. Paul, Paul Everett. Welcome.
I just saw Anthony Shaw talking. So if you want to talk about converting your life to work at the beach,
just subscribe to his damn Twitter account. Welcome, Anthony Shaw.
Anthony, I'm raging against you.
Oh my gosh. Also from Australia. Hey, Anthony. And Andri from PyCharm is here. A bunch of folks.
Mark, awesome. Paul, introduce yourself.
Sure. Developer advocate at JetBrains for Python stuff and web stuff. Most known for giving the Python
1994 talk. My purpose on this panel is to increase the median age so that we all qualify for the
discount at the buffet.
Hey, man. I'm right there with you. Right there with you. Awesome. Nice to have you, Paul.
Brian, we've met before, right?
No.
Brian Okken, he and I co-host Python Bytes Together. And you've been on the show quite a few times as
well. Last time, I think we covered 30 pytest plugins. That was quite the whirlwind tour.
Yeah. So I highly recommend this book to anybody that wants to learn pytest.
Awesome. Matt Harrison, welcome back.
Thanks. Good to be here. I guess I'm similar to Reuben. I do corporate training and consulting in Python
and data science. And I guess since we're flaunting books, I'll flaunt my latest book.
Wait, wait. The tiny Python 3 notebook. Awesome.
The Python notebook. It's very small. Anyway.
It is tiny. Well, what I was going to say, Matt, is like, you're going to need to be like basically
an octopus to hold up all your books. Multiple books on each tentacle.
I've got a few here. So yeah, it's good to be here. Thanks for having me on.
Yeah. Yeah. You were just recently on about learning how to learn.
Yeah.
Does it count if I have everyone else's book?
Yes, it does. But it will also be hard to hold them all up, especially if you've got all of Matt's.
Cecil Phillip, man. Hello. Good to see you, friend.
Hey, thanks for having me on. I don't have any books to share,
but because I hate writing, so I don't write anything.
I do do some video. So if y'all are interested, I do do a weekly Python stream on Wednesdays.
So if you folks want to check it out, it's on Twitch, the Microsoft developer account.
And we do very beginner-friendly conversations about Python and stuff like that.
And Michael, you were just on the other day too, right?
Yeah, it was so fun to be on there with you. We got to play around with FastAPI.
And man, that's a cool framework.
So it's Coding from the Beach. What's the name of the show?
That's a good name, actually. Maybe I should coin that one.
No, so we do PyWeekly. So it's me and my co-worker, Brian Clark.
And we kind of approach Python from the perspective of beginners,
but also from two people that don't necessarily know Python very well.
So Brian is a JavaScript guy. I'm a .NET guy.
But we're both, I like to call it PyCurious. You know what I mean?
Like we're Python Curious.
And we definitely want to show people the different perspectives of learning new languages.
Yeah, it's super interesting. And it's really low-key.
It's like you said, it's this Twitch sort of exploration style of code,
not polished presentation style.
So you just guys sit down, take feedback from the audiences and go with it.
Yeah, I love the show because I'm never prepared.
Like I kind of just show up and talk about stuff and people love it.
And it's great. I don't have to do notes or anything like that.
We just kind of be like, hey, what do we want to learn about today?
Right? Well, let's go ahead and do it.
Yeah, fantastic. All right.
Well, given how many of us there are, let's go ahead and just jump in.
And we're going to do our year in review.
And so I've written a small piece of Python software here in the REPL.
It's very advanced. It's at least four lines of code.
I've got to tell you.
And what it's going to do is going to pick one of you.
And then we're going to have you talk about what you felt was the most significant
or impactful thing that you saw happening in the Python space.
So round one, Cecil, you're on screen and it pulled you up.
Go for it.
I got lucky.
Okay. So the most exciting thing that I think happened in the world of Python and one that I have a little bit of a close relationship to is the fact that Guido von Rossum joined Microsoft just a couple of weeks ago.
So I didn't mention this before, but I do work at Microsoft as a developer advocate.
And I think for me, it's been a really interesting to kind of see how the company has been embracing open source and working with a lot of the creators.
And now seeing a lot of the leaders of the industry kind of join the company, you know what I mean?
It kind of, you know, it's a kind of, it's like a different world.
I mean, I don't know how else to explain it or talk about it.
It's been really great to have him here.
I had the opportunity actually to interview him and we did like an internal interview just talking about like, well, what made you decide to come out of retirement?
That's awesome.
Was this on channel nine?
Is it public or is it?
No, it was internal.
It was an internal interview.
I don't know what his, his, I'm sure he'll do some other ones, but it was an internal one.
Did you make him whiteboard?
No, we didn't do him any whiteboarding.
We did ask him what some of his favorite shows were.
So that was pretty interesting.
We asked him like the Star Trek versus Star Wars conversation too.
I couldn't, I couldn't handle that pressure.
It's hard, man.
It's a tough crowd.
I think it's definitely amazing to be able to see folks from the industry, like kind of embracing like these different companies and us really supporting open source in a very like authentic way.
Yeah.
It's such a big change.
Reuben, you were just talking before we started streaming, I think about, you know, 10 years ago, how this was really different.
Oh yeah.
I mean like even more, but yeah, even 10 years ago, the notion that Microsoft would be so involved in the open source.
Space and specifically the Python space was basically unthinkable.
I mean, I think it was Steve Ballmer who said that, you know, Microsoft, like the Linux and open source were a cancer on the industry.
And they were definitely seen, you know, Microsoft was seen as an enemy of the open source world.
And it's been truly amazing to see them just embrace it.
I mean, you see the booth at Python, you see the VS Code investment.
It's very, very impressive.
And it demonstrates, and he says, we'll say this earlier, like how much leadership at the top really can change the direction and the attitude of a company.
And that filters through to even the lower level people and the decisions made there.
Yeah.
That's a lot of hard work, right?
Because if you think about it, we've had different leadership for a very long time.
And so for some of us, some of this change that people are still recognizing, I mean, we've been doing it for a very long time.
You know what I mean?
Like we didn't just in 2020 decide, oh, hey, let's adopt and support open source.
It's been one of those things that have been building, you know, very much over time.
But, you know, the fact of the matter is like you still have those old stigmas that we still have to shake.
And, you know, we still have a lot of folks that we have to help convince that we're not the death star and we won't, you know, destroy the world kind of thing.
But I think it's a good responsibility to take on because there's also, you know, there's a lot to fuck up.
And if you commit to like doing something like, you know, GitHub acquisition and say, okay, we're doing that and we're running it, you know, we're good sign forward because every misstep can have like, you know, a really big impact.
You know, if Microsoft starts doing bad things again, people are not going to be, you know, very forgiving at all.
So I think that was the most sensitive one of them all is the GitHub acquisition because what they do to Azure is kind of their story.
What they do to Windows is their story.
But what they do to GitHub, that's everyone's story.
And all of a sudden, that was a big deal.
And on top of that, you have the ability to give GitHub a little bit more power in the space.
Like, I mean, we've all been kind of watching what's happening with like YouTube DL and stuff like that.
And just seeing the support.
It's not just GitHub anymore.
Now it's like, okay, what does one of the wealthiest companies in the world, you know, say about this particular position that YouTubers have a problem with, that people in tech have a problem with, like a lot of abusive behavior.
And on top of that, you're providing support for things like NPM.
It's one of those questions.
We all want to contribute to open source, but none of us have the financial ability to contribute like a company like Microsoft can.
So I'm not just saying we're going to be a part of it, but saying, no, we're really going to be a part of it is like a huge deal.
Yeah.
The million dollar defense fund that they just announced is a big deal.
Yeah, for sure.
And when you think about GitHub, right?
Like you think about like developer culture.
That's what GitHub kind of represents to me is the new, you know, the future of developer culture.
Like how do we collaborate?
How do we work with each other?
How do we share not just source code, but like experiences and knowledge, right?
Through like something that we can all connect together with.
That's code, right?
And then kind of circling it back around to Vita, being able to, again, see these leaders of these really large open source projects put their faith in the company.
And even considering what the past of the company was to what it is today.
I think hopefully like the rest of the open source world would start to realize that we are serious about being good open source citizens and supporting the culture and the community.
I mean, me personally, I'm just really excited to see what he's going to do, what he's going to work on.
The future is bright, man.
Yeah, absolutely.
I think someone on Twitter had said, so now we actually hire folks that contributes to, you know, obviously C# and F sharp and the .NET stuff, but also folks that contribute to Java, Rust, C++, and obviously Python, right?
So we have a whole host of language folks underneath the umbrella of the company.
And so now being able to have that space of collaboration, like underneath the umbrella of one company, I think is going to be really interesting to see what the next couple of years looks like.
Yeah, you're going to have to come back in six months and give us an update on all the Python tools you see.
I'll give you the six month update on it.
Right on.
All right.
I'm going to run the chooser.
Hall, it has chosen you.
Not sure about your chooser algorithm here.
There doesn't seem to be.
Random dot choice.
I'm telling you.
This time, it's not a good time to talk about election strategies.
And as soon as how it chose you first.
It could be flawed.
We're reviewing it.
Are you changing the random seat on everything?
Exactly.
Yeah, I should be.
My topic is things change, nothing changes.
And I think I'm maybe stealing someone else's topic.
So I appreciate your random algorithm choosing me first.
And it's kind of along the line.
I'm kind of interested in open source communities over the years and decades and why one works,
why one doesn't.
In particular, a lot of open source projects that get successful kind of founder when the founder leaves.
And over the last couple of years, you've seen Guido transition out, stepping out as BDFL and kind of a new language governance model that he didn't even decide on.
And then, you've seen the big fundraiser.
An organizing event called PyCon.
Python 2.7 end of life, which I guess a lot of us thought would never effing happen.
And it effing happened.
And through all of this change for a project that was like reaching mega escape velocity and popularity, nothing changed.
Everyone's like, who cares?
Python just kept on doing its business.
Releases kept cranking out.
Peps kept cranking out.
Elections.
Well, Python elections kept cranking out.
Michael and Brian kept cranking out podcasts.
Hallelujah.
Something good happened in 2020.
And so, it's interesting to me.
Healthy projects are those with kind of a healthy bench, kind of a middle management.
Python has a hell of a middle management now.
It's awesome.
And it's like middle management in every vector now.
It's got language leadership, middle management, foundation leadership, middle management, conferences.
All the regional conferences are kicking ass, even online.
So, it's really good for me to see kind of a balance between some of the old heroes like Brett Cannon,
who gave this awesome keynote two or three or four years ago at PyCon about open source.
And then some of the new heroes like Marlene Mangami.
When I give the Python 1994 talk, sometimes I give it with Barry.
And it's like, well, did you ever know back then that it was good?
Hell no, we didn't know.
And so, seeing all of this happen, seeing generation after generation come in, do their thing, raise the next generation is pretty cool to see.
Yeah.
It's fantastic.
And I know there was a lot of uncertainty when Guido stepped down about, oh my gosh, what's going to happen.
But it's kind of been a non-issue, which is good.
Non-issue in a good way.
Indeed.
Yeah, I think it's really nice to also have, you know, some stability, even, you know, especially nowadays, that's quite rare.
And just to see, you know, stuff just works.
Nothing goes wrong.
No drama.
No, you know, nothing terrible.
Just drama.
Almost boring.
Yeah.
Boring is good these days.
One of the things that really surprises me, Paul, as you mentioned, the escape velocity.
What's weird to me is how Python went, like, 20 years on medium, like, simmer popularity, and then it hit the afterburners and took off.
Right?
It seems just, I think there's going to be some interesting studies done about why or how did a language that had kind of been around for 20 years all of a sudden really dramatically improve in popularity.
And, you know, I have some ideas, but I just think that that's an interesting aspect of what you're talking about here.
Yeah, it's also the whole aspect of the, you know, the previous, like, Microsoft and Java and sort of, I guess, big money behind those sorts of languages in, like, the early 2000s, pushing them.
And then I think community and to the point of, like, developer gave developers what they wanted rather than maybe, say, enterprise-y languages.
And then I think there's a whole confluence of other things that happened as well.
But it is kind of crazy, right, that, like, one of the top, if not the top languages right now, they're almost 30 years old.
And it's got issues.
It's got warts and whatnot, but it's a thriving language.
And, you know, without significant big companies behind it, right, that it's competing with companies that've thrown millions of dollars into development of these things.
Yeah, absolutely.
Absolutely. And Matt and Ines, you two are on the data science side.
And I think the data science and computational folks are the ones that poured the gas on the fire and really made it take off.
And that's not where the growth necessarily completely is, but I think that gave it a serious kick.
Yeah. No, actually, because I get asked about this a lot, like, oh, what do you think made Python the language for machine learning data science?
And my theory is actually that, A, Python, of course, was lucky that it was in the right place at the right time.
But I think actually it won because it's a general purpose language.
People can come from other fields of Python into machine learning data science, for example.
Like, what did people do before?
If you look at kind of, you know, these surveys of what to use Python for before, it's a lot of web stuff.
You can build kind of anything in Python.
And I think that's what makes it so appealing and much more appealing than, let's say, like an AI language.
And that's also, in my opinion, why a lot of these attempts at making an AI language haven't taken off.
And people are like, no, Python is great.
It's fast enough. It's usable enough.
But I think the general purpose is really is what kind of got it over the edge there.
A lot of people that I'm teaching or training are people who don't want to be programmers.
They want to use Python as a tool.
It's like Excel to them.
They don't want to be programmers.
And so something that they can pick up and it just sort of works.
And they can go to Stack Overflow and copy something.
And as long as they get the indentation right, it sort of works as long as they're using the right version or whatever.
There's no compiling. There's no linking.
Yeah.
Weirdness.
And then you have things like Google Colab or whatever, where you have an environment, it's all set up, and you can just sort of go, right?
And so that is really empowering for people who don't want to be programmers, but view Python as a tool.
A necessary tool that they need to leverage.
And in addition, there's over a quarter of a million packages on PyPI, right?
And that's literally standing on the shoulders of giants.
You can go there and pick out something that you want to do, and you're a pipit and stall away from it.
And that's super powerful, right?
You don't have to set up a huge environment.
Yeah.
It just really simplifies life for a lot of these people who don't want to be programmers, but want to leverage these really cool.
But at the same time, you do have very strong support for C extensions.
So if you're looking at the top packages people download from PyPI, most of them are written in C, Siphon, whatever.
That's what makes them so powerful.
So we have that while also being able to provide pretty good developer experience.
Yeah, absolutely.
I think it was Seymour Papper who talked about a good language having, he was talking about logo, but it's even more appropriate for Python, having low floors and high ceiling.
That's really easy to get in and do simple stuff.
But when you want to do complex stuff, you're not limited.
And so just yesterday, I was doing a workshop with people, and someone who had just started with Python, I said, oh, but look what we can do if we sort of extend it several layers.
And he was amazed how complex you can get and how sophisticated you can get just in a few lines of code.
It's really a testament to the elegance of the design of the language, I think.
Andre Lasowski in chat makes a good point that many folks say Python is their second favorite language.
And there's something to be said for that.
Derek, sorry, should be there first.
I'm with you.
Well, to that point, I mean, it's also been said that Python is the second best language for doing things, right?
So you might have a language that's better.
Yeah, that's actually his quote.
I got it.
Data science, or you might have a language that's better for web apps, or you might have a language that's better for like system admin.
But there's probably not a language that's going to like get you all three of those, right?
And Python is sort of that Venn diagram that gets you in the middle and is good enough to do a lot of what you want to do.
Absolutely.
Random by choice.
Chooses Brian Okken.
Well, hey, cool.
Let me pull up my notes.
It was interesting.
We were talking about Microsoft.
And I didn't choose this, but I'm going to mention it anyway.
Tons of projects switched over to GitHub Actions in 2020.
And I mean, because it just kind of hit the area right like at the end of 2019.
So I saw a lot of projects migrating to GitHub Actions.
Anyway, I wanted to talk about packaging, which is sort of related.
There's a couple things.
I know I was supposed to pick one.
And the exciting thing happened today.
PIP 20.3 was released.
And the dependency resolver is now the default.
The dependency resolver is already angry at me for trying to deploy some dependa bot changes.
I'm excited about this.
And it's bit me already, too.
I've had requirements.txt files that have broken dependencies.
So I have to go look at those and see, well, which, you know, I have to pay attention to it.
So there's a little bit of pain for some people, but it was such a long struggle.
And I look back, and the request for a dependency resolver came in 2013.
So seven years later.
But something magical happened in 2019.
And that was some money from Mozilla came through.
And they threw some of that money at the dependency resolver.
That was pretty cool.
Yeah, that's a big deal.
There's been a couple of these experiences where money was given to Python specifically
to hire a team to improve something.
PyPI, the rewrite of pypi.org was one.
And then this is another.
Yeah, and they rolled it out in several versions.
So we had our version early in the year.
And then around July, we had another version that had a different flag that you could try it out with
to try to get some of the early adopters to try it out to make sure it's working.
And then today, it's rolled out for good.
And I'm pretty excited about it.
I kind of want to tie this in with the packaging.
I've seen a lot of progress on and a lot of adoption of the pyproject.toml kind of taking over more packages and more uses.
So we saw Flit used to have its own any file now only uses pyproject.toml.
There's been like additions to the metadata definition that hopefully will take hold.
And even pytest now, you can throw your configuration in a pyproject.toml.
So and I've seen more and more projects saying, getting pressure from their users to say,
I don't want another any file.
I want to put my settings in the pyproject.toml.
So that's a good thing.
Yeah, absolutely.
You know, a couple of things on that.
You talked about two things when you talked about packaging and you talked about GitHub.
I mean, the fact that now you can actually do some package work within GitHub itself.
I built a lot of small little tools, not things that I would want to go on PyPI.
No, we don't need to clutter that up anymore with my garbage.
But it's great when I can just say like, hey, here's a link.
And if you're really, you know, concerned on how to add it, you can just tip install, but point to this GitHub, you know, and that works.
Yeah, and also the stuff about finding security vulnerabilities automatically and doing PRs for you that GitHub does against like your various package definitions.
I think that's great as well.
Hey, has anybody ever put a JavaScript package on the GitHub package.json?
Probably, but not me.
I have.
You know this is a Python podcast, right?
No worse.
It's Gatsby.
So I basically put 500,000 JavaScript packages into my repo.
Yeah.
And I'm just saying that there's something I appreciate about Python a lot that like I actually, I never thought I'd say this, but like I do prefer also that you don't.
I can't resolve the depend about security mega warnings fast enough.
It's just incredible.
I know.
And I just turn them off, right?
Like you just don't.
Yeah.
That totally fixes it.
You're right.
That is one way to do it.
Yes.
It's like, I've always said that's a problem with writing tests, right?
Like when I started programming, I was all like, kind of hate writing these tests because they keep pointing out shit that's kind of wrong.
And then I have to fix that.
But I don't have tests.
It all works fine.
And then I'm happy.
Same with, I don't know, TypeScript.
Exactly.
I actually even type hints to some.
Fuck.
Yeah, I know that's kind of wrong.
So now I actually have to fix it.
So, you know, just don't.
So we should not let you speak at a high school.
It's the see no evil, hear no evil.
I do think that the Dependabot stuff, there's something about turning it off.
It drives me crazy.
I really value it.
But at the same time, the reason I had this conflict with the dependency resolver is it told me I should give me a PR to upgrade one thing, but not one of the dependencies for which the newer version was required or would break the resolver.
It's just like, ah, what is this thing doing?
All right.
Very good.
Very good, Brian.
Sorry, you need a batch dependency resolver.
Yes.
One that resolves everything at once and then makes sure you've got a working state at the end.
Well, the thing is, the PIMP is fine.
It was right.
It's that Dependabot, if you have 100, I probably had 20 dependencies in this thing, it gives you one PR for each line.
Sometimes it's like lags a day on the other one.
And if it gets it out of order, then the resolver, anyway, long story, frustrating.
I mean, to be fair, speaking of dependency resolving from the perspective of a library developer, it is hard.
And it's, you know, you do want to use versioning properly.
And I do feel like there's this eternal conflict between how do we manage dependencies properly for users and how can we make sure that we can define how our packages depend on each other in a way that's reasonable.
Because not, you know, use semantic versioning, not everything is a major release.
Not everything is a breaking release.
But stuff just depends on each other.
And you don't want to lock people in.
There's always this, you know, the idea is you should be able to pick up your project a year later with its requirements and it should run.
And that's really, really, really hard.
Yeah.
And if it gets wrong, then you probably get a lot of email or a lot of GitHub issues.
Hey, Brian, on your topic of PyProject Toml, what's the latest, greatest on editable installs?
I don't think it's completely working for all the same.
So I'd like to be able to say pip install dash E.
Is it dash E?
And just a project.
You can say pip install just a directory no matter what kind of packager it has.
So that works now.
So you can, even if you use flit or something, you can't do dash E.
But flit itself, for instance, has its own editable install thing.
And I don't know what poetry does.
I don't use poetry.
So it's a different command.
I'm annoyed that it doesn't just convert it.
I wish it would plug it in.
But I think that'll be coming maybe in 2020 or probably not this year.
Maybe next year.
Hopefully.
Yeah.
Badwolf says in the chats, what is the quick solution for getting pip version updated?
The first thing you created, a virtual environment.
This is another thing that drives me crazy about pip.
And if that could get changed, I would love it.
When you create a new virtual environment, basically for about a week, you have the latest pip.
And then afterwards, soon as you pip install something, it says, warning, your pip is out of date.
As soon as you create a virtual environment, it's like, well, why didn't you just
update it?
I want, if you're going to tell me it's wrong, just fix it.
You can use virtual environment.
Instead of venv, use virtual environment because then you can update your pip and you can update
the global one and install it in all your environments.
Interesting.
Yeah.
I just wrote an alias that will create the virtual environment, upgrade pip and set up
tools, and then activate it.
Other way around.
Activate it, then upgrade.
Yeah.
It's funny.
I have a shortcut like that too.
Yeah.
Awesome.
And then you can also have it install everything you need, you know, in the same command, automatically
create one switch.
I shared my script somewhere.
I think on Twitter, if anyone's interested.
Nice.
Yeah.
Mine's just V and V.
I just type V and V and magic happens.
I don't think of it anymore.
Well, when I finally switched to virtual and it's like, I make so many virtual environments.
It's so much faster.
And just that even just a few seconds, several times a day, it's worth it for me.
Yeah.
Awesome.
All right.
I've chosen next and there's a dependency in the chooser.
So it's works correctly.
So it's chosen me actually to talk about the next thing.
And Paul touched on this, but I think this is a really important one.
Like this is the year that Python 2 actually went away.
And it's, I just, it's been so long having to justify why Python 3 is the right thing or
more often teaching people, no, no, no, you can't type Python.
Please don't do that.
Unless you're on Windows and you have to do that.
But if you're not on Windows, then you better not do that.
So you got to, you know, it's just like this drag.
It always felt like things like Django or Flask and whatnot were being held back.
All these libraries were being held back by Python 2 support.
And last year they started dropping it.
And then Python 2 itself actually went away.
Brian and I tried to create the right nomenclature around this, I guess.
I was calling it legacy Python and modern Python rather than 2 and 3.
And that was, that was fun.
People started to quote it and use that terminology, which was kind of cool.
I don't know how well it worked, but it's really nice that Python 2 is finally officially gone.
And I thought there'd be a bunch of people would freak out for Python and start creating
like alternate old versions.
And I haven't, besides some like support, commercial support stuff, I've really seen that happening.
So it's, it's pretty interesting, I think.
Yeah, I think we should have brought like horns and stuff and like, you know, waving.
Some of those little pop, like bottle looking stuff on New Year's.
Absolutely.
Yeah, I mean, we really didn't get the party we were hoping for, right?
Like PyCon was supposed to be this big send off for Python 2.
But no, there was not so much of a PyCon.
Not really.
I mean, there's online, but it wasn't the same.
Now we just got to wait until we have all of the articles about the companies that finally
decided to switch and the steps that they took that they avoided for the last decade to,
to make this a reality.
Yeah, I mean, one of my biggest corporate training clients, they have been using Python
2 for years and years.
And they do all sorts of testing of hardware using Windows.
And so with all sorts of custom C extensions.
So I've been saying to them for years, every time I do training, look, you should really
think about Python 3.
And you should realize you should move in that direction.
And their attitude was basically, no, no, no.
We've got so much invested in what we've done.
We're not really going to upgrade.
And finally, about, I guess, a year ago, they realized, huh, we're going to be stuck on our
own maintaining everything, including all these packages of IPI.
Maybe it's time to start talking about it.
And so I'm actually doing some training for them now.
And I asked a group, should we do Python 2 or should we do Python 3?
And the majority actually said it's OK to use 3 because our group has switched.
So if they are moving, it's clear that even sort of the draggiest of the draggiest companies
are doing it.
Yeah, I was just going to echo what Ruben said that, you know, when you have success and you
get enterprises using your stuff and enterprises are slow to move.
And I don't want to, like, criticize Python 3 too much, but I think if they would have put
f-strings in 3.0, then they wouldn't have had this problem.
But because they waited to put f-strings in, then they had people dragging their feet.
So weird how that dragged.
That was one of the most popular features, for sure.
So you're saying the walrus operator was what finally did it?
I'm not going to go there.
You know, I was not super excited about the walrus operator.
I find myself using it all the time.
I like it.
It's neat.
Oh, it's cool.
I think it definitely solves a problem.
I just, wait, that's 3.8, right?
The walrus?
I believe so.
Yeah.
I'm still, I mean, I feel like I'm now back at like, okay, we finally dropped support for
two from all of our libraries that we're developing.
And now we're on 3.6.
Because, you know.
3.9 is current.
3.8 is now the new legacy Python.
Ines, how was it for you?
Like, as a library developer?
Yeah.
I mean, I feel like I only really got to use Python 3 this year.
I mean, of course, I've been using it privately for much longer.
But I would say, in mid this year, I was finally like, cool.
I just use type hints.
I use f-strings across all of our projects.
Because before, our dependencies had to support people on it too.
And our old version of Spacey had to support people who wanted to use it too.
So that kind of becomes the baseline.
And now we've moved that up to 3.6.
And so until 3.6 is dead, there's still always new features that, you know, we can't just,
you know, ship.
Yeah.
But that step from 2 to 3.6 is going to be way bigger than 3.6 to 7, right?
That's a very small step, the 3.6 to 3.7 or 3.7 to 3.8.
So you've done the big step.
Yeah.
And some of the new features, it's like, yeah, whatever.
I can, you know, live without writing those in my code base.
And people can still use them in their code bases.
Yeah.
All the new versions we're going to publish, like Spacey 3, that's coming soon.
We'll use Python 3 in the code base.
And we'll only work with Python 3.
We won't distribute wheels for Python 2, which we might have not even done for a while.
Because it's really, really a pain for some of our more abstract and complex dependencies
that we're also building.
Yeah, cool.
So far, people haven't really complained.
Like, I was expecting people to complain a bit more, but like, no.
Well, if you look at the PSF JetBrains survey, the data science folks, that side of the
house have definitely moved to Python 3 quicker and bigger than the web team.
I'm actually surprised how quickly people move up.
Like, you know, I don't know, even after 3.9 came out, we've had people requesting like,
oh my God, why does your, you know, annotation tool not work on, you know, 3.9?
Or why does this not work?
And it's like, nothing works on 3.9.
I was like, LCI doesn't do 3.9 yet.
Like, I can't build anything.
None of our other packages run.
Like, sorry.
I felt like a big person developer for like the first time ever when I actually got my first
issue with running the latest and greatest Python.
It was because I was running GCP and I kept running into an error, running into an error.
And I was like, you know what?
It used to work.
Let me just try it on 385.
And then sure enough, it worked perfectly.
And I was like, I've done it.
I've reached the new achievement.
Nice.
Yeah.
I've taken down the Talk Python training website by shipping the walrus operator accidentally.
At the time, Ubuntu didn't support it.
A quick question or a comment from Zach in the comments about when, you know, we can actually
say legacy Python's gone when the OS vendor stopped supporting it.
I think Python 2 is no longer shipping with the new macOS and Canonical is starting to
make Python 3.8 the default.
So I think we're getting there.
I thought they were removing Python in general from macOS and just making you install it yourself.
I think there might be some internal system thing.
I saw people talking about the system Python 3.8, even though I agree I heard the same thing
you said, but I don't have a fresh install.
It's not actually such a bad idea.
Like, I think, you know, for most things you do, you have to install some extra stuff anyway.
So making it a more explicit install from a user's perspective, I think, isn't even so
terrible.
Yeah.
Because otherwise, you know, if you just type in Python, you just run into all kinds of
potential issues anyway.
So, yeah.
Especially when it's super out of date.
All right.
Yeah.
I definitely end up like telling people in my courses, oh, you're using a Mac?
Yeah.
Ignore the Python that's installed.
I know this is a Python course.
Ignore the ones that's installed.
And here are ways that you can install it on your own.
So it'll be up to date.
And here's how you can make sure it doesn't conflict with what's already installed.
So maybe removing it all together is not such a terrible thing.
Yeah, for sure.
Homebrew.
All right.
Ines, the voting system has chosen you next.
Unmute myself and look at my notes.
Yeah.
So I think I've already mentioned the topic I was going to talk about about five times so
far.
But yeah, I think in 2020, we really saw the ecosystem around type hints, static type checking,
types in general mature and like really be widely adopted.
And I do think a part of that is the more widespread adoption of Python 3 because before that, to be
fair, you could use type hints before Python 3 just for completeness.
But like, that's not what people did.
And it looked very, very different.
So yeah, now and actually, even I couldn't really imagine writing code without type hints
anymore.
Like if I write something and I'm not adding any types, it feels kind of naked and it feels
kind of wrong.
And I actually feel like, oh, my God, I might be missing some issues here.
Maybe I'm not catching some bugs.
So yeah, which is quite surprising.
But it says something considering I only just recently was able to really embrace all the
new Python 3 stuff.
Yeah, that's a pretty quick transition.
Find it.
Yeah.
I depend on this thing now that like previously you had to stay away from.
Yeah.
And I have static type checking enabled in Visual Studio Code, you know, underlines things if
you pass in the wrong types, it gives you all these nice like autocomplete prompts or
previews if you want to.
That's also something I've gotten really, really used to over a really short period of
time.
Like, I don't know.
What about you, everyone?
Like, do you use type hints?
Like, can we have like an opinion, Paul?
Like, just raise the hand and then we summarize it for people who just...
End of hand raise.
Everybody.
I'm slowly starting to use them more and more as I see the advantages.
And in part, as I mentioned before we started recording, like, because my students are encouraging
me to use it more and more because they want it because they come from languages where
there's no such thing as optional type hints.
It's, you must do this or the program does not run.
So what do you know?
They can actually be useful.
Yeah.
I think that's one of the biggest benefits that I like about the type hinting system is
that it's optional.
So you could choose to use it.
And then if you don't need it, then we could just take it out.
Because for me, like, I believe in lazy, being a lazy developer.
And stuff like type hints just make certain things a little bit more discoverable.
Right.
And kind of like what we were saying before, like, it just improves your tooling to be able
to discover more of your code for you.
I like to use it.
I like to use it for APIs or especially for package interfaces so that people using a package
can use the editor tools and stuff like that for the hints.
And also just wherever it makes sense.
I mean, if it looks like it actually distracts from readability, then I take it out.
Readability is above all for me.
So if it's usable and readable, it helps.
I mean, I wouldn't advocate.
Oh, sorry.
Any, like, I don't know.
If you have a function that takes several arguments and then returns like a callback, that gives you
this kind of type hint.
I wouldn't advocate for that necessarily.
But yeah.
And I feel like they're working on some of that confusion as well.
And some of that, like, clutter and blood.
I mean, that was, I talk about that 3.9 story.
It was because I was tired of typing, typing dot list or typing dot dict.
And it was like, oh, you mean I can just do this now?
Like, and then sure enough, you know, stuff crashes.
And it's like, well, guess not.
Maybe later.
But it's great that for people who are looking at Python as a tool that they're using, not
the language that they're writing on a day to day, but just flat out the tool that they're
using, they don't know what we're talking about half the time, but they can kind of look at
something and go, STR, hmm.
Someone mentioned a string that one time.
Maybe that's what that is.
You know, it's a lot easier than just looking at the code and trying to figure it out.
Yeah, and speaking of tools, I think type-ins, they're not only that syntax feature.
They've really enabled this whole new ecosystem of tools that use type-ins to accomplish something
else or in a creative way.
And I think many of them have been covered on this podcast previously.
For example, there's Pydantic, which uses type-ins in actually one of my favorite creative ways
for data validation, settings management.
It's actually a library we've adopted across a lot of our projects to just quickly, you know,
you define this interface.
Here's what I expect.
You get like, you know, kind of like JSON schema just with type-ins.
Pydantic is so wonderful.
Yeah, you're right.
It's really nice.
Yeah, I would say it's one of my favorite recent discoveries in terms of Python developer
tools.
And then, of course, there's FastAPI and Typer developed by my colleague, Sebastian, which
probably has been discussed a lot on this and related podcast.
Yeah, he was on the show not long ago, like 10 shows ago or so.
And yeah, that's a fantastic framework too.
Yeah, so that's, I think it's also partly what really popular, popularized, great word,
type-ins in as a, I don't know, as a tool for, yeah, developing applications and so on,
I think.
Also actually Pydantic.
And yeah, we've also in 2020, I think, released our machine learning library, Think, which kind
of functions more like an interface layer and lets you write neural networks, combine layers
written in different frameworks like PyTorch.
TensorFlow.
And we've included custom types for arrays and all that stuff that passes through the
network.
Because, you know, if you're doing machine learning, a lot of it is like really abstract.
You have like this multidimensional array as in like 300 dimensions.
And then that goes through and then it gets transformed.
And then it goes all the way back.
And at the end, you're hoping to get something out.
And there's a lot that can go wrong.
And it's not even about like, oh, how experienced are you as a programmer?
It's like, that shit's just abstract.
Yeah.
We can make it a bit less abstract, even by just providing custom types that you can
declare.
So it's easier to see what goes in, what comes out.
Do these layers fit together?
Do they not?
Because otherwise, yeah, you easily end up with these very hard to debug NumPy errors
triggered by like five layers deep that tell you that you can't broadcast that shape into
this other shape.
And you're like, yeah, that's going to be fun.
This doesn't help me.
I have no idea.
Yeah.
I think there's also things like mypyC, which will compile stuff that has types.
And there's Cython, which will use the new Python type hints to compile to much faster
code.
So there's a lot of neat things coming out of it.
Yeah.
And I think especially also for abstract stuff like machine learning, there are lots of use
cases that web type hints and type-based validation is really promising because we can also take
something a developer already knows, like typing your functions, typing your layers, and it will
just work and do some extra stuff if you wanted to.
Watching mypy evolve is really cool.
And for Think, we've briefly dabbled in custom mypy plugins for a bit.
We have a plugin that checks if two layers you're chaining together return the correct types.
Like if you have one layer that returns a two-dimensional array of floats and the other
layer expects a two-dimensional array of integers or four dimensions, whatever, you can
actually see that underlined in your editor done by mypy as you type the code.
So you can prevent a bug before you even make it, like type it and introduce it.
So that's cool.
And I think that's all very actively developing.
So I think there's so much potential for custom plugins.
Like imagine more libraries just coming with their own mypy plugins that help the developers
use those libraries better.
I think, yeah, that's all super cool.
Yeah.
It's early days and there's a bunch of great tools.
Cecil, let me round this out with coming back to one thing you said.
You talked about how it was optional.
The closest analogy that I think we have to this in other languages has got to be TypeScript,
which is like JavaScript plus types and a little transpiling thing.
And it's all cool.
But all my interactions with TypeScript are like, oh, you haven't declared this thing right.
This thing's, it's like, it's as picky as C++ or C# or Java.
But it's, it's not as like built from the start, like the tools aren't necessarily all
there to make that fit together.
So I always feel like I'm kind of stumbling over the things like 80% of the time it's helped
me and 20% of the time that frustrates me.
Whereas like here you can just kind of, you can leave it off, take it or leave it if it's
good, not good.
Yeah.
I think TypeScript definitely helps with some learnings about how developers want to interact
with typing.
I think the thing with TypeScript is very, like there's a lot of features in there and it's
very customizable, but you know, it's kind of like you have like a nail, right?
And it gave you a jackhammer.
You really don't need the jackhammer.
Exactly.
Maybe a little finishing hammer would be nice.
Yeah.
There's a lot of different things that you can customize and some people need that.
But I think for 90% of folks, I'm making up that number.
That's not a real number.
But for a lot of folks, you probably don't need a lot of those knobs to turn and options
to set.
Yeah, absolutely.
There was like a two year period with TypeScript where I'd read the roadmap.
They do a great job of running their project.
Great job.
But they put a feature in using words I didn't know from type theory.
And my answer was, oh, that's for Angular.
Oh, that's for Angular.
Oh, Angular is the only one having that problem.
There's some serious machinery.
Yeah, there is.
All right.
Final thought on this from the chat is Eric O'Shaughnessy says, I love how typing solidifies
the author's intent.
Yeah.
All right.
Let's have the chooser choose again.
Jay.
All right.
So I totally didn't peanut butter on this.
But as y'all were talking, like I just got some wonderful ideas.
And I immediately started thinking about just the doubling down of some of the technologies
that we've seen kind of pop up over the last couple of years, but then truly evolve.
And like one of the biggest examples of that, and I know I'm like five years, daily, dollar
short here, but like Jupyter, anything Jupyter notebook related, like it's not just for the
solo data scientist anymore, like collaborative Jupyter notebooks.
Like to me that I know people that just have dreams about that and they're like the best dreams
ever.
And, you know, I know, Mike, you just did a podcast episode a few weeks back about that.
And we were talking about it on Python bytes a little bit.
They're like, it's not just one option anymore.
It's, you know, there's cocalc, there's pybinder, there's deep note.
Apparently I'm a deep note influencer and I didn't even know it, but.
That's awesome.
It looks good.
You are bringing it up again.
Again.
Exactly.
But not just in like Jupyter land, we have like crazy ideas.
Like what if we could do Python on the front end with Anvil?
And like now Anvil is saying like, hey, we're going to open source some of our server
technology so that you can take this technology and do it yourself.
And I think that that's just like with type hints, we're coming up with these ideas and
we're taking them a step further.
I think that this is what, in my opinion, has kept me in the Python ecosystem as long as it
has is because I'm constantly learning about like brand new ways to do a thing in Python.
And I have to talk about this because I told people in my Slack channel that I would, but
like we just thought, you know, at Elastic, we just launched a brand new tool called Elant
and it's in beta.
And the whole idea is it's like a Pandas data frame.
But instead of storing all of your data in memory, you can store it in an Elasticsearch,
you know, data store.
Oh, that's an interesting idea.
So now instead of being limited to what your RAM can hold, you're limited to how much space
you got and you can run search and you can run queries on it.
You can tie it into things like, you know, scikit learn and TensorFlow and do machine,
you know, any type of machine learning on it.
And at the end of the day, you're doing transforms on the data as it's in the data store.
So there's no more downloading a bunch of data, working on it and trying to re-upload it.
And it's off of the backs of crazy ideas from people crazier than I am that are just like,
hey, what if we could do this?
And, you know, to me, that's all I wanted to do with Python is just make up goofy stuff
and see if it would work.
I think that's an interesting idea.
You could start using things like lots of data and things like serverless.
where you get really short execution times and not much power.
But if it's already in something like Elastic, you could do pandas against it, like quote pandas,
like the API against it without really suffering a lot of trying to download it to your little
Docker Lambda callback thing before it runs out of time to execute and whatnot.
Yeah, actually, I think I've seen some people do some cool stuff with Spacey and Elastic as well,
you know, processing all, you know, the huge volumes of text, which also I think is
such an interesting part of our application of data science.
Like, you know, you want to have, you have so much text that, you know, you can't even,
nobody can read it.
You can barely store it, but you can still analyze it and process it and find something
out about it that otherwise.
So yeah, that's, that actually sounds quite cool.
I mean, the problems I was, I was having initially was just this amazing problem of like, I've got
a million lines of data that I need to do something with.
And I've got this little Mac mini here that's just chugging along, trying its best.
And everyone's like, well, why don't you just use the Google API?
And it's like, okay, well, I did the math.
I'm going to need $20,000.
And it's like, okay, so we can't use the Google API.
We can't solve it with that problem.
What else do we got?
And now it's like, oh, wait, you mean I can just store all this data?
Because it's only a few gigs, but then I can just hit my local server as many times as
I want.
Let, you know, search store or any type of data store that's good at retrieving the data
as I want it, as I need it, and then let it do its thing.
Like that solved a $20,000 problem.
I mean, even, even a site for the cash.
Do you want to send all your data to Google?
Probably not.
Yeah.
I mean, that's awesome.
Even if it were free, yeah.
You could also send it to Facebook while you're at it.
I don't know.
I was, I was working with police call records, so I don't want to send that data anywhere.
I don't want to be on a watch list.
No, exactly.
And I think those are like really, a lot of these really important applications of the technology
when in the health domain, people are doing good and useful stuff, but they should not
do that stuff at that type of cost, which means sharing all of their sensitive data with
companies that will, you know, want it for some other reason.
Yeah, absolutely.
Matt, Reuven, you guys do training.
What's the Jupyter story around there?
I did a class with not Jupyter, but it was all collab based this morning.
So yeah, I use it a lot.
I think it's great for beginners.
Like I said, for a lot of people who are scientists or engineers, that's what they sort of consider
Excel.
And so a lot of them sort of want to sit in Jupyter all day.
They don't even want to like think about modules or code or even software engineering.
Right.
And so it's somewhat of a challenge for me to sort of say, okay, let's talk about some engineering
skills and some good best practices for Python projects.
And they're like, oh, I don't want to leave Jupyter.
Right.
Can I do this all in Jupyter?
I'm like, well, you could, but you kind of don't want to per se.
But yeah, definitely cool.
I think what I'd love to see is Inez's fancy mypy checker hooked up with pandas on Jupyter.
That would make my day because that's one of the things that I find confuses people just
with pandas having 50 ways to do things and then objects returning five different types
or methods that return five different types.
like you don't get any tab completion or any of that good stuff in Jupyter when you're doing
a lot of the machine learning stuff.
Yeah.
And a bunch of like grown up engineering stuff is coming to Jupyter, right?
Like NB dev, NB QA, some of these other stuff that's coming.
There's making it way more interesting for that regard.
Yeah.
The NB dev stuff is interesting just coming.
I mean, that's sort of taking it to that sort of literate style of programming where we're
going to stay in Jupyter all day and do everything from that.
And then, you know, Netflix has their stuff where they're deploying Jupyter notebooks to
production.
Yeah.
It was paper mill.
Yeah.
Reuben, how about you?
And then I'm going to run the chooser.
So I, yeah, I mean, I use, oh, so I use Jupyter every day for my training.
I don't use slides.
I just do live coding.
And I find that's a great way to show them not just sort of the answer.
This is how you code something, but this is the process you use to get to the solution
because teaching people that process is really important.
And it also means I can share with them everything that I typed during the day really, really
easily.
People are a little resistant to using it for especially experienced developers.
They're like, wait, what is this thing?
Why are you not using a normal IDE?
I'm actually going to force myself in the last year to remember, oh, yeah, we should do a
few exercises and tell them to use the IDE so they won't think that everything is done
in Jupyter.
That's a great environment.
But like, there are other ways to develop software.
Why does Python only run in this weird web browser thing?
Speaking of this, this is another I think this is another reason why Python has taken
off so much just that you want stuff to be dynamic.
If you're doing the sort of data science type of work, you want to run your code that way,
even if you're running it in an IDE in a more traditional way.
But I think Jupyter has especially not just like, oh, you want to have like these little
notebook cells in your browser, but more like this is the type of way you want to interact
with code.
Run something, change a line, run again, run that part.
Well, they're coming from too.
They're coming from notebook environments.
And so this makes sense for a lot of these people.
And being able to just explain it, you know, on the same, just in one look, like instead
of going, here's five slides explaining what I'm about to do, or here's just the code.
Now let me sit here and explain it to you.
I can literally break it down line by line.
Okay, this is what's about to happen now.
Let's run this and watch it happening as we go.
So for people who don't write Python full time, again, it's amazing because for them,
they can see it piece by piece.
Just like, you know, my daughter, I'm just trying to teach her how to read early.
And it's just like, like break it up piece by piece.
And like, you can do that when you're training young, experienced wise Pythonistas and just
say like, hey, let's just look at what this does.
And if we want to dig into it, it's almost like having a debugger in your presentation
and just being able to like stop at any point in time and go, all right, let's, let's jump
in.
Let's go deeper.
Let's really talk about this.
Yeah.
Or be able to step back two lines in your execution.
True.
All right.
Just for the time sake.
Go ahead.
Last thought, Reuben.
You get the final thought on this one.
I started using more and more markup in my notebooks as well to like sort of document
what I'm doing explicitly and sort of instead of just using hashtags and comments.
So it becomes much more obvious with bullet points.
I think people are enjoying that as well.
Yeah, that's great.
And that's, I mean, that's part of the Zen of notebooks.
All right.
And you're up next.
The random choices selected you.
Okay.
So my big story for this year is very small story.
A Microsoft story.
It's COVID.
It's the coronavirus.
Which I think for the first time ever, it's the topic that everyone is speaking about in
every country, every walk of life.
Like whoever I talk to, wherever they are, this is the only thing people talk about because
it is such a profound effect on everything we've done.
Now, you know, this is a Python show.
So we'll talk about the Python aspect of it.
And I'm not trying to minimize at all the extraordinary pain that people are going through
physically, medically, emotionally, financially, on, on, and on.
But Python has continued sort of chugging along throughout this crisis.
In fact, like we've seen that big companies, high-tech companies are actually among the winners
in this as the whole world has gone digital.
And companies are hiring Python developers.
They're increasingly desperate for Python developers.
The number of people in my corporate training classes who, when we go around and everyone introduces
themselves, who were hired in the last six months is amazing to me.
Like these are people who are working from home, were interviewed from home, hired from
home, and are now doing training from home as their companies sort of grow in interest
and power and everything.
So people who have Python skills have continued to be, and I would even say are increasingly
in demand, which is amazing.
The bad news, or among the bad news is, of course, so I mentioned this before, Python and all the
other meetings and meetups and gatherings have suffered as a result.
The good news on this front is I've been able to speak at many more conferences than I would
have been able to because, hey, I can attend the conference from my home office.
I don't need to fly anywhere, go anywhere.
But you know what?
All of these conferences, these online solutions are still really lacking.
At the end of the day, as much as we want to say, we're virtual, we're online, we communicate
this way.
And that is an important part of things, that face-to-face contact, that personal contact
is really missing.
And I'm really feeling it.
I've only been going to conferences for a few years now.
And boy, I really miss being in the same room as other people and talking to them and
chatting and just sort of randomly bumping into people.
And then you also have the financial aspect of it that someone was mentioning earlier, the
PSF.
Their big fundraiser each year is Python.
And I'm sure it was a hit for them not just not to have it this year, but to have to cancel
the venue.
And I am extremely skeptical that's going to happen in person.
I know EuroPython already said it's not happening in 2021.
And we'll have to see exactly how this affects the community going forward.
I'd say so far, we're doing okay.
But here's an opportunity for someone to figure out how can we do conferences online that are
effective in a closer way to what we've been doing so far.
The news is, I would say, unbalanced good for Python and for people who know Python, but
still pretty bad overall.
And also add that like these vaccines, I mean, boy, oh boy, if they work, this is going
to be like, I'm super, not as a biologist or anything, but I'm so amazingly impressed with
all the science and the work that people have been doing on this front.
And I think this has a chance also to affect our lives moving forward, how they develop them.
They just need to make a PyCon bubble.
So in the United States, the NBA was continuing to play because they had a bubble where they isolated
all the players for however long, right?
So we just all go to somewhere and bubble up for however long.
Then we can have our conference.
I don't know if my family will let me do that.
Jay, we'll just do it in San Diego, man.
It's nice though.
Okay, I'm all for it.
Coronado Island, we'll just get a section of it.
Okay.
Yeah.
But why not?
Mandatory quarantine for like conferences.
I just did two-way quarantine here to be able to enter Australia.
Yeah, just live in Australia.
In the hotel room for two weeks and you're free.
Make PyCon in Australia.
That sounds okay to me.
Problem solved.
Well, I mean, to be fair, it's expensive.
So I wouldn't, you know, would you want to pay like, you know, your conference plus two
weeks in a hotel in order to do that?
I don't think that'd be even less inclusive than a lot of these conferences already are.
I don't want to take all of this thunder.
But one of the first conferences that I watched was, Cecil, please remind me now because I'm blanking.
That's how long of a year it's been.
The conference that you helped put on.
The Juneteenth conference.
Yeah.
And with that, I mean, one, great conference.
I'm sorry I screwed up on remembering the name.
That's my fault, not yours.
But also the sheer fact that that conference was organized in two weeks.
And it was an amazing conference.
Like the ability.
That could never have been done if it was in person, right?
Yes.
So like the accessibility that you're providing to new speakers, people that normally would
not be able to get up and give a presentation.
Like I've had that conversation so many times of like the type of talks that I like to create
are not the type of talks you see at PyCon.
And there's a reason why.
And it's not a bad thing.
It's just, it is what it is.
And I think when you're able to say, you know what, let's do a conference.
Let's make this happen.
Let's, let's just get up.
We can have fun with it.
I've seen some conference talks that were literally small budget films.
Like they had multiple casts.
I've done transcriptions on, on conference talks that literally had, like, they gave me the script
and said, all right, here you go.
So like when you can actually do things like that and think outside the box and, and use this
time to readjust the needle.
There was a good podcast episode on more than just code.
I believe not more than just code.
I don't remember what it is.
I'll find it greater than code.
That's what it was.
And they said, if we haven't taken this time to do something better, when things are different,
when things have improved, then shame on all of us because yes, this sucked, but it caused
us to think so much outside the box that we should be able to take all that knowledge with
us when we can get back in the box and just have a ton of fun with it.
Yeah.
I think the, a lot of opportunities been made available for people to attend conferences and
for people to get jobs where companies would previously say, no, you have to move to San
Francisco or to Omaha or whatever.
It's like, well, you know what?
No one's going to the office.
Let's try hiring from the best in the world instead of the best in Nebraska or whatever.
I think that might be the biggest fallout of this, Michael, is just the change in everything
being centrally located in Silicon Valley.
Yeah.
I've heard of a lot of people like that actually just have jobs in the Valley that have moved
back to where their parents are because it's like 10 times cheaper or something like that.
And they're not going to want to move back.
Yeah.
Have you heard that some companies are then readjusting their salaries?
They're saying, well, if you live outside of the Bay Area, then it's cheaper.
So we're going to cut their salary as a result.
Yeah.
But people have always been doing that.
That's like, unfortunately, not new.
So if you're listening and this happens, you can say, well, you no longer have to pay
$15 million for my office area.
So let's call it an even swap.
Just keep a virtual address in the Bay Area.
Exactly.
My P.O. box is right down on Fifth Street.
All right.
Last one.
This random choice was easy because we're down to our final excellent guest.
Matt Harrison, what do you got for us?
Okay.
My thought was just on sort of the hardware aspect of things this year.
So I have a daughter who started college this year for better or for worse.
And she's learning both C++ and Python right now.
Her linear algebra class has a Python lab, which I think is awesome.
I wish I had that.
But I was actually helping her with some homework.
I wasn't doing it.
But she was like, I can't figure this out.
So I was her rubber duck the other night.
And her issue was allocating memory, right?
And so one of the things that's nice about Python is you don't have to worry about allocating memory.
And she got all the output, but she was just double freeing a pointer here, which they checked on submission.
So Python's now, now we're seeing Python.
And I'll just tie this, like, I have a client who wants, next year, wants me to do a training on GPUs with Python, which just goes to show, like, my clients tend to be big companies.
And so big companies are now leveraging, like, specialized technology to do things very quickly, right?
And if you have a GPU, you can get 10,000 times performance that you get out of a CPU.
So I think that's super exciting.
There's the Rapids project, which is heavily sponsored by NVIDIA.
And I'm super impressed with that.
They're basically, like, taking well-known APIs and basically saying, hey, your code basically change an import or, you know, with the change of an import and this hardware, your code will run X times faster or whatever.
And so I think that's super compelling and exciting.
Not that necessarily everyone will have access to those sorts of things, but it's now getting to the point where it's becoming more common.
On the note of hardware, I think another thing that was really interesting this year was the Apple M1 chip coming out.
I actually bought a beefy PC this year, having run a MacBook for 15 years, just because due to Corona and whatnot, I needed something beefy to start doing virtual sharing and presentation like this.
And my MacBook just wasn't cutting it.
But the thing I don't like about my PC is that it sounds like it's going to take off every time I start doing something, right?
Like modern Intel chips can take us to Mars if they want to.
We just need to, like, make a huge drone out of them.
And so I'm super excited to see, like, if you can get a silent MacBook that, you know, is super powerful, runs faster than Intel chips.
That's super compelling, especially if they allow you to get a little bit more RAM, which from the machine learning side is interesting to me.
But I'm also excited about the competition factor of that.
I think, like, Intel and the chipset has sort of stagnated for the past couple of years.
We've sort of run out of the end of Moore's law, per se.
So I think both the GPU and the M1, it'll be interesting to see what the competition is from the PC manufacturers, if they're going to, you know, do a similar everything on a chip thing or just sort of go with what they've been going with.
I think competition is good.
And so I'm excited that Apple did this, even though there's going to be some growing pains.
And Python might have some issues at first, but I think in the end, new technologies, new hardware that allow us to write at high levels and not have to worry about freeing and allocating memory.
Which, again, a lot of people are using Python, don't care about that.
They don't want to be programmers.
They want to leverage great code, stand on the shoulders of giants and the latest and greatest software and hardware and have it be fast.
So I'm super excited about the future with them.
Yeah, I'm really excited about both these things.
Like the whole GPU revolution is incredible.
And the Apple M1 stuff is going to be really, really interesting.
Like you, I bought a maxed out Mac mini.
I actually had already ordered a top-of-the-line MacBook Pro 16-inch.
And then that came out.
I started seeing the reviews.
I'm like, you know what?
Forget it.
I'm not getting that thing.
I'm getting this new one to try it out.
And it does have some drawbacks.
Like Docker doesn't work right away.
Maybe it will.
Maybe it won't.
But I have a 2018 MacBook Pro.
That's pretty good.
I have a SimRacing 16-core machine over there.
Like I've got plenty of Intel stuff to work.
So I'm going to try to jump on this.
And I think the interesting Python angle here, besides just having stuff to run our code,
and it's, you know, Inus talked about like her CI didn't support 3.9 right away.
Well, whose CI is going to build wheels for Apple M1 straight away and things like that.
There's going to be some interesting growing pains, especially on the data science side,
as this true platform shift happens.
It's funny you mentioned that because actually, yeah, when this came out, we were also thinking
like, ah, maybe we should get one of these.
You know, we want to make sure Spacey compiles properly on it.
And we can really, you know, optimize for that.
Did you guys get one?
Yeah, because someone has to do it.
Or so, you know, not yet.
No.
Also, it's a bit difficult with the traveling.
But like, yeah, that's kind of...
And we have other priorities too.
This is not...
I wouldn't put this like at the very top.
But like, it's definitely something we want to do.
Yeah.
While at the same time, we also want to keep optimizing for CPU.
Like, that's the other thing.
Of course, you know, even all these new NLP models, all of that stuff, obviously, runs great
on a GPU.
And we'll see a lot of improvements.
And we also see this become much more available and cheaper for people to use.
But at the same time, we're still optimizing our tools and libraries for CPU.
Like, you can run it on your random laptop.
And also, it's still, for a long time, it will be cheaper still.
If you just, you know, you want to run lots of machines.
And you can get those, you know, much cheaper in the cloud.
And if you can parallelize, you can train your models very efficiently on CPU if you can get
it to work.
Yeah.
That will always be cheaper for a long time.
There's a lot to say about just the overall cost of computing as a whole.
I mean, this is great.
This is $10.
And I mean, I can run a lot of stuff on that.
You're holding up a circuit.
Well, this is an Adafruit thing just for the people who are not on the video.
Oh, yeah.
Sorry.
I'm holding a Raspberry Pi Zero W.
So it's like, you know, four gigs of RAM, like enough.
You can buy a 64 gig, like flash drive for $3 now.
Like, it's amazing, like just the overall cost of compute has dropped so much.
I mean, what was it?
The, what is the Raspberry Pi 400?
400 where it's just, it looks like a keyboard, but it's actually a whole computer.
Yeah.
So it's like, as we continue to do more and more, we're doing it with less and less and
it's cheaper and cheaper and cheaper.
And most of us are coming from someplace where the cost of living is too damn high.
And we're able to say that we can afford to buy a $15 Pi Zero and not think about it too
hard.
But the fact that we're getting to that point where you can have people all over the world
where the question isn't anymore, how do I get a computing device in my hands?
It's like, okay, now I have some choices and they're all affordable.
Like to me, that's, we're going to see a lot of things come where Brian Okken is right
now, where VS 2103 is in the future.
There's going to be a lot of great things coming.
And yes, I'm looking at chat.
I have my kids to have one of those one laptop per child's in my, in their bedroom over there,
right?
Which I think that the, the Raspberry Pi 400 is sort of.
It's the next gen of that.
It's actually something that makes sense.
Everyone has a TV, right?
And you can just plug it in and you're not in somewhere.
I mean, you're in Linux.
So yeah, you're in a weird environment, but you can run one of the laptops with the hand
crank on it.
Yeah.
Well, it has a little wings.
Mine didn't have the hand crank, but okay.
I actually like, I kept hearing about Raspberry Pi.
And so I decided to order one recently and I haven't done anything with it.
I like just came a few days ago, but I'm looking at this thing.
I'm like, Oh my God, this little card here that costs me less than a hundred dollars,
a lot less than that is more powerful than the computer I use to run my entire business
for years and years and years.
It's just astonishing to me.
Yeah.
So I think that's probably a good place to round out the show.
Like the future is so exciting.
And in some ways we're like kind of living there, right?
Some of these things that are coming out are so amazing.
And I just want to say, thank you all to you all for being here.
You're all doing such amazing work and it's really humbling.
You all took time from crazy schedules, from traveling, from weird locations to just be
here and make this whole event happen.
This has been another episode of Talk Python to Me.
Our guests on this episode were Cecil Phillip, Ines Montani, Jay Miller, Paul Everett, Reuven
Lerner, Matt Harrison, and Brian Okken.
Thank you all for being on the show.
And it's been brought to you by us over at Talk Python Training.
Do you want to level up your Python?
Well, if you're just getting started, try our Python for the Absolute Beginner course.
Or if you're looking for something more advanced, check out our new Async course that digs into
all the different types of Async programming that you can do in Python.
And if you're interested in more than one of these, be sure to check out our Everything
Bundle.
It's like a subscription that never expires.
Whatever you're interested in, taking one of our courses or recommending one of our courses
is the best way that you can support the podcast.
Thank you.
Be sure to subscribe to the show.
Just open your favorite podcast app and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes and the direct RSS feed at /rss on talkpython.fm.
This is your host, Michael Kennedy.
Thank you so much for listening.
I really appreciate it.
Now get out there and write some Python code.
I'll see you next time.