Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #266: Python has a glossary?

Return to episode page view on github
Recorded on Wednesday, Jan 12, 2022.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 266, recorded January 12th, 2022. I'm Michael Kennedy.

00:12 And I'm Brian Okken.

00:13 So great to be here again. And we had this whole survey about having guests, Brian.

00:19 And this week, we don't have a guest. It's just you and me, which I think is cool.

00:21 >> That's all right. It's good.

00:23 >> Yeah. People out there listening, if they really want to be a guest, they can shoot us a message.

00:27 For now, we've got so much cool things, so many cool things to speak about.

00:32 We're going to need like a glossary or an FAQ or I mean, something.

00:37 >> Yes. Well, actually, I don't know how I missed this for so long, but there was a tweet by, who was it?

00:45 Trey Hunter had a tweet that it mentioned and actually referred to the glossary and I'm like, "What? We have a glossary?

00:53 I never checked it out before." So on the Python.org website, there at docs.python.org, there's a glossary.

01:01 And it's actually pretty cool.

01:03 There's a whole bunch of stuff.

01:04 Like if you forget what abstract base classes are, it's there.

01:10 So there's Python stuff, there's programming stuff.

01:13 >> It even defines what the three arrows mean.

01:16 >> Yeah, like the three arrows, that's the first one.

01:20 Default Python prompt.

01:22 But also the dot, dot, dot.

01:23 What is that?

01:24 the ellipses and two to three.

01:27 So this threw me off once when I first started, I was like, what's this two to three thing?

01:31 Is this a third party package?

01:32 And it was, it wasn't obvious to me that it was built in.

01:35 So that's kind of neat, but it shouldn't be an issue anymore because everybody's on Python three now, right?

01:41 So anyway, so the glossary, I just, just, just a shout out that this is here.

01:47 It's fun.

01:48 So check it out.

01:49 The other thing that this, It refers to the other documentation in Python a lot.

01:54 And one of the things it refers to sometimes is the FAQ.

01:59 And also, didn't know that was there.

02:01 - We have an FAQ.

02:02 - Yeah.

02:03 And it's split into a whole bunch of stuff like general Python and programming and history and design and stuff.

02:10 And I ran across it because one of the things I looked up when I followed from the glossary was this question of what's the difference between arguments and parameters.

02:20 It's something that I've always messed up, and now I think I have it.

02:25 Parameters are the names of things that appear in the function definition, and the arguments are the values that get passed in.

02:33 Neat. Don't know why I didn't-

02:35 >> Sometimes people use them interchangeably, but they talk about different ways of working with that data.

02:41 >> Yeah, but let's say you're either new to Python or new to programming.

02:46 Some of these perusals, some of these are great things.

02:50 Why did my changing list y also change list x?

02:54 Well, this will help you understand why there's the naming system in Python and stuff like that.

03:01 It's pretty great.

03:02 >> Yeah. It talks about references and all sorts of stuff.

03:04 Yeah, quite cool. I didn't know that we had it, but yeah, that's cool.

03:09 >> You did know it was there?

03:10 >> No, I did not know it was there.

03:11 That's great.

03:12 >> Okay.

03:12 >> Yeah.

03:13 >> I mean, I didn't know anything about it.

03:15 So I want to talk about something else.

03:17 I want to talk about any IO.

03:19 As I'm sure you and a lot of listeners know, I'm a big fan of async IO and async in a wait.

03:24 I think it really unlocks a lot of potential when you're waiting on things.

03:28 There's been a lot of analysis saying, oh, I did this computational thing and it didn't make it any faster, it made it slower.

03:33 It's like, yeah, 'cause it only scales waiting and you're not waiting.

03:37 So when you're talking about waiting, it usually has to do with IO with external systems, right?

03:42 I'm waiting on the file system, I'm waiting on the database, I'm waiting on whatever.

03:46 So there's this cool library called Any.io.

03:49 So I indirectly learned about this from Sebastian Ramirez from FastAPI, because he talks about this thing called Asyncr, which extends a few things that are ultimately probably gonna make it back to Any.io.

04:02 So Any.io is an asynchronous networking and concurrency library that works on top of either Async.io, which is the one we all know and love, or Trio, which is similar to AsyncIO, but it has a larger, it has more of an understanding of dependencies between tasks and things.

04:23 How you can say, I'm gonna create a set of work that is made up of these tasks, and this task is actually a child of that other task.

04:29 So if I cancel the top level one, cancel its children, it's a little bit more complicated, but it solves this structured concurrency story that people sometimes need.

