WEBVTT

00:00:00.001 --> 00:00:05.120
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.120 --> 00:00:11.500
This is episode 105, recorded November 21st on Turkey Eve.

00:00:11.500 --> 00:00:11.860
Yeah.

00:00:11.860 --> 00:00:13.140
And I'm Michael Kennedy.

00:00:13.140 --> 00:00:14.040
And I'm Brian Okken.

00:00:14.040 --> 00:00:15.440
Hey, Brian, are you ready for Turkey Eve?

00:00:15.440 --> 00:00:16.580
No, not at all.

00:00:16.580 --> 00:00:17.200
Yeah.

00:00:17.200 --> 00:00:18.020
Are you?

00:00:18.020 --> 00:00:20.580
I'm getting there, I'm getting there. I just picked up a whole bunch of stuff.

00:00:20.580 --> 00:00:22.620
We're going to cook a turkey and it's going to be crazy.

00:00:22.620 --> 00:00:24.000
Nice.

00:00:24.000 --> 00:00:24.800
So, yeah, yeah.

00:00:24.800 --> 00:00:27.960
We bought a smoked turkey, so it's already, all the work's done.

00:00:27.960 --> 00:00:29.060
Yeah, that's the way to do it.

00:00:29.060 --> 00:00:30.160
Just save yourself the trouble.

00:00:30.160 --> 00:00:37.280
I don't know how many people out there listening who don't go through this Thanksgiving thing actually cook turkeys, but it's kind of stressful and it takes forever.

00:00:37.280 --> 00:00:38.840
It's like many hours.

00:00:38.840 --> 00:00:45.780
Yeah, and then for some reason everybody wants to eat like dinner at 2 o'clock in the afternoon or something weird like that.

00:00:45.780 --> 00:00:47.880
Yeah, well, they've probably been drinking since 10, so, you know, that's why.

00:00:47.880 --> 00:00:52.620
All right, so for those of you who celebrate Thanksgiving, happy Thanksgiving.

00:00:52.620 --> 00:00:57.680
For those of you who don't, happy email Black Friday spam week.

00:00:58.120 --> 00:00:59.980
And hopefully you got some deals.

00:00:59.980 --> 00:01:01.420
Yes.

00:01:01.420 --> 00:01:12.120
So, thinking of crazy things, it's pretty awesome that DigitalOcean is giving people $100 credit for creating an account over at pythonbytes.fm/DigitalOcean.

00:01:12.120 --> 00:01:13.560
Tell you more about that later.

00:01:13.560 --> 00:01:21.840
You know, one thing I like about Thanksgiving is it lets you sort of look back on history and like think about your family and like kind of just older stuff, right?

00:01:21.980 --> 00:01:23.120
Yeah, it does.

00:01:23.120 --> 00:01:23.560
It's nice.

00:01:23.560 --> 00:01:24.880
And maybe look at some old pictures.

00:01:24.880 --> 00:01:31.780
Yeah, like, but sometimes it would be great if they weren't like, you know, old and black and white and boring and crummy.

00:01:31.780 --> 00:01:32.280
Definitely.

00:01:32.280 --> 00:01:37.380
There's a project and it's Python based and machine learning called Deoldify.

00:01:37.380 --> 00:01:38.360
Deoldify.

00:01:38.560 --> 00:01:39.620
The name says it all.

00:01:39.620 --> 00:01:43.960
Yeah, it would be actually a great name for a health club too, I think.

00:01:44.360 --> 00:01:47.400
What it is, is I can only sort of describe it.

00:01:47.400 --> 00:01:50.360
What it does is it takes a black and white photo and makes it look awesome.

00:01:50.360 --> 00:01:55.980
And like does a whole bunch of cleanup of sharpening and then colorizing it.

00:01:56.140 --> 00:01:57.800
You kind of have to look at these pictures.

00:01:57.800 --> 00:01:58.780
They're kind of amazing.

00:01:58.780 --> 00:02:07.620
One of the things I like about actual old pictures when they started to put take color photos and do colorizing, there's a lot of color.

00:02:07.620 --> 00:02:21.220
It wasn't muted, whereas a lot of the, some of the colorizing algorithms that are out are kind of just come default to obvious things like grass is green and make everything kind of brownish and stuff.

00:02:21.400 --> 00:02:32.380
And it, it just makes it a little bit better than black and white, but not really, but these really pop like adding purple and greens and reds and, and all sorts of awesome things.

00:02:32.380 --> 00:02:33.320
These are glorious.

00:02:33.320 --> 00:02:34.960
Like the old soda shop one.

00:02:34.960 --> 00:02:36.580
It's just so amazing.

00:02:36.580 --> 00:02:38.500
Do you know how it gets the color right?

00:02:38.500 --> 00:02:41.160
Like why does it not make people, you know, purple or something?

00:02:41.160 --> 00:02:46.880
Well, I mean, things like people are sort of an easy thing because they're going to be kind of people colored.

00:02:46.880 --> 00:02:51.380
You know, if we get too far into this,

00:02:51.380 --> 00:02:53.920
the how it works, I really can't tell you.

00:02:53.920 --> 00:02:59.740
Well, it does use deep learning, which means like if you get too deep down, nobody knows how it works in some sense, right?

00:02:59.740 --> 00:03:02.080
Like you've taught it sort of by example.

00:03:02.080 --> 00:03:02.380
Yeah.

00:03:02.380 --> 00:03:03.160
Yeah.

00:03:03.160 --> 00:03:15.580
It's, it's definitely based on self attenuation, generative adversarial networks and progressively growing the GANs with a two timescale update rule and generator loss in two parts.

