Django Chat

Funding Open Source - Jeff Triplett

Episode Summary

Jeff is a partner at RevSys, a former Director and Vice Chair of the Python Software Foundation, and co-founder/former President of DEFNA. We discuss recent Django third-party packages, djangopackages.org, function-based and class-based views, the current state of Tailwind, and more.

Episode Notes

Sponsor

Episode Transcription

Will Vincent 0:00
This episode is sponsored by mail trap, an email delivery platform the developers love try for free@mailtrap.io

Hi, welcome to another episode of Django chat podcast on the Django web framework. I'm Will Vincent, joined as ever by Carlton Gibson, Hello, Carlton.

Carlton Gibson 0:19
Hello Will

Will Vincent 0:20
And we're very pleased to welcome back Jeff. Triplett, welcome Jeff.

Jeff Triplett 0:23
Yeah, thanks for having me. It's fun to be back. Thanks

Carlton Gibson 0:26
for coming back on.

Will Vincent 0:28
So Carlton has, or you have been talking to me about Carlton's Neapolitan package that you use regularly. And so let's just, let's just jump in there, Carlton. Maybe you, you, you give us the history because you were telling me off air. So this is about a year old, but, yeah, so why? Why Neapolitan and why? Why is it changed? How you develop as well? Okay, well,

Carlton Gibson 0:50
I so I stepped down from being a fellow nearly like the end of March last year. So we're recording just final week of March. And so it's basically a year since I started on my new project, which is parts which an application on in the environment, on social governance space. But the point isn't the application. The point was that I sat down to write it, and I was like, No, I haven't got the tools I need. And specifically, I wanted a simpler take on the class based views that Django provides. I for years, you know, you I know all the methods. I know what they all do, but can I remember what class they're on, or which set of classes they're on, or what the exact imports for that? No, I can't remember those, those things at all. And I wanted to change that. And I'd had this idea bubbling away, and I was like, Right, no, I'm gonna, I'm gonna sit down and I'm gonna write this class first, this, this thing. First of all, I've sort of bootstrapped it in a afternoon more or less, and a bit of tidying up to get it released. But what it is is a sim is a single class based view which does all your crud methods. So it does that it's got, gives you the list view, gives you the detail view, gives you the Create, the update, the Delete views, and with the Confirm delete and a few basic templates. So the basic templates are more for bootstrapping purposes, and you replace them very quickly with your own. But you said it's changed. It really has. It's been a revelation. No more. No longer am I reaching for? Oh, where is it? Oh, no, it's I know exactly where it is, and it's just like, Yeah, I'm overriding get context data now I'm overriding get query set data now I'm overriding get object data now, and they're the same methods, but there's no like, oh, this, this goes through three classes in order to resolve it so that one gets up. There's none of that. And there's no where is it? It's all in the one place. So I'm loving Neapolitan, and I did it for me, and that Jeff has picked it up is a really nice thing. So you know, Jeff, you tell me about how great Neopolitan is,

Jeff Triplett 2:45
no pressure there at all. Yeah, it's been pretty good. I mean, my one of the reasons that I stay on Django is the Django admin. And I think the ability to quickly, like, write Python code, have an admin where you can go in, add data, you know, quickly, model what your application is going to look like. But the issue has always been especially with client work. Because I'm a consultant at Rev says, when I'm trying to hook up a new client and I'm trying to give them the ability to write applications or to use an application, the Django admin is kind of a stretch. For some people. It's good. I think for some of us, if it's you know, if it's your first project, it's great. But whenever you know you need, you need to kind of like, create what's kind of like the admin with some permissions, and you need this kind of filler in the middle, because, you know, the Django admin being really nice to show, like, here's a list of all your models and your list views and your crud stuff. Really what, what the person using your website is going to want to do is just log into their dashboard and they want to see the kind of like objects they want to interact with, like I've written a Django news jobs is something will and I've worked on, and it's a job website. And so having the ability to use Neapolitan to just get in and see which jobs are available, make a quick edit if I need to, and be able to publish those. Neapolitan does a really good job of kind of giving you that middle ground of this is the front end. I can customize it a little more than the Django admin, but you also have the right hooks there to be able to customize a form. And this is something like, I'm kind of probably putting words in your mouth, because it takes a little bit more of a higher level to do some of the form customizations. But the right hooks are there, and you're right, you don't have to go find a website that's going to show you the 18 layers you need to get to to know which class I need to override and how to override those. So diapollon has been really nice for just here's my model. Let's get something up on the front end, and let's just start, you know, cutting away and customizing with templates to make this look like something a client would want to use, or I want to use,

Carlton Gibson 4:43
yeah, well, I'm glad, I'm glad you like the thing that came to mind there was like, yes, you still need to know the patterns from, because it just uses the same patterns from the Django class based views, but they're just kind of squashed up together. So that's the advantage of it, is they're squashed up together, and you don't have this, but it's you still kind of need that familiarity with. You know, I. Customize the form by doing this

Jeff Triplett 5:02
or doing that. You've maintained what Django filters for a while, and it has Django filter support built in, so you get pagination that just basically works your ship in tailwind templates as well, for tailwind CSS, people who like it, which is kind of kind of funny that it's a little controversial today to say that I don't know, yeah, I'm happy for frameworks like I like Django because it's a web framework and it means I don't have to write Python code. And I like CSS frameworks because it means I can just make things look pretty and fiddle with it so it looks right. And I like HTML x because it's a framework for JavaScript, so I don't have to write as much JavaScript. So I am all four new frameworks that make my life as a developer easier.

Carlton Gibson 5:45
Yeah, I mean, tailwinds been a bit controversial. Recently. There's been a bit of pushback from the sort of pure but I think, you know, the CSS community that you know, but I kind of feel, I feel a disconnect when I read those critiques, because they don't seem to ever engage with the reason why I like tailwind, they don't. It's there's very little acknowledgement of any of the points that I see the positives. And it's like, well, we're obviously talking from different places here, and that's okay, that happens, but I found it a bit frustrating.

Jeff Triplett 6:16
I have no problem with using vanilla CSS. I think it's great to use CSS, and if you really like if that's where you want to spend your time, that's awesome. I wish the people that make the critiques that I see retweeted or reposted, or whatever it's called today. I wish they took the time to actually use the framework, because they sound like people who don't know what they're talking about. And it's kind of like with politics, like there are nuances to politics that I wish we could get over, because we could have conversations about what we don't really like, and we could have that tailwind discussion, but we can't get there from the hot takes that I see online, because all that is doing is slam dunking and it's being reposted by people who already don't like this thing. So to me, it's just not a productive use of time. So yeah, but when I use tailwind, I get a lot out of it for not much time. And I've learned a lot about CSS now. So I can actually look at grid and look at Flexbox and understand what's going on and it's it's just taught me a lot from through that. So if tailwind stops being a thing tomorrow, I'm happy to take my classes it generates and keep moving forward. So yeah,

Carlton Gibson 7:17
I would just one more thing I'll just say on the tailwind front was that they've just announced the the alpha for the next version. And what I'm really excited about that is that it brings a lot back into CSS, native css. So for instance, the configuration for the theme is done with CSS variables, rather than in this horrible JavaScript embedded CSS in JavaScript thing, which, you know, I It's that was necessary, given the state of the tooling, but where to bring that into CSS variables is going to be much nicer, I think, and much more forward facing,

Jeff Triplett 7:51
yeah. And they rewrote the whole thing in Rust, which is kind of awesome. And so it's written in rust. It must be good. Now we have this, like, rust revolution. Now where, like, you know, Pip has been somebody took a what is it? I forget the name of the company that's that's working on it, but you've got this UV which sort of kind of replaces Pip. They also replace, like PIP tools. And I say replace is kind of about like nothing's ever going to replace Pip, because PIP is so close to pi, pi and Python packaging, that they're always going to create new features and do neat things, and you need PIP to make UV work, but it's nice seeing tooling that I can use and run that takes like, a half second, something that used to take 30 seconds to resolve, and like I've seen GitHub action build times drop in half. Local Development experience has gotten a lot better through these tools. And so I'm not quite like, ooh, something is something is good, because I see it written in Rust, but I'm liking what I'm seeing, which is people are really excited to start working on these hard problems, and they're using a language that, in theory, should be a lot faster. So I'm happy to see that that's

Carlton Gibson 8:56
cool. And just to click, just to double back and clarify that you've been using, because I haven't had a chance to pick up UV and really play with it yet, but you've been digging into it, and you've been having good success. I