04:38 So you can use this to get some libraries that will do nice things with stuff you might wait on.

04:46 So some of the features include there's task groups.

04:49 That's the thing I was describing with parent-child relationship type of things.

04:53 With Trio, it has high-level networking, TCP, UDP, an API for byte streams and object streams, inter-task synchronization and communication, like locks and conditions and events and semaphores, worker threads, sub-processes, all kinds of stuff.

05:09 So go over and you can sort of see some real simple ways for it to run.

05:13 So one of the things that's sometimes not entirely obvious is how do you run something on async IO because you've got to make sure you've got an async IO event loop running.

05:25 And if there's already one, you should call get loop.

05:28 But if it's not one, you should create one and so on.

05:30 So this is just, you know, I have an async method which can be a task and just say, you know, trio.run or you can run and just say the backend is trio, which is pretty cool.

05:40 So all sorts of cool stuff like that.

05:42 And it just sort of simplifies working with these different things.

05:46 If we go and look at the sockets example, you can just say await async with await, woo, connect TCP, and that's allow you to do like await receive, await send, and so on.

05:58 So some nice libraries that come out of any IO for doing TCP, UDP, all that kind of stuff.

06:03 You know, the things you would wait on.

06:05 >> Yeah. So if you know you're going to use AsyncIO, would this buy you anything?

06:12 >> I think that it has those additional higher level libraries for talking to TCP and byte streams and stuff like that, and also the subprocess.

06:22 >> Yeah.

06:22 >> I think it does have some utility stuff on top of it.

06:26 But it's pretty cool. You can say a wait, run subprocess, which is pretty cool.

06:30 >> That's actually really cool.

06:32 >> I've not seen this one before, And that one kind of makes me excited now.

06:35 Yeah, that's cool.

06:36 Nice.

06:37 Cool.

06:38 So not a whole lot more to say about it than that, but if those are the types of things you're doing, then, you know, come check it out.

06:43 It's a cool library.

06:43 Do you know what else is cool?

06:45 I do not tell me about it.

06:46 Oh, I thought we were doing something else.

06:49 Wait.

06:50 Oh yes, we do.

06:51 I've got one more thing to talk about before we move on because we have a, a different number of things.

06:56 I'm not sure where we're sliding.

06:57 I'll slide it in here.

06:58 So what else is cool is that this episode is brought to you by Datadog.

07:03 Thank you Datadog for supporting the show.

07:05 They've been big supporters of Python Bytes for a really long time.

07:08 So that's fantastic. - Really appreciate it.

07:09 Plus really great t-shirts.

07:11 - Exactly, they've got cool t-shirts.

07:13 I mean, I definitely wanna get one of those.

07:16 So Datadog does a lot of things.

07:18 One of their things they're focusing on now is real-time monitoring.

07:21 So they have a real-time monitoring platform that unifies metrics, traces, logs into one tightly integrated platform.

07:28 Their APM empowers developers to identify anomalies, resolve issues and improve application performance.

07:35 You just finished the Talk Python episode talking about running production and everyone there on the panel was like, you need to make sure you're monitoring in production for things that change in your performance profile because you get too much data as your infrastructure changes, as the way your app is being used changed.

07:53 It could hit these scenarios and run into problems that you would just never see in testing.

07:57 So if you had Datadog APM, you would have caught it.

08:00 So you can begin collecting stack traces, visualize them as flame graphs, organize them into profile types, such as these are the CPU metrics, these are IO and so on.

08:10 Teams can search for specific profiles, correlate them with distributed traces if you're doing microservices and identify slower underperforming code for analysis and optimization.

08:20 Plus with Datadog's APM Live Search, you can perform searches across the full stream of ingest traces generated by your app over the last 15 minutes.

08:29 So try Datadog APM for free with a 14 day trial.

08:33 And if you do, you get that t-shirt that Brian mentioned.

08:37 So just go to pythonbytes.fm/datadog or click the link in your podcast player show notes or in this chapter.

08:43 Remember we talked about chapters and links.

08:45 I'll have this have a chapter as well.

08:46 So thank you Datadog for supporting the show.

08:49 Now let's talk about your next item, Brian.

08:52 - Yeah, I think it's Vax, Vex, Vex?

08:56 I don't know. - Vex?

08:56 - Vex? - Oh.

08:59 >> People are gaining traction for the idea of putting a pronunciation on a GitHub repo for projects that are not obvious.

09:05 >> Yeah.

