#414: Because we are not monsters

#414: Because we are not monsters

Released Monday, 16th December 2024
Good episode? Give it some love!
#414: Because we are not monsters

#414: Because we are not monsters

#414: Because we are not monsters

#414: Because we are not monsters

Monday, 16th December 2024
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

0:04

your earbuds. This is episode 414, recorded December 16th, 2024. I'm Michael Kennedy.

0:12

And I'm Brian Okken. And this episode is brought to you by us, all of our things, books, courses, stuff like that.

0:18

We have many things for you to get better at Python. Check them out, links at the top of the

0:23

show. And we are now pretty active on Blue Sky. Brian, thanks for dragging me over. And I want

0:30

to point out that you can go to my profile and click on Starter Pack. And there's a bunch of Python

0:35

people. If you click that, you follow me, you follow Brian, you follow the podcast, plus something

0:40

like 60 other noteworthy Python people like Samuel Colvin and others. So that's a real quick and easy

0:47

way to jump in there and kind of get going on that.

0:50

Starter Packs are pretty cool. Starter Packs are a really cool growth hack for Blue Sky. Yeah.

0:56

Yeah. Blue Sky is fun. I'm enjoying it over there. I'm wondering if the surge of momentum is starting

1:03

to fade a little bit, but we'll see. I know people are excited and I think it's a great place. So

1:08

I encourage people to check it out. If you would like to get every week, all the show notes and

1:14

links and everything delivered to your inbox, even if you don't happen to listen that week, which I

1:19

don't know why that would happen, Brian. That would be a big mistake.

1:21

That'd be weird. It would be very weird. But even then, if you go to Python by set of M, click on newsletter,

1:28

enter your information. Well, then Brian will send you a handcrafted, artisanal version of

1:33

the show notes. So very awesome. I did say heavy, Django heavy, didn't I, Brian?

1:38

Yeah. Let's start. Let's start with Django.

1:41

Well, we're going to start with a small item, but I think it's going to affect me right away. So Jeff

1:47

Triplett announced he's got a new project to shorten Django-admin to just Django. And what we're

1:56

talking about isn't the admin section of Django. It's just the command. So the thing, like on the command

2:02

line, I have it up in like a tutorial. So like, like for instance, the Django tutorial, there's,

2:08

there's, there's a bunch of Django admin command line things that you have to run like start project

2:15

or, and a bunch of other stuff too. So if you type Django-admin and some stuff like that,

2:21

and you've ever thought, why can't I just type Django to do this? Jeff has thought that too. So that

2:27

this new project just makes it so that you, you just pip install it with your stuff. And then you,

2:33

you don't have to use Django admin anymore. You can just use Django for, for the, the command line

2:39

thing. So the, and the idea, I mean, it's a, it's a great idea. And he does say in his, we've got a

2:46

blog post announcing it that he would like to see this in the normal Django, but the Django-admin won't

2:53

go away anytime because it's already been there for 20 years or more. So, but it'd be great if it

2:59

was just like this, because why not? Yeah. That'd be amazing. I don't see why you couldn't have them

3:04

both. And I think, I mean, what other commands do you type Django on the command line and do stuff for

3:09

most people, right? Yeah, exactly. You just take it. Yeah. So exactly. And you can have multiple entry

3:15

points in the Django package when you install it, which will give you both commands as you see fit. So

3:21

yeah, let's do it. Yeah. Also I've been doing a lot of Django lately and I appreciate just,

3:28

it's half the characters. If I counted them, he mentioned it's half the characters. I'm like,

3:33

really? Yep. It's not just half the characters, even more significantly, it's the dash, right? Which

3:38

requires like a incantation on your keyboard a little bit. Yeah. The different, yeah. It's not as fast to

3:44

type. So yeah. Thanks Jeff. So I would like to ask you, Brian, having done some Django lately,

3:50

have you seen any unicorns? Yeah. No. Because I have. I saw a Pegasus, but not a unicorn. Yes. The

3:57

Pegasus. That is like a unicorn, but I don't believe it has a horn or as much magical powers. Okay.

4:03