Jeff Triplett 9:06
have. I've kind of written a couple of blog posts on it, just because it's just quick, and I've yet to see it really fall down. So I've kind of been documenting it as I go. But yeah, I've used it for GitHub actions. I do a lot with containers, as you know, I do a lot outside of containers to kind of bootstrap my IDE which is kind of a weird concept, like when I started writing code, I thought, Ooh, I want to make websites or make video games or do something cool. And now I feel like I spend a lot of time, like making IDEs happy, which is something that nobody thinks about when they're a kid and says, I want to make my developer environment work better. But, yeah, I mean, it cuts it shaves minutes off your off of your, you know, context switching. And anytime I merge a pull request, I have to rebuild, you know, the server has to rebuild. Code gets deployed. So it's, it's kind of cool saying, like, your bills get cut in half, and developer experiences not be a thing that we joke about, like, I'm going to build my containers. Let's go get coffee. So. Yeah, but it's it just, it's boring tech and it seems to work. Well, okay, cool. Good,

Will Vincent 10:05
good. Well, you mentioned get I think you and I, Jeff, were just talking because you are you, you posted about you, you still like tower, right? Whereas Carlton, you like fork, right? Just to give a shout out,

Carlton Gibson 10:18
it's not like dislike town.

Will Vincent 10:20
I'm not saying you do. I'm just, I think, like, people listen to this podcast, I think, in part to be like, Oh, I didn't know about that tool. Like plenty of people don't know about UV now they can go check it out. Same thing with Git. I think, I mean, for me, I just use the Github desktop, but I don't do complicated git stuff. But all these tools to have a visual representation is so helpful over I don't care how much you've configured your command line like it's helpful to see all the branches and everything folks

Carlton Gibson 10:48
who can do a complex, you know, oh, it's all gone wrong. Rebase without using something like tower or fork or one of these, you know, get gooeys that they're few and far between, and they're not us normal mortals, like,

Will Vincent 11:02
I assume Adam Johnson can at this point, since he has a book shout out, check out his book. But it's not necessarily, yeah, well, you know, he has this whole book driven development, right? Like in writing the book, he started contributing to Git, and now he's some way has, you know, some way involved directly in that community. But yes, anyway, shout out to those tools. I don't, Jeff, do you know? So it's astral, as the company behind uv is, I'm always suspicious of VC backed companies making open source tools, not that we can't use it, but, like, how are they going to make money? How are they going to, like, how is it all going to work out? Right? Because I sorry, no, I just, I don't know if there's a quick answer, or maybe it doesn't matter, you know, so htm X, to me, one of the things that's great about it is we've had Carson gross, the founder on he's, like, he's just gotten some grants, but like, it's not VC backed, like it's his thing. It's open source. To that, to me, that feels much more sustainable than something with a clock ticking where they're going to have to go into hosting or selling data or something,

Jeff Triplett 12:06
I can't speak for, what their intentions are behind it. I think I put my first website up on the internet in like 1997 and so I've kind of been seeing open source since the 90s that dates me or AGEs me. And I think I tweeted this or blogged about this a while back, but I really want a couple of decades of us taking money for open source before we complain about, like, what the interests are or what's going to happen with like the money used. The worst case is this is open source software, and as we've seen with Redis, as we've seen with other projects, if a day comes that they decide to change the licensing or change what the tool does. These things are open source. We learn from what they have built. People can fork those off and go advance it however they want to. And, you know, and some of these VC I've read a couple of the articles that they've linked to, and basically it was some acknowledgement. And I don't want to give VCs like, I want them to come out and like, go to their conferences and say this for themselves, because they're not paying me to shill for them. But there was some talk about, and I believe I read this, where they said, we're okay putting money in the ecosystems, because this helps our other businesses and this helps technology, which makes us, indirectly, money. I think we should embrace that spirit, and like I said, I put that on their shoulders to go out and start saying this more publicly in a bigger platform, but I think we need to see that, because we have a lot of companies who do open source, and they're not really projects that actually leave the companies and they pat themselves on the back because they're getting a tax break for R D, and they don't have to pay taxes when they when they pay, you know, they

Will Vincent 13:38
don't pay taxes anyways, Jeff, Don't worry about that. Yes, they don't. So, like, if they're

Jeff Triplett 13:43
opening up their checkbooks to pay foundations or to pay smart developers to have a team of four or five people to work on stuff, then I think that's yes. Let's do more of that for a while. Then we can see the Netflix series for how things went wrong and how, you know, movie ruined the Python ecosystem, right?

Carlton Gibson 14:01
Well, yeah. I mean, I like that sentiment. I think it would it be too bad if we were in the position where the bad consequences had turned up, because at the moment, they're just hypothetical bad consequences. And there's got to be a quite a bit of runway between where we are and where we where those bad consequences come out, which is a net gain, right? Yeah,

Jeff Triplett 14:18
I'm not going to complain about someone being able to put money in their 401, K, who's an open source developer, like, that's the system working right? So,

Will Vincent 14:26
totally, totally right. I mean, it's either, you know, big company like Microsoft's doing a lot of helpful things, but, you know, there's a risk there, or VCs, or there are these, you know, there are these foundations doing grants. I mean, the Django all off. Just got Raymond Penner has just got a grant from, I forget the name of foundation, but that's seems like it's going to be an amazing thing, because he's been doing an unbelievable job with that project for over a decade. And now we'll be able to, you know, add, add more features. So, yeah, we'll take, we'll take the money and worry about the. Consequences, you know. But because also, like, what was it, nginx, right? They, the developer sold it, or something happened, and then now he's forked it, and has, I forget the name, but, like, you know, engine X, yeah, whatever, whatever it's called, right? Because it is open source. So, you know, it's, it's not proprietary. So that's, that's interesting to see.

Jeff Triplett 15:21
I'll give one more shout out in the Redis as well. So, oh,

Will Vincent 15:24
maybe I was thinking of Reddit. Maybe I was thinking, No,

Carlton Gibson 15:27
it's both. Is both. So they both recently got forks, which are, you know, more open source, but

Will Vincent 15:34
like initial in nginx, I think it's the initial creator who eventually like, who's doing the fork? Well, it doesn't matter, but yes, it's if it's open source, people can, can do what they like. One more cool thing I just mentioned, and Jeff, this comes from you, as most of my open source projects too, is is Zed as a text editor from the atom crew, which I've only briefly played with, but seems quite cool in terms of a fast, you know, open source text editor. I assume they're using rust, though, I don't know.

Jeff Triplett 16:11
So that's another gotta be rust. Everything's rust now. So, yeah,

Will Vincent 16:13
I mean, what else can it be? Right? Like,

Jeff Triplett 16:16
I've, I've been playing with it on like, Fridays, for some reason, it's just a, like, the kids go to bed or whatever, and I'm watching Netflix, or it's been basketball, because it's March Madness. So when this comes out, everybody will have the madness will be over, and there will be a champion who's not Kansas, my home team here. Yeah, I've been playing with it kind of like on weekends. There's not a lot of configuration to it. It runs the Dracula theme, which I really like. So that's really the only perk I've seen. And it's fast, so I've just been kind of using it to dabble. I'm not changing to it anytime soon. The fact that you can't customize it more, I'm just too stupid to know, like where the extensions are and how to install them, because they're written in Rust, so I can't figure that part out, and there doesn't seem to be a package manager or anything. So I'm probably wrong in that assumption, but it looks pretty neat, and I've enjoyed that. It's the closest thing to having a fast search since Sublime Text, which is one of the reasons I use Sublime Text over the cutesy IDs. So,

Will Vincent 17:10
yeah, well, I, for quite a while, I used, I still used atom as just like a, sort of like my BB Edit Carlton, you know, for the reason that I didn't want to configure anything, but like all the others, just come with all this stuff. And I was like, I just want a nice theme and not too slow, and just access my I use it as, like, sort of my writing editor, where I wanted some basic syntax, but I didn't want all the junk. But, you know, then they it went away. So anyways, yeah, so that's, that's another cool tool. I do want to shout out, Carl. I keep, I keep interrupting you. Carlton, one thing I want to say, we'll put a link to your talk on Neapolitan, but I think the context is important, which is that there is for people who aren't as familiar with Django, classy class based views. There's this amazing website that helps you understand all the methods and all the rest in classes you should look at. And Tom Christie's vanilla views inspired both the project and the name Neapolitan, which I think most people is a little bit more than vanilla, right? But I think quickly, what are his vanilla views? Which is not a new project, but I don't like I didn't. I hadn't heard about it until you mentioned it to me several years ago. Okay,