09:06 >> I saw this on Twitter. Let's do it. Let's make it happen.

09:08 >> This was suggested by Glenn Ferguson.

09:11 This is a library that's a high-performance Python library for lazy out-of-core data frames.

09:19 I don't know what out-of-core is.

09:21 I looked it up in a glossary.

09:24 >> After the FAQ.

09:27 >> Yeah. Out of core typically refers to processing data that is too large to fit in the computer's memory.

09:35 That's what this is.

09:37 For data processing, often, you're trying to do some analysis, do some statistics, maybe explore the data a little bit, but you don't want to read it because they're huge datasets and you've got maybe a limited computer.

09:51 That's what this is set up to do.

09:55 The main features of it, So you've got like big data sets.

09:59 It also has, it has statistics like mean and sum and count and standard deviation, et cetera.

10:05 But it also has some visualizations that are sped up from how they've sped things up and not kept things in memory.

10:11 And they're using memory mapping and some tricks inside to try to avoid any memory copies and try to do it as lazy as computation as possible.

10:23 And this is actually pretty impressive.

10:24 I was watching some of the demos.

10:29 So there's a SciPy 2019 video where it's the person that started this library, which is now a company also, but does a demo of this.

10:41 And it's really impressive how fast things are.

10:44 He's pulling things up.

10:46 Because of the memory mapping, you can even have multiple, you know, multiple, Jupyter notebooks.

10:53 Yeah, that's it, multiple Jupyter notebooks looking at the same huge dataset and it doesn't slow things down even when things are working on it, it's pretty neat.

11:02 So I definitely think this is worth checking out.

11:05 One of the things on the README that I like is the key features.

11:09 So it's a instant opening of huge data files because it's memory mapping the data file.

11:14 It actually doesn't read, it doesn't do any reads when you read it.

11:17 But when you pull some data out, it does lazy reads, jumps ahead and it's pretty impressive.

11:23 So this also has an expression system so that it's kind of a, there is a little bit of a, so you can lazy transforms of data.

11:32 So that's neat.

11:33 Out of core data frames, like we said, fast group by an aggregations, a whole bunch of the fast and efficient joins are interesting.

11:41 I was watching, looking at another comparison of pandas and Dask and other things versus Vax.

11:49 and the joins of huge tables are pretty fast and seamless here, and those will blow up some projects.

11:58 So yeah, this is, yes, it is similar to Dask.

12:02 Somebody asked, "Lazy like Dask?" Yes, but--

12:07 - That's a good thing.

12:08 - Yeah.

12:09 Oops.

12:11 But it, yeah, a bunch of fun things.

12:15 It's good to have, it isn't the same as Dask, it's worth checking out to see if maybe this one might be a good fit for you.

12:22 Yeah, it's cool.

12:23 It's the lazy that makes the magic, right?

12:26 You don't have to load it all from disk.

12:27 You can distribute it.

12:28 There's all kinds of interesting things in the a billion sample per row operations per second.

12:35 That sounds that sounds pretty good.

12:37 Yeah, it's watching the demo.

12:39 It's incredible how fast he's popping up things and and loading, even even to be able to visualize things by pulling out samples out of the set.

12:49 >> Wait a minute, Brian.

12:50 I heard people told me that Python was slow, so it didn't make sense to do this kind of stuff with it.

12:54 What's going on here?

12:56 >> No, no, no. Python's fast.

12:59 >> I know. Pick the right libraries.

13:02 All right. One of the things that is definitely well-known in the Python world is Django.

13:07 I've even had people tell me, I came to become a Django developer and so I had to learn Python, which is a really interesting perspective.

13:15 So I want to talk about the Django developer survey results for the 2021 survey because that just recently happened.

13:22 So I'll highlight a couple of things that are interesting over here.

13:24 One of the questions was, what is the main reason you use Django?

13:28 Is it both for work, personal or for work?

13:30 Only 15% said just for work.

13:33 Does that seem like a lower number than you expect?

13:35 Yeah.

13:36 Yeah, I thought more people would just like, they'd go to work and do Django and they'd go home and they'd, I don't know, watch Game of Thrones or something.

13:41 But Django developers love it and they, you know, they use it a lot for all sorts of things.

13:46 So by far the biggest group here, 66% is for using it for both.

13:52 So that stood out to me.

13:53 Another one that's interesting is how many people are on the latest version.

13:58 So web apps often sort of get stuck in the past 'cause once you get them up and running, like people don't wanna touch it.

14:02 But 75% of the people are using the 3.2, which at the time of asking, I believe, was the latest version.