00:03:16.060 --> 00:03:19.700
I have no idea what those words mean, but that's part of it.

00:03:19.700 --> 00:03:21.420
I think it's a really cool project.

00:03:21.420 --> 00:03:34.040
I mean, you know, what would be like a great Christmas gift or something would be to like get ahold of some old photos, do this against them, and then take them and like turn that into a photo book for like your grandparents or something.

00:03:34.040 --> 00:03:34.580
Wouldn't that be awesome?

00:03:34.720 --> 00:03:35.660
Yeah, it would be.

00:03:35.660 --> 00:03:38.860
And I'm actually, I can't wait to try playing with this.

00:03:38.860 --> 00:03:51.120
What I'm going to, with our main link in this, in the show notes of this is an interview with, it's a text-based interview with Jason Antic, the developer of Dealdify, talking about why he developed it and how he developed it.

00:03:51.320 --> 00:03:53.520
And it's a, it's kind of a really fun article.

00:03:53.520 --> 00:03:58.720
So if you're curious about this, either just play with it, try it, or, you know, read the article.

00:03:58.720 --> 00:03:59.900
I really like these visual things.

00:03:59.900 --> 00:04:05.700
I think it very clearly highlights like how amazing just this whole deep learning and machine learning thing is, you know?

00:04:05.700 --> 00:04:06.020
Yeah.

00:04:06.020 --> 00:04:14.340
And this is a sort of a fun application of it that I would have never thought we could make our lives better by making these photos better.

00:04:14.540 --> 00:04:17.640
I mean, I wouldn't have thought machine learning would be for that, but it's cool.

00:04:17.640 --> 00:04:18.400
Yeah, it's very cool.

00:04:18.400 --> 00:04:23.520
So remember last time how you said Brett Cannon was going to be mad at me?

00:04:23.520 --> 00:04:24.740
Yeah.

00:04:24.740 --> 00:04:30.500
Well, Brett Cannon will probably be happy because I got a lot of items on VS Code this week and they're pretty awesome.

00:04:30.500 --> 00:04:34.960
So I didn't do it to make up for it, but I'm happy to feature them.

00:04:34.960 --> 00:04:38.400
So this first one has to do with IoT.

00:04:38.880 --> 00:04:45.360
And I think IoT is one of these amazing things that often is like below the surface, right?

00:04:45.360 --> 00:04:47.900
Like when smartphones came out, it was so amazing.

00:04:47.900 --> 00:04:49.600
Everybody saw it and you're like, show me that thing.

00:04:49.600 --> 00:04:50.180
That's incredible.

00:04:50.180 --> 00:04:59.020
But, you know, the fact that, I don't know, your refrigerator is slightly smarter or your microwave or your doorbell, I think it's less obvious.

00:04:59.020 --> 00:05:04.680
But there's tons of IoT stuff out there and the ability to do it in Python these days is great, right?

00:05:04.680 --> 00:05:10.720
Yeah, and it's amazing how the IoT everywhere is sort of just make, it's no big deal anymore.

00:05:10.720 --> 00:05:11.640
It's so fast.

00:05:11.640 --> 00:05:14.860
Yeah, and the price is coming down, the energy consumption is coming down.

00:05:14.860 --> 00:05:15.260
It's great.

00:05:15.260 --> 00:05:24.440
So the thing that I want to tell folks about is something that Jason Percor told us about called PlatformIO IDE for VS Code.

00:05:24.440 --> 00:05:33.920
So PlatformIO is this platform for interacting with all sorts of IoT and small device type of programming examples.

00:05:33.920 --> 00:05:35.580
And it has tons of languages.

00:05:35.580 --> 00:05:42.460
And what they've done is they've built in a debugging, their framework, all that stuff into Visual Studio Code.

00:05:42.460 --> 00:05:43.180
Oh, that's cool.

00:05:43.180 --> 00:05:46.960
And what's cool is because it's Visual Studio Code, it has like all sorts of mixed mode understanding.

00:05:46.960 --> 00:05:49.480
So if you're doing C++, embedded C++, great.

00:05:49.480 --> 00:05:51.480
If you're doing Python, great.

00:05:51.480 --> 00:05:52.980
It knows about all these things.

00:05:53.420 --> 00:05:54.440
So super cool.

00:05:54.440 --> 00:05:58.140
It has a cross-platform, of course, because it's just VS Code basically.

00:05:58.140 --> 00:05:59.780
Built-in debugger.

00:05:59.780 --> 00:06:00.720
Check this out.

00:06:00.720 --> 00:06:03.160
Remote unit testing on your device.

00:06:03.160 --> 00:06:03.800
That's pretty sweet.

00:06:03.800 --> 00:06:06.200
Firmware updates, all that sort of stuff.

00:06:06.200 --> 00:06:07.340
Yeah, neat.

00:06:07.340 --> 00:06:15.740
Yeah, so if you're working on like Arduinos or something like that, it's sort of comparable to the Arduino IDE, which I haven't actually used very much.

00:06:16.220 --> 00:06:18.840
But it's sort of that kind of thing.

00:06:18.840 --> 00:06:20.120
Now, there's a few features.

00:06:20.120 --> 00:06:25.140
I think like firmware updates and a few other things are paid, but it's like $9 a month.

00:06:25.140 --> 00:06:26.180
But there's also a free version.

00:06:26.180 --> 00:06:28.000
So it's a little bit like PyCharm in that sense.

00:06:28.000 --> 00:06:30.240
Like there's a paid edition and a free community edition.

00:06:30.500 --> 00:06:31.460
So it's pretty cool.

00:06:31.460 --> 00:06:35.440
The PlatformIO core itself is written in Python, which is awesome.

