WEBVTT

00:00:00.001 --> 00:00:03.900
Hey there, thanks for listening. Before we jump into this episode, I just want to remind you

00:00:03.900 --> 00:00:09.700
that this episode is brought to you by us over at Talk Python Training and Brian through his pytest

00:00:09.700 --> 00:00:14.960
book. So if you want to get hands-on and learn something with Python, be sure to consider our

00:00:14.960 --> 00:00:21.760
courses over at Talk Python Training. Visit them via pythonbytes.fm/courses. And if you're

00:00:21.760 --> 00:00:27.360
looking to do testing and get better with pytest, check out Brian's book at pythonbytes.fm slash

00:00:27.360 --> 00:00:32.420
pytest. Enjoy the episode. Hello and welcome to Python Bytes, where we deliver Python news and

00:00:32.420 --> 00:00:40.160
headlines directly to your earbuds. This is episode 254, recorded on October 13th, 2021. I'm Michael

00:00:40.160 --> 00:00:45.220
Kennedy. And I'm Brian Okken. I'm Mohamed Raza. Yeah. Hey, Mohamed. Welcome. It's great to have

00:00:45.220 --> 00:00:49.220
you here. Good to have you on the show. Hi, Michael and Brian. I'm really excited to be on the show.

00:00:49.220 --> 00:00:54.400
It's been one of my goals. I started listening to podcasts when I was in college back as an

00:00:54.400 --> 00:00:59.100
undergrad. Wow. And your podcast, that was one of the reasons I developed a love for Python. So

00:00:59.100 --> 00:01:02.860
that's super amazing. Tell people a bit about yourself before we jump into this.

00:01:02.860 --> 00:01:07.820
I currently work at AWS, Amazon Web Services, as a professional service consultant. So my job

00:01:07.820 --> 00:01:14.460
is to help our customers in their cloud journey. So we basically do help them with our...

00:01:14.460 --> 00:01:19.460
We help them with different cloud services, such as if they want to do cloud migration or if they want

00:01:19.460 --> 00:01:24.800
like put some service on AWS cloud. So that's where professional services comes in to like

00:01:24.800 --> 00:01:30.300
implement and help them with their cloud journey. You must see a lot of different implementations and

00:01:30.300 --> 00:01:35.500
configurations and teams and types of software. You get exposed to a lot of things quickly like this,

00:01:35.500 --> 00:01:40.020
right? Yep. So it's pretty, it's pretty fun job. Like you work with different, wide,

00:01:40.020 --> 00:01:44.080
different customers. Like any customer has a different problem. So like you get to

00:01:44.080 --> 00:01:49.180
touch upon like different problems. So as a consultant, so it's a really amazing job.

00:01:49.180 --> 00:01:53.580
Yeah, that's awesome. That's one of the things I think, you know, for people who are early in their

00:01:53.580 --> 00:01:58.800
career to help them go fast and level up is get a lot of exposure to a lot of different things.

00:01:58.800 --> 00:02:00.980
Yep. And I totally agree with you.

00:02:00.980 --> 00:02:05.920
Awesome. Well, I think maybe Brian should kick us off with the first item. What do you think, Brian?

00:02:06.040 --> 00:02:12.000
So Python 310, we talked about this last week. Python 310 is out. It came out October 4th,

00:02:12.000 --> 00:02:16.840
it looks like. And I've been using it and a lot of people have been using it. But one of the things we

00:02:16.840 --> 00:02:24.140
do is we update our, with a project. If you support a package, you want to make sure to go and change your,

00:02:24.140 --> 00:02:29.860
your testing, your CI testing to make sure that you're using Python 310 instead of Python 3 dev,

00:02:29.860 --> 00:02:35.860
310 dev. That's what I was testing before. So as, but there's an issue. So

00:02:35.860 --> 00:02:41.560
Python or Anthony Shaw brought it up on Twitter, a bunch of other people did too.

00:02:41.560 --> 00:02:49.000
But I'm grabbing his, his tweet. It says basically, you can use 310 on GitHub actions now,

00:02:49.000 --> 00:02:54.700
but you need to make sure that you quote the 310. So this is...

00:02:54.700 --> 00:02:55.800
So you don't test on 3.1?

00:02:55.800 --> 00:02:57.440
Yeah, exactly.

00:02:57.440 --> 00:03:00.760
That's insane. The zero at the end matters.

00:03:01.200 --> 00:03:11.300
So I'm going to just grab my, one of my projects. I went and changed mine. And, and I just went ahead and put quotes on all of the versions on three,

00:03:11.300 --> 00:03:17.040
you don't have to do 3.7, 3.8, 3.9. Those are fine by themselves. But 3.10, if you, if you go from,

00:03:17.040 --> 00:03:24.480
if I had dash dot dev or dash dev, YAML convert, like thinks of it as a string. But as soon as I go to 3.10,

00:03:24.720 --> 00:03:40.480
it's 3.1. So yeah, you want to make sure to quote those. That's really it. And that's really what I wanted to cover is to make sure that people change their CI system to be testing with 3.10, but do it with quotes. If you're using YAML.

00:03:40.720 --> 00:03:43.400
Doesn't YAML understand significant digits? Come on.

00:03:43.400 --> 00:03:52.180
It's an interesting find though. Like, like YAML reading a 3.1, but it should read as 3.10.

00:03:52.180 --> 00:03:54.720
Yeah. I mean, I could see how you get there. Yeah.

00:03:54.720 --> 00:04:04.780
But at the same time, if you're talking versions and not just floating points, obviously the dots are not, you know, not, not decimal separators. They're separating full whole numbers, right?

00:04:04.780 --> 00:04:10.480
Which obviously then the zero matters. Interesting. That's a good find and good advice. I have a quick real-time follow-up for you, Brian.

00:04:10.700 --> 00:04:16.400
Remember I had complained about not being able to deploy to 3.10 in production. Yeah.

00:04:16.400 --> 00:04:20.480
Well, guess what? This is all 3.10. Woo. Oh, sweet.

00:04:20.480 --> 00:04:40.680
Yeah. I managed to get it working. MicroWSGI got updated so that it will now work on 3.10 install, building a wheel locally on Linux. And there was another dependency I couldn't make work, but then I realized, oh my gosh, I'm not even using this anymore. So I just took it out and then it works. So I put it on Talk Python, the podcast page for now. And if it doesn't freak out or cause problems,

00:04:40.680 --> 00:04:48.320
I'll roll out across like Talk Python training and Python bytes and stuff. So this is the guinea pig or the canary out there just hanging around. But so far it's perfect.

00:04:48.380 --> 00:04:48.880
Nice.

00:04:48.880 --> 00:05:01.140
Yeah. A couple of live stream thoughts here. Sam Morley. Hey, Sam. Says, oh my, that is interesting about 3.10. And Henry Schreiner. Hey, Henry. Henry and I are going to be talking on Talk Python really soon, by the way.

00:05:01.520 --> 00:05:14.360
Many YAML projects choose to accept floats and then just convert them to strings. Not specific to YAML. You could disallow floats here if you wrote that, if you wrote the action. Okay. Interesting. I didn't realize you could do that. Very cool.

00:05:14.360 --> 00:05:15.240
I didn't know that either.

00:05:15.600 --> 00:05:18.460
Okay. Did you know that Python's popular?

00:05:18.460 --> 00:05:19.360
Yeah.

