Python Bytes - #135 macOS deprecates Python 2, will stop shipping it (eventually)
Episode Date: June 20, 2019Topics covered in this episode: Why do Python lists let you += a tuple, when you can’t + a tuple? macOS deprecates Python 2, will stop shipping it (eventually) Pythonic Ways to Use Dictionaries T...hings you are probably not using in Python 3 But Should Have a time machine? C++ would get the Python 2 → 3 treatment too Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/135
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 135, recorded June 12th, 2019.
I'm Michael Kennedy.
And I'm Brian Ocken.
And I'm Max Sklar.
Yeah, welcome to the show. It's great to have you here.
Good to be here today.
You're here, you've got your own podcast, and we're definitely going to talk a little bit about that at the end, and that'll be great.
I do, before we kick things off, though, also want to say thank you to DigitalOcean for sponsoring the show.
Check them out at pythonbytes.fm slash digitalocean.
More about them later as well.
Okay, so Reuven Lerner has,
he's got an email list that I'm signed up to.
One of the things that he pointed out in one of the recent,
I can't remember if it was on his email list
or if it was on one of his blog posts.
So I'm linking to a blog post.
But it's this idea that I didn't even know you could do this.
It's titled, why do Python lists let you do plus equals or in place assign addition with a tuple? We can't do plus with a tuple. So here's the idea is you got, you got a list, and you want
to add, combine the elements of a list and a tuple, end up with a list at the end. You can't just add them because
they're different types, but you can do incremental add. And it's just weird. I was like, I didn't
know you could do that. But it turns out it's a little surprising, but just as because the plus
equals is not, I always think of it as equivalent to like x plus equals one is
the same as x equals x plus one.
That's what I thought. But it turns out
it's actually a different, it's a different call.
It's implemented as a different call.
I see like a different dunder method, like a different
magic method is being called.
Yeah, and the dunder method
for list in place
add is what it does is
it takes any iterable on
the right hand side and adds it one element at a time to the left side.
So you can plus equals any iterable onto a list.
That's neat.
I didn't know you could do that.
That's cool.
This is so weird.
I mean,
it's cool and it's,
it's fine that plus equals will do that.
And I actually just tried it.
I created a list of a bunch of numbers and then I plus equaled it with a string. And now I have a list that's full of numbers and
single characters that made up that string, which is, which is, it's okay if that's the behavior.
And it seems actually like the most reasonable behavior, but then why can't you just plus them?
Right? Like it seems odd that it's inconsistent. Plus it seems like it should just create another
list with that same behavior.
So yeah, not sure. Yeah, exactly. I assume there's a better way to turn a tuple into a list. But now that I'm looking at this, you could just create an empty list and then do plus equals
your tuple. There you go. Your conversion. It's all filled up. Yeah, it's definitely not the most
obvious way. Yeah, probably the initializer constructor of the list is best, just pass it the iterable.
But yeah, this is interesting.
Also, if the three of us didn't know you could do this, probably don't do this in your code
because nobody will understand it.
But it's interesting.
Yeah.
Also, please don't put this in a job interview.
Don't make this one of these things.
Oh, one of those questions that you mean an interview question yeah exactly like what form of sort does a list use what does a list plus
a tuple mean what is list plus equals no this belongs in a watt talk not in a not in a job
interview yeah definitely i think this is interesting because Python is mostly devoid of these weird oddities, right?
It's mostly a pretty polished, simple, clean language.
But yeah, this is weird.
Gary Bernhardt could incorporate this into a talk, I'm pretty sure.
Nice.
All right.
Speaking of jobs and growth and things that you might actually want to pay attention to
or decide on, Max, what's this next one you got?
This is an article called R versus Python. R is out of the top 20 languages
despite statistical boom. And I know you guys have covered on the show before the whole R versus
Python dynamic, all these articles coming out. This is, I'm not going to be anti-R here, but
even though I'm a Python guy. So the article is about an index on the popularity of programming languages. And this organization, TIOB, does one. I know that there could be,
I imagine that there's some controversy around how to rank them. I'm just going to assume that
they're doing a pretty good job. There's a few stories here, a few headlines. The first is that
Python hit an all-time high. It's now, language is at ranking number three on the chart. So,
it just beats out, it beats out C++, I believe, for the first time. Only Java and C are more
popular than Python. And the other story is that the statistical language R dipped to number 21.
And so, the speculation is that Python has sort of taken over as the preferred statistical
language to R. And then personally, I got into Python because I kind of came at data science
and ML from a software development perspective. I took CS, I learned C and Java. And so going over
to Python came a lot more naturally to me than going over to R.
If you were, say, a statistician, maybe coming from R makes more sense, right? Or
from MATLAB or something like that, right? Yes, yes. And I have worked with and met people who
do that, and they have probably extra skills that I don't have. They could do certain things a lot
faster. So again, I'm not anti-R, but I think from the programmer's perspective, Python is a lot
nicer for some people, people like me.
So personally, I'm going to stick with Python because there's so many statistical libraries
that even I have yet to learn, and it's served me very well thus far. And then the third thing I
wanted to point out, the language that I use most in the recent years is Scala. And that's
surprisingly down at 31, which I was looking at companies around here in New York at startups,
there's a lot that use Scala. So I was surprised it was that low.
Well, I feel like Scala and those functional languages,
they tend to be very popular in the financial space, right?
Maybe, yeah.
You definitely are in the center of that and being in New York, right?
Yes, but a lot of, you know, Foursquare,
where I worked for a long time was Scala-based Twitter.
So there's a lot of companies like that,
social media consumer app companies that use
it. So why do you think this is? Why do you think Python is? You talked about why you were more
comfortable with it. But it's a general trend, even people who are scientific are taking up
Python and much larger numbers. Why do you think that is when companies actually want to apply
machine learning or statistical methods to their data,
they already have a lot of engineers and developers.
And if you already have people who are fluent in Python, then why not use Python?
Python has a lot of great libraries.
NumPy is really great.
And then a lot of the more sophisticated machine learning libraries are really great.
So there's too many benefits, I think.
Yeah, I definitely agree with that. I think another one has to do with the fact that Python
is a full spectrum language. Like, I can come with a very partial understanding of what Python is and
what it does. And I can still be productive. I can if I know how to pip install a thing,
write code, I need to know what a function or a class is. I can spin up a machine learning model and do something with it, right?
But at the same time, that piece can grow and grow into a fully
distributed application or something like that, right? There's not
many languages that start that simple, and yet most of the simple
languages, they top out. And you say, well, now you go do C++. I hope you
like templates good luck
yeah i'm still like stumped as to why java's at the top that is a good question uh you know what
i think i think a lot of legacy yeah i think that that's true and i think the legacy is in two places
i think if you care about open source but you want a compiled modern language java is a pretty
good choice like you know c sharp++, those are also good,
but C++ doesn't have garbage collection
and C Sharp is tied to Microsoft, right?
So I can see that that's one of the things.
I also think the academics, Stanford and Carnegie Mellon
and all that stuff very much for a long time
taught Java, Java, Java as the way to do things.
And so the folks at the high end of decision-making
probably had that experience as well.
So I don't know.
That's my theory.
Okay.
I'm not sure if there's this article or another one related to this
that predict, I don't know if you already covered this,
that predicted that Python will be at the top within like four years.
Yeah, that it's going to surpass Java and C. Yeah. and c yeah i mean just look at the growth curves right some are either flat
or downward and python is like highly up so pretty awesome very cool to be working in the python
space it's exciting like every day is super exciting if like we said java is very popular
because of you know there's a lot of legacy code written in Java, but new projects. I don't know if there's another score for new projects, but I assume that
Python is way higher. Yeah, that's probably, it probably is. I don't know where to find that
either, but it'd be cool to have that data. Yeah. Speaking of exciting, Max, what OS do you use?
I'm on Mac OS. Yeah. So, so am I. So is Brian, even though the majority of Python developers
are on Windows, we happen to all be there. So we can all appreciate this next one that's coming here.
So I recently watched the WWDC, and somehow I didn't notice this, or they didn't announce it.
It was just in the fine print.
But Dan Bader from RealPython sent this over.
And there was an announcement, at least in the release notes, for the new macOS.
What is it?
Catalina?
Something like that.
Whatever their name is for the new macOS, the it catalina something like that whatever their name is it for the new
mac os the one that replaces mojave it is deprecating python 2 so finally you know finally
we have like a super old version of python running in mac os and if you type python you get python 2
it doesn't ship with python 3 ideally i would love to see Python 3 shipping, kind of like what the Windows Store and Microsoft is doing as an app that is auto updating and stuff like a really nice way to get it there. Instead, they're just saying we've decided that Python and all the scripting runtimes, so Perl and Ruby and Python, those are not our problem anymore. We're washing our hands of them. That's the announcement. We are no longer recommending them. It is deprecated. We have to leave Python 2 there because stuff is depending
upon it, but we do not recommend you use it at all, period. Find another way to get it there.
Yeah, that is interesting.
Yeah. So on one hand, like that's good news. They're like, please don't,
I know it has Python on it, but this is a broken old one. Don't use that.
I feel like there's maybe some better way they could approach that. I don't know if there'll be some kind of warning when you run
it. That would be great. But it does make it actually harder to get the right version of
Python onto your system. Like if you want to use homebrew, brew install Python installs Python 3.
But you know what brew runs on? Ruby, I believe. Something like that. It depends on one of these things.
So that's also, so like if that's also not there, then how do you, Brew is like, so there's
a bunch of interesting changes here, but I do think it's interesting that Apple and the
macOS team are addressing this Python story.
What do you guys think?
Yeah.
Well, when did Python 3 come out, if you could remind me, was it?
2008.
Wow.
But in realistically, I feel feel like 3 4 is where it
really started to get traction and that's more like 2012 ish something like that okay yeah i'm
just now i'm thinking oh god i have some uh some scripts in my github that i may need may want to
that i built like five years ago i may want to upgrade i think it's a good thing actually i i
think it will be a good thing
because people that just open up a terminal on a Mac
and type Python, they get 2.7,
and that's not the right answer.
Yeah.
Yeah, and I've seen this
where you always have two versions of Python on your machine,
and there's always...
I did this the other day
where you run the old version of Python
and it doesn't work,
and you're like, oh, I called the wrong commands. And it would be nice to kind of
put an end to that so it doesn't waste people's time.
Yeah, absolutely. I'm tempted to put an alias to alias Python to Python 3
inside my startup script.
Yeah, that's a good idea.
Interesting. Well, I would like a better outcome, but at least there's some kind of
like Apple acknowledges how out of date the stuff they're shipping is. So that's pretty cool. Now, before we get on to the next one, I want to talk really quickly about DigitalOcean. They've been a huge supporter of the show, and we really appreciate that our infrastructure runs on DigitalOcean, which is pretty cool. So we can definitely recommend it from someone who's using it, right? And I want to highlight their hosted database as a service right now.
So if you want to use Postgres SQL, which is probably the most popular relational database
these days in the Python space, you know, you look at the Stack Overflow survey and
stuff like that.
It's got a lot of love and people love it a lot.
So they have hosted as a service.
Just go there and say, I want Postgres.
Turn it on.
Here's the connection string.
They'll do all the backups and scaling and failover and all that stuff for you.
So super great.
Check them out at pythonbytes.fm slash digitalocean.
And for new users, you get a $50 credit to get started, which is also cool.
Brian, would you say that dictionaries are important in Python?
Yeah, definitely.
The whole thing's built on dictionaries.
It's turtles all the way down.
Exactly.
It's turtles all the way down.
It's dictionaries all the way down.
So what's up with this one?
This is just a small article from L. Swigert, Pythonic Ways to Use Dictionaries.
And I thought it was a good reminder because dictionaries really are not, I mean, they're
not hard.
They're not hard to use.
People coming from, I guess I came from Perl before Python. So I was used to, I guess, what were they called in Perl? Hashes.
Yeah, hashes and hash maps and all these things, right?
Yeah. Dictionary is a lookup thing. And using them like that is not that hard. But there's
some gotchas in there that some people try to do weird things to work around them. So this is just a highlight article that a few ways to use them smartly.
One of them is to use the get function for if you try to retrieve an element out of a
dictionary and the element isn't there, that the key isn't there, you get a, I don't know,
a lookup error or something in a certain key error.
But if you know it might not be there, so you can check beforehand or you can just use the get with a default.
And the default value will return something
other than if it's not there,
it returns something else.
That's the primary way
that I get stuff out of dictionaries these days.
I used to do square brackets,
but I don't do that anymore.
It's always about.get.
Yeah, me too.
I do that as well,
especially since almost every dictionary
is either something like a histogram or a sum of something where, you know, the default is always going to be zero.
And I don't want to distinguish between that and it not being there.
The key for me is almost always there's other kind of validation you have to do anyway.
So I'm thinking of the web, right?
Like I want to get something posted on a form.
I want to get the, say the email they've submitted.
I want to know that it's there,
but I also got to make sure that it's not empty
or it's not none.
Like if I'm already doing the if test,
I don't want to do the conditional test and a try except.
You might as well just do one.
The only one that's going to work is the if,
so just use get.
The set to vault actually was something
I didn't even know was there,
which I learned something new.
I don't use that normally.
What does that do?
SetDefault will only set the value if the element does not exist yet.
Yeah, that's perfect.
Yeah, it makes a lot of sense.
So his example in the thing is perfect is if you're storing a counter
or something like a number of hours, and you just want to increment. If if you're trying to increment something you want to set it to zero to begin with
but you only want it to set it to zero if it isn't there already so that makes sense yeah yeah
perfect so you don't have to do that test then it also talks about using dictionaries as a switch
statement which i thought was a funny language hack i actually went and created a switch statement
for the language in python it's on
github and i it's really nice i use it in some of like some really gnarly code that has got like
50 or 100 cases and you know it's just a lot nicer because it'll do things like not let you
have the same key twice for example things like that so you do use it oh yeah i use i love it
it's like i think it's great it uses a with block so
it uses the with block as the switch block basically and then you just have cases in there
anyway it's kind of funky but i'll put a link into it but i do think it's interesting that
dictionaries can be used for switch statements yeah you just i think it's good to comment because
not everybody's going to understand what's going on. So make a comment about what your code's doing. Yeah, yeah, for sure. All right, Max, what's this next one
you got? All right, short article, I found things you're probably not using in Python three, but
should. This is from data what now.com. So this is particularly relevant for me, because I use
Python legacy at four square for many years. Now I'm coming back to it, taking another look at V3 over the last couple of years.
So just a couple of things it has that stood out for me.
One that looks very useful is fstrings,
where you can put the variable name in braces in a string
and just have it replaced.
So long as you remember to put the character f
before the string, that's very important.
So I've seen things like this in other languages. Scala has it. PHP, you know, I've seen things like this in other
languages. Scala has it. PHP, most front-end scripts have things like this. Makes the code
very readable, except I know myself, I know I'm going to screw up by leaving out that stray F in
front of the string. So I almost feel like it should be automatic, but it is very useful.
Yeah, I feel the same way. I'm always like, I'm halfway through writing a string and I'm like,
oh, I should have put the F at the front.
Well, now I'm just going to do a format on the end.
Because with my editor, I type dot and F and it auto-completes format.
So we're just going to keep rolling.
You know what I mean?
It's one of these things that is really nice.
But you've got to be a little cognizant up front, right?
Yeah.
If you're correct, it looks very good.
And actually, we did some things at Foursquare. And this was for Scala
Code where we had like a GitHub hooks that looked to see, hey, this is a formatted string. And if
you were trying to check in code that was a formatted string, but you didn't actually put,
I think in Scala, there was an S in front of it or something. If you didn't actually format the
string, it's like, okay, this is probably an error. You probably shouldn't be checking this in.
Oh, interesting.
That's sort of a workaround.
Yeah, yeah, yeah.
It was helpful.
But yeah, it'd be nice to have it in a language.
But just having the formatted strings is always helpful.
Another thing I didn't know that Python 3 had is enumerations.
Yeah, those are cool.
With the functional programming, I've been using enums for years.
They tend to make code way more readable, in my opinion.
And so that was good. So no, I'll keep that in mind when developing in Python three.
Nice. I love the discoverability that enums give you, right? You can say enumy thing dot, and then there's a list of things you don't have to go research like, well, what values can I pass for level? Is it 123? Is it a zero to one as a one? It's like low, medium, high. Pick one.
Yeah, yeah. And they're reusable. And oftentimes, I could look at an enum and figure out, oh,
I know what this code is doing without having to really read tons of comments or really work through. No, if I see your enums, I kind of know what you're doing.
Yeah, I feel like that's underutilized in general. Brian, what do you think? Definitely underutilized by me. It's one of those things that I've,
it's on my list to try to use more. I don't use magic numbers too much, but I mean, we do have
cases where I just use a string, but it really ought to be an enum instead of a set of possible
strings. Yeah, for sure. Cool. Well, I think, you know, one of the themes of the show today
is that modern Python is definitely making its way past legacy Python, right?
Python 3 is coming on strong.
And if you look at what the real challenge,
I think there's a lot of things that made this move a little bit difficult.
But if you look at the heart of it,
really the heart of what
made the python two to three migration challenging were strings right so the fact that strings used
to be the same as bytes and you could either treat it as like a byte list or or actually an
encoded string and you had to kind of know that was a problem but it was also an opportunity to
have simpler code like requests for example could talk to the network differently than it has to now because it doesn't have to like do the encoding and all
these changes right but it's important that we have emojis and support other languages that have
umlauts and things like that so having a unicode is really important but i do feel like if you look
at all the stuff like people say oh python 3 i can't move to that. That sounds like a huge problem.
It's going to be so hard.
But then when you look at the code,
how hard is it to write Python 2 code that's compatible with 3?
It's not very different.
But one of the big differences is strength.
So what's interesting is that I want to cover,
this comes from James Small.
He sent over an episode of the CPP cast, which is a C++ podcast.
I think one of the bigger ones.
I don't really know all of them, but I definitely know of that one.
And Herb Sutter, who was instrumental in C++, he was interviewed there.
And the interviewers asked, if you could go back and change C++ types, what changes would you make and so on?
And basically the answer was almost exactly what happened going from Python 2 to 3.
Yeah, that was interesting.
Yeah, pretty interesting, right? So if it was possible, the C++ guys very well may have done
exactly what we did to go from Python 2 to 3. And it was like, we're going to take strings and
split them into Unicode characters and byte arrays and things like that. And so, I don't know, I feel like if that's really the
essence of what is holding back people switching from two to three, I don't know, it just doesn't
seem like that's that big of a deal. I know if you're writing requests or you're writing stuff
that literally is a web server and you're talking on the network, okay, that's kind of a bigger deal.
But in general, it doesn't seem like it's that big of a deal.
Yeah, the big deal was that the Python,
I think, from my perspective,
that the Python strings used in 2
matched the idea of a character array in C.
And so all of the DLLs that some packages interacted with
could just interact with it directly.
And if you were interacting
with bytes, you were already doing something funky anyway. But now you have to split that up.
And sometimes, you know what it's like working with C. Sometimes you're using a character array,
but it's really not characters. It's really bytes. And so separating that out of when they
were really strings and when they were just byte arrays, yeah, it's messy.
Yeah, it's definitely messy. So I haven't used Python for the purpose of byte arrays before.
Most of my Python codes have been scripts. I haven't used it for web services. So is this
something that's very common? And I have used Cython. So does that make use of strings as
byte arrays or am i overthinking this
i think in cython they have their own types for these types of things i'm not 100 sure but i think
so like you can have pointers in cython and stuff like that in terms of so you know basically now
we have strings and we have lists right but lists are not at all like byte arrays right i can't pass
it off to c as a contiguous block of memory of like similar data. Right. But you can actually create arrays that are typed. I can say I have like arrays that hold bytes or arrays that hold integers. there's some way to say like i have this homogeneous thing that i'm creating like it's something i've
extremely rarely have done so it doesn't i forgot the steps of it but yeah there's some
mechanism in there to do that yeah and you can i mean you can prefix a string with the b character
in it and then you can put yeah white codes and inside of it for constants that doesn't sound so
bad although the prefix strings are there's only 26 of them. So we'll see.
We know there's an F and a B, so.
Oh, we could probably put an OXU114 as a prefix.
Yeah.
Yeah.
So I don't know.
I guess when I was thinking about this, like the idea is pretty straightforward, but I'm
just wondering, like, you know, could the PSF, it just got me thinking about the whole
transition from two to three.
Could the PSF been more proactive and strategical?
Could the PSF said, hey, it's super important we make this change.
It looks like these seven libraries are the foundation of all the other libraries that are all stuck on Python 2 because none of these are changing.
Could we just raise $200,000, hire hire some people and just in three months upgrade
all these libraries and just be done with it like how would the world look different if like there
was a quick and focused response to like this challenge right because i feel like the actual
problem that most people hit was the library i care about doesn't support python 2 that library
actually sorry three that library only supported Python 2, not
because that's what it wanted, but because the library it was based on only supported
2.
It was like this sort of chain, like the lowest level pieces were getting everyone stuck.
So, I don't know.
It's interesting.
There's so many corner cases that, like, for instance, the hiccup for me was it was one
library. And it was because the DLL,
the library is a thin wrapper around a DLL.
And that DLL interaction was all the different ways.
This character pointer type thing, yeah.
Yeah, but on top of that,
one of the hiccups wasn't just because of this.
It was also because the way that python libraries interact with
dlls that changed completely also from two to three yeah okay yeah the c extensions and stuff
like that huh yeah so the the library that i needed was uh that was just some complicated
beast that um a university in germany finally uh had some people that converted it to Python 3. So well done.
Well done, academia.
Well done.
Nice.
All right.
Well, that's our main topics today.
I want to just throw out, see if you all have a couple of extras, real quick things to touch
on.
I do want to bring up this thing that Devo Kaplan sent over.
He was listening to one of our episodes.
I don't remember what we were even talking about, Brian. It was something crazy about what happens when you pip install a thing,
maybe running some code as part of the setup UI and so on.
And so he said, all right, well, let me see if I can create something
that's kind of funny and amusing based on what we've been talking about.
So he created a package called Mystery.
Okay.
This sounds like a Russian roulette typelette type situation yes it does to me
too so if you pip install mystery it will then go and like randomly pick something else out of
pipe out of the package index and then install that so you never know what you get you can just
pip it's gonna be a it's gonna be a mystery i don't actually recommend using this in production
by the way well it'd be fun to give a try.
It could be, you could be installing NumPy or NumPy.
I've always thought about which one to describe.
Or it could be something that totally changes the language
or something that takes 10 hours to install.
You never know.
Maybe do it in a virtual machine that you can erase later.
Yeah.
Also, I just want to give a shout out to the book that I released, the Effective PyCharm
book, and point out that if people are interested in the PyCharm course and or the PyCharm book,
if you go to EffectivePyCharm.com, Matt Harrison and I are running a bundle deal so you can
get the course and the book discounted together.
So check that out.
And people, if they've already bought the course or they bought the bundle, just shoot
me a note and I'll give you the discount towards as, you know, because you maybe bought it before this existed. So check that out. And people, if they've already bought the course or they bought the bundle, just shoot me a note and I'll give you the discount towards as, you know,
because you maybe bought it before this existed.
So check that out.
Yeah, thanks.
Brian, how about you?
What you got?
Just really quickly, the Python 3.8.0 beta 1 is out.
So if you're a package supporter, please go test your package
and make sure that that sounded weird.
But go test your code to make sure that it sounded weird, but go test your code to make
sure that it works with Python 3.8. That's super news. This is beta one, right? This is a big deal.
It's like the first feature freeze. Yeah. Yeah. Cool. Max, how about you? All right. Well,
thanks for letting me talk about my own podcast, which is called The Local Maximum. Of course.
It's a good one. I've listened to it. It's high quality. I definitely like it. Tell people about it. Yeah. Very cool. Well, it's a weekly tech podcast. And
so I cover both the theoretical issues in probability theory, philosophy, and machine
learning. But then I kind of apply it in a practical way to things like current events
and product development and interviews. And I do some opinion piece type stuff as I did this week.
So for example, a few weeks ago, my co, my co-host asked a question, you know, how
do you estimate the probability of an event that has never occurred?
And so, you know, we dove into that question and I started with, well, every event has
never occurred, but what are you really asking me here?
And some of the news that we've dived into recently is Apple's decision to break up iTunes, what
that means in terms of product development, how the internet is shaping up in places like
Cuba.
I find that stuff really interesting, and the controversy around YouTube's recommendation
algorithm.
I also talk a lot about data science careers, and I interview people like Hillary Mason
here in New York, and Mark Senadella, who's the CEO of The Ladders. He critiqued my resume on my podcast. That was very fun. That's a little stressful,
huh? Yeah, he had me rewrite my resume. So yeah, there's probably something for everybody. It's
the type of thing. I don't know if there's anyone who's into it every single week or if
most people kind of skip around.
But either way, it's cool with me.
Yeah, it's cool.
I like that it's technical, but not deeply technical.
You can kind of make it casual listening too.
Yeah, yeah.
Nice.
All right.
Well, I have a quick joke for you guys.
And then Brian has an idea for something completely different.
So, you know, Brian, they say there's only two hard problems in computer science, right?
Yeah.
Tell me what they are.
It's cache and validation, naming things, and off by one errors.
I love that joke.
Yeah, that's a good one.
All right.
So I think you need to give a short explanation.
There's also off by two errors.
That's right.
I think you need to give an explanation for what is about to come because it actually is something completely different.
Why are we going to do what we're about to do?
Okay, so the Python 3.8.0 Beta 1 release notes, I was skimming down this.
And there's some pretty exciting stuff there.
So I'm excited to try it out.
But at the bottom, it says, and now for something completely different. And then it has like a skit from, it looks like a little snippet of an interview from some of the Monty Python people.
Yeah.
And just, I suspect most people know, but for those of you who don't, Python, it has nothing to do with a snake in its naming.
It comes from Monty Python.
That's what Guido got the inspiration from, right?
Yeah.
Even though all the logos are snakes, nobody knows why. They should be cheese or something.
We should change our logos to like cheese and maybe a knight with no legs.
Yeah, rabbit. Killer rabbit.
Get the holy hand grenade out there. Alright, so now for something completely different.
Yeah, I thought we could read this skit out. So, are you guys ready?
Let's do it. I'll try to do it with feeling,
but I'm not very good with accents. So we'll see what happens. Okay. This is entirely in
rehearsal. Let's do it. Okay. So who'd have thought 30 years ago that we'd all be sitting
here drinking Chateau de Chasselet wine? Aye. In them days, we'd be glad to have the price of a
cup of tea. A cup of cold tea. With milk. Without milk or sugar. Or tea.
In a filthy crack cup. We never
used to have a cup. We used to drink tea out
of a rolled up newspaper. The best we
could manage was to suck on a piece of
damp cloth. But you try and tell
the young people today that they
won't believe you. Nope. Nope. Nope.
Not at all.
Alright folks, that
was literally at the end of the official release notes for Python 3.8.
So pretty cool.
Good read through people.
All right, Max, thank you for joining us, Brian and me on the show today.
It was fun to have you as a guest.
Thank you so much for having me.
This was a lot of fun.
Brian, thanks as always.
See you later.
Thank you.
Bye.
Thank you for listening to Python Bytes.
Follow the show on Twitter via at Python Bytes.
That's Python Bytes as in B-Y-T-E-S.
And get the full show notes at PythonBytes.fm.
If you have a news item you want featured,
just visit PythonBytes.fm and send it our way.
We're always on the lookout for sharing something cool.
On behalf of myself and Brian Ocken,
this is Michael Kennedy.
Thank you for listening and sharing this podcast
with your friends and colleagues.