Carlton Gibson 18:16
so Django vanilla views was the direct inspiration in that it, it takes the class based views of Django and then but re implements them without the mix ins, and this calls to super methods and the class hierarchy, which is where they get confusing. And so you end up with, I think, a basic form view, and then a create view, a list view, a detail view, and a destroy view. And that's all. That's all. It's wonderful and it they're really simple, and it's worth going read the source code. And once you have a look at the vanilla view source code, all of a sudden it's like, Oh, I see what the Django generic views are doing. It starts to make the control flow much, much more sense. For years, I was using vanilla views, but say, for instance, I've got a model, and that model is restricted to for the current user, that it's a subset of all the instances that model. So I'm going to have a get query set model. It's going to the first thing it's going to do is my model, dot objects, dot for user, and passing the request, dot user. And then that's the base query set. And I don't want to have to rewrite that every single time for you know. So I do my list view, and then I need to sort of copy and paste it into the detail view or and in there, or I need to create a mix in is, I don't want to do all that. And so crowd view, Neapolitans crowd view is just takes the vanilla views and squishes them together, and it adds, like the Django filter support and a few other bits and bobs. So it's a little bit more than vanilla. It's, it's Neapolitan, which is the chocolate, strawberry and vanilla ice cream. So that was, that was the inspiration for the name. And I'll just, you know, flush for a moment. More is that I find it really amazing because I create a new model. I just create this, the one instance of the crowd view, and then I can work my list view quickly. And. And there's a make template command. So I write, I now need to override the list name, so I just quickly make that template, and then I'm like, I'm working on the detail view, and I just do make template detail, and I override that, and I can customize it. And I have only had to edit the URL conf the once. I've only had to create the one view class. I've only had to create the get query set once, or the Form class once, or the filter set class once, and they apply, they're there and ready to use for all the different models, all this, all the different methods related to that one model. And so a good example is, when I want to add an extra view, I've got, like, say you've got a user attachment field, and so it's got a name, it's got some metadata, it's got a link to another model, and it's also got a file field where you upload the actual file, and then you want to do an authenticated download. Well, you've got the authentication, you've got the deep the get object logic, you've got the permissions checks already in crud view, so you just add an extra, one little extra handler, and then return your file response, and there's your authenticated download view. And it was really quick and easy to do. And again, I didn't have to edit the URL conf. I didn't have to find the right base classes. That's why I like it. Yeah,

Will Vincent 21:09
I've been doing literally that in a project. So I won't say I feel guilty, because I don't believe in guilt, but the patterns you're talking about are ubiquitous, and Django development, and you know, it's kind of all we're doing, on a certain level, is that kind of stuff. And, you know, yeah, I can go get the user passes test mix in and update the test underscore func thing to for the user. But then I'm, I'm like, literally copying that logic, as you say, from list view to detail view, because it's the same kind of thing. I'm just query set to an object. So,

Carlton Gibson 21:40
and I'm trying to work on the docs a bit more for neopolton. At the moment, I'm just trying to improve them. And one thing I want to do is have a little quote at the top. And so one quote I want on one page will is you saying, saying that 95% of all apps are crud, you know? Because,

Will Vincent 21:54
oh yeah, sure. I mean, pretty much, you know, it's still challenging, right? But at the end of the day, it's, kind of the same thing. But you mentioned templates, template partials. Talk to me. Okay, so

Carlton Gibson 22:07
template partials, the other thing I created was because I wanted to use HTML. So, you know, we talked about tailwind. Let's just leave tailwind on the side. I just as it's there, it's like, you get a file where you've used tailwind. And the other things I use is HTML x, and then the other one I use is Alpine js, and then I might have a cup the Django template language with all of that in, and you get this file that it, at first glance, it looks like an utter mess. And you're like, how would you how? How can you live with this, this file? But actually is like, Oh no, but that's that's that, and that's that, and it's all in the one place. And it's this idea of locality, of behavior, of doing everything in one place, and it's not the end it's not the end goal, right? Look, healthy behavior isn't the final position. When it gets too complex, yeah, I can break that out into some separate JavaScript, or I can break that into its own CSS, or I can break this into a separate view. But tell you what, when you're getting going, it really does speed you up because you're not having to cut and paste and which tab was it, and where is it, you know, it's right in front of you. So I like that. But HTML X, you'll replace, instead of doing replacing the whole page. So you've got, I don't know, a detailed view, and you want to quickly edit it. And then I don't know, but the example I use, used in my talk last year at DjangoCon Europe was a bookmark, and you've got, is it a favorite? Well, okay, you just want to update, and is it a favorite, and then refresh. And so instead of sending, refreshing the whole page, submitting the form and submitting the whole page, you'll just send the AJAX request, and then you'll just get a small snippet of HTML back, and you'll just slot that in in the right place in the template. And that's amazing. But what normally happens is you've got a big template, and then you just want a teeny weeny, weeny bitty, bitty of it from it. And template partials enable, enables you to name those, those itty bitty bits, and then ask the server, just give me that one itty bitty bit rather than the whole document. And so I create this little package, then Django template partials, which seems to have been well received. And again, I'm loving it. There's no way back for that for me now, and I'm hoping that we can smuggle it into Django for 5.2 I'm going to make the f I'm going to make the effort, I'm going to make the pull request, I'm going to try and get it in. And hopefully we can, because it's, you know, it's been, needs to

Jeff Triplett 24:14
be, because Django can do all of these things. It can, you know, by default, it's rendering pages. It can render snippets. But it doesn't have that good way of saying, cool. Only give me this one snippet. And so I like it. I use it for tables. I use it for forms. It's just kind of a pattern that once you start using it's like, why has this not always been there? And so I hope that doesn't make

Will Vincent 24:33
it Well, Jeff, I've just been, we've just been talking about Carlton stuff. What's new with you? For those who are, oh, listen, I

Jeff Triplett 24:41
do have a question for Carlton, though, because I'm always fascinated when we talk about for one like Neapolitan, I feel like is the best of like view sets. And I know view sets can sometimes be a dirty word for some, I think they're amazing. So what I've noticed this trend is that people are very passionate about if you should use function views, or you should use class views. So. I just use whatever I need because I'm lazy, and sometimes that's a function view, sometimes that's a class view, and I don't think about it, but my question for you is, how come people that are so passionate about using function based views argue with all of their life that we should use class based tests? And people who are like so Pro on class based views say, just use functional tests. And it's this, like, weird divide where people are, like, it's all one and one in the other in these areas. But I've never seen an argument for both, like, only functions in both areas. Ah,

Carlton Gibson 25:33
well, I'm an old I'm a dinosaur here. So I use Django test test case and Django test case and unit test style testing rather than pi test by choice. I'm totally happy to use PYtest. But, you know, I think unit test has all the features we need, especially with subtests. So the one the one thing that was really nice before subtest came along, that I thought that PYtest brought, was the parameterization, where you can run the same test with different inputs, time and time again, and with subtests, you get exactly the same thing, just a different structure. But that's the thing, it's just a different structure, right? Whether you a class, what's a class? It's a namespace. It gives you somewhere to it gives you like a scrap of paper on which you can doodle, which is safe from the sort of the rest of the code outside it. So quite often you can break it, you know, break your code up, and you'll put it there, and you can and it's might be horrible that you've got a safe, contained interface inside that class where it doesn't really matter if it's a bit dirty. And I think the reality is certainly the reality when I'm coding, I don't know about you, but when I'm coding, I have often no idea exactly what it's going to look like before I've written it. It's in the process of writing the code that I find out how it's going to work and exactly what it's going to look like. And sometimes I need to know that that's wrapped up nice and safely and tight. And by doing in a class, I've got that namespace which keeps it safe. And I could do that in a module, I could move into a module, I could just do functions in the module. But you know, what are you trading? Then you're trading a file for a level of indentation. Well, is that a good trade off? It depends on your project, and you know what the rest of your code looks like. There is. There's no point being religious about this. Right? Function based views, class based views. Well, the class based view is nesting. It's got the self parameter, but it's inside a namespace. That's the trade off. Which do you want for your circumstance? I don't know about testing. I don't know why people get so religious about the testing. Like,

Jeff Triplett 27:32
maybe you've got a view, you've seen this trend, though, right? Like, am I wrong on this assessment that people seem to be really like, you know, all the excuses they say are reasons, the reasons they like, they don't like classes, then they just, it just flips over and they forget those it's like amnesia when they start talking about, like, why they like using them for classes or for tests, either way. Yeah,

Carlton Gibson 27:51
no. There's a lot of excitement about pi test, and then it leads towards the functional, the function based route. But then, you know, how do you organize your tests? Well, you might put them in a class, and that's okay. It lets you,

Jeff Triplett 28:05
I don't like I hope they rewrite to make it faster. But that's my only complaint, but

Carlton Gibson 28:12
it's the discovery. We've got to get that going quickly. Did that answer your question? I mean, that's my take. Is that they're just different. It's it's different, different ways of looking at the same problem.

Jeff Triplett 28:23
Yeah, entirely. I like pi test. I like using PI test as a runner for Django. Is fine. It just, it just, it's easy, it's fast. I feel like it's easier to explain tests to somebody who's new and show patterns that don't have the cruft of like what a class may bring. But you can write class based pi Test, test too.

Carlton Gibson 28:42
So that's fine. You were going to ask a question. Well, well, just

Will Vincent 28:45
Jeff, for those listening, what we've

Carlton Gibson 28:49
listed? We've listed