I'm not entirely sure of the mythology of Pegasi versus unicorns, but the magical reactive component

4:11

framework for Django is the Django unicorn. This is pretty neat. I just learned about this. Let's see,

4:17

is it, it's, it's not super new. I just, it's super new to me. Okay. So the idea here is that it's a

4:24

little bit like a JavaScript front end framework, like react or something, but you can avoid using

4:32

it, right? You can avoid writing your own JavaScript front end. Instead, you can just pip install Django

4:36

unicorn, add it as an app. And then you've got to include it scripts and so on. But somewhere down

4:42

here, you can use these unicorn attribute modifiers in your template, right? You can say unicorn submit.prevent

4:49

add, add, and then instead tie that to, if I don't scroll too quickly, you can tie that to a model

4:55

called task. And if you hit escape, what does it do? It'll change, like replace the task text with that,

5:02

this thing right here, right? And you can just add a button when you click this, call the function add

5:08

and so on. And then what you do is you go and you create like a form object and an item that maps to it.

5:15

And then it just automatically wires together the creation of, of these, let's see, where's the

5:20

example. So yeah, not enough here on the little example on the homepage for me to totally know

5:25

exactly how it works. But basically when you interact with this UI element, it maps to rest functions

5:32

implemented by the unicorn thing automatically, right? So you can just include some, it's a little bit

5:39

like HCMX. You just include some magical text on there and it'll call back to the server. But the

5:44

difference is it'll handle it on the server as well. Right. So pretty neat. Yeah. So if it says,

5:49

is it magic? Sort of feels like it, it progressively enhances normal Django views with the initial render

5:57

being server side rendering, which is like I said, like HTMX as well, depends how you use it, but it

6:03

can be. So it's good for SEO. It just the pure HTML content is there. It's not just like angle

6:09

brackets everywhere. When you view source, it binds the elements you specify automatically and makes the

6:14

Ajax calls on its own when it needs it. And it comes back and it updates the DOM when the HTML changes

6:20

or with the HTML changes. So yeah, just write normal Django type stuff. And it takes it, it says,

6:25

it also has other features, form validation, redirections, dirty states, partial updates, polling,

6:31

etc. And then down here somewhere, maybe it's in the docs. It says, here's what you might do instead.

6:37

Right. You might have to use reactor. You might have to use this other thing. Unfortunately, I think

6:43

that's here on this page. It says what else you might have to use. Yeah, there's better examples on

6:48

their landing page. It gives you sort of a comparison to view, react, etc. What is notably lacking here is

6:56

HTML, which like I said, is kind of like it. But nonetheless, if people are doing Django and they

7:01

want something like viewer react, but they don't really want to do JavaScript, this could be a pretty

7:05

interesting thing to check out 2400 GitHub stars, pretty decent. And this is and this is a fairly basic,

7:11

like low learning curve to just try to it might be enough before you jump into something else. So

7:18

Yeah, absolutely. And by the way, real time follow up on your, your item. This is what I thought when I

7:24

heard about the Django admin, Pat Decker just says alias Django equals Django dash admin. And that's

7:29

exactly I'm like, yep, I have so many things like that. Like that's a huge long command. That is

7:34

alias to two or two letters. Okay, fine. I could do that also. But but it's nice. I mean, why why impose

7:40

the longer version on everybody until they get either think about it or you know, a lot of people are new

7:46

when they take these tutorials, they don't know that they can do that kind of stuff.

7:49

Right. Or you might be like on Windows, and I have no idea how to alias anything on Windows.

7:53

So batch files, it's all batch files. All right, over to you.

7:59

Oh, what am I talking about? I wanted to talk about testing a little bit. I had fun time reading

8:06

this article from Ned Batchelder called testing some tidbits. So this is sort of a fun thing. So he posted,

8:13

he just posted, like, let's say you had this, you wanted to, he wanted to look at different ways to

8:19

check to see if a string only had zeros or ones in it, and nothing else. And there's a lot of ways you

8:26

could do this. He presented, let's see, one, two, three, four, five, six different ways in a post on

8:33