00:05:19.360 --> 00:05:19.860
Yes.

00:05:21.120 --> 00:05:33.720
And it has found its way to be a little bit more popular than it has been recently. So, you know, it continues to grow. Brian Skin sent this over. Thank you, Brian. And the headline here is pretty neat.

00:05:34.120 --> 00:05:40.480
Beating C and Java, Python becomes the number one most popular programming language. Boom. Says Tobe.

00:05:40.480 --> 00:05:49.940
So, the Tobe index is interesting. To me, it feels like a little bit more of a lagging indicator. And it's also a bit more of a enterprise-focused indicator.

00:05:49.940 --> 00:05:58.980
So, that's why Java and C have been popular for so long. But apparently, Python has sort of made its way into that world as well.

00:05:59.620 --> 00:06:05.580
And they're quoting this article over here on ZDNet. And this is the thing I'm linking to. And it says,

00:06:05.580 --> 00:06:11.940
For the first time in more than 20 years, we have a new leader of the pack. The longstanding hegemi of Java and C is over.

00:06:11.940 --> 00:06:14.380
It's pretty good, right?

00:06:14.380 --> 00:06:22.380
It is. And I think it's one of the reasons that, like you said, the business community is using it a lot more in large companies.

00:06:22.520 --> 00:06:29.320
That might also be why we're seeing the numbers in surveys of Windows users using Python.

00:06:29.320 --> 00:06:30.240
Oh, yeah.

00:06:30.240 --> 00:06:31.520
Staying really high.

00:06:31.520 --> 00:06:33.920
Maybe it's because of that.

00:06:33.920 --> 00:06:38.440
I think one of the big reasons is, like, the entry to the language, the barrier entry is, like, pretty easy.

00:06:38.440 --> 00:06:40.760
Like, anybody could learn the language and get into the language.

00:06:40.760 --> 00:06:45.620
And the ecosystem and the libraries around the language, it just makes stuff so much easier to do.

00:06:45.740 --> 00:06:47.740
So that's one of the reasons it's at the top.

00:06:47.740 --> 00:06:49.600
I was also reading on Stack Overflow.

00:06:49.600 --> 00:06:55.640
Somebody shared on Reddit that Python has now most number of asked questions compared to Java now.

00:06:55.640 --> 00:06:57.000
Oh, interesting.

00:06:57.000 --> 00:06:58.680
Probably on Stack Overflow.

00:06:58.680 --> 00:06:58.980
Yeah.

00:06:58.980 --> 00:06:59.660
Nice.

00:06:59.660 --> 00:07:02.400
Somebody shared on Reddit as a discussion.

00:07:02.400 --> 00:07:03.240
Interesting.

00:07:03.560 --> 00:07:03.660
Yeah.

00:07:03.660 --> 00:07:04.700
So if we look here.

00:07:04.700 --> 00:07:05.000
You're going to do this.

00:07:05.000 --> 00:07:07.680
Oh, I want the most popular languages.

00:07:07.680 --> 00:07:08.100
Yeah.

00:07:08.100 --> 00:07:08.680
This is real time.

00:07:08.680 --> 00:07:09.020
Look at that.

00:07:09.020 --> 00:07:09.420
Oh, yeah.

00:07:09.420 --> 00:07:10.300
It's not even close.

00:07:10.300 --> 00:07:12.240
It's not even close.

00:07:12.240 --> 00:07:12.680
It is.

00:07:12.680 --> 00:07:18.860
I remember seeing that when this was back here, back in this area, 2017, and they predicted this.

00:07:18.860 --> 00:07:22.320
And they predicted something, like, a little bit even less than reality.

00:07:22.320 --> 00:07:23.460
And people are like, no way.

00:07:23.460 --> 00:07:25.220
There's no way it's going to just do that.

00:07:25.220 --> 00:07:28.540
And it's even more real wild than this.

00:07:28.540 --> 00:07:29.520
So very, very cool.

00:07:30.140 --> 00:07:31.860
So, yeah, super neat.

00:07:31.860 --> 00:07:36.920
I'm thinking this is just another sign that, you know, focusing on Python is good.

00:07:36.920 --> 00:07:41.740
Muhammad, I think you touched on a lot of reasons why, you know, people get attracted to it because

00:07:41.740 --> 00:07:45.060
it's easy and it's simple and it's clean and they just want to do a small thing.

00:07:45.060 --> 00:07:49.600
But then your small thing, as everyone knows, just gets slightly more complicated and more

00:07:49.600 --> 00:07:50.040
complicated.

00:07:50.040 --> 00:07:55.840
And a lot of times the thing you start with as something simple, it can't do, it can't grow

00:07:55.840 --> 00:07:58.520
to become the thing it eventually needs to become.

00:07:58.520 --> 00:08:01.220
But Python allows you to build way more complex software.

00:08:01.220 --> 00:08:05.000
So you don't get injected into like, well, I have to leave because, you know, I want to

00:08:05.000 --> 00:08:07.440
use threads and I'm using VB6 and it doesn't have threads.

00:08:07.440 --> 00:08:11.820
So I guess I'll go learn C or like, there's not that kind of story that happens around Python

00:08:11.820 --> 00:08:12.620
nearly as often.

00:08:12.620 --> 00:08:16.420
So people just stick in it, like accumulates like a snowball going downhill.

00:08:16.420 --> 00:08:17.100
Yeah.

00:08:17.100 --> 00:08:22.540
So Sam morally brought up that he thinks that some of this might be around the data science

00:08:22.540 --> 00:08:24.740
community coming into Python.

00:08:24.740 --> 00:08:26.220
Oh, I totally agree with that.

00:08:26.220 --> 00:08:26.460
Yeah.

00:08:26.460 --> 00:08:26.900
Yep.

00:08:26.900 --> 00:08:27.020
Yep.

00:08:27.020 --> 00:08:27.940
Very good.

00:08:27.940 --> 00:08:28.280
Very good.

00:08:28.280 --> 00:08:29.080
Okay.

00:08:29.080 --> 00:08:33.700
So yeah, Mohamed, I guess we got your item up next is the first one, right?

00:08:33.700 --> 00:08:34.280
Yeah.

00:08:34.280 --> 00:08:36.760
So the item that I chose was newspaper 3k.

00:08:36.760 --> 00:08:39.780
It's named a newspaper where the original name is 3k.

00:08:39.780 --> 00:08:41.860
It supports Python 3 now.

00:08:41.860 --> 00:08:43.220
It's an amazing library.

00:08:43.220 --> 00:08:44.140
I use it at work.

00:08:44.380 --> 00:08:47.240
I was helping auditors to generate news reports.

00:08:47.240 --> 00:08:51.560
So what they were doing was like going onto internet, finding news reports manually.

00:08:51.560 --> 00:08:57.540
So I was just using my job was to like write a flask web application and using this library

00:08:57.540 --> 00:09:02.940
and Google RSS feeds to find the news articles and then pass those links to this library to

00:09:02.940 --> 00:09:10.360
like generate useful information such as the description, the title, the length of the article and stuff like that.

00:09:10.360 --> 00:09:12.120
So like it helped me a lot.

00:09:12.120 --> 00:09:18.840
And then it'll help us like it helped me a lot in terms of automating the process, which people were doing manually where I was working.

00:09:18.840 --> 00:09:20.120
So this is an amazing.