Will Vincent 28:52
a whole bunch of Carlton things that I know that you're using, but what else it's been? What is it? It's been a while. It's been over a year. What I think we probably talked about Docker a bunch in the past. Well, maybe you and I can talk about so we, we still have the car out. Then go ahead. Well, I

Carlton Gibson 29:09
want you know you I'll let you go in a minute with yours. I'll go. You've got me started now. You can't shut me up. I want to ask about Django packages, Jeff, you've been doing a wonderful job there. I want to see what's new. And you know what your thoughts are, and how's that all going? Yeah,

Jeff Triplett 29:25
we've been keeping it going, for sure. I wish I had something more exciting to say about it. We basically have just been whenever I when I started maintaining the project, it kind of been outdated for a while, and it kind of needed help, and so all I've tried to do is keep the lights on, keep it running. We've upgraded the latest versions of Django, so I believe it's running on Django five as of the time you're listening to this, we're either on python 311 or 312 so we basically kept it up. We've also started working on some rules behind like how. Packages get scored, and how the there's these grids which do comparisons of like, Django all off versus Django, not all off. And, you know, and there's, and that's something that I wish we'd had more time to really tackle, because I think that resource basically right now, it shows you, like, how many GitHub stars something has, which is popularity, and it kind of gives you an idea of when it was updated. And so we're, we've kind of had some behind the scenes rewrites where we're trying to make like, Why does my package score higher than something else that looks like it's the same? How do we normalize the number of like? You know, we GitHub stars shouldn't determine what the best package is, because something could be 10 years old. Hasn't been outdated. It hasn't been updated in forever, and then, like a newer package that has been maintained for four or five years doesn't quite get the light shined on it that it needs to. So we kind of have some behind the scenes work where we've got a scoring system that's, like, semi connected, and we're trying to write a UI around that that shows you, like, look, you know, here's why you don't get these 10 points, because of this thing that you need to address. And by going here, let's, let's link you to the docs that shows you transparently. Like, how do I improve my package? Because, you know, healthy packages maintain packages, I think is good for the Django ecosystem. And it's also just this big catalog of, like, I think it's like five or 6000 packages in it. I checked Pypi occasionally, and there's probably, like, 14 to 15,000 Django packages. We could pull all those in, but that's a lot of potential garbage. So, yes, so yeah, it's a hard project, and the grids have gotten so kind of unmanageable that I've spent a lot of time thinking through like, how do we restructure this? How do we rebuild it? And so I've got some ideas. I've been short on time I was on the Django or the, sorry, the Python Software Foundation Board cup for last five years. My term expired in the fall, and so I have time again. And it's been really, how is retirement? Retirement has been great. It's that it should have ended in the summer, but it took them a little longer to kind of like, get their wheels, you know, kind of land on their feet, and get the new board going. So I still do a lot with them, like I'm in a couple of work groups and kind of advisory stuff for them as they need, which is, it's a healthy place, but it's just I don't have to think about it, which is good, because five years was a long time, especially pre during and it's not quite post pandemic, but things are at least going a proper direction, where for a while, we feared every winter, and so that's really hard with PyCon. It's really hard, like with something the size of Python, and trying to worry about, like, are people going to have jobs, or, what are we going to do, or, or is it my family going to be safe? Is your family, you know. So it just was a very stressful three of the five years. So,

Carlton Gibson 32:46
yeah, absolutely, absolutely. You mentioned there PyCon. Are you still involved with DjangoCon? Have you managed to step back a bit there as well?

Jeff Triplett 32:54
I stepped down as definite president. I'm still on the board. So my goal there was just to step back, be advisory, and then we have a new board. And part of it too is like, because I was the president for like, seven of the eight years, I think there's just a lot of institutional knowledge, and I also chaired for two or three of those years. And so it's just not an easy thing to give to somebody. And we haven't really had the same level of like, you know, PyCon tries to get someone to be the chair for four years. And so someone will be like the vice chair for two, and then they become the chair for two, and then they get the next one in. And we've just never really had that. A part of that was because of, you know, maybe the, you know, because DjangoCon is newer than PyCon. Part of it was probably because of the, you know, the pandemic and not having a conference in person for two years. It's just it's harder to get that same continuity. And so we have a wonderful group last year because we had an in person conference, we were able to get, like, newer people who are more interested in continuing. And it kind of, you know, poor Drew has been the program chair for four or five years, I think, now, and we've had Adam doing AV for four or five years, and we've kind of had the same people doing a lot of things. Of things that, you know, we kind of, we kind of, like, burn ourselves out in some ways, and people are doing it for the right reasons. But it's also important to get, you know, new blood, new volunteers, get people, you know, who are more interested in doing things and bringing some new element to the conference. So I just try to, like, help them with things. Like, last week, I had to go to the bank and do a bunch of, like, boring tasks that nobody else wants to do, but, you know, and we're looking for a new treasurer, which I hope, I don't know when this podcast comes out, but that news may be, we may have already ended things may So, yeah, it'll be over by, hopefully mid April. So we have a new board member we're looking for, hopefully, a treasurer. We're kind of rethinking how we do treasure, trying to find, like a firm or something as well, that we can pay to start doing some the day to day bookkeeping for us, DjangoCon, us two. I think April 24 is when our CFP ends. So that'll be over, and you all would have applied, and we're hopefully like looking at your proposals by then, which is

Will Vincent 34:58
done anonymously. I applied. You helped convince me, Jeff

Jeff Triplett 35:04
to talk. I

Carlton Gibson 35:07
haven't yet, but I'm lining I'm lining up I missed last year for family reasons, and I'm lining up that I've got another four weeks to craft the perfect submission. I will, I think I will make it this year if I can. This

Will Vincent 35:21
episode is sponsored by mail trap, an email delivery platform that developers love, an email sending solution with industry best analytics, SMTP, an email API, SDKs for major programming languages and 24/7 human support. Try for free at mail trap.io, for

Jeff Triplett 35:37
me, it's a healthier place because for there was a lot of years where I had to worry about, like, if I take this Friday off, or if I don't get this thing done, then how does this affect DjangoCon? How does this affect Defne? How does this affect the PSF? And, you know, it wasn't like, I didn't have a lot to do anyways, because I've got two kids, and they're young, and we're just kind of hanging out. But you know, sometimes it's the it's just a lot of external pressure there that I'm kind of happy to not have to really think so much about it, like I do these office hour sessions on Friday. Sometimes I haven't had one in two weeks. I thought I was going to have one this Friday, but then I found out it's a holiday if I don't have it, I don't have to worry about a conference not happening. I don't have to worry about people are getting paid. I don't have to worry about the same level of stress, right?

Carlton Gibson 36:24
Yeah, yeah, yeah, that sounds good. I think what you've described there about bringing in new people and having a kind of continuity, I think exactly the same thing is going on with Django at the moment, in terms of lots of people have stepped back and Okay, so there's lots of young people coming in. And how do we, how do we manage that transition?

Jeff Triplett 36:42
Sarah boy says the new fellow, yes, yeah, she started. Breaking news in a month and a half, it's

Will Vincent 36:50
been announced. Yeah, wait, When did she start? Right away. What's the timing on the start? I

Carlton Gibson 36:55
didn't she'll start second of April. What would have started? Will have started? Saying, will

Will Vincent 36:59
have started? Yeah, well, I think it's also just, it's interesting. I mean, this podcast could be three, three retired, uh, volunteer people, in a way, you know, I didn't do five years only golden goes, but, yeah, but, I mean, right, you know the old sayings, the meat grinder for Django. I certainly saw some of the older generation, or the previous generation, you know, just completely step away. And, you know, it seems, hopefully three of us are an example. It's like a little more manageable, where you can step away and lose that just, you know, again, those little things that like grind away at you, but still be involved, still be you know, you're doing open source, like we, we do the podcast, Jeff and I do the newsletter, right? Like, you don't have to fully step away and having new people come in, you know, because there is so much knowledge just to pass on, it's a lot. It's less burnout for the next people when there's a smooth transition, instead of, like, walking into a situation that's on fire.

Carlton Gibson 37:57
Yeah. I mean, I did the fellow role for five years, and part of it, I probably wouldn't have done it that long if it that long if it hadn't been for covid and, you know, sort of like, ah, within this, this weird thing. Now I'm not, I can't stop now, um, but I wanted to stop before it got to the point where I'm like, Oh no. You know what? I'm fed up of Django. I want, I mean, I'm in love with Django. I'm love building with Django again. But if I'd have stayed as the fellow for too long, I'd have become disenchanted, or