both Mastodon and Blue Sky. And then he got a whole bunch of replies saying, like other ways to do it.

8:41

And, and one, it's kind of a fun, just like, like, how would I do this sort of thing? And there's a lot

8:47

of ways to handle it, which is fun. Anyway, so he, he also wanted to test how to do it. And since

8:53

there's testing in the title, I thought maybe he'd use my test or something. But yeah, no, he's got

9:00

like a set of good input that should be just all zeros and ones. And then a set of bad input that has,

9:06

you know, it's not all, and some of it's like a whole bunch of zeros and just one non zero. The

9:12

empty string is used. That would be considered good. And then I, even a thousand character,

9:17

a rain, a string with a thousand characters in it or 10,000, it's 10,000. Wow. So big, long string.

9:25

So, and then a whole bunch of different ways that he had, he has original checks, but plus a whole

9:30

bunch of others that other people used. And then his, he just runs through them. But that one of the

9:36

things I really loved about this is I learned some stuff about pytest or Python. I learned about

9:41

clean doc from inspect.clean doc. It's a way to strip out a white space that I usually use. What did I use?

9:50

I use, usually used a like text rapid D dent for something like this, but so I'm going to have to

9:58

run some testing to find out which one deals with stuff better clean doc. That might be better. Yeah,

10:04

that's cool. And then there's a partitioning. I don't use partition much, so I couldn't, I didn't

10:09

remember what that does. So partition, he was using partition to strip out comments. And what it does is

10:14

split a string on, on whatever you pass it in, in this case, the pound sign or, or hash or whatever

10:21

you want to call it. And then he used a, and then it splits that into three strings before the, before

10:28

the delimiter, what the delimiter was and after. And so this is, this is a way to just grab everything

10:34

before the comment, which is cool. And then he used, what else did I learn? Oh, I didn't understand what

10:40

this if not test is in here for first, but this was checking for blank lines, which makes sense or

10:46

stuff with just a comment. But then there's this eval, which I am so afraid of evals, but in this case,

10:54

you're writing the stuff it's from right here. So it's pretty safe, but eval the code and then passing

11:01

in a variable like the S variable into the code. So everywhere in this code, you're the S means the

11:08

string you're passing in, but this or G, what does or G do? And what he's doing is it's, it's a way

11:14

with eval to pass in imported stuff. So it imports, it'll import the regular expression and the counter

11:21

modules into the eval statement. So I didn't know you could do that. So I was thinking bitwise or

11:28

yeah. No, it's a way to get these imports in there, which is pretty cool. Anyway, that's fun.

11:34

And then he lists some other ways, but I was still frustrated that there's no pytest in here.

11:39

So I thought, how would I do this with pytest? So I just wrote up a quick blog post, actually just

11:46

praising Ned as well, because I learned some stuff and I like learning new things. But then what did I

11:53

do? I imported pytest, the same imports that he used, and then the, the same good and bad and tests.

12:00

But then I just split it up a bit different and used parameterization to write the test code. So

12:06

if anybody wants to use pytest instead, here we go. The excellent, the one fun thing that I had was this

12:13

10,000 character I'm using with parameterization. I was able to take the, the input as part of when you,

12:21

you do pytest dash fee, it prints out all this. It's the parameterization prints out, which is nice. But I

12:28

I didn't want 10,000 characters printed out. So I also got to use the ID function to shorten that up a

12:34

bit, shorted it to 20 characters. But anyway, testing.

12:38

Very nice. Yeah. I love the compare and contrast as well.

12:41

Yeah. Yeah. Awesome. Let's talk some trends, huh?

12:44

Okay. So this was originally just going to be an extra. The more I looked at them, like this actually could be a fun

12:49

conversation for you and me to have. So I wrote a article for the JetBrains blog called "The State

12:56

of Python in 2024." Okay.

12:59

I thought that'd be pretty fun. And there's eight key trends or whatever I pulled out. So I thought,

13:03

hey, you know, maybe, maybe that'd be fun to talk about the eight trends and get your thoughts on it.

13:08

All right. So let's do it real quick. So first of all, Python keeps growing. But it's interesting