00:09:20.120 --> 00:09:20.680
Oh, fantastic.

00:09:20.680 --> 00:09:21.300
Yeah.

00:09:21.300 --> 00:09:24.700
So newspaper 3k, it's like web scraping.

00:09:24.700 --> 00:09:25.460
Yeah.

00:09:25.460 --> 00:09:27.000
It's like web scraping.

00:09:27.000 --> 00:09:27.660
Yeah.

00:09:27.660 --> 00:09:31.260
But it has higher level semantics built into it.

00:09:31.260 --> 00:09:32.640
Like you can ask the title.

00:09:32.640 --> 00:09:34.060
When was it published?

00:09:34.060 --> 00:09:41.400
Not the some sort of e-tag weird thing on the server, but like when did the article declare that it was written sort of thing.

00:09:41.400 --> 00:09:41.620
Right.

00:09:41.620 --> 00:09:42.500
And who's the author?

00:09:42.500 --> 00:09:43.020
Yep.

00:09:43.020 --> 00:09:44.220
All sorts of cool stuff in there.

00:09:44.220 --> 00:09:47.040
And the best thing is like it also does the summary of the article.

00:09:47.260 --> 00:09:50.080
Like it's not to like 100%, right?

00:09:50.080 --> 00:09:53.240
But it's just like extractive summary of the article, which is pretty useful.

00:09:53.240 --> 00:10:00.820
Like if you like doing newspaper creation articles and stuff like that for like auditors I was doing this week, they found it really useful.

00:10:00.820 --> 00:10:01.500
Yeah.

00:10:01.500 --> 00:10:03.380
I'm totally going to use this.

00:10:03.380 --> 00:10:03.680
Yeah.

00:10:03.680 --> 00:10:05.780
I'm still one of those RSS readers.

00:10:05.780 --> 00:10:06.720
So, yeah.

00:10:06.720 --> 00:10:07.360
Yeah.

00:10:07.360 --> 00:10:07.880
Yeah.

00:10:07.880 --> 00:10:08.360
Super cool.

00:10:08.360 --> 00:10:16.360
So the API is basically you give it a URL and you say download and then parse and then you have article.authors, article.publishdate,

00:10:17.120 --> 00:10:20.160
article.text, top image, movies.

00:10:20.160 --> 00:10:24.540
If it contains any embedded video, you can even do keyword analysis on it.

00:10:24.540 --> 00:10:25.880
Keywords in summary.

00:10:25.880 --> 00:10:26.360
Yeah.

00:10:26.360 --> 00:10:26.740
Nice.

00:10:26.740 --> 00:10:30.320
But you can do all sorts of things that might be useful to you.

00:10:30.720 --> 00:10:35.820
So I can see that this is a cool input into other things, right?

00:10:35.820 --> 00:10:42.840
Like not just straight consuming the information, but if you're trying to understand trends and stuff, right?

00:10:42.840 --> 00:10:52.160
You could go around and just hit all the main websites and go and say, okay, show us the keywords and show us anything that's new or that is new and also appearing more frequently.

00:10:52.520 --> 00:11:04.520
If I remember correctly with this, there's also things you can do where you can follow, you can point it at a homepage and it'll give you like categories and all the articles in the categories.

00:11:04.520 --> 00:11:07.020
Like you could point it at CNN.com or something like that.

00:11:07.020 --> 00:11:07.440
Yeah.

00:11:07.440 --> 00:11:07.540
Yeah.

00:11:07.540 --> 00:11:08.060
Yeah.

00:11:08.060 --> 00:11:10.140
You can do all sorts of things with this.

00:11:10.140 --> 00:11:13.900
It just makes so much stuff easier compared to using BeautifulSoup.

00:11:13.900 --> 00:11:17.360
Like in BeautifulSoup, you like have to do and go scrape up yourself.

00:11:17.360 --> 00:11:19.320
But like this makes so much stuff easier.

00:11:19.320 --> 00:11:20.080
Yeah.

00:11:20.100 --> 00:11:21.520
So it's just an amazing library.

00:11:21.520 --> 00:11:22.120
Cool.

00:11:22.120 --> 00:11:22.800
Awesome.

00:11:22.800 --> 00:11:24.060
A good one for sure.

00:11:24.060 --> 00:11:25.800
All right, Brian, you're up next, I think.

00:11:25.800 --> 00:11:26.640
All right.

00:11:26.640 --> 00:11:31.700
Well, I'm going to cover something I'm like super excited about, but it's a little niche.

00:11:31.700 --> 00:11:35.280
Anyway, so editable install.

00:11:35.280 --> 00:11:47.880
So when you're working with a package, Python package and developing it, one of the things that I do a lot is I have it open in my editor, but I also have like a window open where I'm running pytest and stuff.

00:11:47.880 --> 00:11:51.960
So I need to, I want the package to be installed and it really helps if you're editable.

00:11:51.960 --> 00:11:59.220
It's editable so that when I make changes in the code, it's instantly appears in my, you know, my test window or whatever.

00:11:59.220 --> 00:12:03.060
And so pip supports this.

00:12:03.060 --> 00:12:07.720
It's a, you say pip install dash E and then give it a path to your local project.

00:12:07.720 --> 00:12:11.500
And apparently you can do a Git repos like this too.

00:12:11.500 --> 00:12:13.020
I don't know how that will work.

00:12:13.020 --> 00:12:13.640
Okay.

00:12:13.640 --> 00:12:16.200
That's interesting because you can do Git for pip.

00:12:16.520 --> 00:12:21.720
And so I guess instead of saying install it as a package installed as edible, but does it like clone it locally?

00:12:21.720 --> 00:12:22.500
What happens there?

00:12:22.500 --> 00:12:23.300
Well, it does.

00:12:23.300 --> 00:12:31.700
I mean, installing from a Git does clone it first, but I don't know what the point would be because you're still, you're not editing it on Git.

00:12:31.700 --> 00:12:34.060
Anyway, I used it for local directory.

00:12:34.580 --> 00:12:35.420
It's a cool feature.

00:12:35.420 --> 00:12:35.420
It's a cool feature.

00:12:35.420 --> 00:12:35.420
It's a cool feature.

00:12:35.420 --> 00:12:37.720
But it didn't.

00:12:37.720 --> 00:12:45.920
And I also like Flit, but Flit, but Flit uses PyProject.automal and pip installable dash E install dash.

00:12:45.920 --> 00:12:52.360
She didn't work with, with PyProject Intel last, this week, last week, really recently.

00:12:52.360 --> 00:13:01.420
So a workaround for Flit was you would have to install a PTH file or with a dash and you have to do, you have to install Flit first then.

00:13:01.420 --> 00:13:11.040
And this is a, if somebody's helping you, but they're not, they're not used to Flit, this is a weird thing to tell them about.

00:13:11.040 --> 00:13:13.620
You can do PTH file or sim length.

00:13:14.020 --> 00:13:22.980
But then there, there came along somebody that said, Hey, a PEP 660 said, Hey, we should do editable installs for project PyProject.automal projects.

00:13:22.980 --> 00:13:26.660
Also, it requires that the backend supports this also.

00:13:26.660 --> 00:13:29.540
So there's changes needed to both pip and Flit.

00:13:29.540 --> 00:13:31.920
However, now we have it.

00:13:31.920 --> 00:13:36.140
So, just recently, oh, let's jump back.