Jeff Triplett 38:22
it's healthy to have it on your own terms, which I hope that's where you're at now, now that you're not the fellow is that you know, you work on the projects that you want to work on, and nothing's going to be on fire. Because if a bad release of Django template partials or Neapolitan just means, okay, whatever, I kick out another release. It's not like, you know, you can bait, like, if Python has a bad release, there are hundreds of weird new sites that want to, like, put some headline and make it a security issue, right? Like, it, yeah, it's gotten really weird. Like, when we started doing Python, I never thought that there would be, like, every Friday when I check news, there's, like, made up security stories, because, like, Python has a module that can read and they can delete files and, like, that was literally a headline

Will Vincent 39:04
one time. And I'm like, It's programming language, of course, I think you're too, too caught up in what's happening in the world.

Jeff Triplett 39:11
Nah, it's just the normal thing though. Like, you know you can, you know, you're on terms now where, like, if Django has a bad release, or there's something, like, there's, there is pressure there to do a release and to be solid and and the fellows get a lot of that, I assume, a lot of that stress and a lot of that pressure put on them, compared to I go publish something on GitHub, and if it doesn't work, I may fix it in a week. I may fix it in a night. I may not ever fix it. That's just, you know, yeah, no, it's

Carlton Gibson 39:37
exactly that there's when you release Django, there is a pressure, and there's why it's one reason why it's so risk averse to breaking changes. Because, literally, every time we change anything, there'll be five issues opened within about an hour saying you've broken my boot, you know, broken down. Like, oh no, we have to fix it. And, yeah, it's, it is pressure. Compared to, are we? Do you mind just pinning to the last version while we work this one out? It's, yeah, you know, which, again, is available for Django. But somehow it's not quite the same, you know, that same level of acceptance of that, I don't know. I mean, why would it be? Django is a major project. It

Will Vincent 40:16
seems just like a pressure valve that kind of builds up, right? As you said, Jeff, these little things, like a Friday, and just at some point you go, but then it also takes, I think it takes, a good six months to kind of have that dissipate a little bit, right? I mean, both because whoever comes in still probably needs some help with things, but also just to, like, settle your mind around the idea that you don't have this separate email account, or you don't have these regular meetings like your is a transition to that openness that then lets you do new things, do fun things, you know, maybe do the same thing, but without the pressure, or less of the pressure. So it

Jeff Triplett 40:54
definitely felt like a vacuum release for me. Where, like, when I was done with PSF stuff, then I didn't think about it. It's like, cool. I can, I can go do these other things now, and it was a little weird because of some of the advisory stuff. But, you know, they're in a good place and a healthy place, and I am too. So that's, that's good for me. I just want

Carlton Gibson 41:12
to swing back to Django practices very quickly, because there was one thought that one discussion that came up on the social thingy, Bob the about, you know, working out kind of a, not, I use this a kind of package role, like, how, you know, it is this something we could do with Django packages? Maybe it's like to, you know, have a user account and tag our favorite packages or something. Because if we had an ecosystem of of users, would, it would help to bubble up to the top, the good the good ones or something. I mean, do you have thoughts in that space? I'm not giving you work. I'm just sort of, yeah,

Jeff Triplett 41:46
no, and it's fully open source project. Would love both to the code and the docs to help people get on board. And honestly, like, this is a ongoing. I don't know if it's the right place or time, but Django knots is kind of, we've we've talked back and forth about, like, would this be a good project? To try to get somebody from Django nuts to work on? And maybe, if it's not the next session, maybe the next one, and maybe that's the right level of feature somebody could do some of this already exists in Django packages. It just isn't really turned on at the moment. I don't know if that was a spam issue or something in the past, but that's something I need to look at because we were talking about it on, like you said, the social thingies. I like the idea. I also like the telemetry kind of idea as well. Like, I would really like for somebody to be able to, like, install something and in a non bad way, be able to say, like, you know, go report my packages that I'm using in a secure way, so that we could start inventorying, like, what packages are actually in production, versus like, I like Carlton, and he writes four or five projects that I basically install and everything. So those are always going to be popular. But like, is it popular? Because I tell people about it versus like, I would really like to get to the core of like, what are the boring maybe there was it HTTP X libraries that replace requests. Maybe those are really core and we should know more about them. Other than just Amazon uses it, so it gets downloaded a lot, because everybody uses Amazon, right? So, like, I would like some level of, like, being able to do that as well. So yeah, from a user perspective, the ability to go in, I think that's kind of there. I think we just need to dust it off and put a better UI around it. And also, because there's 6000 packages, I don't want a lot of spam where people misspell a package name and stuff like that. So there's got to be some level of like, does this already exist, or does it get queued up? And then, how do we go? Because most of my time spent on Django packages is removing spam. I wish I had more time to write code. And I, you know, like I spend maybe once a week I'll upgrade, uh, security updates and stuff on the site, just to make sure, like, you know, that's a big enough site that people will try to hack it, and I want to prevent that. Yeah,

Carlton Gibson 43:49
and just one more, one more thought that came to mind was, you were talking about the grids and them getting out of hand. But I use, I find them still a really good research tool. So, you know, if I've got, I need a feature. Oh, this has been done before. Let's have a little search around what exists, what options were taken. It may be that, you know, the 10 year old package that Django packages I don't use, but it had a kernel of some good idea. They think, oh, yeah, I could do a similar approach. And so I still, I think there's value in keeping that, that that size of packages and those grids. I think there's something, you know, useful to be able to see. The one thing Django always has is like, oh, Django, plus the thing I just thought of, and then there's always a package that someone took it on right at this point. To be able to keep that would be is useful. I wouldn't want to see that disappear. That would be sad. I'm not saying,

Jeff Triplett 44:39
and you're right. My the issue, I think, is most of the metrics it uses are things that get collected, and there's not the curation and will and I are big on curation. You're good on curation, like you're curating guests that come on your podcast. In the newsletter, we curate things that we just like, and then same thing with awesome. Django is curation. It's a project that will and I run as well, which is like curating packages. And so I don't think the tools exist that make curating Django package grids easy. And I would like to make that an easier perspective, because I think they're outdated. I think there's this tendency that someone comes up with a new package and they think of here are the eight things my package does, which is cool. So they'll go and they'll add features to it that maybe don't apply to other things. And there's not really any motivation for them. I don't think anybody's being dishonest, but it's also there's no real motivation for them to go back and see a grid with 80 different packages in it, and want to go ahead and fix that. So like, I played with like, making it more that you see a list of things, and you can compare maybe two or three together, and we kind of rank things by like a percentage based on quality scores. But I want that curation bit. I want that to be factored in a way. So when you look at a grid, that you can get some kind of a quality metric as well, and that's where it's it just takes a lot of time to come up with that. But that's like if I had nothing to do, if you, if somebody is listening to this, and we'll write some rust code in it so we can get the VC money. But if you want to plug this, we can totally make this happen where we focus on the curation. And that's something that could apply to flask. It could apply to fast API. Could apply to other bits as well. So that's my pitch, is come up with some money. We can do a podcast about it every week or two weeks, and we can also, like, you know, like, fix that issue, but you're absolutely right. And there's a couple of tickets about bringing back, like, grids of the week and packages of the week. And those tickets there, if you're if people are interested, go to those tickets on GitHub and put put your thoughts in. Because really, we just need, like, we need bodies. We need people who really care. And if you took one grid a week, or one grid a month even, and just go through and just try to clean it up. And I think we've got enough people helping that we could probably develop the tools a little faster. Hell, we could throw Neapolitan and make it, make it even, even quicker to do the crud views on it right? There's things we can do to facilitate that to get there, but it is a community project, and we need more community with it, because there's basically three of us working on the project right now. So yeah,

Will Vincent 47:03
the other two are the other two, just to give a shout out, uh,

Jeff Triplett 47:07
Ryan chili and Max Sandu and I, I'm gonna forget his last name. I'm so bad with names, every time I'm on your podcast, I screw up somebody's last name or first name. So I'm trying my best to just not

Will Vincent 47:19
we do it, or I definitely do it too, so don't worry about it. Well, there is, um, there's this, uh, uses this site, you know, uses this.com which, like, that's, that could be a cool thing if somebody, even, you know, slightly less technical, right, if Django packages had just, you know, member of the community, or just a regular person to anecdotally share their packages, because that is an interesting way to I mean, it depends on if somebody you know, in terms of what someone's using, they could be if they're a consultant, they maybe have a little more leeway to try things, but a lot of people are at one company, and so it's like, okay, what am I using at work, but what am I using for a new project? But maybe my new project is very specific, so I would reach for these other tools, but I don't need them in this case, so that could be a cool I love seeing things like uses this or just, you know, quick takes on stuff.

Carlton Gibson 48:12
Now you say that I seem to sorry. Now you say that I seem to recall that you did a blog post on this will right recently. This is how the conversation started. You posted your 20, your 20 packages. Oh,