14:10 - Okay, I'm like, I thought we were up to four now.

14:12 What's going on there?

14:13 - Four is in beta.

14:14 I'm not 100% sure.

14:15 I don't think it's totally released.

14:16 But yeah, this is still, remember it's from 2021.

14:18 - Okay. - 2021.

14:20 And then also Django has this concept of the latest stable release and then a long-term support release.

14:26 So if you go to just the latest stable release and it's not LTS, you may have to upgrade sooner if you want security fixes and so on.

14:34 And yet 71% of the people use the latest stable release because they're upgrading frequently, I'm guessing.

14:39 And then 27% are on the latest LTS and 2% are just like, how do I upgrade this again?

14:44 I don't know.

14:46 But that's pretty interesting.

14:47 And then the next question was how often?

14:49 So 44% of the people upgrade every stable release, other people less so and it kind of breaks down.

14:56 5%, I use an unsupported version of Django.

14:59 I'm okay with that.

15:00 Databases for people doing Django is a very strong bias to use a relational database because much of the magic of Django depends upon the Django models, right?

15:11 Like the admin section is driven by that and so many things, and those are all relational.

15:15 So with that in mind, the most common database, 77% of the time is Postgres SQL, which is cool.

15:21 And then, does number two there surprise you, Brian?

15:24 - No, not really, SQLite.

15:26 - SQLite, yeah.

15:27 If you got very simple deployment stories, you're just gonna put it on one server, not much data, you just wanna need something relational, SQLite. Well, a lot of internal tools and stuff too. Exactly.

15:39 I mean, you wouldn't run like a major tech company on SQLite, get away with it, without scars and tears, but you know, for simple internal apps, that might just be what you need. You're going to make some SQLite enemies by saying that, but. But if you had 100,000 users concurrently using SQLite, that might be bad. Oh, somebody else said possibly because SQLite is the default setting, so.

16:03 Yeah, certainly that that is that's a big push.

16:05 The other one is, do you do caching?

16:09 So caching is another layer between the database and your web app where you get the database stuff back and then you stash it in the memory somewhere so that you don't have to do queries again.

16:20 So they said, do you do you do that?

16:23 And if so, what do you use?

16:24 47% Redis, 43% I don't do that.

16:28 And then the only other really notable thing is memcached.

16:32 So interesting there.

16:35 And I guess people, if they're really interested, they come through and look, there's a lot of, I don't wanna go through it 'cause there's so many details, but it's like, what are your favorite components?

16:43 Like models or admins or auth, or what contrib apps do you find most useful?

16:49 Like humanized or whatever.

16:50 So pretty interesting.

16:53 No surprise, people are using Django templates, not Jinja as their main templates.

16:57 And then look, it's a race between pytest and UnitTest as the top two most common frameworks.

17:04 - With pytest above Unitest, that's pretty cool.

17:07 Especially since Unitest is the default.

17:10 - Yeah, yeah, absolutely.

17:11 Let's see, I'll just wrap it up with some front-end stuff.

17:14 What JavaScript front-end frameworks do you most use?

17:16 jQuery, number one.

17:19 And I don't mean that with a negative way.

17:21 Like sometimes you just got some simple problems and you don't need a whole CLI to build a spot to like, you know, focus the text box.

17:28 All right, React is tied at 37% as well.

17:31 And then Vue and then Angular.

17:33 And then wow, HTMX made the list.

17:35 Look at this.

17:36 - That's pretty cool, actually.

17:37 - That's brand new shininess getting in there.

17:39 That's pretty cool.

17:40 - 5% but still.

17:41 - Yeah, and then CSS, we got Bootstrap way out front and then Tailwind and then pure CSS.

17:47 All right, so that's the survey results.

17:49 Pretty interesting.

17:50 - Nice.

17:51 - All right, what do you got next for us?

17:53 - Next, we've got more extras.

17:56 - We got extras, okay.

17:58 - Yes, extra, extra, extra, extra, extra, extra.

18:01 So I've got so many extras, I decided to make it one of my topics.

18:05 Brian, got anything else before I go on another rant?

18:09 - No, I'm just ready to listen to all these extras.

18:12 - All right, I got a bunch of good stuff.

18:13 So don't let the bad guys into your web apps.

18:17 Django just had secured releases for 4.01, sorry, 4.01, 3.2, and 2.6.6.

18:25 Oh, does that mean 4.0 is out?

18:27 - Yeah, nobody's using it.

18:29 - Yeah, well, they didn't use it in the past when I was an app.