13:15

that actually, if you look at the amount of other languages used along with Python, they're decreasing.

13:22

Right? So for example, in 2021, 40% of Python people did JavaScript plus Python. Now it's only 35.

13:28

If you look at Bash, 33% of people did. Now 29 do. And a lot of languages are going down like that,

13:35

except for Rust. So that's pretty interesting. And that's because so many people are coming into Python

13:42

from non-traditional programming languages like data science and other scientists and so on. You know,

13:48

GitHub just announced that, I think we covered this, that GitHub said that Python is the most popular

13:54

language on GitHub now. It's pretty awesome. But most of those people are coming from non-traditional

14:00

backgrounds, meaning they're just going into like Jupyter Notebooks or something like that, right?

14:05

Like this is their only Py programming language is Python.

14:07

Yes, exactly. Exactly. They're like, they just became programmers. So they're not doing the other

14:12

stuff. So it's interesting to see these like, hey, you're doing less JavaScript as a community,

14:17

which is kind of the opposite of what I would imagine. And very, very closely to what you said,

14:21

41% of Python developers have been working professionally in any language for less than two years.

14:27

Like almost everyone is new here. Yeah. And actually, I remember somebody talking about this, this, this question,

14:35

like maybe it was a different question, but like how long have you been a professional Python developer?

14:40

And a lot of people taking this survey don't think of themselves as developers. They think of themselves as just some other job. They happen to use programming also.

14:50

Yeah, exactly. So yeah. And then if you throw in three to five years at like, that's pretty much it.

14:54

Yeah. Trend three. Oh, let's go up to the years again. Where are we at?

14:58

Oh, just 11 plus. So we're just in one bucket of 13% of the people.

15:03

And even so that's only like over 10 years is basically only 13%, which is wild.

15:09

Yeah, that's really wild. Yeah, yeah, yeah. Where do people learn Python? They learn it on YouTube,

15:14

on our John codes, and coding. And if they listen to podcasts, talk Python to me, who's the number one out there.

15:21

Nice. But I'm sure Python buys us just under, just under. Trend four, Python two versus three,

15:29

that's over. We've raged on about the legacy Python long enough. There will be no 2.8 says Guido all

15:37

the way back in 2014. Right. But if you look at it, it's like asymptotically, like whoever's still

15:43

on Python two, they just, those people aren't leaving.

15:45

Yeah. It's what's surprising to me is the people that are still on that and are participating in

15:52

surveys. I think they just fully have checked out. I imagine a lot of those people, which is 6%

15:59

for this year that are still on Python two, that they're on some huge project. I know there's some,

16:05

they're not going to migrate the project. The project will not migrate, but those people would

16:09

very much like to, and they probably in their spare time work with him FastAPI and other modern things.

16:16

But when they go back to work, they're here. You know what I mean?

16:18

Yeah. Or at least some of their project is using that. Yeah.

16:21

Yeah, exactly. But still, let's keep going. All right. Flask, Django and FastAPI are all the top

16:29

three frameworks, which is nearly a dead heat, which is pretty interesting. We just talked a lot about

16:34

Django. But what's interesting is if you ask web developers who are Python people,

16:39

not just Python people, but we talked about there's a lot of people who don't consider themselves

16:43

like developers or whatever. But if you say, hey, web developers who are also Python people,

16:47

Django is used one and a half times as much as Flask or FastAPI.

16:54

Oh, yeah. So amongst the web developers, Django is clearly leading the pack. But amongst data scientists,

17:00

Flask and FastAPI are ahead because they're more about building APIs and getting their models online

17:05

and so on. So that's a pretty interesting difference, right?

17:08

Yeah. And I'm thinking there's a lot of data or data science stuff that doesn't have a back

17:13

database or anything or some huge thing. Yeah.

17:16

Yeah. Where do you host your stuff? It's all about the hyperscale clouds, apparently, which is

17:21

blowing my mind, actually. AWS, Google Cloud and Azure represent, gosh, how much did it say?

17:28

I wrote it out maybe at the top. Represent something like 78% of where people host their code. Yeah,

