Learn Python with Talk Python's 270 hours of courses

#346: 20 Recommended Packages in Review Transcript

Recorded on Wednesday, Nov 24, 2021.

00:00 Do you enjoy the final two questions I always ask at the end of the show?

00:03 I think it's a great way to track the currents of the Python community.

00:07 This episode focuses in on one of those questions.

00:10 What notable PyPI package have you come across recently?

00:13 Not necessarily the most popular one, but something that delighted you and people should know about.

00:18 Our guest, Antonio Andrade, put together a GitHub repository cataloging guests' response to this question over the past couple of years.

00:26 So, I invited him to come share the packages covered there.

00:30 We touch on over 40 packages during this episode, so I'm sure you'll learn a few new gems to incorporate into your workflow.

00:37 This is Talk Python to Me, episode 346, recorded November 24th, 2021.

00:55 Welcome to Talk Python to Me, a weekly podcast on Python.

00:59 This is your host, Michael Kennedy.

01:00 Follow me on Twitter where I'm @mkennedy, and keep up with the show and listen to past episodes at talkpython.fm.

01:07 And follow the show on Twitter via at Talk Python.

01:10 We've started streaming most of our episodes live on YouTube.

01:13 Subscribe to our YouTube channel over at talkpython.fm/youtube to get notified about upcoming shows and be part of that episode.

01:21 This episode is brought to you by Coiled and TopTal.

01:25 Please check out their products during their segments.

01:27 It really helps support the show.

01:29 Antonio, welcome to Talk Python to Me.

01:32 Hey, Michael.

01:33 Thank you for having me.

01:35 It's fantastic to have you here.

01:36 You've done some really cool work to highlight some of the guests and some of the things that they've covered.

01:43 And so I feel like this is going to be a very meta episode where we reflect back on what has come before and what people have recommended.

01:51 And, you know, we're coming up.

01:53 It's not quite December yet, but we're coming up on the end of 2021.

01:57 And so maybe a look back is, you know, in order.

02:00 Yeah.

02:00 I mean, I mean, I think from my point of view, you know, I think it's a way to celebrate the people and celebrate those small, you know, packages.

02:08 People are highlighting and they have of each of the podcasts.

02:12 I think it's lovely, you know, I think they deserve to have a place somewhere where, you know, everyone can contribute and you can go back to history and, you know, remember all these, you know, two point to three point, you know, and, you know, how things have been evolving.

02:27 It's just amazing, really.

02:28 Yeah, I agree.

02:30 Thank you.

02:30 People have asked, like, hey, is there a way I can see answers to those last couple of questions at the end of the show where I ask people for a notable PyPI package or what editor they're using?

02:40 And it'd be interesting to see, especially in the editor, changing over time, stuff like that.

02:46 But at least on the notable PyPI package, you've put together a really cool GitHub repository highlighting, at least going back through 2021, mostly, I would say, what people have covered.

02:57 So during this episode, we're going to dive into and discuss the highlights of the notable packages that the other guests have put out there.

03:05 So that's going to be great.

03:06 Yeah.

03:06 Thank you.

03:07 That's awesome.

03:07 Great.

03:08 All right.

03:09 Before we get into that, though, tell folks how you got into programming Python.

03:12 Okay.

03:13 So try to make it quickly.

03:15 You know, I grew up in a really humble family.

03:18 But, you know, we have tons of education and Legos, you know.

03:22 So, see, the first time I managed to have something, I can really call it that was mine.

03:29 I had to do it when I entered to the university.

03:31 I still have it, you know.

03:33 Oh, what is that there?

03:34 Is that a Texas instrument or an HP or what is it?

03:36 No, it was an HP, you know.

03:38 At the time it was super cool, you know.

03:40 So, anyway, the point is, I started at the university.

03:45 I studied electronic engineer.

03:48 And the person who is my wife now, she was studying civil engineer.

03:52 Okay.

03:53 So, they used to use these old Casio calculators, you know.

03:57 And they used to have a lot of programs running there.

03:59 Yeah.

04:00 They were not quite computers, but they were almost computers.

04:02 Yeah, yeah.

04:02 I mean, you could download.

04:04 Exactly.

04:05 You can download the whole application.

04:06 And what happened is, you know, to calculate a breach, a building, or whatever, they used

04:10 to use the calculations.

04:11 So, I decided to, you know, try to, you know, get some love out of this and, you know, start

04:18 translating all these programs, you know, from this Casio to this HP.

04:25 And, you know, helping the, you know, the other guys in the university.

04:29 And, you know, that helped me a lot to get, you know, really deep into, right?

04:34 So, straight away, you know, start programming Visual Basic.

04:39 I, then in the same university, you know, I have done Assembly, C, C++.

04:46 Yeah.

04:47 You know, the whole thing, right?

04:49 So, more recently, you know, once I start, you know, after graduation, I have tons of experience

04:58 with, you know, the languages like, you know, C-Chart.

05:01 And, and recently, you know, with, recently, Python, you know, and tons others, you know,

05:07 I just love this, really.

05:09 It's just an amazing way of do end-to-end.

05:13 Whatever you want to do, just, you know, you can make it super quickly.

05:16 Yeah.

05:17 It's, it's all about empowering people to build things quick.

05:20 Yeah, exactly.

05:20 And get something accomplished, right?

05:21 Yeah.

05:22 Fantastic.

05:23 Well, I can't even imagine programming from the old Casios to the old HPs, because they

05:28 were really interesting to program.

05:30 They were not, like, super high-level languages.

05:31 Oh, no, exactly.

05:32 You know, but, you know, in terms of, you know, the for loops and the inputs and the logic,

05:36 and, you know, once you get the stuff, then it's easy to switch between languages, right?

05:42 I mean, this has been amazing.

05:43 And what is funny is, you know, the way how I went through Python, you know, that was around,

05:51 I remember quite clear, you know, I was, I was finishing my master's dissertation.

05:56 I was doing some deep learning work at the time.

06:02 Once I was finishing, the, one of my colleagues, you know, he told me, yeah, Google just released

06:10 something called TensorFlow.

06:11 I said, yeah, I went there, look at the, at the webpage, you know, I couldn't understand

06:18 the syntax, you know, I was, what is this?

06:20 And this, you know, my colleague said, no, that's Python, you know, I was like, yeah, but,

06:25 you know, TensorFlow, you know, the API is a bit different, you know?

06:31 Anyway, so I decided, I remember like two weeks after that, I was, I took a flight from

06:37 Moscow to Barcelona and on my flight, I installed the application, you know, to learn Python.

06:43 And that's it, you know, once I landed, I could do the one-to-one translation, you know?

06:48 So after that moment, that's it, you know, I mean, everything, backhand, you know, pushing

06:54 also front end, doing everything, beautiful integrations, you know?

06:58 And what I think is the most important is the time you save, you know, that is, is, is,

07:03 it's just amazing.

07:04 You know, if you want to get out an MVP, a minimum variable product, you know, if you want to

07:09 prove value, I think Python is probably the best way how to do it.

07:14 In a couple of weeks or days, you can get out something out and prove it.

07:18 It doesn't work, you know, just fail fast.

07:21 Don't wait one year, right?

07:22 You know, to, to, to show the value.

07:24 Then, you know, you can improve as you go.

07:26 So it's just amazing.

07:27 Yeah.

07:28 Fantastic.

07:29 I've been doing a ton of programming lately, rewriting some e-commerce stuff and other

07:33 things.

07:33 And yeah, I'm, I've been enjoying being deep in the code lately and just appreciating how

07:38 quick you can move.

07:39 That's fantastic.

07:39 All right.

07:40 So are you ready to dive into these things?

07:42 There's no real format other than just the chronological order that it came out, right?

07:47 Yeah, let's go.

07:48 All right.

07:48 Well, maybe quickly introduce your GitHub repo that you created that obviously is going

07:54 to be in the show notes.

07:55 People, I'm sure you wouldn't mind if other people contributed content back to the repo,

08:00 right?

08:01 Absolutely.

08:02 You know, I mean, if, if you, you know, I see what I'm doing right now is, you know, usually

08:06 I listen to the podcast when I'm commuting work to work.

08:10 So I, I wait to, to listen everything, to understand the context and everything, and then go there

08:15 and, you know, have a branch and do the, do the modification for the, for the, for the

08:24 new episode.

08:24 If you guys want to feel free, you know, to do a fork at the new episode and, and, you

08:31 know, and contribute, you know, stray away.

08:33 I will be more than happy to, you know, to, to, to get the compliment.

08:37 And, you know, if anyone can help me to go back to the years, it's fine.

08:40 I'll promise.

08:41 I will put it because, you know, I have most of the tools is automated.

08:45 You know, I'll, it's, it's all about, going back and, you know, doing some cleanup.

08:51 Right.

08:51 So as the, as the, you know, you, you, you publish the, the, the, the, the, the text,

08:57 you know, the transcripts, the transcripts.

08:59 Yeah.

08:59 Yeah.

09:00 So I'm trying to use a bit of, you know, NLP, you know, of, you know, to try to get what's

09:04 the package, you know, having this, that's really one of the reasons why also I try to do it.

09:08 Right.

09:08 Try to get it.

09:09 It's not that right, but you know, if anyone wants to, you know, do this cool stuff, why not?

09:13 Good learning.

09:14 Yeah, sure.