00:06:35.440 --> 00:06:37.180
But it's written in legacy Python.

00:06:37.180 --> 00:06:37.920
Boo!

00:06:37.920 --> 00:06:38.660
Hiss, hiss.

00:06:38.660 --> 00:06:41.300
But that's okay.

00:06:41.900 --> 00:06:48.380
And then finally, Jason put together a video of when he, sort of an unboxing of the IDE, but it's digital.

00:06:48.380 --> 00:06:49.820
So you don't really take it out of anything.

00:06:49.820 --> 00:06:51.560
But when he first sort of test drove it.

00:06:51.560 --> 00:06:52.080
Oh, that's neat.

00:06:52.080 --> 00:06:52.980
Going through it.

00:06:52.980 --> 00:06:54.160
So it's like a 15-minute video.

00:06:54.160 --> 00:06:59.100
So if you really are interested in doing this and seeing how it works, you can check out Jason's video, which I also link there.

00:06:59.100 --> 00:06:59.500
Nice.

00:06:59.500 --> 00:06:59.920
Cool.

00:06:59.920 --> 00:07:00.180
Yeah.

00:07:00.180 --> 00:07:03.300
So IoT, definitely a cool option here.

00:07:03.300 --> 00:07:06.220
You might be collecting a lot of data on those IoT devices, right?

00:07:06.220 --> 00:07:12.000
You could have them all grabbing data from all over the world every five seconds, streaming it back, drop it into somewhere.

00:07:12.000 --> 00:07:13.100
You want to look at it, right?

00:07:13.100 --> 00:07:13.460
Yeah.

00:07:13.460 --> 00:07:16.580
You might want to make that into some visualization.

00:07:16.580 --> 00:07:17.520
Yes.

00:07:17.520 --> 00:07:19.480
And there's a lot of options.

00:07:19.480 --> 00:07:30.000
So I actually, I'm in the middle of this problem right now with a work project of trying to decide which visualization libraries to use on a particular problem.

00:07:30.000 --> 00:07:30.840
Oh, let's draw a graph.

00:07:30.840 --> 00:07:31.300
Oh, wait.

00:07:31.300 --> 00:07:33.020
There's 300 ways to do that.

00:07:33.020 --> 00:07:33.480
Why is this?

00:07:33.480 --> 00:07:33.840
Yeah.

00:07:35.320 --> 00:07:41.300
There's an article that's on the Anaconda blog called Python Data Visualization 2018.

00:07:41.300 --> 00:07:43.380
Why are there, why so many libraries?

00:07:43.380 --> 00:07:46.960
It talks about, you know, how like there's some of them are map.

00:07:46.960 --> 00:07:48.580
There's matplotlib, of course.

00:07:48.580 --> 00:07:52.820
And there's a whole bunch of others that are based on matplotlib.

00:07:52.820 --> 00:07:55.260
And then whether or not you use JavaScript.

00:07:55.260 --> 00:07:58.780
And then, you know, if you use JSON or something else.

00:07:58.780 --> 00:08:00.180
And then there's WebGL.

00:08:00.180 --> 00:08:08.740
And anyway, it's a nice breakdown of the different tools and kind of the data behind it.

00:08:08.740 --> 00:08:11.900
Like what data and stuff are they're using.

00:08:12.420 --> 00:08:15.780
And then also what you can do with them, what plot types you can do.

00:08:15.780 --> 00:08:27.020
And generally, if you're like, if you're using, for instance, geographical data, then you probably maybe look should look at matplotlib with cartoppy or a few others.

00:08:27.020 --> 00:08:30.340
They've got got some examples and they bucket them together.

00:08:30.340 --> 00:08:32.160
So it's less of a search.

00:08:32.160 --> 00:08:35.820
You don't have to look at everything to see if you should look at it.

00:08:35.820 --> 00:08:37.860
And also kind of what your data size is.

00:08:37.860 --> 00:08:41.980
And I very much appreciated this to kind of narrow things down.

00:08:41.980 --> 00:08:42.700
Yeah, it's really cool.

00:08:42.700 --> 00:08:54.220
And there's a great visualization as well from Jake Vanderplass, which it's kind of like a mind map of related, linked together, different visualization libraries.

00:08:54.420 --> 00:08:57.600
So it has like, well, here's D3 as one of the major hubs.

00:08:57.600 --> 00:08:58.800
And then you've got matplotlib.

00:08:58.800 --> 00:09:04.100
And maybe for matplotlib, you might want to use scikit plot, which is derived based on that.

00:09:04.100 --> 00:09:09.220
Or if you're using D3, you might use, I don't know, D3 poe or whatever, like one of these other things.

00:09:09.220 --> 00:09:19.080
But it also says, well, you can combine matplotlib and D3.js and get MPLD map plot something three, like a combination.

00:09:19.080 --> 00:09:21.200
MPL D3, I guess.

00:09:21.200 --> 00:09:21.680
I don't know.

00:09:22.040 --> 00:09:28.120
But the relationships, so maybe, oh, if I'm using this, there's this other library that also has some other features I could combine.

00:09:28.120 --> 00:09:28.640
I think it's cool.

00:09:28.640 --> 00:09:30.260
Yeah, they all kind of interrelate.

00:09:30.260 --> 00:09:35.560
And then I wanted to point out that there's some, sometimes you're just like, I just want something simple.

00:09:35.560 --> 00:09:39.580
I really was looking for this example about a year ago, and I wish I would have found it.

00:09:39.640 --> 00:09:56.080
But there's an example I'm going to link to that's just a really short article and then a link to a gist, which is just a single file containing Flask application that both generates and displays a couple matplotlib charts.

