Python Bytes - #209 JITing Python with .NET, no irons in sight

Episode Date: November 27, 2020

Topics covered in this episode: Running Python on .NET 5 PEP 621 -- Storing project metadata in pyproject.toml GitHub revamps copyright takedown policy after restoring YouTube-dl Install & Conf...igure MongoDB on the Raspberry Pi * Extra! extra! extra!, hear all about it!* A Python driven AI Stylist Inspired by Social Media Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/209

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 209, recorded on November 18th, 2020. I'm Michael Kennedy. And I'm Brian Harkin. And this episode is brought to you by us and all the things we're offering to the Python community. But I kind of want to take a step back in my whole career and start back where I spent a little bit of time in.NET. Isn't that a weird thing for me to do on a python podcast yeah but you're kind of a dot net kind of guy in your past i like c sharp all right like if i had did not if i wasn't doing python that's probably what i would
Starting point is 00:00:33 be doing but look well thank god for python yes i know well also i just want to point out this is not my fault this is uh anthony shaw's fault okay yeah so anthony shaw wrote an article showing you how to use one of the more exciting inventions evolution something like that with regard to python and how it's actually executed and it has to do with dot net so he wrote an article called running python on dot net 5 So there's a couple of layers we got to unpack here to finally put this together for everyone. So way back on episode 49, like when I was living in Germany type of way back,
Starting point is 00:01:14 I talked about this thing called PYJION, P-Y-J-I-O-N with Brett Cannon. So what this was is a way to like shim into c python something that would intercept when a frame a function frame was being executed and you know hand over the python bytecode when you run python it gets compiled to those pyc files into bytecode but then unlike say dot net and java which jit compiles that to me machine instruction they just jams that through the big c eval dot c loop like the 3000 line switch statement that is python's runtime right so it gets like mixed into that workflow and it can
Starting point is 00:02:00 actually take that and there was talk about maybe compiling to the javascript chromium engine potentially or to dot net right those are like it could be so the idea was you could plug in some alternative jit compiler to be given segments of python and said run this block of python cool right so you know obviously compiled code has at least the potential to be a lot faster if it really understands what it's compiling than interpreted code okay so that's thing one thing two is dot net traditionally used to be this thing that ran on windows and it only ran on windows and that was a problem for a lot of people so microsoft came up with this thing called.NET Core, which was the open source version, a multi-platform open source version of.NET. And just recently they said, it's really silly to have these two things.
Starting point is 00:02:51 So let's just come up with a thing called.NET 5 that is the new cross-platform open source replacement that puts those things together. Okay. And I'm leaking to like some of the announcements. They just did a conference over there. People can check it out if they want to go deep. Number three, things that run in.NET often are faster than
Starting point is 00:03:08 Python. You can debate that, but especially the numerical types of bits because they work with integers and floats, not PyObject long pointers and so on. And so I just ran across a Stack Overflow post where someone was complaining that their Python implementation of something was
Starting point is 00:03:23 31 times slower than C Sharp. That's outside the margin of error, probably. It's not good. I mean, we can debate about whether or not Python is fast or slow. And I think that's a really interesting conversation because developing it is faster. If you bring in things like NumPy, all of a sudden, you're down to C++, which is probably flat out faster. And there's just all these variations, right? So not to put too much of a point on it, but it is a place where code runs pretty quickly. So if you could get some Python code to run on that place as well, that would be pretty sweet.
Starting point is 00:03:55 So what people have traditionally done to make their code faster, as many people know, is write it in C and compile it as a C extension. Things like NumPy might do that. Or use something like Cython, which basically takes, instead of writing in C, you write it in C and compile it as a C extension, you know, things like NumPy might do that. Or use something like Cython, which basically takes sort of write it in C, you write it in Python, but then it just compiles it to C,
Starting point is 00:04:13 which then is compiled to machine instructions. So there's like this sort of escape hatch, right? Yeah. So.NET has this JIT compiler that comes with it. Pigeon is this project that allows you to plug a JIT compiler into the Python execution. So the people over at Microsoft, Brett Cannon and Dino Veland, hopefully I got that right, the people involved, have been actually working on this for the last four years. And you can now use this Pigeon project in Python 3.9.
Starting point is 00:04:41 And the reason is back in 3.7, there was pep called pep five to three, which was basically an API for swapping out frame execution with a replacement implementation. And that's where you might take out interpreter and inject JIT compiler. with that they've been building on that and he's got some really cool examples like all you go over there is you pip install pigeon you know import pigeon pigeon dot enable or like something like that to say start and that's it there's no other changes to your code and now it's running jet compiled on dot net five cross platform that's pretty cool it's got some real interesting possibilities there right yes and it uses the so there's been other things where you could like plug in Python into alternate runtimes and VMs like Jython and IronPython and so on. This is not that. This literally uses the same standard library. Your C extensions are supposed to still work, right?
Starting point is 00:05:40 So what they did is they actually said, they actually went and tested the entire CPython test suite on all platforms with this. So this is really cool that they've got this high-performance runtime, cross-platform JIT compiler that they just seem to have successfully plugged into Python. Yeah, so it's running which version of Python? 3.9. Oh, okay. That's awesome. Yeah, so it doesn't like, like a lot of these other things said, well, let's replace the Python runtime with X, and then it'll be mostly the same. And so what this does instead is it plugs in just at that PEP 523 frame execution layer and says, you want to run this part of a function.
Starting point is 00:06:35 How do you do that? It's just that little bit that changes. So other than that, it's the same old Python 3.9 that you know and love that I'm, as far as I can tell. Yeah. So that's pretty awesome. Yeah. I'm pretty excited. It is pretty awesome. And then a little some extra news on this, unless you already mentioned it.
Starting point is 00:06:51 This happened a couple days ago. Pigeon is unfortunately frozen in the Microsoft repo, but Anthony's fork is now the official fork. What? He's doing so much interesting low-level stuff, Anthony is. Yeah.
Starting point is 00:07:08 He's got his like CPython source code book. Yeah, so yeah, that's cool. You're linking over to it. So all this stuff is very exciting and it has the possibility for code to run much faster. So for example, given something that it can tell is, here's a pi long object pointer pointer thing could we convert that and it's small could we convert that to just a you know four byte integer and do integer math instead
Starting point is 00:07:32 of like complex math right like that would make a tremendous difference in speed that said what they've done here so far is just let's make it run and not break and now now they're going to start working on the optimization. So this JIT compiler hasn't done any optimizations yet, but they're going to start teaching Pigeon how to understand the Python code. Say, could we restructure that to get the same outcome, but in a much more native to the machine way?
Starting point is 00:07:59 So is it faster? A little bit, not a ton yet, but it opens the door for huge improvements by working specifically on the JIT compiler, understanding how to take code that it gets and turn it into something. Yeah, and this sort of cross-work and stuff is interesting, just interesting about, you know,
Starting point is 00:08:17 working with languages, working with whether or not you're going to do interpreted versus JIT compiled and things like that. It's a very interesting story. Yeah, and that Stack Overflow thing I linked to, you're going to do interpreted versus JIT compiled and things like that. It's a very interesting story. Yeah. Yeah, and that Stack Overflow thing I linked to, they also talk about PyPy, P-Y-P-Y, and how it also made the example there go quite a bit faster.
Starting point is 00:08:32 So anyway, JIT seemed to be an interesting option here. So from PEP 523 to 621, let's keep rolling on the PEP, man. The PEP 621 is, I guess, trying to standardize some of the metadata in PyProject.toml. So we've talked about packaging in PyProject.toml a lot, I think. The different projects like Black and Flit and others
Starting point is 00:08:58 have been using a loophole in the original spec that said, yeah, you can put extra stuff in there, but we don't recommend it to everybody who's putting extra stuff in it. But are we forbidden? No, let's do it. No, yeah. So they took out the recommendation to not do that. But there's a motivation to sort of standardize on the things that are building packages and building wheels. It'd be really great if we could kind of standardize on what is in there and what names the big players are set up tools and poetry and flit of course
Starting point is 00:09:32 but there's others around that do this and this pep actually includes the authors of all of those in trying to get some of this together some of the motivation is to try to have some of the metadata statically defined so that other tools can read it quickly and we can build an ecosystem around just a standard set of things. That makes a lot of sense. If you're going to put it there anyway, make it at least interchangeable and useful. Yeah, and just kind of define what it means to have these things in there. And one of the nice things I looked for
Starting point is 00:10:08 because it kind of bugged me about the old packaging was whether or not email was required. And it's nice to see that both name and, I mean, usually you should put an author or maintainer name and email is encouraged, but I don't want to put my email in there. and it's optional so that's cool yeah exactly because then it gets published up ipi and man anytime you put your email on the internet you just get yeah communication this is still in draft form officially i think but it's uh i think it'll go forward it doesn't change any of the existing
Starting point is 00:10:41 core metadata and it doesn't attempt to standardize all things that you could put in there, but some of the common things like name, version, description, where the readme is, which Python version is required, what license you have. These are all sort of standard things that used to be other places, but having them in the pyproject.toml would be great. Yeah, it seems like they belong together in there. So, like, you know, what is the name of the project?
Starting point is 00:11:10 What version of Python does it require? And so on. That's reasonable. Yeah. I'm actually surprised. I'm like, what? We haven't already standardized this stuff? Exactly.
Starting point is 00:11:19 You know what else is reasonable is learning PyTest. Yeah. That's a pretty reasonable thing. And often people do it with a book. They do. And I'm still getting some really great quotes from people, which would have been good for me to be ready with that. But people contact me.
Starting point is 00:11:34 I get a message probably every other day saying, man, the Python testing with PyTest book that you wrote has helped me so much to get up to speed really quickly. And I really love feedback like that. So if it's helped you, please let me know. It'd be great. Yeah. Yeah. I'm about to release a fast API course. It may actually be out by the time people hear this because there's this time travel thing that we do with podcasting, not that much, but a little bit. So people should definitely check that out over at TalkBython Training. And I've already started writing the next course. So that'll be fun. Big secret there.
Starting point is 00:12:02 You're cranking them out. I'm really liking this stuff and i'm really looking forward to the fast api course yeah thanks yeah it's it's all done recorded it just needs to the final editing is done on the videos and it's it's going to be really fun i think people will love that framework i had a lot of fun exploring it cool you know it's not a lot of fun when you get a dmca complaint from the record industry industry association of america to take down your github project what that happens apparently it happened to me all the time on um a really funny story i did a webcast like years ago when i first moved to oregon and there were some people who had dialed in and it was so frustrating like there's all these like hundreds of people
Starting point is 00:12:45 somebody put the call on hold because they had someone come in their office it started playing like the hold music to the whole organ everyone like all hundred people were hearing this hold music and we're like how do we get rid of this one person without getting rid of the rest it was really bad but the reason i bring this up now is it was like a song an actual copyrighted song when i published the webcast to youtube it got taken down because the old music that was interrupting the webcast got a dmca complaint so anyway these things are super frustrating you're like why this makes no sense anyway so here's the story github had taken down youtube-dl youtube-dl i believe it's a python project that allows uh basically gives you a cli for downloading content
Starting point is 00:13:35 off of youtube so if you're like oh that video is really awesome i wish i had it offline youtube-dl space url-format or whatever you know you give it you just run that and it downloads it however because the record industry puts a lot of songs and music videos and stuff up on youtube they said this theoretically could be used to download a song therefore we hate it and so we ask github to take it down and get up good interesting yeah but here's the news they revamped their copyright takedown policy put a bunch of other policies in place set up a legal defense fund and restored youtube download and said gave the middle finger to riaa basically yeah because this tool i, maybe this tool helps you do something you shouldn't, but it's not itself.
Starting point is 00:14:25 Yeah, yeah. So also, you know, big shout out to the EFF, Electronic Frontier Foundation, in that they helped critique and go through the actual legal bits of this and show GitHub like, you know what, actually, their main complaint is actually not even what's happening so the ria argued that the tool ran afoul of section 1201 of u.s copyright law by giving people the means to circumvent youtube's drm digital right management so that's the important part right like it's breaking this encryption prevention of copying that youtube has but then EFF looked at the claims and said, you know, what it actually does is it just grabs the video stream and saves it to a file. It doesn't decrypt it or re-encode it or anything.
Starting point is 00:15:15 So for things like Netflix or Widevine or things like that that use DRM, this actually has no effect on it. Only if the video is in an unprotected MP4 format will it even work. So their main complaint that, oh, it breaks this DRM, it doesn't break DRM. So they said, we're putting
Starting point is 00:15:36 it back. Okay. Yeah. And as part of this, there's like a pretty big uproar, I believe. So GitHub is implementing new policies to avoid the repeat of such a situation moving forward first says the team of technical and legal experts will manually evaluate every single section 1201 claim that's cool yeah and instead of just going it goes down they said if the company's team technical legal teams ultimately find issues with the project github
Starting point is 00:16:04 will give its owners a chance to address those problems before taking down their work. That's nice. Yeah, that's cool. And GitHub is establishing a $1 million legal defense fund for developers if somebody sues them about their GitHub project. That's actually awesome. Yeah, this is a feel-good story, right? I think.
Starting point is 00:16:20 Well, yeah, because the individual developers sometimes are just like, you know, a handful of people or even just one person making some cool tool that they think is neat. You're giving this stuff away. You can't get a lawyer or whatever to defend yourself. And a lot of times it's published to GitHub under your personal name. Right. So like TalkPython has an organization and we pay GitHub like 50, 60 bucks a month to have our organization maintain repos on there. Right.
Starting point is 00:16:48 But a lot of people, it's just, you know, github.com slash, you know, Brian Ockner slash Mike C. Kennedy or whatever. There's no like legal guards there.
Starting point is 00:16:58 Right. So it's really cool that they're doing this. Yeah. I like it. And as I was researching this into my inbox dropped a newsletter from the eff apparently i'm a subscriber to their newsletter and they said they just launched a podcast mini series called how to fix the internet that examines potential solutions to six ills facing the modern digital landscape and this sounds like one of them so people are like
Starting point is 00:17:21 really interested in this they can actually listen to the EFF series there. Yeah. Nice. Anyway, that's a wild story, right? It is very wild. Yeah. All right. What you got next here? Another one of my favorite topics. Yeah. So you like MongoDB, right? I do. I love it. So I was curious. I was actually thinking the other day, how small of a machine could I put MongoDB on? And then Mark Smith comes out with a article that says that's how to install and configure MongoDB on a Raspberry Pi. Wow, that's awesome. Which is totally cool. So it's a fairly comprehensive little guide, but I didn't know you could put Ubuntu server on a Raspberry Pi either. So that's how he does it.
Starting point is 00:17:59 He installs Ubuntu server, 64-bit on a Raspberry Pi, configures the Wi-Fi, installs MongoDB. But there's like a kind of a quirk on how you're supposed to install MongoDB on it. And then set up an account so that you can safely have a MongoDB server running in your house. He recommends this is like a local network thing, not even a company-wide thing. Just if you're using it yourself, go for it. If you already have a Raspberry Pi and that's like your thing that is running, that is your sort of file server or whatever reason that you have it running for, and you want a database, it's cool that you can set this up here, right?
Starting point is 00:18:39 I mean, you probably wouldn't host like a professional website on it, but who knows, maybe you would. I've got stories. One of the things I love about MongoDB is just the ease of setting up storage areas for it and stuff. And you can just... Yeah, you just talk to it like you expect it to be and it just becomes that way, right?
Starting point is 00:18:56 You don't have to run migration scripts and all that. Yeah, so this would be... I mean, things like a home network to collect, like, I don't know, temperature data from different places and some of that stuff or whatever. Things like that might be kind of a neat use for that. Definitely. If you've got like an IoT thing, smart home thing
Starting point is 00:19:14 going on and you want to store it somewhere. Yeah. Very cool. I love it. Nice. Good find there. So this next one is like this new little section I've just invented just for this one time called Extra, Extra, Extra. I Hear All About It it so normally we have our extras at the end but i had so many extras this time i'm like this show is going to be super long if we just keep going so this is like all the other little tiny things grouped into one so four at least four more little things but all
Starting point is 00:19:37 combined okay okay uh let's start with some listener feedback so remember i went on a rant i'm known to do that sometimes, about the Stack Overflow Survey and how they were comparing things that were like, simply not comparable. Yes. And one of the things I picked on was SQL. And I said, it doesn't make any sense to have SQL compared to the popularity of SQL compared to the popularity of Python or the popularity of C Sharp. Because people who do C Sharp, they got to use SQL, people who do Python, they got to use SQL. People who do Python, they got to use SQL, but not the other way around. Right. It's like, I don't know. It's just,
Starting point is 00:20:15 it didn't seem like they were right. Like the, the numbers for SQL were inflated because all the other people were also happening to use SQL. But if you ask them like, what kind of developer are you? They wouldn't say I'm a SQL developer. They would say I'm a Python developer or I'm a Java developer.net or whatever is not SQL. Right? So John Nickerson said, hey, I feel like you're saying that people just use SQL or not real developers. I just want to point out that no, no, no, that's not at all how I felt about it. I think if like your job mainly is to use SQL, then you should check that box. You should say SQL. I'm just criticizing that we've got these two things side by side in these surveys where one of them is standalone and then one of them also adds to the other but they're put together as if they're separate and being compared and that just didn't feel right to me yeah i mean yeah
Starting point is 00:20:59 there's definitely people that uh specialized queries. That's a cool thing. And there are people that do that as professionally. And I think that's super cool. But like you said, having SQL being used by your Python is not the same as being a SQL developer. Right.
Starting point is 00:21:17 JavaScript has exactly the same problem. Yeah. All the web developers that use any technology whatsoever, they also use JavaScript. But that doesn't mean Node.js is massively more popular than everything else. Also, I just wanted to quickly follow up. When people fill out those surveys, they check anything that they've ever done.
Starting point is 00:21:38 Exactly. Have I touched CSS this year? Yes, I'm a CSS developer. All right. Next of the extra, this is extra number two. So remember we talked a little while ago about Gita Van Rossum, creator of Python,
Starting point is 00:21:51 retiring. We talked about him stepping down from the steering council and saying, I'm just going to chill for a while. Yeah. Yeah, he's done chilling. So actually the big news,
Starting point is 00:22:02 I think this is pretty big news, is that he joined, maybe as a technical fellow, I'm not sure exactly what is pretty big news is that he joined maybe as a technical fellow i'm not sure exactly what the official role is but he joined microsoft now as a pretty yeah i think you should do call support that'd be great yeah so he said he decided to join he said i decided that retirement was boring and have joined developer division at microsoft to do what too many things to say but it'll make using Python better for sure and not just on Windows. There's lots of open source here.
Starting point is 00:22:29 Watch this space. And there are 5,000, no, 2,100 quoted tweets. And I'm not sure how it'll tell me how many conversations, but there's like an insane number of replies to it as well. And a bunch of familiar faces and listeners actually right there all replying to Guido. One in particular I'd like to point out is I linked to this in the show notes as well,
Starting point is 00:22:53 is somebody said, I'm wondering, you know, at this point in your career, do they still ask you to submit a resume? Yes, they did. And I got interviewed by Kevin Scott and Andrew Schalsberg and others how cool is that they also asked for my diploma from university exclamation marks says guido
Starting point is 00:23:10 oh my gosh yeah i i would think like you just could walk up and say hey i created one of these languages i'm here i'm ready but nope i wanted this diploma it's so bizarre find my diploma i i'd have to dig i think I know where it is, but I know generally what part of the house it's in, but it's in boxes under boxes. Anyway, that's really interesting. Okay, that's two. So extra, extra, extra.
Starting point is 00:23:36 If you think about popular editors in the Python space, really these days, it feels like it's narrowing down into VS Code and PyCharm. It used to be just completely all over the map when I asked that question on TalkPython, and these days it's VS Code, narrowing down into VS Code and PyCharm. Like it used to be just completely all over the map when I asked that question on TalkPython. And these days it's VS Code, PyCharm, VS Code, or I was on one and switched to the other. And Vim.
Starting point is 00:23:53 Yeah, and Vim. They don't say something like that. It's either Vim or Emacs. Yeah, it's like one of those types. But right here in Portland, Oregon, roaming the streets, we now have a new editor called Nova from Panic. Really? Yeah. Panic is a developer-oriented company that makes native Mac apps. And they are right downtown
Starting point is 00:24:15 by Pal's Books. You can see their office from the coffee shop, I think. Cool. Yeah. So anyway, they built this thing called Nova, which is like a reinterpretation of their interpretation of what a code developer editor should be and it's got cool things like a github integration where it shows you say the issues around the code that you're working on and stuff like that like as you're going through it so i'm sticking with pycharm i look through this it looks neat and all but i'm not. That said, I think it's worth pointing out that there's a new developer editor out there
Starting point is 00:24:48 from a pretty reputable company that's putting a lot of energy into it. So that's kind of cool. Yeah, it's got a Vim mode. I'll try it. I think it does. I'm pretty sure I remember it. All right, last thing.
Starting point is 00:24:56 Extra, extra, extra, extra. I installed Big Sur on my Mac and it didn't die and all the Python things seem to be working. All the websites run, the MongoDB stuff's working. So that's really pretty neat. Homebrew stopped working, which is very frustrating because that's how I manage things like Python.
Starting point is 00:25:14 But I just had to upgrade Xcode to the latest edition, and then it was good again. I don't think I put Homebrew on my computer. I love Homebrew. I probably do. Yeah. I like it. Install Python, install MongoDB, install a lot of things like that.
Starting point is 00:25:25 Open SSL seems to always get in there somewhere. And also, I said that I ordered a new MacBook Pro instead of the Apple Silicon thing. I actually canceled that, and I'm getting a Mac Mini Apple one. Very exciting. I'll let you know how it goes. Oh, I can't wait. Actually, I didn't know they were still making minis. They revamped it.
Starting point is 00:25:46 It is now faster than any mobile Mac. The only thing that will beat the Mac mini is the $5,000 Mac Pro. But sometimes the $600, $700 Mac mini will still beat the $5,000 Mac Pro. It's ridiculous. I'm going to get one of these. I already got a really beefy monitor. Yeah, exactly. It'll do one 6K and one 4K monitor.
Starting point is 00:26:09 Dual monitors, 6 and 4K. I'm telling you, man, this thing looks incredible. You look at the Geekbench scores, you look at the reviews, it's really awesome. And the price is like... So I got like $1,500 back by canceling my MacBook order and a faster computer.
Starting point is 00:26:25 Nice. So anyway, we'll follow up on that. Let's see how that goes. Anyway, that was extra, extra, extra, extra. Hear all about it. Nice. Well, so normally my spot would be number six, but that'd be like, what are we at? Like nine now or something?
Starting point is 00:26:38 Yeah, we're at nine now. Okay. So actually, this is a cool article. I love this story. Dale Markowitz wrote an article called, I'm massacring it right now, but it's a Python-driven AI stylist inspired by social media. No way. So it looks at Instagram and influencers and stuff and says, this is how we think you should dress and look? Yeah.
Starting point is 00:27:00 So one of the cool ideas, and it's so cool. So she works for Google. So she's using a whole bunch of Google tools that are available to everybody else, to things like Google Storage, Firebase, Cloud Vision API, Product Search API and stuff, which actually I've never played with any of these, but it's kind of neat that they're available to really anybody that they want. And so the idea is she took pictures of all of her every item in her closet and then has like folders for containing uh the pictures of her related so like let's say if you
Starting point is 00:27:35 got a shirt or jacket a few angles of the shirt and then threw those in a directory and then did that for everything in her closet and then took influencers that she likes like a couple social media accounts that that do fashion shots that she likes how they dress and then throws ai at it and scripts the whole thing with python so this thing will tell her for this particular person that this look for this from photo, you can kind of do this look if you use this shirt and those pants and these shoes. And so you've already like what you've already got, you can remix it this way.
Starting point is 00:28:13 Yeah. And I think that's, uh, it's probably more of an ad for a Google AI products, but I think it's a cool, like you could do this, you know, with some free time and stuff and with some Python code to push it together.
Starting point is 00:28:28 I love this idea. It's pretty cool. Yeah, it's pretty. All right. Two thoughts. So one, I remember my statistics class. They talked about, well, if you have like three shirts and two pants and five socks and two pairs of shoes, how many, you know, here's the combinatorics of how many like combinations you might have right so those numbers get enormous like super quick so this just says like there's
Starting point is 00:28:51 these these outfits that you didn't even know you could create out of like the 100 million possible things from your closet which is uh combinations from your closet that's pretty cool yeah and also like she had to put it in place one of the things she had to do is put in place like a score so if you like for instance if you got like multiple gray shirts they all might fit picture with the gray shirt but they she made it so that there was scoring so that you'd get the like the you can pick the highest score outfit or something all right that's cool my other one is somebody should do this but just for hairstyles and like beard styles if you're a man have it pick a style and then that person has to get that cut right you're like all right this month i'm gonna look like this oh my gosh all right
Starting point is 00:29:38 here we go why not okay you'd have to like sort of make it like short long to short or something because you can't go backwards yeah yeah i guess you'd have to like sort by uh order because it takes you got to wait longer to get it to grow back out sort by handling yeah there you go awesome yeah but there's there's some facial hairstyles that if we could get a tool that would tell people to not try certain facial hairstyles based on what they their face shape is that would be good that would be right i did see a guy who had like a super big beard and decided to cut it off but instead of just shaving it off they were very careful and they came up with like 10 or 11 different styles they shave it to one take a picture shave it to
Starting point is 00:30:21 the next take a picture it was actually pretty interesting yeah but yeah there's some that shouldn't be done all right we already went off the uh off the deep end on the extras how about you yeah let's uh skip to the joke man oh man sounds good to me all right so this is a little bit of back to the future marty mcfly and doc all that stuff so you know he's got that cool delorean that, that stainless steel DeLorean. And it's got the flux capacitor. So this is a little graphic from DevHumor from ComicStrip.com. And it's set in January 2006. All right.
Starting point is 00:31:00 I'll be Marty and you can be Doc, okay? Okay. All right. So sitting in the DeLorean, about to take off this. So what's it like in the future, Doc? Is everyone using CSS3? Wait, wait, you'll see. We're heading to 2020.
Starting point is 00:31:16 Knowing all the problems you have with IE6, I'll give you something to look forward to. Then in May 2020, there's a big billboard that says, Microsoft Edge, the IE6 processor based on Google Chromium engine is coming to Linux. Incredible. Why? Linux. Incredible. Why? Okay. Yeah. Because it can. Just because it can.
Starting point is 00:31:33 So I've got a work computer that's Windows, and I still don't use Edge. And you're so far behind the times. I've got Edge installed on my Mac. You do? Apparently, it installs on a Mac, yeah. But did you install it? I did. Now the question is, do I use it?
Starting point is 00:31:49 I've got like several browsers that I just don't really use. I've got Edge, I've got Brave, and I've got Opera. And I don't really use any of those. I just basically use Firefox, unless Firefox doesn't work, then I use Chrome. Yeah, okay. Yeah, but I technically have it installed. I get this big pop-up that has to update it about every three weeks.
Starting point is 00:32:08 Like, there's an update for your computer. Click here to upgrade Edge. I'm like, I don't even run this thing. Why do I keep getting this? I know I get it, but like, why do I have to keep getting it, I guess? You know, there's still lots of people that don't know what browser they use. They don't even know what, if you ask them what browser they use, they don't know what you're saying.
Starting point is 00:32:25 Yeah. It's just the internet. What do you look on the websites for? I open the internet. You know, the internet is not an application. What? It's not? Awesome.
Starting point is 00:32:36 Yeah. So that's a, that's a pretty good little shoot to the future one. Yeah. So link to that in the show notes. People want to check out the graphics. Cool. Well, thanks a lot. Yeah, you bet. Thanks for being here. And thanks to everyone for listening. See y'all. Yeah. So link to that in the show notes. People want to check out the graphics. Well, thanks a lot. Yeah, you bet.
Starting point is 00:32:45 Thanks for being here and thanks to everyone for listening. See y'all. Bye. Thank you for listening to Python Bytes. Follow the show on
Starting point is 00:32:51 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
Starting point is 00:32:59 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.

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