09:15 The, actually the, the transcripts are all published to GitHub just as text files.

09:21 So if people want to go at them, they don't have to scrape the web or anything.

09:23 They can literally just fork it and, and pull them down.

09:26 Maybe I'll put that in the show notes as well.

09:28 Yeah.

09:29 So you created this repository and basically for each episode, at least the recent ones you

09:35 go through and you highlight what is the episode when it was published, who was the guest, those

09:39 kinds of things.

09:40 But the whole point is to show, well, what did that guest answer those guests?

09:45 If it's a set of panelists who, what did they answer to the notable PI PI?

09:50 Package that people should check out.

09:52 Exactly.

09:53 You know, and, and, and then it's there, you know, we try to keep a small description, you

09:57 know, I mean, the, and the, and the, and the links for the, for those packages.

10:01 So great.

10:02 So should we.

10:03 Yeah.

10:03 Let's, let's dive in.

10:04 So episode 342 was the recent one published.

10:10 We actually recorded some between we've recorded them, but not released beyond that.

10:15 So as far as like what's on the podcast is concerned, 342 at the time of recording is the most recent

10:22 one.

10:22 That was Guy Tallarico, talking about Python and architecture and construction.

10:28 All right.

10:28 What, what, what he, what did he give a shout out to?

10:30 You know, I mean, Pythonics, you know, I, I know this is, you know, it's quite famous, that package, you know, many people are using it.

10:39 I didn't know about it, you know, so it's, it's pretty cool.

10:41 Right.

10:42 So you want to do an automation for something, you know, let's say that you have a small, Arduino or Raspberry.

10:51 You want to, you want to, keep something in the house, you know, I don't know if you detect something on your camera, go on, you know, turn on the lights or whatever, you know, or if this stock market and in these indicators, you know, this is happening, go and sell and buy, you know, it's perfect.

11:07 It's just amazing.

11:08 Yeah.

11:08 Oh yeah.

11:09 This is really neat.

11:10 So it's like a graphical designer for, running code in a Docker container or on Raspberry Pi.

11:18 Yeah.

11:20 Or you run it there and then it writes, does it actually write Python code?

11:23 I don't know.

11:24 I haven't tried it, but.

11:26 I haven't tried, you know, because, you know, I was just listening yesterday.

11:29 So what I will say that, you know, it seems to be quite visual.

11:32 You drag and drop seems to be that you drag and drop make things.

11:36 And then, you know, the whole logic may be there.

11:38 So we need to explore it.

11:40 You know, I, I think this is, this can do pretty cool stuff at home.

11:43 You know, I don't know, like Halloween, you know, go to take the face, you know, have your, whatever, your Chromecast.

11:48 So, you know, just talking and you know, you're.

11:51 When the kid comes in a costume.

11:53 Exactly.

11:53 See, see what kind of costume it is and pick the right video to play for them.

11:57 That'd be awesome.

11:57 Exactly.

11:57 Yeah.

11:58 So Pythonic graphical Python programming for trading and automation.

12:02 Yeah.

12:03 I love it.

12:04 I love it.

12:04 We always need more graphical type of stuff in Python.

12:08 I think of the places where it could get a little more strength and support and features, building UIs and doing things in a UI oriented way.

12:16 I'm all for it.

12:17 All right.

12:17 Yeah.

12:17 That's an excellent one.

12:18 Okay.

12:18 Yeah.

12:19 Then exactly.

12:20 Then, then, then, then the previous one was, back.

12:23 So he was, he was, telling us about the U-map, uniform manifold approximation and projection, you know, in a nutshell is, you know, whatever we have so much data in so many dimensions, you know, usually, you know, I work with a real time multidimensional real time data and whatever you need to analyze it, whatever you need to understand, you know, how they cluster together.

12:46 This is beautiful.

12:48 You know what I mean?

12:48 just load your data sets, run it, and then you can have a dimensional, reduction on the data set and you can plot it and you can see things you weren't able to see before on the data, you know, also plotting, you know, you don't need to plot the, you know, whatever millions records, you know, you will just do the dimension reduction.

13:10 And, and it's, then it's easy to understand a bit more about the data.

13:14 It's just beautiful.

13:14 For those out there on the data science, you know, I didn't know about this one either.

13:18 Yeah.

13:19 I didn't know about this one either.

13:20 This looks fantastic.

13:21 Uniform manifold approximations and projections.

13:25 Yeah.

13:25 This is not a world that I, I actually get a chance to spend a whole lot of time in, but yeah, it sounds to me like a little bit of the world that you're working in though.

13:34 This, this is the thing that's, that's relevant, right?

13:37 Exactly.

13:37 Yes.

13:38 Yeah.

13:38 Cool.

13:39 So you get all these like nice visualizations of the data or like how it's grouped and, and a lot of, nice visual aspects like color plus.

13:48 Exactly.

13:49 So you can, you can be, so basically you can get clusters out of your data and from out of there, then is when you start working with the data.

13:56 Right.

13:56 So I don't know, you want to detect something out of a lot of noise so you can really, you know, separate noise from the data, for example.

14:05 Or if you want to classify a bunch of tech, so you want to do something different, you know, and, and find other ways how to see these in a smaller data sets in, in 2d data sets, you know, that's, that's the way it just makes it.

14:20 Yeah.

14:20 Very cool.

14:21 And of course, this is a recommendation from Bex Choychev who talked, you know, he's all into Kaggle and Kaggle competitions.

14:29 He talked about 25 pandas functions you didn't know existed with probability 0.8, which I thought was a nice caveat.

14:36 He was, yeah, the title was really good.

14:38 The title was really good.

14:40 Yeah.

14:41 So this is a perfect follow on to like, you've got this data and a data frame and, and let's try to understand it a little bit.

14:46 Right.

14:47 This portion of Talk Python to Me is brought to you by Coiled.

14:52 You already love using Python to build your data science projects, but training models and working with tons of data on your laptop is limited.

14:59 To say the least, but that does not mean you need to learn new cloud APIs or buy expensive and hard to acquire hardware.

15:06 Just use coiled.io.

15:08 Coiled supercharges the tools you already use for scale and performance.

15:12 So you can use Python for your ambitious problems.

15:15 In the words of Eric Ma, principal data scientist at Moderna, quote, quite literally burst into the cloud from your laptop.

15:22 Everything I've been dreaming of since grad school, unquote.

15:25 With Coiled, you really can burst into the cloud with a few clicks and stay focused on solving the important problems.

15:31 Adding Coiled to your project takes less than one minute.

15:34 So what are you waiting for?

15:36 Get started today.

15:37 Just visit talkpython.fm/coiled or click the link in your podcast player show notes.

15:41 Number 340.

15:46 This was Anthony Shaw.

15:48 Anthony, we love you, man.

15:50 You know?

15:50 Yeah, man.

15:51 Thank you so much for everything you guys are doing.

15:53 It's just amazing.

15:54 Yeah, he's doing tons of good work.

15:56 So what did he talk about?

15:58 Great.

15:58 So, you know, so he told us about this package, three packages.

16:04 So the first one was the Tortoise ORM.

16:07 This one is an easy AsyncIO ORM.

16:12 I try.

16:14 It's pretty, I mean, the API is really simple and clean, you know?

16:20 And this is what stands out from the rest of the ORMs, which are currently starting to support AsyncIO.

16:27 So he deserves a good try, okay?

16:31 Yeah, I think so, too.

16:32 It's certainly simple to use, right?

16:35 It's if you've used Django ORM or if you've used SQLAlchemy, it should feel really natural to that.

16:41 Exactly.

16:42 And then whenever you do the work, you know, just I guess it's worth pointing out, this looks like an active record design pattern ORM,

16:51 where you operate directly on the documents as opposed to a unit of work, which is SQLAlchemy,

16:56 where you, like, create a session, do a bunch of stuff, and then save it.

16:58 So you would go, like, if you created a tournament object, you could just say tournament.save,

17:02 but because it's Async first, you say await tournament.save.

17:06 If you want to create one, you say await tournament.create, and you pass the data.

17:10 Or same thing for the queries and so on.

17:13 So if you're using any framework like FastAPI or Cort to make Flask Async or anything that's basically Async first, right?

17:23 Async is almost entirely about scaling the time you wait.

17:27 Exactly.

17:27 Not trying to do stuff in parallel in Python for the moment, at least.

17:30 And databases are where we wait, right?

17:32 We wait on databases all day.

17:33 That's, like, what a lot of apps just do.

17:35 Exactly.

17:36 And more in that example, you know, it's using SQLite.

17:39 So here you go.

17:41 Simple, clean, beautiful API, ready to go.

17:44 You know, it's just pretty neat.

17:47 Yeah, awesome.

17:48 So Anthony wasn't content to suggest just one.

17:51 Oh, just three of them.

17:52 Let's don't dive into the next two.

17:54 But, you know, let's just probably, you know, quickly on top of this, you know,

17:57 why not to use the same idea and apply this for MongoDB?

18:01 Here you go.

18:02 So, simple.

18:04 So this, I'm not sure how to pronounce, Beanie?

18:08 Beanie.

18:09 Beanie?

18:09 Yeah, there you go.

18:10 I think Beanie.

18:11 Yeah.

18:11 So that's something, you know, I will suggest to the people, you know, who are, you know, the owner of the repositories.