00:13:36.140 --> 00:13:39.080
Pip 21.3 came out.

00:13:39.080 --> 00:13:39.620
When was it?

00:13:39.620 --> 00:13:41.040
October 11th.

00:13:41.040 --> 00:13:42.180
Yeah, very recently.

00:13:42.620 --> 00:13:45.320
Flit 3.4 came out October 10th.

00:13:45.320 --> 00:13:55.040
And with these two things in place, you can now, you have to, you have to regenerate your project file or change it to use 3.4 for Flit.

00:13:55.040 --> 00:13:57.340
But, but editable installs work.

00:13:57.340 --> 00:13:59.440
and so I was playing with it.

00:13:59.440 --> 00:14:00.440
I'm like, this is so cool.

00:14:00.440 --> 00:14:01.980
I love doing this.

00:14:01.980 --> 00:14:06.180
but I was like, how do I get my, dependencies in there?

00:14:06.180 --> 00:14:11.840
So one of the things that, Flit allows and PyProject.automal allows is optional dependencies.

00:14:11.840 --> 00:14:19.200
So the normal dependencies, your project dependencies automatically get installed when you do a, install dashi.

00:14:19.200 --> 00:14:21.400
But the optional ones don't.

00:14:21.400 --> 00:14:23.420
So you have to give it a bracket.

00:14:23.420 --> 00:14:29.040
you know, you have to say like install the, my thing with the optional like test or doc or something.

00:14:29.040 --> 00:14:34.340
Well, the way you do that with, with a local directories, you have to just make sure you put it in quotes.

00:14:34.500 --> 00:14:38.680
So quote dot bracket test, close bracket, close quote.

00:14:38.680 --> 00:14:39.060
Okay.

00:14:39.060 --> 00:14:40.200
Totally obvious.

00:14:40.200 --> 00:14:43.540
Not totally obvious, but, not bad either.

00:14:43.540 --> 00:14:46.400
So, anyway, I'm excited about this a lot.

00:14:46.400 --> 00:14:46.880
Yeah.

00:14:46.880 --> 00:14:47.480
Yeah.

00:14:47.480 --> 00:14:48.120
That's really cool.

00:14:48.120 --> 00:14:48.880
Good find.

00:14:48.880 --> 00:14:50.060
let's see.

00:14:50.060 --> 00:14:50.920
out there.

00:14:50.920 --> 00:14:51.780
Follow up for you.

00:14:51.780 --> 00:14:52.320
Muhammad Okwai.

00:14:52.320 --> 00:14:55.800
Sam says, I still have nightmares of BS4 and feed parser.

00:14:55.800 --> 00:14:56.380
Yeah.

00:14:56.380 --> 00:14:57.000
Yeah, man.

00:14:57.000 --> 00:14:58.860
It's, it's really hard to work with BS4.

00:14:58.860 --> 00:15:02.880
BS4 is great for what it's for, but it's like assembly language is great.

00:15:02.880 --> 00:15:04.700
It doesn't mean I should write in it all the time.

00:15:04.700 --> 00:15:04.900
Right?

00:15:05.000 --> 00:15:05.640
No, I agree.

00:15:05.640 --> 00:15:09.360
And plus, I don't think BS4 does like scraping of dynamic pages for that.

00:15:09.360 --> 00:15:12.640
You like have to use, I forgot the package name.

00:15:12.640 --> 00:15:13.980
Selenium for that.

00:15:13.980 --> 00:15:14.640
Yeah.

00:15:14.640 --> 00:15:15.400
Yeah, you do.

00:15:15.400 --> 00:15:16.560
Okay.

00:15:16.560 --> 00:15:20.440
So the next one I want to talk about here is, is pretty cool.

00:15:20.440 --> 00:15:27.360
And it's, it's an unusual project because if you're going to go work on some Python data

00:15:27.360 --> 00:15:32.240
science, you usually want to go do that in notebooks, but you might just want to think

00:15:32.240 --> 00:15:34.200
about it as kind of like an Excel spreadsheet.

00:15:34.340 --> 00:15:37.760
You might want to walk up to it and go, okay, well, let me just see a grid of this.

00:15:37.760 --> 00:15:38.560
I'll filter it this way.

00:15:38.560 --> 00:15:39.780
I'm going to hide that column.

00:15:39.780 --> 00:15:44.480
I'm going to like remove, you know, only show data with some property and then look at it.

00:15:44.480 --> 00:15:46.360
That would be nice if you could visually do that.

00:15:46.360 --> 00:15:46.600
Right?

00:15:46.600 --> 00:15:51.980
So what we've got here, this one comes to us from, let me make sure to give attribution

00:15:51.980 --> 00:15:53.680
from Tomas Rolo.

00:15:53.680 --> 00:15:55.140
Thank you for sending that in.

00:15:55.140 --> 00:16:00.120
So it's this thing called Mido and Mido is a spreadsheet that helps you complete your Python

00:16:00.120 --> 00:16:00.700
analysis.

00:16:01.280 --> 00:16:06.600
What you do is you create the Mido sheet, which is like an embedded Excel thing, like

00:16:06.600 --> 00:16:09.040
thing or Google sheets thing into your notebook.

00:16:09.040 --> 00:16:10.440
You play around with that.

00:16:10.440 --> 00:16:12.680
And then the cell below, it writes the code.

00:16:12.680 --> 00:16:14.640
So let me see if I can show you an example here.

00:16:14.640 --> 00:16:17.160
So there's this spreadsheet up at the top.

00:16:17.160 --> 00:16:21.420
And as you interact with it, you can see there's this cell down here that says import Pandas

00:16:21.420 --> 00:16:24.540
is PD, Netflix titles equals PD dot read CSV.

00:16:24.540 --> 00:16:28.900
And it gives it a file because you clicked a button and said open CSV for your data source

00:16:28.900 --> 00:16:29.960
in that spreadsheet.

00:16:29.960 --> 00:16:33.380
And then they said, I want to, what do they say?

00:16:33.380 --> 00:16:36.840
They remove some of the columns like rating and type and so on.

00:16:36.840 --> 00:16:40.120
And then create a pivot table off of that.

00:16:40.120 --> 00:16:42.660
And it just writes all the Python code for you below.

00:16:42.740 --> 00:16:44.100
Yeah, I think right in the notebook.

00:16:44.100 --> 00:16:45.560
I kind of really like this library.

00:16:45.560 --> 00:16:50.260
Like it's going to make a lot of stuff easy for like people who are just doing data analysis

00:16:50.260 --> 00:16:53.820
because like what they do most of the time is like they're browsing Stack Overflow to like

00:16:53.820 --> 00:16:59.040
write the find and find the right answer to like solve their problem.

00:16:59.040 --> 00:17:01.260
So like this is going to save them a lot of time.

00:17:01.260 --> 00:17:02.240
I totally agree.

00:17:02.340 --> 00:17:05.920
And if you go and play with it, you'll see a section that says Mido code start.

00:17:05.920 --> 00:17:06.560
Do not edit.

00:17:06.560 --> 00:17:07.420
Mido code end.

00:17:07.420 --> 00:17:08.160
Do not edit.

00:17:08.160 --> 00:17:13.360
A totally reasonable use case for this, which might not be what Mido themselves recommend

00:17:13.360 --> 00:17:17.160
because they want to promote their tool and sort of be part of the story.

