Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 105, recorded November 21st on Turkey Eve.
Yeah.
And I'm Michael Kennedy.
And I'm Brian Okken.
Hey, Brian, are you ready for Turkey Eve?
No, not at all.
Yeah.
Are you?
I'm getting there, I'm getting there. I just picked up a whole bunch of stuff.
We're going to cook a turkey and it's going to be crazy.
Nice.
So, yeah, yeah.
We bought a smoked turkey, so it's already, all the work's done.
Yeah, that's the way to do it.
Just save yourself the trouble.
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.
It's like many hours.
Yeah, and then for some reason everybody wants to eat like dinner at 2 o'clock in the afternoon or something weird like that.
Yeah, well, they've probably been drinking since 10, so, you know, that's why.
All right, so for those of you who celebrate Thanksgiving, happy Thanksgiving.
For those of you who don't, happy email Black Friday spam week.
And hopefully you got some deals.
Yes.
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.
Tell you more about that later.
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?
Yeah, it does.
It's nice.
And maybe look at some old pictures.
Yeah, like, but sometimes it would be great if they weren't like, you know, old and black and white and boring and crummy.
Definitely.
There's a project and it's Python based and machine learning called Deoldify.
Deoldify.
The name says it all.
Yeah, it would be actually a great name for a health club too, I think.
What it is, is I can only sort of describe it.
What it does is it takes a black and white photo and makes it look awesome.
And like does a whole bunch of cleanup of sharpening and then colorizing it.
You kind of have to look at these pictures.
They're kind of amazing.
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.
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.
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.
These are glorious.
Like the old soda shop one.
It's just so amazing.
Do you know how it gets the color right?
Like why does it not make people, you know, purple or something?
Well, I mean, things like people are sort of an easy thing because they're going to be kind of people colored.
You know, if we get too far into this,
the how it works, I really can't tell you.
Well, it does use deep learning, which means like if you get too deep down, nobody knows how it works in some sense, right?
Like you've taught it sort of by example.
Yeah.
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.
I have no idea what those words mean, but that's part of it.
I think it's a really cool project.
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.
Wouldn't that be awesome?
Yeah, it would be.
And I'm actually, I can't wait to try playing with this.
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.
And it's a, it's kind of a really fun article.
So if you're curious about this, either just play with it, try it, or, you know, read the article.
I really like these visual things.
I think it very clearly highlights like how amazing just this whole deep learning and machine learning thing is, you know?
Yeah.
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.
I mean, I wouldn't have thought machine learning would be for that, but it's cool.
Yeah, it's very cool.
So remember last time how you said Brett Cannon was going to be mad at me?
Yeah.
Well, Brett Cannon will probably be happy because I got a lot of items on VS Code this week and they're pretty awesome.
So I didn't do it to make up for it, but I'm happy to feature them.
So this first one has to do with IoT.
And I think IoT is one of these amazing things that often is like below the surface, right?
Like when smartphones came out, it was so amazing.
Everybody saw it and you're like, show me that thing.
That's incredible.
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.
But there's tons of IoT stuff out there and the ability to do it in Python these days is great, right?
Yeah, and it's amazing how the IoT everywhere is sort of just make, it's no big deal anymore.
It's so fast.
Yeah, and the price is coming down, the energy consumption is coming down.
It's great.
So the thing that I want to tell folks about is something that Jason Percor told us about called PlatformIO IDE for VS Code.
So PlatformIO is this platform for interacting with all sorts of IoT and small device type of programming examples.
And it has tons of languages.
And what they've done is they've built in a debugging, their framework, all that stuff into Visual Studio Code.
Oh, that's cool.
And what's cool is because it's Visual Studio Code, it has like all sorts of mixed mode understanding.
So if you're doing C++, embedded C++, great.
If you're doing Python, great.
It knows about all these things.
So super cool.
It has a cross-platform, of course, because it's just VS Code basically.
Built-in debugger.
Check this out.
Remote unit testing on your device.
That's pretty sweet.
Firmware updates, all that sort of stuff.
Yeah, neat.
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.
But it's sort of that kind of thing.
Now, there's a few features.
I think like firmware updates and a few other things are paid, but it's like $9 a month.
But there's also a free version.
So it's a little bit like PyCharm in that sense.
Like there's a paid edition and a free community edition.
So it's pretty cool.
The PlatformIO core itself is written in Python, which is awesome.
But it's written in legacy Python.
Boo!
Hiss, hiss.
But that's okay.
And then finally, Jason put together a video of when he, sort of an unboxing of the IDE, but it's digital.
So you don't really take it out of anything.
But when he first sort of test drove it.
Oh, that's neat.
Going through it.
So it's like a 15-minute video.
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.
Nice.
Cool.
Yeah.
So IoT, definitely a cool option here.
You might be collecting a lot of data on those IoT devices, right?
You could have them all grabbing data from all over the world every five seconds, streaming it back, drop it into somewhere.
You want to look at it, right?
Yeah.
You might want to make that into some visualization.
Yes.
And there's a lot of options.
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.
Oh, let's draw a graph.
Oh, wait.
There's 300 ways to do that.
Why is this?
Yeah.
There's an article that's on the Anaconda blog called Python Data Visualization 2018.
Why are there, why so many libraries?
It talks about, you know, how like there's some of them are map.
There's matplotlib, of course.
And there's a whole bunch of others that are based on matplotlib.
And then whether or not you use JavaScript.
And then, you know, if you use JSON or something else.
And then there's WebGL.
And anyway, it's a nice breakdown of the different tools and kind of the data behind it.
Like what data and stuff are they're using.
And then also what you can do with them, what plot types you can do.
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.
They've got got some examples and they bucket them together.
So it's less of a search.
You don't have to look at everything to see if you should look at it.
And also kind of what your data size is.
And I very much appreciated this to kind of narrow things down.
Yeah, it's really cool.
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.
So it has like, well, here's D3 as one of the major hubs.
And then you've got matplotlib.
And maybe for matplotlib, you might want to use scikit plot, which is derived based on that.
Or if you're using D3, you might use, I don't know, D3 poe or whatever, like one of these other things.
But it also says, well, you can combine matplotlib and D3.js and get MPLD map plot something three, like a combination.
MPL D3, I guess.
I don't know.
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.
I think it's cool.
Yeah, they all kind of interrelate.
And then I wanted to point out that there's some, sometimes you're just like, I just want something simple.
I really was looking for this example about a year ago, and I wish I would have found it.
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.
So, Matt Laplod lib might be the simplest thing, but it isn't obvious right off the bat.
How do you encode?
How do you generate one of these things and then link to it in a web page and all that sort of stuff?
So, this is nice.
Nice, nice.
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.
That would be interesting to learn.
And I'll definitely have to come back to this to figure out how to look at it.
Yeah.
Cool.
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.
So, DigitalOcean, great hosting provider, super affordable, really rock solid.
And one of the things that's cool that they do is they've created this idea of projects.
Because often you go into your cloud provider and you've got these testing servers and all this stuff.
You're like, well, what goes with what?
Is this thing, can I turn this server off?
Is it being used, right?
What group is it related with?
So, they have this idea of projects.
And you can group your droplets, which are VMs and load balancers and domains and IPs and all that, into these different projects.
So, you can treat them individually as like all of this infrastructure goes with this site.
And that infrastructure goes with that site and stuff like that.
So, very cool.
You should check out what they've got going on over there at pythonbytes.fm/digitalocean.
And like I said, you'll get $100 free credit if you create a new account there.
So, very nice stuff.
Now, speaking of the cloud and speaking of Visual Studio Code, I want to tell you all about Coder.com.
So, Coder.com is a thing I recently learned about.
They reached out to me for some stuff on Talk Python.
And after playing with it, it is pretty cool.
So, you know how VS Code is an Electron.js app, right?
Okay.
So, in Electron.js, there's kind of a hidden Chrome.
The thing that you see is a window.
That's really Chrome.
Just like a headless Chrome type of thing running some kind of HTML there.
And then it talks to Node.js over like a local transport of some sort.
Okay.
What if you could separate those?
What if the Node.js backend lived in like a server that was really awesome?
And then you could just put the front end anywhere like a website.
That's kind of how it's designed to work.
Yeah.
It seems possible, right?
So, basically, that's like Coder.com.
So, it's full Visual Studio code but in your browser on awesome hardware.
So, you can write code in your browser.
And because it's full Visual Studio code, you get like all the 4,000 extensions, all the different languages.
And it's not some like cheapo imitation sort of sometimes the autocomplete works IDE in the cloud.
It's like literally just Visual Studio but working in your browser.
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.
That's a browser window.
But you would just kind of forget.
And it has some other features.
So, like it runs, every time you create a project, your project lives in a Docker container.
And you get root access to install and configure that Linux Docker machine however you want.
So, you can do basically whatever you want in the cloud on this thing.
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.
You get like a certain amount of free, like five hours.
But after that, it's a paid feature.
But still, it's pretty awesome.
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.
If you're on a Chromebook or you're on a tablet, right, this would be awesome.
All sorts of stuff.
Another thing that's really cool is it has Google Docs-like collaboration.
So, multiple people can be working on the same file at the same time.
Oh, that's neat.
Yeah.
It's pretty awesome.
So, anyway, I wanted to tell people about it.
They just launched a few weeks ago.
And I think it's pretty awesome.
They have really good Python support.
You can obviously pip install all the stuff you need because you just open the terminal and you have root access.
So, do what you like to it.
It looks like it has a whole bunch of plugins available, too.
It isn't just bare VS Code.
Yeah, no.
It's super cool, that thing.
So, quite the neat project.
Now, just for transparency, they did sponsor Talk Python To Me, but this is not an ad.
This is just like I learned about it because of that.
And I'm like, oh, this is pretty cool.
I'll tell people about it here.
So, anyway, something worth checking out.
And the free option is pretty cool.
You get like three gigs of disk space, one gig of RAM for free forever, pretty much.
So, it's pretty cool.
That's generous.
Yeah.
Yeah, not bad.
All right.
What's your next one?
This one, it just popped up on my news feed.
I think it was this morning.
This is a Forbes article about Guido and trying to bring more women into the Python community.
Some of the stuff I didn't, I knew things, some of these things were happening,
but I didn't know some of the impetus and the, I mean, I was glad, but I didn't really
understand why.
But apparently, in 2015, somebody just mentioned to him, like, weird, there's no women in the
core, in Python core.
Why?
And, you know, he talks about a lot of projects having that problem, or at least a situation
where there's not a lot of women contributing, and you kind of have to examine why that's going
on.
And so, he took on putting out an offer saying that he would mentor women that wanted to become
core developers.
And, of course, we know Marietta was the first, and that's awesome.
And now there's four altogether, and he just wants that to keep growing.
And it's also kind of a nice talk.
It's an interview that happened after he stepped down, saying that he's definitely going to be,
stay involved with Python.
It's just, he doesn't want to be part of all the everyday fighting and stuff.
Right.
And just, I kind of read this also, and I was thinking about, there was a comment that Python
was worse than the average, just commercial engineering team.
That is troublesome.
But I think a lot of, even depending on what kind of field you're in, this might still be
a problem.
And I think people need to examine their own hiring processes and how you get people involved
in your project.
And whether it's open source or whether it's commercial.
And take a look about really, one of the comments was, some teams will say there's no women in the
core because nobody's been interested.
Nobody's asked, but that's probably a little insincere if you take a look about, about how,
how the commit bit happens.
It's, it's often a kind of a nebulous, fuzzy, we trust this person sort of a thing.
And a lot of hiring is that way too.
And I, the argument of that a lot of hiring people say is, well, I would hire a woman or
somebody, other underrepresented group, but nobody applied.
And I think that's just kind of BS.
You have to go out of your way to try to find a larger pool.
And so this is just a good reminder.
Yeah, it's a great reminder.
And Geter did super important work there.
I said it before, but I think I've been to different types of programming conferences and
coming to a Python conference is a much better experience in feeling like this group of people
represents the general population of the world compared to other ones where, you know, not
so much more, not at all, basically.
So I think that's a really positive aspect of what's happening for the community.
And it's great that Forbes, I mean, Forbes, that's a huge place to cover this.
So that's pretty awesome.
Yeah.
Now on your hiring thought, a lot of jobs, I think, get filled by first asking all the team
members who work there, who do you know and who's awesome?
Who should we hire?
And when that process fails and it's like, fine, we'll put like a general, put a general
job offer out there that everybody might get.
But I can certainly see how that would create reinforcing groups because the team that you
have would know people most likely like them, right?
Yeah.
And also the, some of it's the, the crucible process of the hiring process of, as well,
even if you have people that are decent candidates, I don't remember where I have this reference
from, but I've heard a comment that more frequently a male will apply for a job where he meets at least
two of the qualifications, but more likely a woman will only apply for jobs where she meets
all of the qualifications and there's a difference right there.
So you have to, it has to start from the very beginning of be very careful what you put in
your required qualifications because it will eliminate a bunch of people.
Yeah.
I think that's really interesting.
I speak to my wife about this sometimes and she's like, well, guys will just say, they'll
just, they can do this thing or, or whatever.
And they can't, they don't have all this, the experience or everything that they need
and they'll just do it and then they'll get the job and women don't.
And I don't know, she wasn't really saying that was unfair.
She's just saying.
It is the way it is.
So you have to be aware of it.
It is the way it is.
But I mean, on one hand, let's put this out here as an encouragement to women to say,
look, if you have most of the, it's a wishlist.
And if you have most of the things or the important ones, even just apply, right?
I mean, there's so many opportunities for JIT learning, just in time learning.
Like if you know three out of the six things, but you could take some online classes or something
or read a book on the others, like just apply.
Yeah.
The other end of it is often part of the hiring process isn't really on qualifications.
It's on fit.
Do they seem like they already fit into the team?
Yeah.
And you have to be really careful with that because you, you might end up with a whole
bunch of people that are kind of the same.
Yeah.
I think that one's, that one's trickier.
These needs attention.
Okay.
So the last one that I want to cover is from a very inspirational woman named Annalena Popkus.
And I had her back on Talk Python just last week, actually.
That was an incredible interview too.
Thank you.
Yeah.
Thank you.
She was such a great guest.
And so many people wrote to me and said, wow, she was really inspirational.
And I think she was.
And one of the things that was inspirational was not long ago, she had no programming skills.
Then she decided to go to a computer science master's program in machine learning.
And now she's working at Microsoft's AI residency program in just a few short years, which is
incredible.
And the thing that I want to tell people about is directly from that whole path.
So she put together a GitHub repository of Python notebooks, Jupyter notebooks that are basically
explorations to understand the core algorithms of machine learning.
Nice.
Yeah.
Not, I want to create, you know, import scikit learning and feed this function a few things,
but with no dependencies, how do we build up these algorithms and what does that look like?
Cool.
So if you're out there and you are doing data science or want to get into data science, she
has a bunch of really nice notebooks that you can check out.
I'll link to most of them here.
And this is built in modern Python.
So hurry for that.
So anyway, she built this for herself to learn these algorithms as she did this sort of career
progression.
And maybe, you know, throwing it out there is going to help a lot of people.
It already has like 2,500 GitHub stars.
So I guess it will be.
Plus it has a perceptron.
I don't even know what a perceptron is, but that's a really cool word.
I know.
It's like a psychic power used by the machine learning algorithm.
No, I have no idea what it is either, but it sounds awesome.
I'm sure there's data science people rolling their eyes at us for not knowing this stuff.
I'm sure.
Yeah, I was going to make a good joke about another algorithm to follow up on that, but
I just failed.
So we're just going to leave it there.
But yeah, so check out Annalena's work if you're getting into data science.
That's pretty cool.
Well, that's it for our main items, Brian.
What else you got for us?
Any little extra things you want to throw up?
Just somebody mentioned to me the other day that AWS Lambda now supports Python 3.7, which
is awesome.
Yeah, you can use data classes.
Yeah.
It's cool.
And it wasn't like it upgraded from 3.6, I think.
I think it was something before that.
They were like, well, when is 3.6 coming?
And they just said, you know, skip that.
3.7.
Oh, they don't have 3.6?
Well, they might.
Now, I think that they were saying they were waiting for 3.6, and then actually 3.7 came
out.
I could be wrong about that, but I feel like this was a big jump in the 3 world.
Yeah, I was so happy with 3.6, but now that 3.7's here, I'm like, yeah, I'll just use
3.7.
Yeah, that's awesome.
How about you?
Got anything else?
Remember you asked me what Shiboken meant from last time?
Yeah.
It has a super deep meaning.
Actually, no, it doesn't mean anything.
It's just a random name.
I wonder if it was, what was that, Hack Your Name?
They could have probably just named it for Hack Your Name, right?
Yeah.
Yeah, so right now I get Stilus for Hack Your Name.
That's pretty much as good as Shiboken, but Shiboken, I actually linked to the blog post
that says there's no name, but it's still a pretty cool C++ interrupt thing.
Also, people out there listening, if you want to nominate somebody to become a PSF fellow,
Python Software Foundation fellow, this is a group of folks who every quarter, five people
are nominated and put on the roster as having done something awesome for the Python community
in general.
So I'm linking to the place where you can read what this is about and then nominate somebody.
So if someone out there is doing something cool, nominate them.
That way you have a chance of being in this group.
Are you a fellow?
I am actually.
Very surprising.
I didn't even know about Python Software Foundation fellows and somebody nominated me and they
said, hey, you got the award.
I said, wait, what?
So yeah, whoever nominated me, thank you so much.
That was awesome.
I am.
Yes.
Yeah, that's cool.
So it would be waste if somebody were to nominate you again.
Yeah.
The link I actually sent is a Twitter thing that says, please don't nominate me.
Here's how to nominate somebody.
Oh, okay.
Thanks.
Yeah, yeah.
Cool.
But that's pretty awesome.
All right.
So anyway, I'm sure that would really make somebody's week if they got that and they probably
don't even expect it.
Yeah.
Nice.
Cool.
All right.
Well, that's it for this week, Brian.
All right.
Well, we'll talk to you next week.
Yeah, you bet.
Go forth in Turkey.
Thank you for listening to Python Bytes.
Follow the show on Twitter via at Python Bytes.
That's Python Bytes as in B-Y-T-E-S.
And get the full show notes at pythonbytes.fm.
If you have a news item you want featured, just visit pythonbytes.fm and send it our way.
We're always on the lookout for sharing something cool.
On behalf of myself and Brian Okken, this is Michael Kennedy.
Thank you for listening and sharing this podcast with your friends and colleagues.
Thanks.
Thank you.