18:17 Try to put, you know, how they want us to, you know.

18:22 How about this, a little play button just next to the name where you just hit play

18:27 and it's the creator of the project saying the name.

18:30 Here you go.

18:31 I think that would be great.

18:32 Because sometimes it's clear, but sometimes it's not clear what part should be an acronym

18:39 and what part should be tried to say out.

18:41 Like, theoretically, this could be Beanie, IE.

18:44 You know, and it's not.

18:46 It's Beanie, I believe.

18:46 But, you know, you don't know that all the time if I look at it, right?

18:50 So have another play button.

18:51 Yes, I'm all for this.

18:52 I often criticize places saying if you are anything to do with graphs, UI, whatever,

18:59 you should have a picture on your site because a lot of them don't.

19:03 And I think this is another good suggestion.

19:04 Let's have some.

19:05 Yeah, the pictures, guys, you know, put something, please, you know, it makes so visual.

19:09 And if you don't have the small logo, you know, I don't know, maybe a small screenshot

19:13 of, you know, animation of how it works.

19:15 It helps a lot, you know.

19:17 Exactly.

19:18 Tony out in the audience.

19:20 He says, I agree regarding the pronunciation.

19:22 All right.

19:23 We already got three votes for this idea.

19:24 I do think it helps that the icon is a hat, like the Beanie hat.

19:28 So I think that's going to help.

19:29 So there will be a challenge for our GitHub team, you know.

19:33 Let's see how quickly they can release such a, you know, small enhancement.

19:37 Let's see.

19:37 Let's give it a try.

19:38 Yeah.

19:38 So Beanie is an ODM, like an ORM.

19:42 But when you don't have relations and you have documents, you change the R to a D.

19:45 It's an asynchronous Python ODM for MongoDB based on motor, which is MongoDB is async Python

19:53 library and Pydantic.

19:54 So if you want to talk to MongoDB using async and await and you want your things, you exchange

20:00 with it to be Pydantic models.

20:02 All of that sounds great to me.

20:03 Beautiful.

20:04 Yeah.

20:04 So it looks really cool.

20:05 I'm using MongoDB, of course, for Talk Python and Talk Python training, all those things.

20:09 And I'm using Mongo Engine.

20:11 I would certainly consider using this for it, but I'd already created it, you know, five

20:17 years before it existed.

20:18 So that's one of the problems, right?

20:19 Exactly.

20:20 You know, I mean, but for someone who is starting, Anthony is recommending it for a reason.

20:25 So I will go and take a look at that.

20:27 Yeah.

20:28 And just sort of foreshadowing in a couple of episodes, I'm going to have Roman Wright,

20:34 the creator of Beanie on here to talk about Beanie.

20:36 So we'll dive more into it in a future episode.

20:38 Yeah.

20:39 Yeah.

20:39 Yeah.

20:39 So we'll get, we'll get into the details.

20:41 All right.

20:42 And Anthony.

20:42 Exactly.

20:43 The last one, you know, so it's pretty good, you know?

20:47 So basically it's SQL host scanner.

20:50 So I'm dictionary attack tool.

20:53 So you can pass a filter of series of passwords, you know, and lend and give it a try.

21:00 Allow it to find vulnerabilities, you know, it's just amazing.

21:05 This type of tools, you can't imagine how useful starting the enterprise, you know, there

21:10 are a ton of them.

21:11 And then running every single day, every single seconds, try to, you know, security teams

21:16 trying to hack themselves.

21:17 Hundreds of databases.

21:18 Trying to find out what is going on.

21:20 Oh, yeah.

21:21 Yeah.

21:21 Hundreds of them set up.

21:22 And who knows, who knows who set them up and if they configured them correctly.

21:27 And it'll just hammer away for known usernames and passwords and defaults and all kinds of

21:33 stuff.

21:33 Right.

21:34 And then list out the ones that it finds, which is good.

21:37 Great.

21:37 Yeah.

21:38 Very good.

21:38 Okay.

21:39 So that was the three from Anthony Shah.

21:41 Thank you, Anthony.

21:43 And then we had the Gido Van Rossum and Mark Sagan to talk about performance.

21:49 Yeah.

21:50 I'm guessing, you know, I mean, I'm not sure Gido will really and Mark will suggest any

21:57 package.

21:58 But, you know, I really love seeing, you know, both them joining and sharing the job they're

22:03 doing.

22:03 I think it's amazing.

22:05 You know, I have a question, you know, for them and also Anthony.

22:09 How, what they're doing, you know, it will work all together, you know, times will say,

22:14 but.

22:15 Right.

22:15 I wouldn't appreciate the work.

22:16 Right.

22:16 Because what Mark Shannon and Gido are working on is different than Pidgin and what Anthony

22:21 Shah is working on, which is different than Sam Gross's work on Cinder and so on.

22:29 Not Cinder on the No Gill, sorry.

22:31 Cinder is done by Dino.

22:33 So there's just all these projects of people doing stuff.

22:36 It'd be great if they could, you know, find some common ground to amplify that.

22:40 Exactly.

22:40 You know, whatever they can do is really welcome.

22:43 I'm sure the community will appreciate it.

22:45 And each of them have a different use cases and they will hit a limit.

22:49 So let's see.

22:50 You know, whatever support they need, you know, community is here really to help.

22:54 Yeah.

22:54 Right on.

22:55 All right.

22:56 Next, back in October, middle October, we had episode 338 using CI Buildwheel to manage

23:03 the scikit HEP packages.

23:06 And I learned a bunch of stuff about just how to properly build Python packages from

23:11 Henry Shiner.

23:12 The guest there, that was a lot of fun.

23:14 What was the thing he recommended?

23:15 Right.

23:16 So Plotex.

23:17 Guys, you know, if you love CLI, you know, like I do, go and do everything there on your

23:24 console.

23:25 Period.

23:25 You know, you want to plot time series, you want to plot your stock market, you know,

23:30 you want the price and you want to do extra things.

23:33 That's the tool.

23:34 I didn't know.

23:35 You know, it's so, so cool.

23:36 This is crazy.

23:37 So cool.

23:38 Yeah.

23:39 100% Python.

23:40 Python.

23:40 And basically it plots directly to your terminal.

23:43 So if you wanted to do something like matplotlib, even the syntax that says is similar, if you

23:48 want like a bar graph or some bar, some like distribution curves or even a picture, it will

23:56 literally put that in the terminal.

23:57 So this is awesome.

23:58 So this is awesome.

24:00 Do you have some kind of use for this with the projects that you're doing where you've got

24:04 to look at data?

24:05 Yeah.

24:05 Usually, you know, I mean, even when you are logging things, you know, if you want to do

24:10 full debugging of something and you want to understand what is going on and you want to

24:15 show it right there, you know, this is beautiful.

24:17 You know, you can understand, I don't know, some data.

24:21 So you don't need to really get out of your application and go to, I don't know, notebook

24:26 and play there.

24:27 Yeah.

24:27 You can enable that flag for you to boot it and stay away, you know, right there.

24:32 It's just amazing, really.

24:33 I mean.

24:34 Yeah.

24:35 On over on Python bytes, we spoke about this thing called here's another one where we need

24:41 the pronunciation.

24:42 Yout, yout, J-U-T.

24:44 I don't know.

24:45 And what it does is this one will let you take the output of a, basically take a Jupyter

24:52 notebook and let you put that into, basically view the notebook in the terminal, which is

25:00 pretty awesome.

25:01 So this one is like, but you don't really get the graphs and stuff of that, right?

25:05 You get like.

25:06 Yeah, that's exactly.

25:06 But at least you see the cells.

25:09 Yes.

25:09 That's good.

25:10 Yeah.

25:10 Yeah.

25:11 So all very good.

25:11 But this one gives you then the plot right there, you know, using the ask features.

25:15 Nice.

25:16 I wonder, since the syntax is really similar to matplotlib, I wonder if there could be

25:20 some add-on to J-U-T that says, if you see a matplotlib, you know, stub it out with

25:26 plot text.

25:27 That'd be awesome.

25:28 All right.

25:28 Well.

25:28 Time to try.

25:29 Time to try.

25:30 Yes, indeed.

25:31 All right.

25:31 Well, thank you for that, Henry.

25:32 And then we had a panel of Waylon Walker, Yatunda Dada, and Ivan Danov talking about Kedro,

25:39 which is one of these like frameworks for managing data science, almost like pipeline, but a little

25:45 bit larger than that.

25:46 Do you do anything like that?

25:48 Do you use like Kedro or Luigi or Airflow or any of those things?

25:51 Not really on job wise, but personal use.

25:57 Yes.

25:57 We'll go through that one down there.

26:00 But what is interesting is, you know, in the two packages, they recommend it.

26:06 So one, you know, the first one was the FSS spec.

26:11 Here's another one that could be the problem.

26:13 I think FSS spec.

26:15 Okay.

26:16 Here you go.

26:16 I think it's file system spec.

26:18 Yeah.

26:19 Yeah.

26:19 You know, when it is in the...

26:20 This is a little hint.

26:21 Yeah.

26:21 A little hint here.

26:21 And this is the thing.

26:22 You know, when it is in the podcast, I was like, okay.

26:25 So I needed to come here and read it like two times to try to get exactly what they, you

26:32 know, what is aiming from this one.

26:34 It's quite valuable library.