00:17:17.160 --> 00:17:22.460
But a reasonable thing to do would be to like embed this, play around with it to get just the

00:17:22.460 --> 00:17:28.260
right thing and then strip out the Mido bits and just leave the fragments that it wrote

00:17:28.260 --> 00:17:28.700
in there.

00:17:28.700 --> 00:17:30.560
Yeah, that would be amazing though.

00:17:30.560 --> 00:17:31.160
Yeah.

00:17:31.560 --> 00:17:31.720
Yeah.

00:17:31.720 --> 00:17:33.220
I mean, you don't have to tell anybody.

00:17:33.220 --> 00:17:34.200
He's just read you to do it.

00:17:34.200 --> 00:17:34.240
Yeah.

00:17:34.240 --> 00:17:34.600
Yeah.

00:17:34.600 --> 00:17:35.280
Yeah.

00:17:35.280 --> 00:17:36.420
No, that would be amazing.

00:17:36.420 --> 00:17:37.120
Yeah.

00:17:37.120 --> 00:17:40.620
And it even does really cool comments on the section.

00:17:40.620 --> 00:17:42.300
So it puts it all into one cell, right?

00:17:42.300 --> 00:17:44.720
Instead of a whole bunch of cells, which I think is reasonable.

00:17:44.720 --> 00:17:51.460
But it does like the comments that it writes are imported Netflix title CSV, pivoted Netflix

00:17:51.460 --> 00:17:58.280
title CSV into data frame two, flattened the column headers, reset the column name and indexes.

00:17:58.280 --> 00:18:00.220
Like those are meaningful comments, right?

00:18:00.260 --> 00:18:02.740
Like this is pretty nice actually what it generates.

00:18:02.740 --> 00:18:05.700
It's not horrible code that you would, you know, run away from.

00:18:05.700 --> 00:18:06.460
That's cool.

00:18:06.460 --> 00:18:07.280
Isn't that neat?

00:18:07.280 --> 00:18:12.460
So people who are really familiar with spreadsheets can kind of ease into data analysis.

00:18:12.460 --> 00:18:13.700
Yes, exactly.

00:18:14.100 --> 00:18:16.280
And they can do like really like easy tasks.

00:18:16.280 --> 00:18:20.920
Like if they want to filter out data instead of like going out and finding out how to use

00:18:20.920 --> 00:18:23.700
Pandas to like filter out data, they can directly use Mito for that.

00:18:23.700 --> 00:18:26.020
So it's going to like save them a lot of time on that.

00:18:26.020 --> 00:18:26.620
I agree.

00:18:26.620 --> 00:18:27.860
I could see myself using this.

00:18:27.860 --> 00:18:28.900
No, no doubt.

00:18:28.900 --> 00:18:31.540
I think Pandas is great, but I don't know it super well.

00:18:31.540 --> 00:18:35.920
And if I know, like I kind of want to do this thing, but I don't really know how I can select

00:18:35.920 --> 00:18:36.620
select to do that.

00:18:36.620 --> 00:18:36.860
Yeah.

00:18:36.860 --> 00:18:37.000
Okay.

00:18:37.360 --> 00:18:37.560
Yeah.

00:18:37.560 --> 00:18:39.760
That's, that's the thing about Pandas.

00:18:39.760 --> 00:18:44.080
Like Pandas is amazing, but there's like so much stuff in Pandas that you don't know top

00:18:44.080 --> 00:18:44.480
of your head.

00:18:44.480 --> 00:18:49.780
So you have to do like searching the documentation, like Google Stack Overflow for that.

00:18:49.780 --> 00:18:52.480
And I can see this library being really useful though.

00:18:52.480 --> 00:18:56.880
Like for that specific reason, like you want to do quick analysis, you use Mito for that

00:18:56.880 --> 00:18:59.700
and boom, you have the code right down generated.

00:18:59.700 --> 00:19:00.280
Yeah.

00:19:00.280 --> 00:19:00.860
Super cool.

00:19:00.860 --> 00:19:04.520
The other thing worth pointing out is you don't have to start your notebook this way.

00:19:04.860 --> 00:19:06.920
You can actually hand it an existing data frame.

00:19:06.920 --> 00:19:11.200
So you could do your work down until you get some data frame generated from who knows where

00:19:11.200 --> 00:19:15.340
and then hand that off to Mito and then have it write the, you know, the next fragment

00:19:15.340 --> 00:19:16.380
of code that you're going to write.

00:19:16.380 --> 00:19:18.000
So I think this is neat.

00:19:18.000 --> 00:19:19.720
I could totally see myself using it.

00:19:19.720 --> 00:19:24.140
There's a cool tutorial you can go through, but I recommend you watch the data slicing with

00:19:24.140 --> 00:19:25.860
Mito 2 video.

00:19:25.860 --> 00:19:27.080
That's right at the top of that.

00:19:27.080 --> 00:19:28.720
It's like, I don't know, a couple of minutes.

00:19:28.720 --> 00:19:29.240
How long is it?

00:19:29.240 --> 00:19:30.500
It's six and a half minutes.

00:19:30.500 --> 00:19:32.800
It'll give you a really good sense of what's happening there.

00:19:33.120 --> 00:19:37.180
The other thing worth pointing out is when you see plans at the top, that means it costs

00:19:37.180 --> 00:19:43.020
money, but there's a individual one that's just totally free forever.

00:19:43.020 --> 00:19:44.740
Works with JupyterLab 2 and 3.

00:19:44.740 --> 00:19:47.160
But if you want like team support, there's a paid thing.

00:19:47.160 --> 00:19:50.800
And given that they're creating this and giving out to the world, it seems fair enough.

00:19:50.800 --> 00:19:51.820
It's something you can plug in.

00:19:51.820 --> 00:19:54.060
You don't depend massively upon it.

00:19:54.060 --> 00:19:57.780
Like I said, you could even like use it to generate your code and then take it back out

00:19:57.780 --> 00:19:58.140
if you want.

00:19:58.140 --> 00:19:58.580
Yeah.

00:19:58.920 --> 00:20:01.780
So pretty cool props to Mito team.

00:20:01.780 --> 00:20:02.680
That's pretty nice.

00:20:02.680 --> 00:20:07.400
Brian, real-time follow-up here from Henry out in the audience.

00:20:07.400 --> 00:20:15.820
Editable installs aren't niche, but since we got editable installs for setup CFG only projects

00:20:15.820 --> 00:20:21.800
in pip 21.1, it's now just supported for arbitrary build backends in pip 21.3.

00:20:21.800 --> 00:20:22.320
Yeah.

00:20:22.320 --> 00:20:23.740
Thanks for the extra info.

00:20:23.740 --> 00:20:28.500
Also, ZDocs says edible installs.

00:20:28.500 --> 00:20:32.080
We probably said editable.

00:20:32.080 --> 00:20:32.640
Yeah.

00:20:32.640 --> 00:20:33.260
Editable.

00:20:33.260 --> 00:20:34.440
When we say editable.

00:20:34.440 --> 00:20:34.720
Editable.

00:20:34.720 --> 00:20:37.940
Indeed.

00:20:37.940 --> 00:20:38.420
Indeed.

00:20:38.420 --> 00:20:39.440
All right.

00:20:39.440 --> 00:20:40.380
Let's see.