00:09:57.080 --> 00:10:02.160
So, Matt Laplod lib might be the simplest thing, but it isn't obvious right off the bat.

00:10:02.160 --> 00:10:03.440
How do you encode?

00:10:03.440 --> 00:10:08.860
How do you generate one of these things and then link to it in a web page and all that sort of stuff?

00:10:08.860 --> 00:10:10.400
So, this is nice.

00:10:10.400 --> 00:10:10.900
Nice, nice.

00:10:10.900 --> 00:10:18.320
I don't have a reason to draw graphs too much, but I'm starting to think maybe some BI type stuff might be in my future.

00:10:18.320 --> 00:10:19.640
That would be interesting to learn.

00:10:19.640 --> 00:10:22.380
And I'll definitely have to come back to this to figure out how to look at it.

00:10:22.380 --> 00:10:22.660
Yeah.

00:10:22.660 --> 00:10:22.900
Cool.

00:10:22.900 --> 00:10:30.400
So, before we get on to the next one, which will also make Brett Cannon happy, I think, is I want to tell you quickly about DigitalOcean.

00:10:30.400 --> 00:10:35.900
So, DigitalOcean, great hosting provider, super affordable, really rock solid.

00:10:35.900 --> 00:10:40.620
And one of the things that's cool that they do is they've created this idea of projects.

00:10:40.620 --> 00:10:46.240
Because often you go into your cloud provider and you've got these testing servers and all this stuff.

00:10:46.240 --> 00:10:47.540
You're like, well, what goes with what?

00:10:47.800 --> 00:10:50.120
Is this thing, can I turn this server off?

00:10:50.120 --> 00:10:51.520
Is it being used, right?

00:10:51.520 --> 00:10:53.580
What group is it related with?

00:10:53.580 --> 00:10:54.980
So, they have this idea of projects.

00:10:54.980 --> 00:11:02.020
And you can group your droplets, which are VMs and load balancers and domains and IPs and all that, into these different projects.

00:11:02.020 --> 00:11:07.580
So, you can treat them individually as like all of this infrastructure goes with this site.

00:11:07.580 --> 00:11:09.720
And that infrastructure goes with that site and stuff like that.

00:11:09.720 --> 00:11:10.820
So, very cool.

00:11:10.820 --> 00:11:15.400
You should check out what they've got going on over there at pythonbytes.fm/digitalocean.

00:11:15.820 --> 00:11:19.500
And like I said, you'll get $100 free credit if you create a new account there.

00:11:19.500 --> 00:11:21.260
So, very nice stuff.

00:11:21.260 --> 00:11:27.040
Now, speaking of the cloud and speaking of Visual Studio Code, I want to tell you all about Coder.com.

00:11:27.040 --> 00:11:30.240
So, Coder.com is a thing I recently learned about.

00:11:30.240 --> 00:11:33.040
They reached out to me for some stuff on Talk Python.

00:11:34.040 --> 00:11:36.800
And after playing with it, it is pretty cool.

00:11:36.800 --> 00:11:41.560
So, you know how VS Code is an Electron.js app, right?

00:11:41.560 --> 00:11:41.880
Okay.

00:11:41.880 --> 00:11:42.200
Okay.

00:11:42.200 --> 00:11:44.840
So, in Electron.js, there's kind of a hidden Chrome.

00:11:44.840 --> 00:11:46.100
The thing that you see is a window.

00:11:46.100 --> 00:11:47.300
That's really Chrome.

00:11:47.300 --> 00:11:51.200
Just like a headless Chrome type of thing running some kind of HTML there.

00:11:51.200 --> 00:11:55.400
And then it talks to Node.js over like a local transport of some sort.

00:11:55.400 --> 00:11:55.720
Okay.

00:11:55.800 --> 00:11:56.980
What if you could separate those?

00:11:56.980 --> 00:12:01.240
What if the Node.js backend lived in like a server that was really awesome?

00:12:01.240 --> 00:12:03.560
And then you could just put the front end anywhere like a website.

00:12:03.560 --> 00:12:05.380
That's kind of how it's designed to work.

00:12:05.380 --> 00:12:05.900
Yeah.

00:12:05.900 --> 00:12:06.480
Yeah.

00:12:06.720 --> 00:12:07.820
It seems possible, right?

00:12:07.820 --> 00:12:09.840
So, basically, that's like Coder.com.

00:12:09.840 --> 00:12:13.660
So, it's full Visual Studio code but in your browser on awesome hardware.

00:12:13.660 --> 00:12:15.980
So, you can write code in your browser.

00:12:15.980 --> 00:12:21.800
And because it's full Visual Studio code, you get like all the 4,000 extensions, all the different languages.

00:12:21.800 --> 00:12:29.340
And it's not some like cheapo imitation sort of sometimes the autocomplete works IDE in the cloud.

00:12:29.340 --> 00:12:32.760
It's like literally just Visual Studio but working in your browser.

00:12:33.100 --> 00:12:41.040
So, it's really, you know, once you fire it up and you get going, it's like within a few minutes, you're like, oh, wait, that's not the regular top bar for my app.

00:12:41.040 --> 00:12:41.800
That's a browser window.

00:12:41.800 --> 00:12:43.100
But you would just kind of forget.

00:12:43.100 --> 00:12:45.040
And it has some other features.

00:12:45.040 --> 00:12:50.100
So, like it runs, every time you create a project, your project lives in a Docker container.

00:12:50.100 --> 00:12:56.160
And you get root access to install and configure that Linux Docker machine however you want.