26:35 You know what I mean?

26:36 Treat all the files.

26:38 It doesn't matter if it's in your desktop or, you know, in the cloud or whatever location.

26:43 Have a simple API to go and handle the files.

26:47 It's just amazing.

26:48 You know, you know, I work a lot with Pandas DataFrame, for example, even when it's not,

26:54 you know, data related, data science related, you know, I used to get the help of all the

27:03 C underlying the Pandas and the NumPy.

27:07 You know, like if I went to do a SQL query, I use Pandas.

27:12 I don't, you know, I usually don't go through the ORM.

27:16 And the reason is the speed.

27:18 You know, you go and check and you can do the insert or you can do things through the

27:22 Pandas pretty quickly, you know, and these things are all in the backend, you know, helping

27:28 to do that.

27:29 It's just amazing.

27:30 Yeah.

27:31 It's super cool.

27:32 If you want to write the file sources that are not actually file sources, then this is a

27:38 really, really good one for that.

27:40 Yeah.

27:41 So people can look through the docs, but also out there, let's see, I was hoping somewhere

27:46 there's like a list of all the different things.

27:49 And I know the files they support.

27:51 Exactly.

27:52 Yeah.

27:52 Yeah.

27:52 Yeah.

27:52 Yeah.

27:52 But there's things like databases, Excel, all those kind of things.

27:59 And then you can do anything to behave like a file, you know, a simple API that handles, you

28:03 know, everything, whatever it has to do with data, they will do it in, you know, so simple,

28:09 you know, put the URL to the path.

28:11 This is the with open syntax, right?

28:15 Amazing.

28:15 Amazing.

28:16 Yeah.

28:17 Here's a little example of like FSSpec opens some URL to some place, could be S3 or whatever,

28:23 and then you just use it as a file, like as a file object, which is great.

28:28 And then obviously this one was from that episode with William Walker, who happens to

28:33 be in the audience.

28:33 Hey, William, or Waylon, sorry.

28:35 It says, yes, FSSpec does not get enough love.

28:38 Yes.

28:38 Exactly.

28:39 You know, and that's the reason of this repository.

28:41 We need to keep it there.

28:42 You know, people should take a look.

28:43 That's it.

28:44 Simple.

28:44 Yeah.

28:45 And that's why I started asking that question.

28:47 I'm like, all right, I know there's things like this that I've never heard of that I should

28:52 be hearing of.

28:52 And then the other one was Dynacomp.

28:54 And I think we got to FSSpec because Dynacomp used it potentially, I believe.

28:59 So this one, you know, really, I didn't know this.

29:03 That's the beauty of Python.

29:05 There is one library and one package for us to do everything, right?

29:10 So this one is an easy way how to do setting loaders, you know, as I put it there, an asteroid.

29:17 So it doesn't matter if you have a BY, I9, a JSON, you know, other formats.

29:23 Just you will handle it, period, you know.

29:26 Forget about what is out there.

29:28 Super easy to use.

29:30 Yeah.

29:31 And it has like support for environments like development versus testing versus production.

29:37 And also you can keep the secrets, you know.

29:40 the file for the secrets, the file for the, the, the, the settings for the secrets and

29:43 the settings and the normal settings.

29:45 So well designed.

29:46 Yeah, absolutely.

29:46 Plugins for Django and Flask, talks to HashiCorp Vault for some of the secrets and so on.

29:52 Yeah, this is quite neat.

29:54 And it makes good use of emoji in its output.

29:56 So I always appreciate a good emoji in the output.

29:59 Me too.

29:59 Yeah.

30:00 I don't know.

30:01 It's so small, but it just makes me smile when there's a little color, a little pizzazz.

30:05 So yeah, really good.

30:07 This portion of Talk Python and me is brought to you by TopTal.

30:13 Are you looking to hire a developer to work on your latest project?

30:17 Do you need some help with rounding out that app you just can't seem to get finished?

30:21 Maybe you're even looking to do a little consulting work of your own.

30:24 You should give TopTal a try.

30:26 You may know that we have mobile apps for our courses over at Talk Python on iOS and Android.

30:33 I actually used TopTal to hire a solid developer at a fair rate to help create those mobile apps.

30:39 It was a great experience and I can totally recommend working with them.

30:42 I met with a specialist who helped figure out my goals and technical skills that were required for the project.

30:47 Then they did all the work to find just the right person.

30:51 I had short interviews with two folks.

30:53 I hired the second one and we released our apps just two months later.

30:57 If you'd like to do something similar, please visit talkpython.fm/TopTal and click that Hire Top Talent button.

31:06 It really helps support the show.

31:10 That takes us on to something that has been getting a ton of attention lately is Will McGugan's work, episode 333, Terminal Magic with Rich and Textual.

31:20 Rich and Textual.

31:22 Thank you, guys.

31:23 It's just a piece of great work they have done.

31:28 During the podcast, they mentioned about this object explorer.

31:36 So quite cool, you know, get your object, I mean, your object and just explore it, you know.

31:44 It feels like you were in your IDD.

31:47 Simple, you know.

31:48 It's just for those CLR lovers, here you go.

31:52 Yeah, so what I used to do is I would like type printout dir of object, D-I-R parenthesis object.

31:59 And it'll show you basically the dictionary of functions and fields and just all the attributes and whatnot.

32:05 This is way better.

32:07 Like, imagine something like, I don't know if this is actually using Rich.

32:12 Let me look real quick here.

32:13 Yep.

32:14 This is based itself upon Rich.

32:16 So imagine Rich was used to build like a beautiful UI that you could arrow, you know, list out stuff.

32:23 You could, you know, search through and arrow through and select things.

32:27 And yeah, this is fantastic, right?

32:28 And that will be the reason why we have the textual.

32:32 The other one that we're talking about is just, is the same, right?

32:35 So using both Rich and textual, you can do these type of things.

32:40 Yeah, Rich lets you write really awesome stuff to the terminal like progress bars and tables and colored syntax highlighted JSON and whatnot.

32:50 And then textual kind of allows you to lay out different parts of the screen.

32:55 So you can have like a thing docked to the left and then fill the rest of the terminal with the output as you select the thing on the left.

33:01 Yeah, perfect.

33:02 That's kind of what this is for DIR, but way, way better.

33:06 I love it.

33:06 Awesome.

33:07 All right.

33:08 So on to, we're all the way back to middle of September with episode 335, Gene Editing with Python.

33:16 And our guest here was David Bourne.

33:18 And he talked about one that I hadn't heard of, but I'm sure some people could definitely use in the DevOps space.

33:25 So AWS and also, you know, the rest of the cloud providers, you know, Google and everyone else, they have such beautiful APIs to integrate with their systems.

33:36 And this is one of them, right?

33:38 So, yeah, so many things you can do with, you know, that's it, you know.

33:44 I mean, I really love the way how all these cloud providers are enabling all these APIs to do absolutely everything.

33:54 Yeah.

33:54 I mean, you hear of, like, one of the things that makes cloud computing special.

34:00 Like, there used to be the joke.

34:01 Let me see if I can find it.

34:02 Cloud computing is just, like, it's just someone else's server or something like that, right?

34:07 There was that joke.

34:08 And, oh, man, I'm not finding it on the quick search here.

34:11 But there was this joke that, you know what, it's the cloud.

34:13 It really is just someone else's server.

34:14 But one of the real big differences is that you can program against this thing.

34:19 Like, I remember way back when we were doing some e-commerce stuff and some software stuff,

34:24 we went to Rackspace and we requested that they provision a server.

34:30 And, like, several days later, a human had said, yes, Michael, here's your server we made for you.

34:35 And that was great back then.

34:37 But with the cloud, it's all about programming against the infrastructure, like infrastructure as code type of thing.

34:43 And this cloud development kit that David suggested was all about, well, here's the Python API to program AWS, basically.

34:51 Right?

34:52 Mind-blowing, you know, I mean, if you see, you know, the implementation, I mean, the impact on the enterprise, this type of APIs, you know, and the ability to do it through Python, it's just neat.

35:06 Yeah.

35:07 It's super cool.

35:08 Yeah.

35:08 It's not a thing that I do very much.

35:10 I do have some APIs that work against our servers for, like, if everything goes right, zero downtime deployment on, like, Git push type of things.

35:18 But not to the degree that, like, the cloud development kit won't do, right?

35:22 You could do way, way more stuff than what I got going on.

35:25 All right.

35:25 And then David also suggested Luigi.

35:28 Luigi.

35:29 Okay.

35:30 I mean, this is, you know, the whole, you know, when I listen to this name, Luigi, you know, I remember my, you know, my wife's family is Italian.

35:39 So, you know, see what this does.

35:41 This does everything, right?

35:42 This is the biggest spaghetti, right?

35:44 This is workflow management, task scheduling, dependency resolution, everything in one place.

35:51 Even has a visualizer for all of it.

35:54 Yes.

35:54 Like the dependency graphs and whatnot, right?

35:57 And this is really good because, you know, like task style, you know, you can do the whole, you define true functions, how your workflow will work.

36:06 And as things start completing, you reach to the end, to the completion, you know, they can be quite isolated.

36:12 They can be near to you or far away, you know, in the cloud or in other providers.

36:17 And then you can reach your end goal and know when things fail or know when things are completed.

36:23 I mean, applications, you know.