17:34

78% are on one of the three massive clouds. Wow.

17:37

Hetzner is showing up. Hetzner is there. Yeah. I mean, we put a dent in Hetzner.

17:41

We definitely did. We got one server there. Yeah. And also Heroku interestingly went down,

17:48

but I think that's because when they canceled their free tier, a lot of people stopped. They

17:52

decided to turn off their for move elsewhere. But Python Anywhere is going strong, actually,

17:57

above all the other small providers, right? DigitalOcean, Hetzner, Linode, and so on.

18:01

Python Anywhere. Interesting. Yeah. Yeah. That's pretty wild, right? All right. Two more. People prefer containers over VMs and

18:06

they prefer VMs over bare hardware. That shouldn't be a surprise, should it? I mean,

18:11

maybe the containers versus VMs, but certainly not just straight hardware. Straight hardware is not

18:16

even on the picture, by the way. It's like lower. And last trend of 2024 is UV takes the Python

18:22

packaging, takes Python packaging by store. Yes.

18:25

I think that's obviously it's, we've covered it a bunch of times. It's not just that it's fast.

18:30

It's that it combines a bunch of functionality from different tools into different places. Yeah.

18:35

It's super neat. It installs Python. It installs, it creates virtual environments. It manages projects,

18:42

if you wish. It updates. There's a lot of, a lot of good stuff there.

18:45

And anyway, I think a big part of the UV uptick is the UV team tried to make it so that you could use

18:52

it with your current workflow. You didn't really have to change your workflow.

18:55

Yeah. I think that is very much an important part of it. That's why I adopted it for sure.

18:59

So, yeah. So anyway, these are, these are my trends. Hopefully people find those interesting.

19:04

There's a lot of like writing and data to back that up in the link.

19:07

Right. Yeah. All right. Yeah. Yeah. Extra.

19:10

I've just got. We've come to extras.

19:12

I just got one extra toggling back to Django just for a moment is I noticed that Django admin has a

19:21

Dracula theme now under the Dracula theme.com. And I can't, I can't remember where I learned it from.

19:29

One of the maintainers posted this on, on, on blue sky, I think. But anyway, it looks great.

19:35

Great colors. And I also, because of this learned that there is a thing called Dracula theme.com that

19:43

contains like a whole bunch of different projects that all have Dracula theme. So.

19:48

Oh, nice. So let's see what I love it. Yeah. And it has cool bats. Oh no. No pad plus. That's funny.

19:56

Nice. VS Code. Cool. Yeah. Yeah. Obviously. Obviously. no visual studio. Oh, oh yeah. I guess people use visual studio still.

20:07

Um, anyway. Yeah. viewer on windows. Yeah.

20:09

Yeah. Jet brains. Of course. Nice. Cool. So yeah, I had no idea about this site. That's super cool.

20:14

That's fun. How about extras for you? I have a couple. Let's see here. First of all, my Zen browser experiment is

20:24

still going strong. I'm absolutely loving the Zen browser. It's based on Firefox, which I really like.

20:29

Okay. But that also means that you're limited to the Firefox limitations. Like I can't use it for our

20:35

live stream because our live stream only supports Chrome, which really means Chromium based browsers.

20:41

Right? So I, there's certain times that I'm not using it, but yeah, I'm enjoying people can check that out.

20:46

I feel, I talked to somebody and they're like, this is what Firefox should have built. This is like fire.

20:51

Why is Firefox not doing this? Yeah. You know, it's, it's a good question. I do think I honestly,

20:58

you know, as sort of a sidebar, I'm, I'm a little worried what's going to happen to Mozilla and

21:02

Firefox if the antitrust thing against Google goes through, right? Because if that goes through 90% of

21:09

Mozilla's revenue instantly gets declared illegal and cut off, not illegal for Firefox and Mozilla,

21:15

but illegal for Google. So they would have to stop. Right? Yeah. Maybe I'm not following that. So,

21:20

well, one of the big problems is Google has used their monopoly and their money and all that to buy

21:27

off locations to basically pay to either be the default or to prevent competition in different

21:33