Will Vincent 48:26
yeah, no, there. It's on the forum. Yeah. I mean, there is, yeah, we'll put a link that's on the forum. I think it was a couple years ago now, and see people still add their things. You know, it was like top five or top 10 packages, but, yeah, it'd be great if that was a little more systematic. Because, you know, actually, I just, I just peeked at the site, and I see that our, our next guest, Justin Duke, from button down, is on, uses this right? So let you know we could do just a Django subset of of that it was that would be a nice idea. Because, again, yeah, it's the discoverability. It's the curation. And as we've talked about, everyone wants curation, but creation is hard and it takes time. And you know, one, I mean, it's been so great having Jeff on awesome Django, because I definitely would have stopped doing it the way the person years before stopped doing it, because you get pull requests and stuff. But even now, with like Django news, now it's big enough that we get very corporate emails sometimes from people who want free publicity for stuff. And while we like getting quick emails about, Hey, check this thing out, it's a little different when it's like, hey, check out this thing that, like my company. Did you know blah, blah, blah, blah, blah, that's kind of where the curation falls apart when it's people doing it. So anyways, I'm all for I kind of wish other people did the curation, but I think it has value to have some curation out there. So sustainability, yeah, and

Jeff Triplett 49:50
I think too, to your point, too, I use this site like a lot. I've followed that site for, I feel like 15 years or something. It's been out forever. Um. Ideally, like, I would love to have more of a Product Hunt, like vibe to Django packages, where you can go, and if you're logged in, you see, like, what are your friends liking? And we kind of deal with this, like, well, there's this pattern that happens where somebody comes to like, either Django news, or they come to awesome Django, and they're like, here's my cool, shiny thing that nobody is following, nobody's using. Or I'm a really big company, and you look like you're an employee of this company. Here's this new open source project, and I'm air quoting for the podcast listeners. Here's this new quality product that we found. We kind of get both of these things and those things are fine to get. We've just tried to refine a little bit of like, when you go to awesome Django and you submit something like, we have a list of questions which are like, did you write this? Are you a company? Like, just, just tell us exactly the situation here, and then we'll probably include it anyways or not. But like, it just kind of steps through the let's not be disingenuous about these, these things. And so I would like to see, like, This Product Hunt, kind of view to where you can go to Django packages, take that energy that you have, and actually submit it, and then get people excited about what your package is, and try to make this more of a positive energy thing, where then you can go and get 20 of your friends to like your, you know, upvote or comment or do something. And then we can kind of facilitate, like, hey, here are the cool new things people are liking this week, and give people kind of a reason to want to go and, you know, get behind Django packages as well. Like, I would love to have more of the positive kind of experience like that, and less of the just like, I get it, this is your job. You need to show your your corporate service, and it's probably really good. Like, it may be a value, but, like, I don't know that Django news people want that or their sponsorship, and just go sponsor this thing. And then people understand like, Oh, this is a product. Maybe I need it, but at least it says sponsored. And they understand that this is what the this is what the relationship is, instead of feeling tricked by something, yeah, that makes sense.

Carlton Gibson 51:51
And I think from an ecosystem point of view, something like that, would this be amazing? Because, you know, we're always like, oh, you know, Django secret sauce, or one of the secret sauces is the third party package ecosystem, and then we say nothing about it, and you're kind of on your own on discovering which of the packages you can use or should use. And well,

Will Vincent 52:07
there is a real the polls tutorial now has a list to Django debug toolbar, I believe. Yeah, so there's that, but yes, otherwise it's fairly it's fairly quiet. But you know, again, that's because rightfully so, that the Django Software Foundation, the people behind the official docs, don't want to be in a curation position, which I get maintainable just as we have third party packages. There's definitely a need for it. And you know, the other piece of curation, I mean, specifically thinking about awesome Django, is, you know, the whole point of curation is eliminating things, right? So it's like, we do add things, but then you also need to go through and eliminate things, and that's not fun to do. Or, you know, like, we don't have awesome Django, so we can take the shine away from other projects. But if it's a dead project, or a project that hasn't been updated in forever, that's also part of it, and that's kind of the like, not as you know that's that's where, like, the pressure kind of builds. You're like, Oh, I'm not, I'm not getting paid for this. Like, this is really not enjoyable. What I want to do, and I'll do it occasionally. But, like, we could probably remove things more that are a little more dead, but actually, but speaking of things coming back from the dead, Django rest framework Carlton the 315 is finally out, three 15.1 as well. Yes, yes. Is there anything you want to quickly say about this? Because you know, so just as context, I still like Django rest framework. I know Django Ninja is very popular as well, but Django rest framework has been both pretty feature complete, but also didn't have support for 5.0 there's a long list of things on it, and so I was so happy to see the first feature release since, in a while, a couple years,

Carlton Gibson 53:52
a couple of years, yeah, no, a year and a half or something like that. Yeah. I mean, what would I say? There's been a slow tick of not really anything on, on the main branch, just, you know, like, for instance, when 312 comes out, somebody adds a PR for the test matrix, and the test matrix passes, and, okay, so edible, but it's not, it's not, you know, on the on the official stamp, it's not, there's not a new release that says it's, it's compatible, and it's like, Well, okay, and so anyway, there's finally been a release, and that the problem is not a problem. It's a good position to be in. But rest framework is feature complete. It's a job done, but it's also used by so many people that changes you might want to make are kind of no longer makeable. You can't restructure the generic views, because you'd break too many projects. And so it's very difficult to then take, take a feature request, sell. We could restructure the mixings to make them reusable, you know, in this way or that way, it's like, but you're literally going to break everybody if you do that. And so ultimately. The only responsible thing is to say, hey, it's kind of, it's frozen and it, you know, we'll update it for, you know, the new Django version, or the new Python version, or we'll fix a security bug. But beyond that, it's kind of, this is what it is. Now, I, you know, and I don't think there's a way around that. So you know, Jeff, you've been using Django ninja. Tell us about that. Well,

Jeff Triplett 55:26
I still use DRF for most of our production client projects. Django ninja, I like, but it is underwhelming in the ways that you have to go back to Django and see how to do something with Django. So I just want people to know that if you go get Django ninja, and you start looking for things like, how do I do authentication, or how do I do permissions? You need the you need the bail back on Django docs, where, if you're coming at it from a DRF perspective, DRF has its own it's enough of its own ecosystem that the docs are going to tell you how to do the common things that you want to do. And I think it's just a smaller project in general that for me, like, and I've written to me, it's just fast, like, I just want to fast is in very quickly putting up an API, I've not done anything that's super robust. I think you're still going to have the same issues where you have, like, nested serializers are still going to be hard, and especially if you try to update those, what I like about it, and even if I'm not launching APIs with Django ninja, I find that model schemas, which is pydantic, which is written in rust. You knew this was going to come back to rust. Pydantic is incredibly nice to work with. And it's really nice because it has a wrapper, and I would, and honestly, I would love to see DRF consider at some point like what it would look like to use something more like pydantic, because not only does it validate, I've been using like model schemas, which is just kind of like a data structure, but you can say this schema is going to read from a Django model, and it's going to understand like, Oh, you have a created date, you have Boolean fields, you have these things, and it can marshal and kind of like massage data. So if it sees a text string that looks like a date, it's going to parse it for me and give it to me for free. It also just natively works as JSON and as a dictionary, and it just does this, like converting from one format to another. So lacy hinshel and I are working on a project for a client, and we've been doing a lot of data imports with like CSV files, and I don't have to massage much as far as data goes with pydantic and these model schemas, because it can pull the data in and, know, like, cool, Booleans, trues, falses, sure. Dates should just work as dates and get cast correctly. And it's just been really nice to be able to check. And I've got a blog post about this too, where I talk about kind of changing the shape of, like, one data format to another, and it's just as incredibly nice to work with in that perspective. DRF, I still that's what's going to pay the bills for a while. I hope that there are improvements made over time. I totally get that. You know, I understand why you want to keep it frozen and why that makes sense. I would just explore, like, what is the difference between a model serializer and the model schemas? And I would actually like to see model schemas come out of Django ninja. And that's something that I don't know. I don't I don't have any say in Django, but I would like to see some of those bits eventually land in Django itself, whether that's the model serializer approach, whether that's model schemas. And I feel like model schemas, there's more forward facing right now than than some of the RF bits, but it's a nice experience to work with. Frank Weil is my business partner. He says, Hi, by the way, he really likes Django ninja too, but we're both kind of at the same point. It's just like, What can i What kind of speed do I get out of Django ninja? Because it's not having to do as much, you know, it's not doing the 80 things that DRF does, and it's battle tested, but it makes just the simple API views just kind of nice and quick. And, you know, you're like, wow, that's not a lot of code to do that. But again, it's not coming with permissions. It's not coming with authentication. You still fall back on Django, and sometimes it's overwhelming because you're trying to figure out, like, oh, it's been so long since I've written permissions, how do I actually do that in Django? And yeah,

Carlton Gibson 58:53
and what's, what's the exact place to put them? And the docs