36:26 As to where that particular job is making it through because you can see what part's finished, what part is still working, what's waiting on what.

36:34 Yeah, it's very cool.

36:35 Exactly, exactly.

36:35 You know, who wants to do, again, home automation, who wants to do, you know, in their enterprise, you know, completing your workflows, here you go.

36:43 And then you have a nice user interface, web interface.

36:47 You have all in one stop.

36:50 That's it.

36:51 Yeah.

36:51 And for people out there who are all about Python, which is the audience, basically, everything in Luigi is Python instead of XML configuration or similar external files like think YAML, JSON, whatever.

37:04 The dependency graph is specified within Python, which is pretty cool.

37:08 Right.

37:08 Yeah.

37:09 And I think this one came out of Spotify.

37:11 Yes, exactly.

37:12 Yes.

37:12 I think it's something I really love from the tech companies.

37:15 Their management have understood that, you know, they can work together with the open source community, you know.

37:24 We help them, you know.

37:26 And, you know, back to my position as an enterprise, you know, I can use it, right?

37:31 So it's just really a call from, you know, every single company have something that can be open source.

37:39 Go ahead and do it.

37:40 You know, you are going to get so much out of it, you know.

37:44 Yeah.

37:44 Yeah.

37:45 You know, worst case, nobody cares.

37:47 Best case, you find other people who are passionate about this thing that you built and then they'll help you improve it, you know, without any effort from you.

37:55 Right.

37:55 Exactly.

37:56 Like that's awesome for a company to have other people help work on your code.

37:59 Exactly.

37:59 They find the box for you, you know.

38:00 Yeah, exactly.

38:01 They help you with the documentation.

38:02 It's a win-to-win situation.

38:04 Yeah, exactly.

38:05 There's so many of these things that companies have to build, not because it's their core value proposition.

38:11 It's just that, well, we need a thing to schedule some stuff.

38:15 So we figured that out.

38:16 But, like, it's not what makes Spotify special.

38:18 Right?

38:19 Exactly.

38:19 They don't need to hide and protect it, right?

38:21 Put it out there.

38:22 That's great.

38:22 All right.

38:22 Next episode, going back to September 18th, September 9th on the recording, I guess, we talked about the planetary, Microsoft Planetary Computer, which is, like, basically cloud computing for people researching climate change and similar geospatial stuff.

38:42 That was Rob Emanuel and Tom Augsburger.

38:45 Yeah, Rob and Tom, thank you for sharing.

38:48 I mean, I think this is, you know, we need so much of this, you know, in those days.

38:52 I think it's well-deserved, you know, this type of contribution, you know, any big company can, you know, just go ahead.

39:00 Don't wait, you know.

39:01 Yeah, absolutely.

39:02 And so the thing that they recommended, I can't remember, I think it was Tom, but I'm not 100% sure, it was Seaborn, which also I saw back when we were talking about the one that Bex recommended,

39:16 which was the UMAP one that also had a bunch of examples in Seaborn.

39:23 Yeah, so...

39:24 Yeah, usually in the data science world, you know, Seaborn is really used.

39:29 You can do everything with Mathplot.

39:31 I don't like how it looks like...

39:33 I know many people will come back to me and say, no, no, no, you haven't tried X and Y on set.

39:37 I know.

39:38 But, you know, out of the shelf, that's it, you know.

39:41 Seaborn, just get the library.

39:44 Look how incredible this joint plot looks.

39:45 Like, if people go to the gallery and just kind of scroll through this hexagonal joint plot, some of these.

39:52 It's not just showing you the data, but it's like, wow, that's publication level beauty right there, right?

39:58 Really nice.

39:58 Really simple, you know.

40:00 I mean, you get the same that you get out of Mathplot, but we'll say, you know, it's like comparing the old Android with the Apple, you know, with the iPhone, you know.

40:11 I'm an Android guy, right?

40:12 So, guys, I'm a Windows guy as well, you know.

40:14 I use, you know, myself, you know, I use Linux through my Windows 4 subsystems, you know.

40:20 So, but anyway, but that's a big competition, you know.

40:23 Yeah, you can do things pretty good in Mathplot, but there's so many things out there, which out of the shelf, it looks beautiful.

40:30 You know, it also has a nice API, easy to use.

40:34 One stop for beautiful visualizations.

40:37 Yeah, absolutely.

40:38 Tony on the audience says Seaborn is great.

40:40 So, another vote for that as well.

40:41 All right.

40:43 Back to the Perfect Threes, episode 333.

40:46 I thought this was a really fun episode.

40:48 The State of Data Science in 2021 with Stan Siebert from Anaconda.

40:53 Si.

40:53 So, wow.

40:54 The NumPy and Spice on GPU is, I think, it's a great achievement for so many things we use day to day.

41:07 I mean, every time you guys are talking to your phones and you are, you know,

41:11 even when you are not doing anything, you know, the camera is watching you, you're the whole thing.

41:16 There is so much happening out there, thanks to the use of the GPUs at the time, you know.

41:21 Yeah.

41:21 It's still use.

41:23 So, the QPy, C-U-Py, allowed to get that array and process through GPU.

41:32 It's pretty good.

41:34 And, you know, the beauty of this library is that, you know, it's used for so many others that help everything to go on steroids.

41:43 Yeah.

41:43 Yeah.

41:44 So, QPy, QPy, it comes from CUDA and Python.

41:48 So, I'm guessing QPy is a NumPy SciPy compatible array library for GPU accelerated computing with Python.

41:56 There's a lot of qualifiers there.

41:57 But that basically means if you're doing stuff with NumPy, you can throw this at it.

42:02 Instead of happening on your CPU, it'll happen on CUDA cores on, say, your NVIDIA 3080, which is an insane amount of computation.

42:10 Yeah.

42:11 Very cool.

42:11 Do you guys use GPUs for anything?

42:13 Yes.

42:14 In the industry, you know, mostly it's used for the seismic processing.

42:18 You know, it's a big size of images.

42:23 That's usually where Linux is in the energy industry, most of them.

42:29 You know, you have to do all this 3D graphics, all this processing from all this surveys data that all this may be used.

42:39 Okay.

42:39 Yeah.

42:40 Fantastic.

42:40 I would love to see things come along that are a little more interchangeable.

42:46 Like the CUDA stuff is fantastic, but CUDA is just NVIDIA.

42:50 And we've got, you know, AMD with Radeon.

42:53 We've got the new, my new laptop's got like 16 neural cores or something like that.

43:01 I can't remember exactly.

43:02 But, you know, we all are getting these systems laying around.

43:04 And, you know, it's very hard to get a hold of the GeForce GPUs.

43:10 So I'd love to see like whatever GPU you want to bring or neural engine you want to bring.

43:15 But I totally understand that.

43:16 That doesn't always work so easily.

43:17 All right.

43:18 The next episode is a very popular one.

43:20 One of the most popular ones we've had recently called Robust Python with Patrick VF4.

43:26 Yeah.

43:27 Yeah.

43:27 And so he talked about Stevedore, Stevedore, managing dynamic plugins for Python apps.

43:33 See, when I was listening to this podcast, I was regretting so much time I wasted in my life.

43:40 I built this whole thing.

43:42 Working on my, you know, add-ons, you know, my plugins, you know.

43:48 This is just so simple.

43:50 That's it.

43:51 And at runtime, you know, forget about doing imports and, you know, your new file and the whole thing.

43:56 I need to go on.

43:56 No, no, no, no, no.

43:57 Stop doing this.

43:58 Guys, there is a solution.

43:59 That's the one.

44:01 Yeah, cool.

44:01 So basically, if you want to build a plugin system for your code and make, for your app and make things interchangeable and whatnot, Stevedore looks really good for that.

44:10 Very nice.

44:11 Back to August, summertime.

44:14 Episode 331 with Lucas Lenga.

44:18 Lucas, thank you so much.

44:20 I mean, to everyone, right?

44:22 But, you know, also to you, you know, I use Black so much, you know.

44:25 I know that all the things you are going on today, you didn't mention Black, but, you know, you decided to add it here.

44:34 The uncompromising code for matter, you know.

44:37 It helps so much with people's relationship, I guess, you know, more than beautiful Python, no more fighting, you know.

44:45 That's it.

44:45 Just get agreement.

44:46 Everyone is Black.

44:48 That's the setting.

44:49 Yeah, it's one of the things where you can just take that whole debate and conversation out of different people's hands.

44:57 It's not who is the most unmovable in the team or loudest in the team or whatever.

45:04 It's, look, we're just going to agree.

45:06 The community said Black is close enough.

45:09 Maybe no one's going to be 100% happy with how things format, but it's just going to happen automatically.

45:14 And we're not going to worry about code formatting anymore.

45:16 And I think that's fantastic.

45:19 I will change the name, you know, the description, the uncompromising code for matter by, you know, the frictionless code for matter.

45:28 I mean, this is just beautiful.

45:29 Yeah.

45:30 And you have people using different tools.

45:31 Some people using PyCharm.

45:33 Some people using VS Code.

45:34 Some people using Emacs or whatever.

45:35 And if you say clean up this code, what that means to those different systems, especially because you can customize every little detail, right?

45:44 Like I want a space here, but not a space there.

45:46 Those all become merge, not necessarily conflicts, but changes just because somebody cleaned up the code, but there's not a meaningful change on that line.