00:12:56.160 --> 00:12:59.560
So, you can do basically whatever you want in the cloud on this thing.

00:12:59.660 --> 00:13:06.560
And there's a like a paid feature, you can push a button and it will give you up to 96 cores of computational power.

00:13:06.560 --> 00:13:08.600
You get like a certain amount of free, like five hours.

00:13:08.600 --> 00:13:10.400
But after that, it's a paid feature.

00:13:10.400 --> 00:13:11.460
But still, it's pretty awesome.

00:13:11.460 --> 00:13:21.060
So, if you want to work on Linux and you're on, say, Windows and you need like hardcore Linux, not just a VM but something that's really running solid, you can use this.

00:13:21.060 --> 00:13:24.400
If you're on a Chromebook or you're on a tablet, right, this would be awesome.

00:13:24.400 --> 00:13:25.620
All sorts of stuff.

00:13:25.720 --> 00:13:29.220
Another thing that's really cool is it has Google Docs-like collaboration.

00:13:29.220 --> 00:13:31.960
So, multiple people can be working on the same file at the same time.

00:13:31.960 --> 00:13:32.580
Oh, that's neat.

00:13:32.580 --> 00:13:32.800
Yeah.

00:13:32.800 --> 00:13:33.500
It's pretty awesome.

00:13:33.500 --> 00:13:35.920
So, anyway, I wanted to tell people about it.

00:13:35.920 --> 00:13:37.900
They just launched a few weeks ago.

00:13:37.900 --> 00:13:39.680
And I think it's pretty awesome.

00:13:39.680 --> 00:13:41.020
They have really good Python support.

00:13:41.020 --> 00:13:46.120
You can obviously pip install all the stuff you need because you just open the terminal and you have root access.

00:13:46.120 --> 00:13:47.520
So, do what you like to it.

00:13:47.520 --> 00:13:50.640
It looks like it has a whole bunch of plugins available, too.

00:13:50.640 --> 00:13:52.900
It isn't just bare VS Code.

00:13:52.900 --> 00:13:53.320
Yeah, no.

00:13:53.320 --> 00:13:54.540
It's super cool, that thing.

00:13:54.540 --> 00:13:56.460
So, quite the neat project.

00:13:56.460 --> 00:14:01.020
Now, just for transparency, they did sponsor Talk Python To Me, but this is not an ad.

00:14:01.020 --> 00:14:03.000
This is just like I learned about it because of that.

00:14:03.000 --> 00:14:04.160
And I'm like, oh, this is pretty cool.

00:14:04.160 --> 00:14:05.260
I'll tell people about it here.

00:14:05.260 --> 00:14:07.260
So, anyway, something worth checking out.

00:14:07.260 --> 00:14:09.980
And the free option is pretty cool.

00:14:09.980 --> 00:14:15.940
You get like three gigs of disk space, one gig of RAM for free forever, pretty much.

00:14:15.940 --> 00:14:16.760
So, it's pretty cool.

00:14:16.760 --> 00:14:17.880
That's generous.

00:14:17.880 --> 00:14:18.660
Yeah.

00:14:18.660 --> 00:14:19.400
Yeah, not bad.

00:14:19.400 --> 00:14:19.820
All right.

00:14:19.820 --> 00:14:20.420
What's your next one?

00:14:20.420 --> 00:14:23.140
This one, it just popped up on my news feed.

00:14:23.140 --> 00:14:24.360
I think it was this morning.

00:14:24.360 --> 00:14:33.420
This is a Forbes article about Guido and trying to bring more women into the Python community.

00:14:33.420 --> 00:14:37.560
Some of the stuff I didn't, I knew things, some of these things were happening,

00:14:37.840 --> 00:14:42.820
but I didn't know some of the impetus and the, I mean, I was glad, but I didn't really

00:14:42.820 --> 00:14:43.620
understand why.

00:14:43.620 --> 00:14:50.680
But apparently, in 2015, somebody just mentioned to him, like, weird, there's no women in the

00:14:50.680 --> 00:14:52.000
core, in Python core.

00:14:52.000 --> 00:14:52.360
Why?

00:14:52.360 --> 00:14:59.520
And, you know, he talks about a lot of projects having that problem, or at least a situation

00:14:59.520 --> 00:15:05.500
where there's not a lot of women contributing, and you kind of have to examine why that's going

00:15:05.500 --> 00:15:05.860
on.

00:15:05.860 --> 00:15:13.640
And so, he took on putting out an offer saying that he would mentor women that wanted to become

00:15:13.640 --> 00:15:14.340
core developers.

00:15:14.340 --> 00:15:20.400
And, of course, we know Marietta was the first, and that's awesome.

00:15:20.400 --> 00:15:26.260
And now there's four altogether, and he just wants that to keep growing.

00:15:27.060 --> 00:15:30.240
And it's also kind of a nice talk.

00:15:30.240 --> 00:15:34.780
It's an interview that happened after he stepped down, saying that he's definitely going to be,

00:15:34.780 --> 00:15:36.700
stay involved with Python.

00:15:36.700 --> 00:15:42.080
It's just, he doesn't want to be part of all the everyday fighting and stuff.

00:15:42.080 --> 00:15:42.600
Right.

00:15:42.860 --> 00:15:48.200
And just, I kind of read this also, and I was thinking about, there was a comment that Python

00:15:48.200 --> 00:15:52.660
was worse than the average, just commercial engineering team.

00:15:52.660 --> 00:15:54.020
That is troublesome.

00:15:54.240 --> 00:15:59.060
But I think a lot of, even depending on what kind of field you're in, this might still be

00:15:59.060 --> 00:15:59.480
a problem.