ways. For example, they're paying something like $23 billion to Apple to be the default search engine,

21:39

not just in Safari on iOS, but in, if you go to Siri and you ask it a question, right? Like where does it,

21:45

it says, Oh, here, I'm going to search the web for you. Like, how do you think it's going to search

21:48

the web? Yeah, that's paid. That's okay. Right. But they're also paying, I don't remember the number,

21:54

but it's 90% of the revenue of Mozilla to support Mozilla. But I, you know, there's a lot of

21:59

thinking that that is to, to be the default search engine on Firefox. Right. But so that would make

22:05

it illegal for them to do that. Okay. It's the double whammy of like, they're kind of paying Mozilla to

22:10

keep Firefox around so they can say that there's competition. Yeah. Right. But if they can no longer

22:15

pay Mozilla to be the default search engine. Hmm. It's fishy though. If is there really competition

22:22

when you're only competitors paying you to be there? I know it's well, I mean, why is there a lawsuit?

22:29

Right? Yeah. So we'll, we'll see. Anyway. I think it's really cool. I'm enjoying it. Still a big fan of

22:35

Vivaldi as well, which is what I'm talking to you around on right now. Yeah. But also, did you know that

22:39

Microsoft has a browser? I heard of that. Oh, you know what? It's actually just based on Chrome.

22:43

Although Google doesn't pay for that one. I don't believe. Okay. I bet you get Bing as your default

22:48

search engine there. All right. refresh my desk setup. I just, I really, I'm enjoying this way more.

22:54

I set up a little separate table and a little separate computer. So I have a nice view. So I'm not

22:58

looking at like cameras and lights and junk all day. Oh, wow. Even if they're turned off,

23:03

I'm still just staring at a wall with like sound padding and stuff. And I enjoy it way more than

23:09

I realized. And I just want to encourage people. Like you're kind of frustrated with where you're

23:12

sitting, where you're looking while you're at work. Like maybe it's not that much work. It took a couple

23:16

hours. So I can look at trees instead of recording foam, which I encourage. All right. And while I was

23:21

sitting at this fun new desk, Brian, I added a really cool feature to our RSS feed. When I realized that,

23:28

there's an updated spec to RSS, which allows you to specify transcripts in subtitle format. So VTT,

23:36

web VTT or SRT files. Right. Okay.

23:39

So I added those to our set of transcripts to the website supplies to RSS feed. And now you get real

23:45

time follow along as you and I speak transcripts. Oh, wow.

23:50

And that cool. So you can just say, show the transcripts. And it's kind of like a Spotify or

23:54

YouTube music. It's just like follows along as we speak in the real transcripts. And I think you can

23:59

even search them. Although that's probably a per player type of thing. So this doesn't work in

24:04

overcast sadly, but it does work as far as I can tell in Apple podcasts and pocket casts. So at least

24:11

in those two, if you see a little transcript thing and you click it, that means it's going to follow

24:15

along in real time with our conversation. I wanted to have the little bouncy ball, like,

24:19

like, you know, the singalong movies when we're kids.

24:22

Boop, boop, boop, boop. Yeah, exactly. And, it works really good on an iPad. Like you can have

24:27

the, the view of the control and the art and everything. And then next to it, it has.

24:31

Oh, nice. Yeah. Yeah. But it's still also works on the phone. All right. that's it for my extras.

24:36

All right. Oh, I just wanted to add, it took five days to generate those transcripts with the computer

24:42

running 24 hours a day. So I regenerated these cause only, only maybe a third of our episodes had

24:50

VTT format. They had a different format. Just, it's like a pure text type thing that our website

24:55

understands and people can read. But VTT is more of us. It's like not JSON, but imagine like,

25:01

here's your JSON transcript to read, right? It would feel a little bit like that. Yeah. So I've always

25:06

thought of VTT is like some extra setting that is completely useless because I'd never use it. So,

25:12

um, so I'm glad that you are. You could use SRT. Those are the two that are supported here. Those are

25:16

like the two well-known subtitle formats or whatever. But yeah, I fired up. I have my old M1 Mac mini

25:22