45:54 So doing something like Black in a pre-commit hook means you're not going to get those little weird changes just because the tool lane decided to have a different.

46:02 Change the form.

46:03 Yeah.

46:04 Yeah.

46:05 Douglas out in the audience says thumbs up to Black.

46:07 Right on.

46:08 Yeah, exactly.

46:09 You know.

46:10 Yeah.

46:10 You're starting to see it be brought into other things as well.

46:12 Like it just got integrated into Jupyter Notebooks, I believe.

46:16 Yes.

46:17 Or no, I always get this wrong.

46:20 It now has support to point it at a Jupyter Notebook and have it format that.

46:24 So very cool.

46:25 Okay.

46:25 That's the way it helped.

46:26 I'm pretty sure.

46:27 I may have reversed it twice in my mind, but I think that that's how the PR suggested that it's going to work.

46:33 Okay.

46:33 So episode 333, this was a fun one.

46:35 a group of Yarek, Axel, and Leah talking about Apache Airflow, which is another one of these workflow pipeline things in Python.

46:45 Yeah.

46:46 So I actually, did I actually get a chance to ask them a question this one?

46:51 No.

46:51 I ran out of time.

46:52 No.

46:52 You know, that's the reason why, you know, sometimes I used to, you know, when I managed to get it, because, you know, my time zone with you guys, when I'm there, you know, and you're getting to the end, I usually, you know, try to get that small comment on the chat of YouTube.

47:06 Yeah.

47:07 So, you know, I'm going to say, just to, you know, to remind people, you know, don't miss the question.

47:09 It's quite important.

47:10 It was missed here.

47:11 But anyway, amazing library, again, for data pipelines.

47:16 You have your...

47:17 Yeah, Apache Airflow looks really nice.

47:18 You can do your scheduling and monitor, you know.

47:22 I think it's pretty similar to how we described Luigi.

47:26 I think there's a lot of similarities.

47:27 Luigi, but a bit more, you know, data focus, you know.

47:30 Why use a lot on the data science works.

47:34 Yeah, absolutely.

47:35 It has all these integrations, which is nice, right?

47:38 Like, if you want to plug into other data sources, you don't have to necessarily program against it.

47:44 You just grab one of those integrations and run.

47:46 All right.

47:47 Episode 329, I had my friend Richard Campbell back on there.

47:50 We talked about renewable energy.

47:52 He's always fun to dive into the geek out episodes.

47:54 But given the topic we were covering, it didn't really make sense to have a question.

47:58 And we were out of time anyway.

47:59 Exactly.

48:00 Thanks, Richard.

48:00 But no question, maybe I'll get one from you next time we do something like that.

48:05 Talk Python to me is partially supported by our training courses.

48:09 We have a new course over at Talk Python.

48:12 HTMX plus Flask, modern Python web apps, hold the JavaScript.

48:16 HTMX is one of the hottest properties in web development today.

48:20 And for good reason.

48:21 You might even remember all the stuff we talked about with Carson Gross back on episode 321.

48:27 HTMX, along with the libraries and techniques we introduced in our new course, will have you writing the best Python web apps you've ever written.

48:34 Clean, fast, and interactive.

48:36 All without that front-end overhead.

48:37 If you're a Python web developer that has wanted to build more dynamic, interactive apps, but don't want to or can't write a significant portion of your app in rich front-end JavaScript frameworks,

48:48 you'll absolutely love HTMX.

48:50 Check it out over at talkpython.fm/HTMX or just click the link in your podcast player show notes.

48:59 Episode 328, Piccolo, another ORM, and also one of the async ones, which is fun.

49:07 But package, this is Daniel Townsend.

49:09 The package was not Piccolo.

49:11 That was the topic.

49:11 The package is Pydantic.

49:13 Pydantic.

49:14 Okay.

49:15 Amazing.

49:16 This is one of these really good packages, you know, out there.

49:22 Data validation.

49:24 That's it.

49:25 It makes it so simple.

49:26 Yeah, I think it really is.

49:28 I don't know if it doesn't get enough love or not, but it deserves a lot of love, let's say that.

49:32 So it does really beautiful importing and transformation of data.

49:37 So if you're receiving data from a file or if maybe you're receiving it from an API and the data is not super cleaned up,

49:45 this thing will do its best to, one, either automatically clean it up or, two, it will tell you precisely what's wrong with it.

49:54 So, like, suppose you're getting a JSON document back and it has a list of things and the third thing in the list is not parsable as a date time or something crazy like that.

50:06 It'll tell you the third thing in the list couldn't be converted to a date time rather than exception in valid format, right?

50:13 It's beautiful, right?

50:14 So that's one of the things that's lovely.

50:16 The other thing is it uses type annotations in really meaningful ways.

50:21 So if you have a, like the example on the website says here's a user with an ID colon int.

50:26 That means there's no specified default and the data provided must provide an int because it's not an optional int.

50:33 It must provide an ID.

50:34 There's a name, which is equal to John Doe.

50:36 So you don't have to provide one.

50:38 There's a default.

50:38 And because the default's a string, name is a string.

50:41 But there's a signup that may or may not have a value.

50:44 So it's an optional date time.

50:45 And all those things factor into the transformation and the parsing and whatnot, right?

50:50 Yeah, super nice.

50:51 And the other thing is it works with FastAPI to define the open API, the swagger stuff.

50:59 So for example, let me see if I can find.

51:01 I created a FastAPI over at weather.talkpython.fm because I had been using some other weather API for a course.

51:10 And of course, they changed.

51:12 They used to be free and now they're not free.

51:13 And so I'm like, well, if I got to rewrite this course, I'm not going to depend on somebody else's API again.

51:21 So it'll answer questions like, you know, what is the weather or whatever, right?

51:24 But you can also go to, I said docs.

51:27 Yeah.

51:28 Just go to slash docs and you get like, oh, here's all the data will be exchanged.

51:32 And here's, it's going to return some forecast, which has a wind, which has a speed, which is a number and an integer.

51:39 And all this is automatic from Pydantic being plugged into FastAPI.

51:43 It's beautiful.

51:44 It's just amazing, you know, I mean, then that's the thing, you know, that's how you glue these libraries, these packages together, you know, what makes the magic.

51:51 Some of them are really beautiful by itself, you know, when you start using all together and then you put on top, whatever, rich, if you want to, they'll have a beautiful output on the CLI or whatever.

52:00 So that's.

52:01 Absolutely.

52:02 Brilliant.

52:03 Out in the audience says Pydantic, it's one of those packages that makes my work successful without flair.

52:08 Yeah, just exactly.

52:09 It just makes it easier.

52:10 We're just going to do that.

52:11 All right.

52:11 All right.

52:12 Let's see how we do on time.

52:14 We got time for a couple more there.

52:15 A couple of more.

52:16 We weren't able to finish all, but, you know, you guys are getting, you know, what's what we're trying to do here.

52:21 So we're on July now.

52:23 I think I'm going to predict we can make it to May and then we're going to run out of time.

52:26 But this episode was really cool.

52:29 I thought also episode 327 little automation tools, because I think it speaks to so many people who are not necessarily.

52:36 Oh, I'm like chief senior software architect at Instagram or whatever.

52:41 Like everyone can use these.

52:43 We had Rivers Cuomo from Weezer.

52:45 We had Jay Miller with Kim Van Wick and Rusty Gregory on in the panelists here.

52:50 And that was super fun.

52:52 Amazing.

52:53 So they introduced PipX.

52:56 Have you tried?

52:57 I didn't try.

52:58 I use PipX all the time.

53:00 I love PipX.

53:01 Nice.

53:01 Oh, it's so good.

53:02 I use Rivers on the management.

53:03 But, you know, it's so simple.

53:05 You know, they have this small GIF on their GitHub repository.

53:10 Go install it.

53:12 And then, you know, just do everything against the PipX.

53:16 Yeah.

53:17 Yeah.

53:18 So I heard about PipX when it first came out.

53:22 And that was, I remember, Chad Smith, I believe, was, told me about it.

53:27 And it was just an individual project.

53:30 And now it's part of PyPA, which is the Python Packaging Authority.

53:34 So it's become sort of official.

53:36 And, you know, people use Homebrew for macOS.

53:40 They use App for Ubuntu and Chocolaty for Windows.

53:43 And that installs all sorts of tools.

53:45 But if you want something like, I need to install a tool that I can run, and it just happens to

53:51 be based on Python, well, then PipX is that equivalent, right?

53:54 Because there's a lot of programs and tools out there that are awesome that you want from

53:59 Python.

54:00 For example, like Black, I want to run Black against a thing, but my program doesn't depend

54:04 on it.

54:05 So it doesn't necessarily need to be installed in that virtual environment.

54:08 But instead, I just need it on my system, right?

54:11 Exactly.

54:11 So go install it and run that application in your isolated environment.

54:15 Just beautiful.

54:16 Super smart.

54:17 Yeah.

54:17 Waylon says, I use PipX for so many things.

54:19 Instable Playbooks, Kedro install, many personal repos.

54:22 One that I use it for is Glances, among other things.

54:26 I'll show you some stuff that I call speeds for that's not as interesting.

54:28 So this is a fantastic, fantastic tool.

54:31 If you ever use top to figure out what's going on in your server, the way you spell top is

54:37 G-L-A-N-C-E-S.