00:15:59.480 --> 00:16:06.480
And I think people need to examine their own hiring processes and how you get people involved

00:16:06.480 --> 00:16:07.220
in your project.

00:16:07.220 --> 00:16:09.320
And whether it's open source or whether it's commercial.

00:16:09.320 --> 00:16:17.460
And take a look about really, one of the comments was, some teams will say there's no women in the

00:16:17.460 --> 00:16:19.300
core because nobody's been interested.

00:16:19.460 --> 00:16:25.260
Nobody's asked, but that's probably a little insincere if you take a look about, about how,

00:16:25.260 --> 00:16:27.100
how the commit bit happens.

00:16:27.100 --> 00:16:32.540
It's, it's often a kind of a nebulous, fuzzy, we trust this person sort of a thing.

00:16:32.540 --> 00:16:34.620
And a lot of hiring is that way too.

00:16:34.620 --> 00:16:40.840
And I, the argument of that a lot of hiring people say is, well, I would hire a woman or

00:16:40.840 --> 00:16:45.480
somebody, other underrepresented group, but nobody applied.

00:16:45.480 --> 00:16:47.680
And I think that's just kind of BS.

00:16:47.680 --> 00:16:50.840
You have to go out of your way to try to find a larger pool.

00:16:50.840 --> 00:16:52.700
And so this is just a good reminder.

00:16:52.700 --> 00:16:53.740
Yeah, it's a great reminder.

00:16:53.740 --> 00:16:56.600
And Geter did super important work there.

00:16:56.600 --> 00:17:03.400
I said it before, but I think I've been to different types of programming conferences and

00:17:03.400 --> 00:17:10.840
coming to a Python conference is a much better experience in feeling like this group of people

00:17:10.840 --> 00:17:17.920
represents the general population of the world compared to other ones where, you know, not

00:17:17.920 --> 00:17:20.060
so much more, not at all, basically.

00:17:20.060 --> 00:17:24.740
So I think that's a really positive aspect of what's happening for the community.

00:17:24.740 --> 00:17:29.060
And it's great that Forbes, I mean, Forbes, that's a huge place to cover this.

00:17:29.120 --> 00:17:30.140
So that's pretty awesome.

00:17:30.140 --> 00:17:30.420
Yeah.

00:17:30.420 --> 00:17:35.880
Now on your hiring thought, a lot of jobs, I think, get filled by first asking all the team

00:17:35.880 --> 00:17:38.220
members who work there, who do you know and who's awesome?

00:17:38.220 --> 00:17:39.120
Who should we hire?

00:17:39.120 --> 00:17:44.120
And when that process fails and it's like, fine, we'll put like a general, put a general

00:17:44.120 --> 00:17:46.240
job offer out there that everybody might get.

00:17:46.460 --> 00:17:51.220
But I can certainly see how that would create reinforcing groups because the team that you

00:17:51.220 --> 00:17:55.860
have would know people most likely like them, right?

00:17:55.860 --> 00:17:56.180
Yeah.

00:17:56.180 --> 00:18:02.220
And also the, some of it's the crucible process of the hiring process of, as well,

00:18:02.220 --> 00:18:08.020
even if you have people that are decent candidates, I don't remember where I have this reference

00:18:08.020 --> 00:18:15.760
from, but I've heard a comment that more frequently a male will apply for a job where he meets at least

00:18:15.760 --> 00:18:22.880
two of the qualifications, but more likely a woman will only apply for jobs where she meets

00:18:22.880 --> 00:18:26.380
all of the qualifications and there's a difference right there.

00:18:26.380 --> 00:18:31.120
So you have to, it has to start from the very beginning of be very careful what you put in

00:18:31.120 --> 00:18:35.180
your required qualifications because it will eliminate a bunch of people.

00:18:35.180 --> 00:18:35.600
Yeah.

00:18:35.600 --> 00:18:36.680
I think that's really interesting.

00:18:36.680 --> 00:18:40.680
I speak to my wife about this sometimes and she's like, well, guys will just say, they'll

00:18:40.680 --> 00:18:42.680
just, they can do this thing or, or whatever.

00:18:42.680 --> 00:18:46.120
And they can't, they don't have all this, the experience or everything that they need

00:18:46.120 --> 00:18:48.620
and they'll just do it and then they'll get the job and women don't.

00:18:48.620 --> 00:18:50.800
And I don't know, she wasn't really saying that was unfair.

00:18:50.800 --> 00:18:51.500
She's just saying.

00:18:51.500 --> 00:18:52.460
It is the way it is.

00:18:52.460 --> 00:18:53.300
So you have to be aware of it.

00:18:53.300 --> 00:18:54.120
It is the way it is.

00:18:54.180 --> 00:18:58.920
But I mean, on one hand, let's put this out here as an encouragement to women to say,

00:18:58.920 --> 00:19:03.540
look, if you have most of the, it's a wishlist.

00:19:03.540 --> 00:19:08.400
And if you have most of the things or the important ones, even just apply, right?

00:19:08.400 --> 00:19:12.520
I mean, there's so many opportunities for JIT learning, just in time learning.

00:19:12.520 --> 00:19:17.080
Like if you know three out of the six things, but you could take some online classes or something

00:19:17.080 --> 00:19:20.320
or read a book on the others, like just apply.

00:19:20.320 --> 00:19:20.760
Yeah.

00:19:20.760 --> 00:19:26.100
The other end of it is often part of the hiring process isn't really on qualifications.

00:19:26.100 --> 00:19:28.000
It's on fit.

00:19:28.000 --> 00:19:30.360
Do they seem like they already fit into the team?

00:19:30.360 --> 00:19:30.760
Yeah.

00:19:30.760 --> 00:19:34.880
And you have to be really careful with that because you, you might end up with a whole

00:19:34.880 --> 00:19:36.480
bunch of people that are kind of the same.

00:19:36.480 --> 00:19:36.800
Yeah.

00:19:36.800 --> 00:19:38.360
I think that one's, that one's trickier.

00:19:38.360 --> 00:19:39.380
These needs attention.

00:19:39.380 --> 00:19:39.780
Okay.

00:19:39.900 --> 00:19:45.800
So the last one that I want to cover is from a very inspirational woman named Annalena Popkus.

00:19:45.800 --> 00:19:50.020
And I had her back on Talk Python just last week, actually.

00:19:50.020 --> 00:19:51.600
That was an incredible interview too.

00:19:51.600 --> 00:19:52.360
Thank you.

00:19:52.360 --> 00:19:53.160
Yeah.

00:19:53.160 --> 00:19:53.540
Thank you.

00:19:53.540 --> 00:19:54.860
She was such a great guest.

00:19:54.860 --> 00:19:58.420
And so many people wrote to me and said, wow, she was really inspirational.

00:19:58.420 --> 00:19:59.880
And I think she was.

00:19:59.880 --> 00:20:05.000
And one of the things that was inspirational was not long ago, she had no programming skills.

00:20:05.380 --> 00:20:11.120
Then she decided to go to a computer science master's program in machine learning.

00:20:11.120 --> 00:20:16.440
And now she's working at Microsoft's AI residency program in just a few short years, which is

00:20:16.440 --> 00:20:16.800
incredible.

00:20:16.800 --> 00:20:20.120
And the thing that I want to tell people about is directly from that whole path.

00:20:20.120 --> 00:20:27.260
So she put together a GitHub repository of Python notebooks, Jupyter notebooks that are basically

00:20:27.260 --> 00:20:31.460
explorations to understand the core algorithms of machine learning.

00:20:31.460 --> 00:20:31.920
Nice.

00:20:31.920 --> 00:20:32.400
Yeah.

00:20:32.400 --> 00:20:37.860
Not, I want to create, you know, import scikit learning and feed this function a few things,

00:20:37.860 --> 00:20:42.360
but with no dependencies, how do we build up these algorithms and what does that look like?

00:20:42.360 --> 00:20:42.820
Cool.

00:20:42.820 --> 00:20:48.440
So if you're out there and you are doing data science or want to get into data science, she

00:20:48.440 --> 00:20:51.240
has a bunch of really nice notebooks that you can check out.

00:20:51.240 --> 00:20:52.760
I'll link to most of them here.

00:20:52.760 --> 00:20:55.020
And this is built in modern Python.

00:20:55.020 --> 00:20:56.280
So hurry for that.

00:20:56.280 --> 00:21:02.340
So anyway, she built this for herself to learn these algorithms as she did this sort of career

00:21:02.340 --> 00:21:02.820
progression.

00:21:02.820 --> 00:21:05.820
And maybe, you know, throwing it out there is going to help a lot of people.

00:21:05.820 --> 00:21:07.840
It already has like 2,500 GitHub stars.

00:21:07.840 --> 00:21:09.100
So I guess it will be.

00:21:09.100 --> 00:21:10.500
Plus it has a perceptron.

00:21:10.500 --> 00:21:13.440
I don't even know what a perceptron is, but that's a really cool word.

00:21:13.440 --> 00:21:13.840
I know.

00:21:13.840 --> 00:21:17.620
It's like a psychic power used by the machine learning algorithm.

00:21:17.620 --> 00:21:21.160
No, I have no idea what it is either, but it sounds awesome.

00:21:21.160 --> 00:21:25.680
I'm sure there's data science people rolling their eyes at us for not knowing this stuff.

00:21:25.680 --> 00:21:26.100
I'm sure.

00:21:26.100 --> 00:21:29.980
Yeah, I was going to make a good joke about another algorithm to follow up on that, but

00:21:29.980 --> 00:21:30.560
I just failed.

00:21:30.560 --> 00:21:32.020
So we're just going to leave it there.

00:21:32.020 --> 00:21:35.460
But yeah, so check out Annalena's work if you're getting into data science.

00:21:35.460 --> 00:21:36.060
That's pretty cool.

00:21:36.060 --> 00:21:37.880
Well, that's it for our main items, Brian.

00:21:37.880 --> 00:21:38.780
What else you got for us?

00:21:38.780 --> 00:21:40.260
Any little extra things you want to throw up?

00:21:40.260 --> 00:21:47.040
Just somebody mentioned to me the other day that AWS Lambda now supports Python 3.7, which

00:21:47.040 --> 00:21:48.020
is awesome.

00:21:48.020 --> 00:21:49.280
Yeah, you can use data classes.

00:21:49.280 --> 00:21:50.860
Yeah.

00:21:51.340 --> 00:21:51.760
It's cool.

00:21:51.760 --> 00:21:54.020
And it wasn't like it upgraded from 3.6, I think.

00:21:54.020 --> 00:21:55.320
I think it was something before that.

00:21:55.320 --> 00:21:56.820
They were like, well, when is 3.6 coming?

00:21:56.820 --> 00:21:58.160
And they just said, you know, skip that.

00:21:58.160 --> 00:21:58.660
3.7.

00:21:58.660 --> 00:21:59.720
Oh, they don't have 3.6?

00:21:59.720 --> 00:22:00.400
Well, they might.

00:22:00.400 --> 00:22:04.080
Now, I think that they were saying they were waiting for 3.6, and then actually 3.7 came