00:20:40.380 --> 00:20:42.680
So, Mohamed, you got yours.

00:20:42.680 --> 00:20:44.100
You're up next, right?

00:20:44.100 --> 00:20:44.620
Yep.

00:20:44.620 --> 00:20:46.620
So, I have this library called TroposWriter.

00:20:46.620 --> 00:20:51.240
It's an amazing library and helps you generate CloudFormation templates writing Python.

00:20:51.240 --> 00:20:53.660
So, I do this on my job a lot.

00:20:53.660 --> 00:20:56.200
Like, I work with DevOps people writing CloudFormation templates.

00:20:56.200 --> 00:21:00.980
And sometimes it's hard to write CloudFormation templates because of the formatting part in YAML.

00:21:00.980 --> 00:21:02.360
YAML can get messy.

00:21:02.360 --> 00:21:05.700
Like, you might mess up the format and then your file won't even run.

00:21:05.700 --> 00:21:09.200
And then you'd be, like, hunting down where did I add extra space.

00:21:09.280 --> 00:21:17.380
So, this library solves a specific problem, like, helping you write templates using Python language.

00:21:17.380 --> 00:21:18.540
So, like, this is an amazing library.

00:21:18.540 --> 00:21:22.280
If you like writing a lot of CloudFormation template, I would definitely recommend using this.

00:21:22.280 --> 00:21:23.020
I see.

00:21:23.020 --> 00:21:25.700
So, normally you use an AWS CloudFormation JSON.

00:21:25.700 --> 00:21:26.540
Yeah.

00:21:26.920 --> 00:21:31.500
Most people use JSON and some people, like, so, it's, like, it's up to you.

00:21:31.500 --> 00:21:34.700
Like, it's, you can either write in JSON or write in, like, YAML.

00:21:34.700 --> 00:21:38.000
But let's say you're writing in JSON and, like, say you mess up the format.

00:21:38.000 --> 00:21:40.560
Like, let's say you mess up a bracket or a comma somewhere.

00:21:40.560 --> 00:21:44.540
Then you might be, like, if you don't have the right linter, then you might be, like,

00:21:44.540 --> 00:21:48.000
hunting down the files looking for, like, where did I miss the comma to fix this?

00:21:48.000 --> 00:21:53.480
So, like, when you, like, having large templates, it gets harder to, like, I would say, debug them.

00:21:53.480 --> 00:21:54.000
Yeah.

00:21:54.000 --> 00:21:57.560
Another thing that's nice is JSON is static, right?

00:21:57.560 --> 00:21:58.940
But Python code executes.

00:21:58.940 --> 00:22:01.780
So, you could, like, loop over stuff and say, I'm going to need 10 of these.

00:22:01.780 --> 00:22:05.120
So, let's call it this one, you know, one, two, three, you know, machine one, machine two,

00:22:05.120 --> 00:22:06.320
machine three, or whatever, right?

00:22:06.320 --> 00:22:06.620
Yeah.

00:22:06.620 --> 00:22:08.360
I was going to actually point that out.

00:22:08.360 --> 00:22:09.980
But, like, thank you for pointing that out.

00:22:09.980 --> 00:22:14.820
Like, I was going to say, like, you can actually, like, leverage the power of Python language

00:22:14.820 --> 00:22:16.000
to, like, iterator with stuff.

00:22:16.100 --> 00:22:17.480
Like, let's say you need 10 subnets.

00:22:17.480 --> 00:22:22.060
Instead of, like, writing 10 subnets in JSON, you could just iterate and then produce, like,

00:22:22.060 --> 00:22:22.880
10 subnets.

00:22:22.880 --> 00:22:23.520
Yeah.

00:22:23.520 --> 00:22:24.360
Exactly.

00:22:24.360 --> 00:22:25.180
That's awesome.

00:22:25.180 --> 00:22:25.780
Yeah.

00:22:25.780 --> 00:22:27.260
It just makes stuff so much easier.

00:22:27.260 --> 00:22:27.660
Yeah.

00:22:27.660 --> 00:22:28.200
Yeah.

00:22:28.200 --> 00:22:31.960
You know, you hear all the time with cloud stuff, infrastructure as code or.

00:22:31.960 --> 00:22:32.420
Yeah.

00:22:32.420 --> 00:22:33.680
You know, that kind of stuff.

00:22:33.680 --> 00:22:35.580
And it's just, it's like another layer, right?

00:22:35.580 --> 00:22:36.200
Yeah.

00:22:36.200 --> 00:22:37.240
No, I agree.

00:22:37.240 --> 00:22:38.160
I agree.

00:22:38.160 --> 00:22:38.780
Yeah.

00:22:38.780 --> 00:22:39.420
Very cool.

00:22:39.420 --> 00:22:42.040
Brian, you guys do anything with cloud stuff in your world?

00:22:42.040 --> 00:22:42.820
No.

00:22:42.820 --> 00:22:45.360
It's all hardware.

00:22:45.580 --> 00:22:46.020
Yeah.

00:22:46.020 --> 00:22:47.300
All behind the scenes.

00:22:47.300 --> 00:22:49.060
Well, I mean, we use them.

00:22:49.060 --> 00:22:52.800
We've got a lot of servers and stuff, and we've got a lot of services running, but they're

00:22:52.800 --> 00:22:54.120
all internal.

00:22:54.120 --> 00:22:55.980
We don't use a lot of cloud services.

00:22:55.980 --> 00:23:01.980
Some things are easing up a little bit that we're using because there's a lot of things

00:23:01.980 --> 00:23:05.160
that are just so much easier when you go into the open cloud.

00:23:05.380 --> 00:23:06.380
But there's security issues.

00:23:06.380 --> 00:23:07.380
Yeah.

00:23:07.380 --> 00:23:07.700
Yeah.

00:23:07.700 --> 00:23:08.840
For sure.

00:23:08.840 --> 00:23:09.480
All right.

00:23:09.480 --> 00:23:09.860
Awesome.

00:23:09.860 --> 00:23:12.420
Well, another good one for people doing AWS stuff.

00:23:12.420 --> 00:23:16.880
There's also the AWS cloud SDK or something like that.

00:23:17.100 --> 00:23:17.260
Yeah.

00:23:17.260 --> 00:23:17.880
Cloud SDK.

00:23:17.880 --> 00:23:20.440
What's the relationship with these two things?

00:23:20.440 --> 00:23:21.720
It's pretty similar.

00:23:21.720 --> 00:23:25.360
But it also has support for TypeScript.

00:23:25.360 --> 00:23:27.620
It also has support for Python and TypeScript.

00:23:27.620 --> 00:23:29.640
But it's more like a personal preference.

00:23:29.640 --> 00:23:33.140
So I prefer this library because it's pretty much supported in Python.

00:23:33.440 --> 00:23:35.580
From the start, it was built for Python.

00:23:35.580 --> 00:23:39.840
So that's why I like this library more than AWS cloud CDKs.

00:23:39.840 --> 00:23:42.600
But they both do the same job, basically.

00:23:42.600 --> 00:23:48.800
The only missing part is whenever the cloud CDK generates a template for you, it also allows

00:23:48.800 --> 00:23:51.480
you to deploy directly using the CDKs.

00:23:51.480 --> 00:23:56.680
But what Troposphere does, it allows you to generate the template, but it doesn't allow you

00:23:56.680 --> 00:23:59.400
to deploy it directly on the cloud.

00:23:59.400 --> 00:24:04.300
So you basically have to take the template and put it onto CloudFormation to deploy the

00:24:04.300 --> 00:24:04.720
resources.

00:24:04.720 --> 00:24:05.420
Yeah.

00:24:05.420 --> 00:24:06.280
That seems reasonable.

00:24:06.280 --> 00:24:10.580
You know, we could store those in version control and stuff like that.

00:24:10.580 --> 00:24:13.380
Like, here's what we did to change our cloud setup.

00:24:13.380 --> 00:24:15.100
And here it is in version control, right?

00:24:15.100 --> 00:24:15.460
Yep.

00:24:15.460 --> 00:24:16.080
Nice.

00:24:16.080 --> 00:24:19.480
Well, I think that brings us to our extras, Brian.

00:24:19.480 --> 00:24:20.280
Is that right?

00:24:20.280 --> 00:24:21.440
I guess so.

00:24:21.440 --> 00:24:21.660
Yeah.

00:24:21.660 --> 00:24:22.360
Yeah.

00:24:22.360 --> 00:24:23.040
I think so.

00:24:23.040 --> 00:24:24.400
You got anything you want to share with folks?

00:24:24.400 --> 00:24:29.360
Just that the PyCon 2022 site is there now.

00:24:29.360 --> 00:24:32.740
You can't sign up yet, but there's the 2222 site.

00:24:32.740 --> 00:24:36.080
I've seen some Salt Lake City mountains there.

00:24:36.080 --> 00:24:36.760
Yeah.

00:24:36.760 --> 00:24:38.380
I'm so excited to go to Salt Lake City.

00:24:38.380 --> 00:24:40.420
I assume you're going, hopefully.

00:24:40.420 --> 00:24:42.200
Hopefully, if I can.

00:24:42.200 --> 00:24:42.840
Yeah.

00:24:42.840 --> 00:24:44.960
I definitely have plans to.

00:24:44.960 --> 00:24:47.780
I can't wait to see everybody in person again.

00:24:47.780 --> 00:24:48.080
Yeah.

00:24:48.080 --> 00:24:53.140
It's so interesting to think about where we are with conferences and stuff.

00:24:53.140 --> 00:24:57.180
So, I was just at PyBay, which is really cool.

00:24:57.180 --> 00:25:00.420
And I'll pull up that on the screen here.

00:25:00.860 --> 00:25:03.360
Like, this is where the PyBay conference was held.

00:25:03.360 --> 00:25:07.760
Like, literally in this outdoor food cart area where there's a bunch of cabanas.

00:25:07.760 --> 00:25:11.720
And each cabana had its own TV and its audio video feed.

00:25:11.720 --> 00:25:14.380
So, you could be in groups of like six or seven outside.

00:25:14.380 --> 00:25:16.700
But there was like hundreds of people there, right?

00:25:16.700 --> 00:25:17.540
Which is really cool.

00:25:17.960 --> 00:25:23.060
And I think that that's kind of a template for going forward for a lot of things happening

00:25:23.060 --> 00:25:23.440
these days.

00:25:23.440 --> 00:25:27.500
I've actually invited Grace, who was one of the people who helped put this on the show.

00:25:27.500 --> 00:25:29.460
So, maybe we'll have her tell us more about this later.

00:25:29.460 --> 00:25:34.700
But I don't know how this works into an event as big as PyCon or as big as any of those,

00:25:34.700 --> 00:25:35.120
right?

00:25:35.120 --> 00:25:35.660
Yeah.

00:25:35.660 --> 00:25:37.900
I mean, you got to have a really big outdoor space.

00:25:37.900 --> 00:25:38.840
Would you be awesome?

00:25:38.840 --> 00:25:40.460
Maybe like a theme park?

00:25:40.460 --> 00:25:42.640
Like, I'm going to watch this one from the roller coaster.

00:25:42.640 --> 00:25:45.900
Yeah.

00:25:45.900 --> 00:25:46.400
Awesome.

00:25:46.400 --> 00:25:47.180
Yeah.

00:25:47.440 --> 00:25:50.560
So, Jose out there says, looking forward to attending my first PyCon.

00:25:50.560 --> 00:25:50.940
Yeah.

00:25:50.940 --> 00:25:52.280
It's super fun.

00:25:52.280 --> 00:25:54.740
And Teddy, hey, Teddy says, whoop, whoop, whoop, whoop, whoop, whoop, whoop, whoop, whoop,

00:25:54.740 --> 00:25:55.720
for the PyCon announcement.

00:25:55.720 --> 00:25:56.540
Yeah, that's great.

00:25:56.540 --> 00:25:57.220
How about you?

00:25:57.220 --> 00:25:57.780
Any extras?

00:25:57.780 --> 00:25:59.240
You know what?

00:25:59.240 --> 00:26:01.080
I didn't have any until I did.

00:26:01.080 --> 00:26:04.920
I actually wanted to just point out this tweet that I saw you put out here about.

00:26:04.920 --> 00:26:07.680
Oh, I think I just saw the tweet in the morning.

00:26:07.680 --> 00:26:08.700
Yeah.

00:26:08.700 --> 00:26:10.080
About PyE and V.

00:26:10.080 --> 00:26:10.360
Yeah.

00:26:10.360 --> 00:26:14.200
As having a challenge for Windows users.

00:26:14.200 --> 00:26:16.820
And if you make that the core part of your tutorial,

00:26:16.920 --> 00:26:23.380
then you're starting out putting Windows users who represent, what, 45% of the developers

00:26:23.380 --> 00:26:26.200
or something on the back foot on your tutorial.

00:26:26.200 --> 00:26:27.080
So, yeah.

00:26:27.080 --> 00:26:27.640
What do you think?

00:26:27.640 --> 00:26:31.400
Well, it was just like a comment.

00:26:31.400 --> 00:26:33.380
I saw a tutorial and I was like, why is this?

00:26:33.380 --> 00:26:35.400
I mean, that's not the default way to install Python.

00:26:35.860 --> 00:26:39.160
So, I put this out there and it kind of blew up a little bit.

00:26:39.160 --> 00:26:40.680
Yeah, exactly.

00:26:40.680 --> 00:26:42.680
Yeah, it's got like 121 likes.

00:26:42.680 --> 00:26:45.840
So, anyway, I think that's an interesting thing to add.

00:26:45.840 --> 00:26:50.300
Muhammad, you got any extras as well before we get to the next thing?

00:26:50.300 --> 00:26:52.220
So, my extra is like how to learn Linux.

00:26:52.220 --> 00:26:56.640
So, I read this article a long time ago, but like it's an amazing article for especially

00:26:56.640 --> 00:27:01.260
people who are like getting to Linux world and like learning command lines.

00:27:01.260 --> 00:27:07.620
So, like it talks about how you can use tools like using man pages and like help flags with

00:27:07.620 --> 00:27:07.960
the tool.

00:27:08.040 --> 00:27:11.980
So, like it gives you like info and insights about how do you actually use the tool and

00:27:11.980 --> 00:27:14.520
like exploring wikis and like stack of questions.

00:27:14.520 --> 00:27:18.660
I think it was an amazing article for like beginners who want to like, we're just getting

00:27:18.660 --> 00:27:20.680
into like command line or Linux world.

00:27:20.680 --> 00:27:21.600
That's cool.