54:39 Glances.

54:40 That's what you should type.

54:40 It is so much better.

54:41 But it's a Python library.

54:43 So PipX install Glances.

54:45 And it gets its own environment with its own dependencies in there.

54:48 And it doesn't mess up.

54:49 Also, there's recently TipTop, which I believe is also based on Rich.

54:55 But if you check this one out, this one also looks like a really interesting one where it's

55:02 like Glances.

55:03 It gives you a terminal UI about your server.

55:06 But this one has running graphs.

55:08 So running graphs of the CPU across the cores, by the way, like if you've got a four core,

55:13 eight hyper-threaded core machine, it'll give you eight graphs.

55:16 And then like graphs of memory, network graphs, plus your process stuff.

55:20 So like all of these things are perfect candidates for installing with PipX.

55:26 Exactly.

55:26 But another one is PyJoke.

55:29 So if you just need some jokes, you can just PipX install PyJokes and then just type PyJoke

55:36 anytime you want and you get something great to come out.

55:39 Yeah, I've tried it there.

55:41 Yeah, that's a good one.

55:42 Anyway, PipX is a very good one.

55:44 All right.

55:44 So that was, I don't remember who on there recommended that one, but that was a really

55:48 good one.

55:48 All right.

55:49 Let's see.

55:50 We had Mike Driscoll on to talk about building desktop apps with DevX Python.

55:56 And of course he does a lot of stuff integrating with things like Excel and with PDFs and stuff.

56:03 So what was the one he recommended?

56:05 So open PyXL.

56:09 So you need to work with Excel, you know, pretty nice API.

56:13 I usually do it straight away with Pandas, you know, I make it even simpler.

56:20 I think Pandas internally might use OpenPyXL as well.

56:25 Exactly.

56:26 I haven't, I haven't, I didn't check, but most, most probably.

56:30 Okay.

56:30 So go and read and write Excel.

56:33 You know, you go and select your ranges.

56:34 What is your, yeah, your, your book inside the spreadsheets and super neat.

56:41 And then, you know, go read it, put in a table, do your loops, do your calculations.

56:46 And then, you know, process your data.

56:49 Yeah.

56:49 Yeah.

56:50 Yeah.

56:50 Yeah, absolutely. And I think you could even do like formulas and formatting and other stuff

56:55 through here. So you have full control of Excel. Yeah. With like pandas, you can put data out pretty

57:02 easy and stuff. But if you want to say like, I want this one bold, stuff like that, I think this

57:08 is more the level you got to work at, which is cool. All right. Micro Python and Circuit Python.

57:13 I don't know if this is a joint episode or a battle. Actually, it turned out to be kind of a

57:18 joint episode. I talked to Scott and Damien specifically because they had done a ton of

57:25 work where Circuit Python and Micro Python had merged a lot of the differences that they'd been

57:31 working on together back into like a more uniform code base. So they talked about HTTP Py, I'm going

57:38 to guess on that name there. Yeah, exactly. So that one is the Python base for easy request.

57:48 Okay. You know, I'm day to day, I spend 99% of my time on Windows. Sometimes, you know, I don't know,

57:55 due to my enterprise policies, I can know a C car. So that's, this is an easy way how to,

58:03 how to achieve that. You know, if you need to do a double get command, you're on Windows,

58:07 for example, that's the way. Super simple, you know?

58:10 Yeah, this is cool. It's based on Python. And one of the things I think is neat about it is it has a

58:16 specification file. So instead of like putting, you know, dash D here, here's a key value thing I want

58:24 to pass dash D, here's another, and here's the URL and so on. You just create one of these

58:28 configuration files and then you say, make the request that's stored in that file and off it goes,

58:34 right? Exactly. That's neat. Yeah, that's really neat. While we're on that, another one that I like,

58:39 I'm not sure I could phonetically distinguish it is HTTP IE pronounced, I believe HTTP, HTTP I as well.

58:48 This one is super neat as well. And one of the things that I really liked, like about it,

58:53 is this the same thing? I think so. Let's go to GitHub. But certainly the Python project,

59:01 I'll go like this. I'll search for it over here. This is also kind of like curl. But what's really

59:07 cool about it is when you make requests, you just type HTTP or HTTPS and you give it a URL

59:12 and it'll print out like the headers and the cookies that it got back, colorized in your terminal.

59:18 It'll do a pretty printing, a JSON and code formatting, even like code highlighting of your

59:25 HTML that might come back. So yeah, it's so good. If you think curl or wget, like put it down,

59:32 go to HTTP IE and the one I'm recommending is HTTP IE, not HTTP Y, which is a PY, which is also good. And it

59:42 has it. I really love this sort of configuration file as well. So I see super value in both of them.

59:48 But yeah, neat. Very good recommendation. Let's see. Gatorade powered Python API.

59:55 APIs.

59:56 This is such an interesting one because Rob Sandra, they worked on this project called the GX

01:00:04 switch patch from Gatorade, which is like a thing you put on your arm and then you work out and then

01:00:10 you analyze it with Python. It's incredible.

01:00:12 Really nice. Really nice.

01:00:15 So coming back around, he suggested Rich.

01:00:19 Rich. Here you go. So one of the, you know, I think probably favorites of 2021, you know,

01:00:25 couple of times mentioned. Yeah. Really amazing library. You know, I really love just to go,

01:00:32 you know, from reaching port prints and that's it, you know, you, you, you get straight away a

01:00:38 different feel and look, working with the CLI. So.

01:00:41 Yeah, absolutely. All right. Let's see. Let's say, I, I'm going to say we have time for one.

01:00:48 Yes, exactly.

01:00:48 One more is probably, probably time to wrap it up because, so how far are we made? We made

01:00:54 it to the middle of June, 2021. All right.

01:00:56 Not bad. Not bad. Yeah, not bad. This is Itamar Turner-Trowing. I had him on to talk about

01:01:02 best practices for Docker and production and I mean quotes for Python developers. And that

01:01:08 was fun. And he talked about a lot of things, but his, package was Py03. Tell us about

01:01:13 Py03. No, Py03 is missing.

01:01:16 Oh, the billing is broken? Wait.

01:01:18 Hold on. All right. There we go. Rust bindings for the Python interpreter. What do we got going

01:01:24 on here? So, I mean, for, for, for this one, if using Python from, from Rust, you know,

01:01:32 I remember one time I was looking at, some source code where, where they were in C-char

01:01:38 embedding assembly or embedding another programming language and running that on site and, you know,

01:01:45 doing the whole thing similar. I didn't know. you know, I, I, I, at this moment it's obvious,

01:01:50 right. But you know, I didn't realize that, you know, you can do this, the, the, the

01:01:55 Rust binding for, for Python. So I, I don't know. I haven't used, a Rust, but I'm guessing

01:02:03 they supposed to be most probably one of these type of wrappers, you know, bindings for so many

01:02:08 other languages when I'm not aware of.

01:02:11 I haven't really used Rust either, but if I had to go back to a low level language like C, I would

01:02:17 prefer to not go back to C, which I used to do. I would rather go to something like Rust, like a

01:02:22 modern C level language, I guess is probably the way. Yeah. So PI 03, will let you write a native

01:02:30 Python module in Rust. So if you need to make a certain part of your Python code, go really fast

01:02:36 Rust and be more native. I guess that's an option or in reverse, you can embed Python into a Rust

01:02:43 binary. And I guess from there run Python code within your Rust app.

01:02:48 So for, for, for everyone out there, you know, once you listen to the podcast, you know, if you

01:02:52 know about similar, library for other, you know, to do bind bindings for other languages, just,

01:03:00 just please share it. You know what I mean? It's so nice. I mean, I think it's, it makes things so, so good.

01:03:07 We need to start now probably just jumping and, and grabbing up because of the time, I guess. Right.

01:03:11 That's right. Oh, there's so many more good ones. Alpine, Numba, Rich again, FastAPI, Flask SQLAlchemy and on and on and on.

01:03:21 But on and on. Yeah, exactly. Wow. I, I, so guys, you know, is there just go and take a look. I promise, you know,

01:03:27 now in, in December, I will take some leave. I will take two or three days to go back to the previous years, you know,

01:03:33 and, and, and, you know, try to put everything out there. Please take a look at this one. Please, you know, contribute.

01:03:40 If you see something wrong, you know, go ahead. Super welcome to, to receive, contributions there.

01:03:46 Yeah. Thank you. That's awesome. Yeah. People can definitely add to the work that you've put here.

01:03:50 This is great. Thank you for doing that. That's, that's really neat. Now, of course, before you get out of here,

01:03:54 you've got to face the two questions, right? So if you're going to write some Python code these days,

01:04:00 Antonio, what, what, okay. So editor are you using?

01:04:03 day to day is, is code. However, you know, when, when I, I, I found super easy to use,

01:04:13 Google collapse, not so I'm, I'm kind of divided, right? So I don't need to, you know, sometimes just

01:04:19 get into, to use code to do something as small and check and plot is not useful now. so I'm,

01:04:26 I'm divided, right? So when I'm working with projects, small or large stray away through, use code,

01:04:33 love the integration with it hub, with, with, you know, containers, everything, you know,

01:04:39 everything in, in a single user interface and when I have to do a small web scraping, you know,

01:04:46 yeah, do a small data manipulation or whatever. I, I stray away, go to, the, the Google collapse