Jeff Triplett 58:56
can have those escape hatches a little bit to know, like, this isn't hard. Just go to this chapter of the Django docs and go to this section and read it so but, you know, it's a young project. It's promising. I think it's worth checking out.

Will Vincent 59:08
Well, even just thinking about permissions and authentication, my first DjangoCon talk was about user authentication in DRF, because I was like, what like Django just gives it to me. Now, there's four options by default, and this and that, and so, yeah, and then extending that to permissions further, it is confusing stuff. Carlton, I are actually talking before we started. I'm dealing with some permissions issues right now, and it's, it's challenging. You know, on the one hand, it ultimately comes down to a Boolean on a model that you need to flip with a form. But on the other hand, like, there's a lot around that that's important, and because permission, you do that, yeah, you know, you don't want to mess it up, right? So I think that, I think in some ways, that's the biggest thing, is, like, if you're giving permission. Someone is like, Oh, I hope this is correct. And then maybe you have to tie it into a payment processing webhook. So, yeah, the level of, don't mess it up, feels harder. But anyways, I would, maybe I'll add that to my 95% of is, you know, crud, plus auth, plus permissions. How about that?

Jeff Triplett 1:00:16
It's, it's hard because it's up. It's literally up to you. Like, it's not something that you know, Visa schemes are going to work 90% for most people, but that 10% is what makes it like, you know, with what you're doing and your specific what, what kind of like business requirements you have are going to be just different enough from somebody who's either bigger or smaller or whatever. So that's kind of the hard part. Is like you defining what it is you actually need, and it's kind of hard work. That's why Django kind of gives you some of the pieces to use. But it's like models. Like, we can teach you what a model looks like. We can teach you what a poll looks like, or a blog post looks like, but you can be very quickly under overwhelmed based on like, Well, how do I use a JSON field that Django doc showed me how to use these fields now, when do I ever use this? And how do I use this? Right? Like, there's a certain level of until you need it, then you at least, if you know where to look, then you can, you can implement it. And sometimes it's just the Django docs are so big you can never fully dive into a fully fleshed out example for absolutely every feature. So that's why people should blog.

Carlton Gibson 1:01:15
I wanted to ask you. You said about earlier on, you sort of flew past really, really quickly, and we didn't pick up on it was you mentioned this the Django jobs, which tell us about that a bit. And you know, I'm not hiring, but same hiring. What do I do? How do I how do I hire with Django jobs?

Jeff Triplett 1:01:33
So Django jobs right now, it's a free website. I don't know why I'm really going with free as a feature, but basically, it's kind of an offshoot of doing Django news for, you know, as long what we've done almost five years, four and a half years.

Will Vincent 1:01:45
So it's, it's, it's just like, what? How long is it? Yeah, someone congratulated us on, I figured it was the podcast. I think it was the podcast. We hit, like, five years, yeah, and then, and then it was like, Wait, how long have we did in the newsletter? I think it's four years. So, yeah, it's, it's time flies.

Jeff Triplett 1:02:02
So the idea is, for one, I think I'm connected enough in Django and Python that people reach out to me probably once a week, or once every couple weeks, and they're always like, hey, how do I find a Django developer? How do I find somebody or I'm looking, lately, it's been a lot of people getting laid off because of AI bullshit. So there's not been a resource, and there's a couple of sites that do Django jobs. And so the idea is that maybe if we go and we collect the jobs from the common places where people post stuff, then let's just put it in one area. We can curate it a little bit. We can we can push it through the newsletter, and if that's useful to people, and help somebody find the job, or find somebody great. And then I kind of modified the site too to allow you to go and post your own jobs. And so we're probably getting four to five a week right now, which seems better than what I thought we were going to have, because a couple of the other Django sites, and I don't, and I'm all for it, like I hope, I hope there's a dozen Django job sites spring up, and I hope everybody has tons of jobs on it, but we wanted to kind of aggregate everything into one place so that you could see them. And also, some of those sites don't get updated, but once every couple of months. And so to me, that was kind of frustrating to see. And I was kind of curious about, like, how many eyeballs see some of these places? And so I thought, You know what? The newsletter, at least, we've got a couple 1000 people. What? I think we just hit 2700 or 3000 I don't know 3700 See, I don't even know, almost 4000 people view the newsletter, and then we also have social media for that too. So you know, if we can kind of create this pipeline that people can see where the Django jobs are, they can go hire people. Or if you need to find their job, you can use it. I think that's good for the ecosystem. And I just want, I want Django ecosystem to be healthier. And I just felt like that was an area that no one had really put a fingerprint on. And I thought, You know what? This is something that I don't know that we can fix it, but we can at least help people have a couple resources to use. The Python job board is very, very underappreciated. And so that's probably like half of our jobs just come from people going to python.org/jobs but it's also kind of hard to find just the Django jobs. So pulling jobs in from there we've, I don't even know how many hundreds we've had go through so far. It's probably up to, like, you know, three or 400 jobs have come through. And so I feel like that's a pretty good success for something that I kind of fiddled with for probably a decade. And then at Pike, DjangoCon us last year, I was like, You know what? I'm just gonna go ahead and make this thing public, and half of it doesn't work. And every week I find an embarrassing bug, and we hear from people who are like, Oh, but, I mean, that's also a fun part of like, just, just throw the thing out there and then fix it and, you know, make improvements on it as you go. So you mentioned

Carlton Gibson 1:04:47
free as a feature. I think, given how expensive and difficult hiring is, a nominal fee would be, you know, perfectly okay as well. Like, I'll,

Jeff Triplett 1:04:56
I'll work some rust in it so we can get that VC right. So

Unknown Speaker 1:04:59
we get the VC. Bro, okay,

Will Vincent 1:05:00
yeah, we work, we work Django with rest and, you know, just to the to the health of the ecosystem, I think also it's worth shouting out the fact that John Gould and the Foxley Talent Team exist, doing, at the moment, more bespoke Django hiring and is so healthy for the ecosystem. And it's fantastic that they exist. They're active at the Django cons, and then again, having closer to a default job board. Like, should exist. There are a couple out there, but none of them seem as up to date as Jeff mentioned. As the community actually is around these jobs. Yeah. And

Jeff Triplett 1:05:36
I think John wants to do a job board too, and I that's why I like having an aggregator. Like, I hope John, he wants to do a community based one ours, we might open source at some point. Kind of has open source roots, and then it's just it's gone so far. And my goal wasn't to run an open source project, it was just to get the jobs out there. And so I definitely put a lot of time in open source, and may open it up at some point, but for now, it's just, I can go do things on a Friday and not be embarrassed by it publicly.

Will Vincent 1:06:02
So it's also been fun for me, honestly, because, I mean, you've basically written all the code on it that I can see you building a real project from scratch. Because as much as we talk and collaborate, there's still something nice about like, Oh, this is, like, how I do it, or, like, if I have a question to you on something right, that's like, a non client thing you can point to and be like, Oh, I did it this way. Like, here's exactly how I did it. So that's been actually educational for me. I do that a lot, you know, because I can share stuff with I can share stuff with you too. But my, you know, you have a lot of, you know, client work that you can't share. So that makes sense.

Jeff Triplett 1:06:37
It's nice being able to just say, Oh, how do you do this? Oh, like this. You saw the pull request. Yeah, here it is. No, it's and that's good, and that's also been helpful for me, working with you too, to be able to have that kind of, and that's why I think about, like, at some point, maybe opening it up again. It's just to get it in a space where I can, you know, because, like, there's a couple people that want to help with it as well. And I've just been again, my goal wasn't to manage a project. The goal was just to kind of help people find jobs. And so at some point, you know, I probably will, just because I think it's the healthy thing to do. But for now, I'm just gonna do my little Friday updates and do dumb shit. But

Will Vincent 1:07:10
I will say, though, at the end of the day, like, how are many things funded, if it's not some bag of money from someone, it's hosting or it's job related? So you know, it might be okay if there's some monetization there. I'll also call out, since I have two months before this comes out, I shared with you, Jeff a list of Django interview questions, because people are asking me and I sort of procrastinate on something, and did a deep dive of like, what would my 6570, you know, beginner, intermediate, advanced questions be with a short, one paragraph answer. So we will, I will commit to putting that up either somewhere there'll be a link to it, because I think that'd be helpful. Because, again, there's not an infinite number of questions. And if I think the three of us would ask the same kind of basic ones, you can go through, you know, how do you know someone's Django ability? Like, there's some kind of core concepts. Talk to me about this, and then you can go a little bit deeper. But there is a bat. There's a line between, you know, don't recite, don't recite. What's the method for this permission thing? Like, nobody knows that, but, like, talk to me about how you would do it. Sorry. So I think that would be helpful for both sides, both people giving interviews and also taking them. So that'll be up somewhere. There'll be a link, and I couldn't answer all the questions, certainly off the top of my head that I came up with. So I think that was for the advanced ones. Anyways, I was like, I kind of know, but if I actually put something, I think it's a good list. I