18:32 Paul Everett and I teamed up to create a course over at Talk Python called Static Sites with Sphinx and Markdown.

18:40 So this course is free, everyone can go take it.

18:43 All you gotta do is have an account and go here and it teaches you how to do Markdown and Sphinx and generate static sites.

18:48 There's a cool little demo app that we build over here that you can go and do search and look around and see how you like, you document your code and do all kinds of stuff.

18:57 It's nothing too complicated, but sort of neat to see how to use Markdown with Sphinx, because typically Sphinx is about restructured text.

19:04 So check out the course over there.

19:06 I'll put that in the show notes.

19:08 I'm going to definitely check that out because I've got a project that I wanted to use Sphinx for, but I was a little intimidated.

19:13 So cool.

19:14 Yeah.

19:15 Paul does a great job with it.

19:16 So, and it's only an hour and 25 minutes or something.

19:19 So it's, it's not a huge investment in time.

19:21 Something that's bothered me basically ever since USB-C, what is this?

19:25 four years or something is I need more ports on my computer and I want them to be a BC ports because I have USB things these days because I want them to go into the ports that I already have until Thunderbolt four.

19:38 You've not been able to get a dock that has more than one USB C or Thunderbolt port, which is super weird to me, but recently they've come out with Thunderbolt four and I just got this thing called the CalDigit Thunderbolt four USB four Element Hub. Oh man, this thing is fantastic, right? I'm talking to you on my computer here and I have my 4k monitor, my 1080p camera, my microphone, my stream deck, the lights, keyboard, mouse, trackpad, like seven different things, including the monitor plugged in with one cable through this thing. That's really pretty cool. And so sweet. So basically it has On the front, it has three USB-C Thunderbolt 4 and a power in.

20:23 And then on the side, it has the Thunderbolt that goes to the computer and then also four USB, high-speed USB-A, but the good ones.

20:31 So really, really cool if you need to expand out your new-ish computer.

20:36 What are you using to plug into the monitor then?

20:38 I have a Thunderbolt 2 DisplayPort adapter.

20:43 And so that way, if I come with my new MacBook, I can just unplug one thing from my mini, click it over and then boom, I'm ready to go.

20:49 Everything's configured.

20:50 I'm going to get one of these then.

20:51 Yeah, they're not super cheap.

20:53 They've been out for about four or five months, but they've been sold out.

20:57 Supply chains, you know, what time of what's going on with supply chains, everything.

21:01 But they finally came out there on Amazon.

21:03 So I linked to it over on Amazon.

21:04 Also linked to this video that by Doc Rock talking about like, what the heck is this thing?

21:09 And why is it different?

21:11 All right. I also tweeted about how we use the stream deck to do our live stream, which was fun.

21:18 So I shared a bunch of pictures of that, like how we like put the website. So it says how it's streaming, how we tweet automatically, how we do the sharing and all that kind of stuff. I'm now going to be working on how to use that thing for software development. Like how do you use it for Jupyter notebooks? So every button on the stream deck, which is 14, three buttons, basically, Like how, what are the 14 Jupyter operations you'd like to have?

21:42 Like run all cells could be a button.

21:44 Or, you know, format with black could be a button.

21:46 All sorts of stuff.

21:47 So very cool.

21:48 Oh, you just have a black button.

21:50 Like with no logo.

21:51 Yes, yes, that should absolutely be black as well.

21:54 So anyway, people are interested in that.

21:56 That's there.

21:56 I did a talk at PyBay quite a while ago.

22:00 Now the talk is out.

22:02 Carson was kind enough to retweet that and pointed out that, hey, the talk is actually out.

22:07 So I'm linking to my PyBay talk, which was an in-person talk at a conference.

22:12 Imagine that.

22:12 Wow.

22:13 and San Francisco, that was really fun.

22:15 People can check that out.

22:16 Speaking of conferences, we are a media sponsor of Python web conference.

22:22 And so, you can definitely check that out.

22:24 This is one of the, honestly, becoming one of the bigger online conferences, it's five days.

22:28 All day.

22:29 You know, a lot of these online conferences are like, well, half day, a little thing here.

22:32 So a lot of tracks, a lot of things going on with the Python web conference.

22:35 I'm also speaking there as well.

22:37 Are you speaking there?

22:38 >> No.

22:38 >> I'm off to get you high testing something up there.

22:41 >> Well, I should probably do some web stuff.

22:43 >> Yeah, absolutely.

22:44 Absolutely. There's a code that you can use.

22:48 It's in the show notes, Python bytes at PWC2022, and I'll give you 15 percent off.

22:55 Also, in our neighborhood, sort of because it's virtual, does that still have meaning?

23:00 We have PyCascades coming up, And PI cascades is February 5th and 6th.

23:05 So that's going to be remote.

23:07 So it's not really local until things settle down.

23:10 So people, wherever it can take it.

23:11 Well, it's in our time zone.

23:13 So it's good.

23:14 That's true.

23:14 Time zone still matters.

23:15 It absolutely still matters.

23:17 All right.

23:17 That's it for all of, all of my extras.

23:20 And then we have Patrick out in the audience pointing out PyCon Italy is also happening in June.

23:25 So that's fantastic.

23:26 Yeah.

23:27 Oh, awesome.

23:29 So before we get to the joke, I wanted to like ask you this brain teaser that like my daughter brought on the spot.

23:37 So she yeah, I'm totally putting you on the spot.

23:40 So she came home.

23:42 I don't know.

23:43 She's she's in junior high.

23:44 She came home.

23:46 She said, we have this cool brain teaser.

23:47 Just want to ask you, just tell me what you think.

23:49 So it's it's a math problem.

23:51 So I'm going to go out.

23:53 I'm going to buy a baseball bat and a baseball.

23:55 The total for the both the baseball bat and the baseball or $1.10.

24:00 It's pretty cheap.

24:01 Yeah, the difference is the baseball.

24:05 Uhm, the baseball bat is $1 more than the baseball.

24:09 So how much is the baseball?

24:11 So I'm not going to.

24:12 You don't have to answer it right now, but it tripped me up for a little bit.

24:16 I'm like, why is this difficult?

24:17 It turns out it's like 5 cents because of 5 cents plus $1.05 is $1.10.

24:23 But my brain went.

24:24 It's $1.

24:25 It's a dollar and a dollar.

24:26 That's all my dad.

24:27 Yeah.

24:27 Yeah.

24:28 But that's the 90 cent difference.

24:29 I don't know why this is difficult, but it's a fun brain teaser to ask people.

24:33 And be funny.

24:34 Very cool.

24:35 Well, you know what else is funny?

24:37 That feeling of joy that we get as software developers, but is mixed in with I kind of remember myself screaming at my computer yesterday, like out loud because something was so frustrating.

24:51 I was just like, how is it possible that this is not working?

24:54 Like what is going on?

24:56 It wasn't actually about programming.

24:57 It was with some app or something.

24:58 It was, it's always something else.

25:00 Yeah.

25:00 Yes.

25:01 Sometimes it's my fault, but anyway, so the joke is expressing that feeling.

25:06 And it's the sticker says, I hate programming.

25:08 I hate programming.

25:10 I hate programming.

25:11 It works.

25:11 I love programming.

25:13 This is amazing.

25:13 Look, it's like, it's like childbirth.

25:16 Like you forget all the horror and pain.

25:18 Like, oh, look at my amazing app.

25:19 Like, do you remember like you cried for two days because like you couldn't get it to query the database right in production.

25:26 >> Yeah.

25:26 >> You love it because now it works.

25:29 >> I love this. I was there this morning.

25:31 I was fighting Jenkins of trying to create a Jenkins job with four repos and different branches.

25:40 I hate Jenkins.

25:43 >> If it works or when it works.

25:45 >> When it works, I'm like, "Sweet, I am the smartest person in the world.

25:48 I'm ready to do this all the time." >> Fantastic. All right.

25:51 >> Well, it never ends.

25:53 It never ends. We've been doing this a long time and we still have these feelings, don't we?

25:56 >> Yeah. So thanks a lot, Michael, for another great show.

26:01 >> Yeah, you as well. It's always fun.

26:03 Thank you everyone for listening. Catch you all later.

26:06 >> Thanks for listening to Python Bytes.

26:09 Follow the show on Twitter via @PythonBytes.

26:12 That's Python Bytes as in B-Y-T-E-S.

26:15 Get the full show notes over at PythonBytes.fm.

26:18 If you have a news item we should cover, just visit Python by set of them and click Submit in the nav bar. We're always on the lookout for sharing something cool. If you want to join us for the live recording, just visit the website and click live stream to get notified of when our next episode goes live. That's usually happening at noon Pacific on Wednesdays over at YouTube. On behalf of myself and Brian Okken. This is Michael Kennedy, thank you for listening and sharing this podcast with your friends and colleagues.

Back to show page