01:04:52 notebooks and do it right there. You know, I have the link, I can share it with the colleagues or

01:04:56 friends and it, it makes my life quite easy.

01:04:59 Oh, the, all, all the online notebooks world. There's so many, all of them, absolutely all of

01:05:04 them. So many. Are you familiar with the dot, the dot command on GitHub repros?

01:05:09 Oh yes, it's just amazing. You know, it's just, If you're on any GitHub repros and you just literally press dot, is that still, oh, you gotta be logged in to do that.

01:05:16 Yeah, you need to be logged in to do that. But anyway, you know, it's the same as if you go to code.dev,

01:05:20 basically. Exactly. Exactly. You know, if they manage to do this, you know,

01:05:24 VS Code.dev. VS Code. Yeah. So if, if, you know, they manage to do this, you know, I'm sure there will be,

01:05:30 you know, this is a small enhancement on, for the pronunciation of the packages won't be a big deal on GitHub,

01:05:35 I guess. So yeah. But this one is just amazing. Press dots and open your VS Code right there with all your

01:05:41 settings. Absolutely. Yeah. I try to not be logged into the, the browser I'm sharing on the street.

01:05:47 I don't want it to influence whatever shows up. Oh yeah. And then notable PyPI package.

01:05:53 Okay. So let's put something onto your repo from you about the repo. That'd be very meta.

01:05:58 It's just good. So recently I was, you know, my, my, you know, my, my daughter, she wants to be YouTuber

01:06:03 when she grew up. She's just, you know, she's still too young. But anyway, I, I wanted to help her and do

01:06:11 some optimization of, you know, from creating the videos all the way to, you know, posting this to

01:06:18 YouTube. And, you know, it takes time to, to, for editing and everything. So I wanted to get some help.

01:06:26 So I was trying to see if there was any way using NLP to get a summary of any big webpage. I don't know.

01:06:33 You want to do a small video. You want to do a small research. That's it. Or you want to digest some news.

01:06:39 So you install this library called Sumi, S-U-M-I. You basically put the URL of the webpage or the PDF.

01:06:50 You want to summarize how many paragraphs, you know, how many lines you want to get out of this.

01:06:55 And 95, 98% of the job is amazing. I would say 100% of the time is, is, is, is, is really,

01:07:04 it's really good. Yeah.

01:07:06 A simple library and command line utility for extracting summary from HTML pages and plain text.

01:07:12 So for example, right. So you go to your transcript of the podcast and you say, okay, give me the

01:07:19 most relevant 50 lines out of the transcript of, you know, talk back them to me podcasts.

01:07:25 And that's it. You can print it out and, and, and get in a, in a, in a quick way and extract some

01:07:33 useful information. And the next one is related to the same, right? So I think this is, you know,

01:07:40 you send the, the, the, the, the, the official way. I hope they don't get penalized for me.

01:07:47 So it's called G D T S Google text to speech. Okay.

01:07:53 Yeah. Google text to speech. Okay.

01:07:55 So, so this one is, you know, again, that interface with the Google translate API, and then you get the MP3.

01:08:05 So something I was using this to glue in this two together. Right. So go get the summary.

01:08:11 Okay. Obviously, you know, you, you know, somebody will help you to get the context.

01:08:15 You would like to, you know, do the proper referencing and citation and, and everything.

01:08:20 And then for each paragraph, you can get the MP3 and put this on top of the video, you know,

01:08:26 and then, you know, go back and having, you know, tools like, you know, with these workflows tools,

01:08:31 like Luigi, go on, you know, kick everything and then upload it to YouTube in one go, you know,

01:08:38 fully automated. It's just, just beautiful. You know how everything is, it can be done.

01:08:43 You know, everything can be glued together. Yeah. Anyway, for those others who want to try,

01:08:47 you know, it's, it's, it's, it's to our pretty nature.

01:08:49 Yeah. That is really cool. Awesome. That sounds like a lot of fun stuff to play with.

01:08:55 I love the automation. I love the summarizing. That's, I really liked that one. That's great.

01:09:01 So cool. Good recommendations on both of these. And we now have a new thing to put into that GitHub repo.

01:09:07 That's good. That's good. So, yeah.

01:09:09 All right. Well, Antonio, thank you so much for being here. I mean, final call to action. People want to check

01:09:14 out this project you've created. What do they do?

01:09:17 Please just, you know, we'll just click, you know, on, on down there on the podcast, you know, the,

01:09:22 the, to the link, go through. Yeah, definitely. Obviously I'll link to that. It's the main thing.

01:09:26 Contribute, you know, if you can, if, if you like it, don't forget to, to give us a start.

01:09:33 Contribute, if you see any, anything wrong, please say, you know, just welcome, you know,

01:09:38 suggestions are welcome. And if I miss anything, any of the packages, you know, for, for those who

01:09:43 were in the podcast also, you know, as well, just go through and, and, and, you know, if, give us,

01:09:48 give us, give us, give us a, give us a bit of contribution there. So I promise to go to finalize

01:09:53 all of them from episode number one, by the end of this year. And after that, we'll try to do

01:09:59 a few cool stuff there. So data could be retrieved as a JSON, you know, just try to,

01:10:04 to make it more accessible for the people. Oh yeah, that'd be cool.

01:10:07 And next probably we can do, you know, the, the, how over the time, you know, if we can record,

01:10:13 you know, which was the, the notable, the favorite editor and the times and see how things change

01:10:19 over the time, have a really nice graph of how these codes start coming up and by charm as well.

01:10:24 There's a lot of ways to gather all this up and like, turn it into computer legible data and do all sorts of fun stuff.

01:10:31 Exactly.

01:10:32 Is second one call for action is, you know, everyone's celebrating Thanksgiving. yeah,

01:10:37 yeah. For those, you know, who are still live. So, listening to the live streaming, you know,

01:10:42 wish you, you know, a really beautiful holiday. for those listening to the podcast,

01:10:48 I, I hope, you know, you, you, you really have a, a good time with some friends.

01:10:53 Yeah. If you want to preach me out, you know, as usual, you know, I'm, I'm, I'm on Twitter,

01:10:57 you know, I try to be nice on Twitter. I used to put everything on LinkedIn, you know,

01:11:03 most of my, yeah, yeah. Technical parts there. but anyway, I'm, I'm reachable. If we didn't have

01:11:09 time to talk about IOT, if there is anyone out there, you know, have pretty cool,

01:11:15 applications, hardwares, you know, where you can go and deploy containers all the way to the age,

01:11:21 I will be super interested to, to hear from, from, from, from those individuals and companies and

01:11:28 packages and everything, you know, out there. that's, you know, kind of day-to-day job. So

01:11:34 please, you know, Sounds fun.

01:11:36 Reach out.

01:11:36 Right on. I'll be sure to put all your contact info in the show notes. So thank you so much for

01:11:41 being here. Thank you for creating this GitHub repo and thanks for the look back to kind of

01:11:46 highlighting the last half year of what people have talked about. It's been a lot of fun.

01:11:49 Great. Thank you for having me, Michael.

01:11:51 Thanks. Yeah. See you later. Yeah. Bye.

01:11:54 Bye.

01:11:55 This has been another episode of Talk Python to Me. Thank you to our sponsors. Be sure to check

01:12:02 out what they're offering. It really helps support the show. Coiled supercharges the tools you

01:12:06 already use for scale and performance. So you can use Python for ambitious problems. Add Coiled to

01:12:13 your project in less than one minute. Get started today at talkpython.fm/coiled. With TopTal,

01:12:20 you get quality talent without the whole hiring process. Start 80% closer to success by working

01:12:26 with TopTal. Just visit talkpython.fm/TopTal to get started. Want to level up your Python? We have

01:12:34 one of the largest catalogs of Python video courses over at Talk Python. Our content ranges from true

01:12:39 beginners to deeply advanced topics like memory and async. And best of all, there's not a subscription

01:12:45 in sight. Check it out for yourself at training.talkpython.fm. Be sure to subscribe to the show,

01:12:50 open your favorite podcast app, and search for Python. We should be right at the top. You can also

01:12:55 find the iTunes feed at /itunes, the Google Play feed at /play, and the direct RSS feed at

01:13:01 /rss on talkpython.fm. We're live streaming most of our recordings these days. If you want to

01:13:07 be part of the show and have your comments featured on the air, be sure to subscribe to our YouTube

01:13:12 channel at talkpython.fm/youtube. This is your host, Michael Kennedy. Thanks so much for listening.

01:13:18 I really appreciate it. Now get out there and write some Python code.

01:13:21 Bye.

01:13:21 Bye.

01:13:22 Bye.

01:13:23 Bye.

01:13:24 Bye.

01:13:25 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:26 Bye.

01:13:27 Bye.

01:13:28 Bye.

01:13:28 Bye.

01:13:28 Bye.

01:13:28 Bye.

01:13:29 Bye.

01:13:30 Bye.

01:13:30 Bye.

01:13:30 Bye.

01:13:31 Bye.

01:13:32 Bye.

01:13:32 Bye.

01:13:33 Bye.

01:13:34 Bye.

01:13:34 Bye.

01:13:35 Bye.

01:13:36 Bye.

01:13:36 Bye.

01:13:37 you Thank you.

01:13:40 Thank you.

01:13:41 Thank you.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon