Python Bytes - #135 macOS deprecates Python 2, will stop shipping it (eventually)

Episode Date: June 20, 2019

Topics 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)
Starting point is 00:00:00 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.
Starting point is 00:00:20 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.
Starting point is 00:00:40 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.
Starting point is 00:01:28 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
Starting point is 00:01:43 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,
Starting point is 00:01:58 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.
Starting point is 00:02:31 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.
Starting point is 00:02:57 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.
Starting point is 00:03:36 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,
Starting point is 00:04:10 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
Starting point is 00:04:57 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
Starting point is 00:05:33 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,
Starting point is 00:05:58 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.
Starting point is 00:06:30 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,
Starting point is 00:07:00 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
Starting point is 00:07:37 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.
Starting point is 00:08:07 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.
Starting point is 00:08:24 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.
Starting point is 00:09:07 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
Starting point is 00:09:25 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
Starting point is 00:10:27 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.
Starting point is 00:10:58 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
Starting point is 00:11:25 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
Starting point is 00:11:41 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
Starting point is 00:12:04 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.
Starting point is 00:12:47 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.
Starting point is 00:13:06 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.
Starting point is 00:13:21 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.
Starting point is 00:14:01 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.
Starting point is 00:14:18 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?
Starting point is 00:14:44 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.
Starting point is 00:14:59 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.
Starting point is 00:15:16 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
Starting point is 00:15:45 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
Starting point is 00:16:29 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
Starting point is 00:17:00 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.
Starting point is 00:17:27 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
Starting point is 00:17:45 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.
Starting point is 00:18:09 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.
Starting point is 00:18:51 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.
Starting point is 00:19:35 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
Starting point is 00:20:09 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.
Starting point is 00:20:37 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.
Starting point is 00:21:12 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.
Starting point is 00:21:45 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.
Starting point is 00:22:10 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
Starting point is 00:22:51 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.
Starting point is 00:23:47 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?
Starting point is 00:24:09 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
Starting point is 00:24:49 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.
Starting point is 00:25:15 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.
Starting point is 00:25:47 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.
Starting point is 00:26:02 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
Starting point is 00:26:32 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.
Starting point is 00:26:59 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
Starting point is 00:27:23 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
Starting point is 00:27:41 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
Starting point is 00:28:17 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.
Starting point is 00:28:51 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.
Starting point is 00:29:28 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.
Starting point is 00:29:43 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.
Starting point is 00:29:59 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.
Starting point is 00:30:32 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.
Starting point is 00:30:53 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
Starting point is 00:31:28 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
Starting point is 00:31:44 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.
Starting point is 00:31:58 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,
Starting point is 00:32:12 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.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.