laying around and I'm like, I'm just going to go over there and have it generate these for Python

25:27

bytes and talk Python five days later. It was done. And then I have a whole bunch of Python software

25:34

that goes through and like correct stuff. Like Ruff formatter is like R O U G H. I'm like,

25:41

no, not really. That's not what we meant to say. And it'll sometimes get your, you'll be Brian Aiken.

25:48

I'm like, Nope, we're going to fix that. And so on. Sometimes I'm Brian Aiken.

25:52

I don't know. Oh, we're good. Oh, I'm Aiken.

25:55

Yeah. So there's a lot of work that went in to make this happen. So hopefully people enjoy it. And

26:00

yeah, cool. Thanks for it. And I appreciate you keeping improving the back, the back end of Python

26:07

bytes. So yeah, you're welcome. No problem. Okay. You know what? If you were,

26:13

if you were working on software, you taught, you started this show off with testing, right?

26:17

Yeah. Well, if, if no, you start off with the jingle, but we did talk a lot about testing.

26:23

Second item. Anyway, if you were doing testing and you wanted to make sure your tests pass,

26:29

you have many options, Brian, you could not run the test, but if the tests are going to run and say

26:33

continuous integration, whoa, boy, you better make those tests pass or continuous integration is going to

26:38

fail. So Martin Bettman shared this joke with us on blue sky said, how about Volkswagen? You know,

26:48

they kind of gotten a little bit of trouble for writing their car software to say, yes, these diesels,

26:55

they're so clean. You should absolutely get clean diesel, not dirty diesel, get a Volkswagen. What

27:00

that really meant was while it's under test, it's going to change how it behaves to have a better

27:06

emissions test than not. Right? So this is riffing on that and says, Volkswagen, this is a thing you

27:12

can install into your apps is it detects when your tests are being run in a CI server and make sure they

27:17

pass. Okay, I got to check this out. That's hilarious. Yeah, it says why? Well, if you want your software

27:23

to be adopted by Americans, because that's where VW got caught for their cheating, test scores from the CI

27:31

server are very important. Volkswagen uses a defeat device to detect when it's being tested in CI server

27:37

will automatically reduce the errors to an acceptable level for the test to pass. This allows you to spend

27:43

less time worrying about testing and more time enjoying the good life as a trust, trustful software

27:48

developer. They even have a badge like a read me for your GitHub read me. Yeah, with a build passing with

27:57

a little Volkswagen symbol. That's great. Works for Travis CI, Circle CI, Jenkins, Hudson's Bamboo, Team

28:04

City, TFS, Visual Studio Online CI, GitLab, etc., etc., etc. And it defeats assert, tap, tape, and shy.

28:14

And any actual, any test actually that is set to exit code or throw an error. That's funny.

28:21

That's bad, right? I gotta check out and see all the ways they're doing it. Yeah.

28:24

I know. I was wondering like, how does this actually work? People don't really do this. It's a joke.

28:30

Well, so I've actually had cases where, especially during development, where I didn't want the CI to

28:38

jump out at the end of the test, even if there's failures. So there is a pytest feature where you

28:44

can change the exit code. It's a pytest custom exit code internal plugin or something.

28:50

pytest dash always exit zero?

28:53

Pretty much, yeah. To override the exit code so that you can debug the rest of the tool chain

29:00

or get data on something. But yeah.

29:02

That's the only time I've done that. But that's funny.

29:05

It's a little, the image or the logo of it or whatever is like a little Volkswagen bug from

29:11

the 70s that transforms into a transformer robot. I'm using.

29:15

Nice. There's 13 contributors to this. There's 15 releases. What is this?

29:20

How many stars?

29:23

Okay, okay. Let's find out. Oh, 15,000 stars.

29:27

People are using this thing. Oh my goodness.

29:30

Or just amused by it. It's been nine years old or something.

29:34

Yeah, it has been around for a while, but I ran across this and thought it's pretty funny.

29:38

So this is good. Yeah. Yeah. All right. Well, as always, thanks for being here. Thanks everyone for listening.

29:44

Thank you. Bye.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features