00:27:21.600 --> 00:27:22.140
That's my experience.

00:27:22.140 --> 00:27:28.000
I find, I found the Linux command line macOS a little bit less because there's often an

00:27:28.000 --> 00:27:33.300
alternative, but certainly the Linux where the sole access to it was through an SSH.

00:27:33.300 --> 00:27:35.880
I found it intimidating when I first got into it.

00:27:35.880 --> 00:27:40.320
No, I actually, I actually got into Linux right after my first semester of college.

00:27:40.320 --> 00:27:41.660
I was just trying it.

00:27:41.660 --> 00:27:42.080
It was fun.

00:27:42.080 --> 00:27:46.020
And when I just took command line, I was like, wow, you can do so much in command line.

00:27:46.020 --> 00:27:47.960
And that rest is history.

00:27:47.960 --> 00:27:52.040
Like I've been using Linux for like, I would say five years now, but now I'm recently switched

00:27:52.040 --> 00:27:55.400
to macOS because of my work and I'm having hard time managing windows now.

00:27:55.400 --> 00:28:00.960
I guess I had trouble switching to PCs because I, oh my, it was in Solaris when I was

00:28:00.960 --> 00:28:01.500
in college.

00:28:01.500 --> 00:28:02.920
Oh, interesting.

00:28:02.920 --> 00:28:05.360
I remember walking by the Solaris going, oh, those are different.

00:28:05.360 --> 00:28:08.520
Very interesting.

00:28:08.520 --> 00:28:09.040
Yeah, cool.

00:28:09.040 --> 00:28:12.840
But no, this will be super helpful, especially to a lot of folks out there who don't work

00:28:12.840 --> 00:28:13.100
with a lot.

00:28:13.100 --> 00:28:17.160
I mean, now I'm totally comfortable with Linux, but I remember the learning experience.

00:28:17.160 --> 00:28:18.820
So I'm sure this will help others as well.

00:28:18.820 --> 00:28:19.320
Nice.

00:28:19.320 --> 00:28:19.640
All right.

00:28:19.640 --> 00:28:22.600
Well, I believe it is time for a joke.

00:28:23.080 --> 00:28:29.260
And speaking of real conferences, this is something that I, we've done before at the PyCon's.

00:28:29.260 --> 00:28:33.840
We did this at PyCon in Portland with the Portland Art Museum there.

00:28:33.840 --> 00:28:34.520
It was really fun.

00:28:34.880 --> 00:28:37.980
And it's the classic programmer paintings.

00:28:37.980 --> 00:28:39.040
I love these.

00:28:39.040 --> 00:28:39.320
Yeah.

00:28:39.320 --> 00:28:39.640
Yeah.

00:28:39.640 --> 00:28:47.200
So the idea is you take a legitimate historical, maybe 400 year old piece of fine art, and then

00:28:47.200 --> 00:28:53.340
you ignore the actual name and you put your own sort of techie interpretation upon it.

00:28:53.560 --> 00:29:03.120
So here, this one, we've got this balloon taking off into like a dark, cloudy red sky,

00:29:03.120 --> 00:29:06.200
and two wolves just like sort of forlorn watching it go.

00:29:06.200 --> 00:29:08.760
The ground is kind of on fire, but it's also snowy.

00:29:08.760 --> 00:29:09.900
I don't really understand that.

00:29:09.900 --> 00:29:10.100
Yeah.

00:29:10.500 --> 00:29:14.200
But that, you know, this is some proper painting that who knows what it is, right?

00:29:14.200 --> 00:29:19.680
But if you look at the title, the title is Alphabet Cancels Loon, right?

00:29:19.680 --> 00:29:23.660
Loon was their project where they'd put balloons up over places without much internet, and that

00:29:23.660 --> 00:29:25.000
would beam down internet.

00:29:25.000 --> 00:29:29.060
So here's like the final balloon balloon going off into the smoky sky.

00:29:29.060 --> 00:29:35.820
It's in Ziedislaw Besinski, 1979, oil on Masonite.

00:29:35.820 --> 00:29:36.480
Beautiful.

00:29:36.480 --> 00:29:38.320
Alphabet Cancels Loon.

00:29:38.320 --> 00:29:43.260
So we used to go around to the art museum there, and we would like at the conference

00:29:43.260 --> 00:29:44.980
or it would have like a dinner there or something.

00:29:44.980 --> 00:29:50.100
We'd just go around and like try to one-up each other on doing this to like real paintings.

00:29:50.100 --> 00:29:50.560
It was fun.

00:29:50.560 --> 00:29:54.820
But this whole classicprogrammerpaintings.com, endless joy right there.

00:29:54.820 --> 00:29:58.620
I'm definitely going to check these guys out.

00:29:58.620 --> 00:30:00.840
Yeah, you can spend a long time going through.

00:30:00.840 --> 00:30:03.440
It's been around for a while, so it's good stuff.

00:30:03.440 --> 00:30:06.400
I'm chuckling at some right now.

00:30:06.400 --> 00:30:07.460
I got to stop looking at it.

00:30:07.460 --> 00:30:07.980
Yeah, exactly.

00:30:07.980 --> 00:30:12.780
I'm strongly resisting the urge to just scroll through them because we're doing a show.

00:30:12.780 --> 00:30:13.660
I'll do it later.

00:30:13.660 --> 00:30:14.640
Thanks, Michael.

00:30:14.640 --> 00:30:15.040
Yeah.

00:30:15.040 --> 00:30:15.820
Yeah, you bet, Brian.

00:30:15.820 --> 00:30:16.660
Thanks for being here as always.

00:30:16.660 --> 00:30:18.000
And Mohamed, thank you for joining us.

00:30:18.000 --> 00:30:18.460
It's been great.

00:30:18.460 --> 00:30:20.640
And it was a pleasure to be here.

00:30:20.640 --> 00:30:21.220
Yeah.

00:30:21.220 --> 00:30:21.720
Thank you.

00:30:21.720 --> 00:30:22.380
You're welcome.

00:30:22.380 --> 00:30:23.480
Bye, everyone out there.

00:30:23.480 --> 00:30:24.260
Bye, everyone.

00:30:24.800 --> 00:30:26.220
Thanks for listening to Python Bytes.

00:30:26.220 --> 00:30:29.020
Follow the show on Twitter via at Python Bytes.

00:30:29.020 --> 00:30:32.160
That's Python Bytes as in B-Y-T-E-S.

00:30:32.520 --> 00:30:35.020
Get the full show notes over at Python Bytes.fm.

00:30:35.020 --> 00:30:39.940
If you have a news item we should cover, just visit Python Bytes.fm and click Submit in the

00:30:39.940 --> 00:30:40.380
nav bar.

00:30:40.380 --> 00:30:42.500
We're always on the lookout for sharing something cool.

00:30:42.500 --> 00:30:47.200
If you want to join us for the live recording, just visit the website and click Livestream to

00:30:47.200 --> 00:30:49.920
get notified of when our next episode goes live.

00:30:50.120 --> 00:30:54.320
That's usually happening at noon Pacific on Wednesdays over at YouTube.

00:30:54.320 --> 00:30:57.720
On behalf of myself and Brian Okken, this is Michael Kennedy.

00:30:57.720 --> 00:31:01.420
Thank you for listening and sharing this podcast with your friends and colleagues.