Jeff Triplett 1:08:34
think it'll be really helpful for people too, so they know how to prepare and then understand, you know, this is kind of where, when somebody asks this question, this is what they're looking for.

Will Vincent 1:08:42
So I and I'll just one more thing, like the talk I gave at DjangoCon two years ago was sort of a blueprint of all of Django. And some of these things get questions, get to, you know, like more advanced questions would be like, what are signals or middleware? Give me an example. You know, that's something that you may not know about if you haven't touched it, but you can quickly, you know, know enough to talk about it, right? To say, like, you know what's the signal? There's a receiver, and you might use it if a user signs up for something, right? That usually is sufficient to round out your knowledge of Django. If you're applying for jobs, you don't have to point to a project where you've implemented it, because you're just gonna have to figure it out anyways, in the job, anything else where I know we're up on time

Carlton Gibson 1:09:24
was, yeah, I mean, I feel like we just badgered you about with a number of topics. Was there anything specific that we haven't mentioned that you was on your list of things you wanted to

Jeff Triplett 1:09:32
you know, I had no I figured we'd talk about jobs coming in. And then everything you asked me, I had no idea you're gonna ask me. So that was really and then, yeah, and I, Carlton, I think you're doing a lot of fun stuff right now, so I don't know I was writing stuff down as we went, but I think we pretty much got it all anything else from, I don't know, like I there's, there's fundraising stuff coming up, and we probably don't want to total. Dive into that, but I do want to make a push that the DSF needs an executive director. I think the boards that we've had in the past are amazing. I'm really happy. I think it's a really nice service that people put their time into it, but I've been around long enough that I'm kind of tired of Django being ran like it's a hobby. And I think with fellows like yourself, I'm not going to ask you to share your thoughts on something that you may not feel comfortable with, but I want the fellows to have a boss. I want them to have somebody that they know is there and spends a certain amount of time a week. And I think that's just more constructive to them, to have that person they can go to. I think it's healthier for Django, too. When I look at web standards, I think, gee, it's pretty cool. Like, look at the HTML spec and the consortiums that are coming out. Why doesn't Django have somebody that can sit at that table? Why aren't we in conversations for that? And I feel like if we had the right person that's connected, we should be at the table for open source conversations. We should be able to have fundraising at a different level that it's hard to do and, you know, and like, one thing that I think is underappreciated when it comes to being on a board or just being in a professional is it's really hard to find people who will put something in an envelope, put a stamp on it, walk it down to a post office. And that's not a criticism of that's criticism of me from boards I've been on before as well. But just having that person who that's their job, is to be able to, once a week, go and put something in the mail, or it not take two to four weeks to set up conversations where we're going to have, like, say, a fundraising thing, or we're going to have a, let's get these two people to meet, because I think it's important that this foundation and that foundation talk. And again, this is not directly Django. This is my like decade of being on different boards and seeing that these are the things that fall through the cracks. And so Django is successful despite our model, and I really want to push us to, like, more committed fundraising, get an executive director and see what this thing looks like with some funding and with somebody who's, like, able to do the day to day stuff, so that you can go on that trip around the world with your family, or you can take a month off to go hike something. Or you can go on whatever trip with your family you want to do, or just take a sabbatical. I don't want like things to have to pause or stop because of like life getting in the way of volunteer positions, because you should be able to go do those things.

Carlton Gibson 1:12:19
Yeah, and volunteer positions are by nature precarious, because something happens. And, you know, you know, my last year totally wiped out, and that's okay, no problem with that. But, like, family has to come first, and so the volunteer position has to

Jeff Triplett 1:12:34
Yeah, has to be, that's the whole thing at that point.

Carlton Gibson 1:12:37
Yeah, exactly. We had Deb Nicholson on a few episodes ago this season. And you know, asking her about her role as the executive director of the PSF, and absolutely clear that, you know, Jane can eat on and, of

Will Vincent 1:12:51
course, Jeff, you know you were, you were involved in hiring her for Python. Yeah, I

Jeff Triplett 1:12:56
got to sit on the hiring committee. I was on the board at the time, and Deb just shined. From the beginning. We started interviewing. There were other amazing people too, but Deb definitely brought something that was unique, and it's hard to find. And, you know, a couple years ago, I had a conversation with Deb and Anna, who was past DSF president and will, and we kind of talked about, like, what would it be like if the DSF had an executive director, and then I think you both were sold on it, and then I think you both left the board, and so we kind of had to restart these conversations again. Yeah,

Will Vincent 1:13:29
I know at the same at the same time, I will say, like, I felt a little bit about, a little bit bad about that, because there were a couple some other things that were in the works, but I was definitely reaching that boiling point. And, you know, the new people, it was a good move, because they have, you know, maybe they need to catch up on some knowledge, but they have enthusiasm and energy and a different perspective that I was

Jeff Triplett 1:13:51
lacking. Well, it, you know, a thank you for the time you put on the board. And that's not a down on you by any means to say that we don't have an executive director because of you. That's just a that's the nature of how boards work. Like there are things that you brought, and every board member brings because they have time and they want to put the energy into it. And it's just really hard to run something like a foundation that is literally a billion dollar multi, multi billion dollar a year. Industry is built on Django. It's probably 10s of billions when you figure in the Instagrams and everybody. And so I'm just, again, I'm surprised that Django is as successful as when I started on it. It was in a newspaper, and it was very small, and so I worked at the journal world way back it had already been open source for a year, maybe when I joined. And I just thought, hey, this is pretty cool. And it's, you know, 200 miles from where I was living at the time, why not come work for them? And then thinking back to how big it is and how much of a, you know, it has to some orbit. And nobody thought it would be that. But I also think, like we're probably, we're probably underselling Django and, you know, funding and, and I, you know, I glad that we have the fundraiser every year for the fellows. And that stress. People out, and that, to me, is like, it's absurd that we should ever have to worry and think about, like, are we going to meet our funding goals? Versus like, why don't we have every company that's over a certain level? Like, why don't we have the relationships with these companies to secure fundraising that you can't have when your board turns over every year or two? Yeah, and

Will Vincent 1:15:20
Anna did so, you know, speaking of doing things during covid was extra stressful for everyone, but Anna did so much, and it just yeah, the fundraising piece is just, is probably not going to happen with volunteers, no matter how committed and how much time, just because it burns you out, there's an expertise to it. Imagine that and that continuity of of just giving companies what they want, right? I mean, because it's also like, Yeah, I mean, and I know there's separate things you've been involved with, Jeff to maybe help around funding, but it makes sense that people with a lot of money want a certain level of service that a bunch of volunteers can't provide. So things are happening. I'm glad you bring that. I'm glad you bring that up. Fundraising,

Jeff Triplett 1:16:02
it's a skill, you know, like if I need a plumber at my house, if I have a pipe problem or whatever, I could try to fix it myself, and I may end up replacing the floor, the ceiling, who knows what, all I might flood my basement. But, you know, and I can try to fix some things myself, and I'm fairly handy, but I'll probably screw things up to a level that it cost me more if I just would have had a plumber come in and fix it. And we're kind of that way with fundraising, too. This is only a hard problem because we make it a hard problem other organizations and fundraisers, I get stuff sent to my mailbox at home every day from some foundation that's raising money, and Django doesn't need a postcard or anything like that. But watching, you know, somebody who's good at fundraising work for the PSF and work for other organizations like these are skills that people are good at. And honestly, this is probably not that hard of a job. If you're a fundraiser, that could be something that people look forward to and go, Wow. Tech has a ton of money, and a lot of people use this Django. So I just think we need an ED or somebody to anchor off of to kind of be that consistency, so that, you know, a board member can take six months off. And, you know, there was a while where I felt like the the DSF struggled to even have quorum, and that's bad. And so I think the newer boards, I think they've figured that out, and they've kind of, or, you know, I think that, I don't think that's as much of an issue today as maybe it was a couple years ago, but I hate that that's an issue, and that just means that things probably aren't able to get done, because, you know, people have life stuff happen, and they should be able to so anyways, that's my that's my so good. Thank you. Thank

Will Vincent 1:17:32
you for mentioning that. All right, I have to think of a title for this episode, but Jeff, thank you for coming on, sharing your thoughts, of course, yeah, really good fun. Thank you. And we'll have links to everything in the show notes, links to Jeff. Jeff just finished up a month of blogging every day, so we'll have links to some of those. But check those out. Almost two months. It'll

Jeff Triplett 1:17:51
be two months. Two months. Yeah, yeah. All right, I can see daylight, since it's the 26th Yeah.

Will Vincent 1:17:58
So Django chat.com, and we'll see everyone next time bye bye, bye bye. This episode is sponsored by mail trap, an email delivery platform the developers love try for free at mail trap.io. You.