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.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More