00:22:04.080 --> 00:22:04.220
out.

00:22:04.220 --> 00:22:07.860
I could be wrong about that, but I feel like this was a big jump in the 3 world.

00:22:07.860 --> 00:22:11.520
Yeah, I was so happy with 3.6, but now that 3.7's here, I'm like, yeah, I'll just use

00:22:11.520 --> 00:22:11.900
3.7.

00:22:11.900 --> 00:22:12.780
Yeah, that's awesome.

00:22:12.780 --> 00:22:13.200
How about you?

00:22:13.200 --> 00:22:14.200
Got anything else?

00:22:14.200 --> 00:22:17.660
Remember you asked me what Shiboken meant from last time?

00:22:17.660 --> 00:22:18.040
Yeah.

00:22:18.040 --> 00:22:19.420
It has a super deep meaning.

00:22:19.420 --> 00:22:21.500
Actually, no, it doesn't mean anything.

00:22:21.500 --> 00:22:22.900
It's just a random name.

00:22:22.900 --> 00:22:25.320
I wonder if it was, what was that, Hack Your Name?

00:22:25.320 --> 00:22:28.320
They could have probably just named it for Hack Your Name, right?

00:22:28.320 --> 00:22:28.560
Yeah.

00:22:28.680 --> 00:22:31.060
Yeah, so right now I get Stilus for Hack Your Name.

00:22:31.060 --> 00:22:35.160
That's pretty much as good as Shiboken, but Shiboken, I actually linked to the blog post

00:22:35.160 --> 00:22:39.540
that says there's no name, but it's still a pretty cool C++ interrupt thing.

00:22:39.540 --> 00:22:45.880
Also, people out there listening, if you want to nominate somebody to become a PSF fellow,

00:22:45.880 --> 00:22:52.260
Python Software Foundation fellow, this is a group of folks who every quarter, five people

00:22:52.260 --> 00:22:56.380
are nominated and put on the roster as having done something awesome for the Python community

00:22:56.380 --> 00:22:57.640
in general.

00:22:57.640 --> 00:23:04.200
So I'm linking to the place where you can read what this is about and then nominate somebody.

00:23:04.200 --> 00:23:07.560
So if someone out there is doing something cool, nominate them.

00:23:07.560 --> 00:23:09.580
That way you have a chance of being in this group.

00:23:09.580 --> 00:23:10.260
Are you a fellow?

00:23:10.260 --> 00:23:11.240
I am actually.

00:23:11.240 --> 00:23:12.140
Very surprising.

00:23:12.140 --> 00:23:16.920
I didn't even know about Python Software Foundation fellows and somebody nominated me and they

00:23:16.920 --> 00:23:17.820
said, hey, you got the award.

00:23:17.820 --> 00:23:18.560
I said, wait, what?

00:23:18.560 --> 00:23:21.040
So yeah, whoever nominated me, thank you so much.

00:23:21.040 --> 00:23:21.540
That was awesome.

00:23:21.540 --> 00:23:22.160
I am.

00:23:22.160 --> 00:23:22.620
Yes.

00:23:22.760 --> 00:23:23.460
Yeah, that's cool.

00:23:23.460 --> 00:23:26.140
So it would be waste if somebody were to nominate you again.

00:23:26.140 --> 00:23:26.840
Yeah.

00:23:26.840 --> 00:23:29.580
The link I actually sent is a Twitter thing that says, please don't nominate me.

00:23:29.580 --> 00:23:30.760
Here's how to nominate somebody.

00:23:30.760 --> 00:23:31.860
Oh, okay.

00:23:31.860 --> 00:23:32.760
Thanks.

00:23:32.760 --> 00:23:34.560
Yeah, yeah.

00:23:34.560 --> 00:23:34.660
Cool.

00:23:34.660 --> 00:23:35.580
But that's pretty awesome.

00:23:35.580 --> 00:23:35.900
All right.

00:23:35.900 --> 00:23:40.940
So anyway, I'm sure that would really make somebody's week if they got that and they probably

00:23:40.940 --> 00:23:42.120
don't even expect it.

00:23:42.120 --> 00:23:42.360
Yeah.

00:23:42.360 --> 00:23:42.720
Nice.

00:23:42.720 --> 00:23:43.020
Cool.

00:23:43.020 --> 00:23:43.480
All right.

00:23:43.480 --> 00:23:45.180
Well, that's it for this week, Brian.

00:23:45.180 --> 00:23:45.760
All right.

00:23:45.760 --> 00:23:46.900
Well, we'll talk to you next week.

00:23:46.900 --> 00:23:47.520
Yeah, you bet.

00:23:47.520 --> 00:23:48.280
Go forth in Turkey.

00:23:48.600 --> 00:23:50.120
Thank you for listening to Python Bytes.

00:23:50.120 --> 00:23:52.660
Follow the show on Twitter via at Python Bytes.

00:23:52.660 --> 00:23:55.540
That's Python Bytes as in B-Y-T-E-S.

00:23:55.540 --> 00:23:58.980
And get the full show notes at pythonbytes.fm.

00:23:58.980 --> 00:24:03.300
If you have a news item you want featured, just visit pythonbytes.fm and send it our way.

00:24:03.300 --> 00:24:06.000
We're always on the lookout for sharing something cool.

00:24:06.000 --> 00:24:09.400
On behalf of myself and Brian Okken, this is Michael Kennedy.

00:24:09.400 --> 00:24:12.920
Thank you for listening and sharing this podcast with your friends and colleagues.

00:24:12.920 --> 00:24:13.920
Thanks.

00:24:13.920 --> 00:24:43.900
Thank you.

