Transcript: Funding Open Source - Jeff Triplett
This episode is sponsored by MailTrap, an email delivery platform that developers love.
Try for free at mailtrap.io.
Hi, welcome to another episode of Django Chat, a podcast on the Django web framework.
I'm Will Vincent, joined as ever by Carlton Gibson. Hello, Carlton.
Hello, Will.
And we're very pleased to welcome back Jeff Triplett. Welcome, Jeff.
Yeah, thanks for having me. It's fun to be back.
Thanks for coming back on.
So Carlton has, or you have been talking to me about Carlton's Neapolitan package that you use regularly.
And so let's just jump in there. Carlton, maybe you give us the history because you were telling me off air.
So this is about a year old, but why Neapolitan and why has it changed how you develop as well?
Okay, well, 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 here.
And so it's basically a year since I started on my new project, which is Paths, which is an application 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, nah, I haven't got the tools I need.
And specifically, I wanted a simpler take on the class-based views that Django provides.
For years, you know, 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?
But no, I can't remember those things at all.
And so I wanted to change that.
And I'd had this idea bubbling away and I was like, no, no, I'm going to sit down and I'm going to write this class first, this thing first of all.
So I bootstrapped it in an afternoon more or less and then a bit of tidying up to get it released.
But what it is, is a single class-based view, which does all your CRUD methods.
So it does, 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.
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, you know, it's, I know exactly where it is.
And it's just like, oh 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 like, 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 Neapolitan is.
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 Rebsys, 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.
Yeah.
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 cred 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 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, 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 Neapolitan 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.
Yeah.
Well, I'm glad, I'm glad you liked it.
The thing that came to mind there was like, yes, you still need to know the patterns from, cause it just uses the same patterns from the Django class space 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.
They need that familiarity with, you know, oh yeah, I'd customize the form by doing this or I'd write the query set by doing that.
You've maintained Django filters for a while and it has Django filter support built in.
So you get pagination that just basically works.
You're shipping 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 Tailwind is.
I don't know what it is.
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 HTMX 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.
Yeah.
I mean, Tailwind's 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 bit.
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.
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 at, 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.
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 just taught me a lot through that.
So if Tailwind stops being a thing tomorrow, I'm happy to take my classes it generates and keep moving forward.
Yeah.
Just one more thing I'll just say on the Tailwind front was that they've just announced the alpha for the next version.
And what I'm really excited about.
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, 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.
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 replaces kind of about like nothing's ever going to replace pip because pip is so close to PyPI 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.
It 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 cool.
And just to.
Click just to sort of 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 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 ID, 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 ideas 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 any time 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 seeing 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's just, it's boring tech and it seems to work well.
Okay, cool.
Good, good.
Well, you mentioned get, uh, I think you and I, Jeff were just talking cause you, or you, you posted about you, you still like tower, right?
Whereas Carlton, you like fork, right?
Just to give a shout out to some.
It's not that I dislike tower, it's just, 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 get, I think, I mean, for me, I just use the GitHub desktop, but I don't do complicated get stuff.
Um, 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 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 gurus, they're, they're, they're few and far between, and they're not us normal mortals.
Like, I assume Adam Johnson can at this point, since he has a book shout out, check out his book.
Um, but it's not necessarily a skill you need to have.
Yeah.
Well, you know, he has this whole, um, book driven development, right?
Like in writing the book, he started contributing to get, and now he's some way has, you know, some way involved directly in that community.
Um, but yes, anyway, shout out to those tools.
I don't, Jeff, do you know, so it's Astral is 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.
Cause I, I, oh, sorry.
No, I just, I, I don't know if there's a quick answer or maybe it doesn't matter.
You know, so HTMX to me, one of the things that's great about it is we've had, uh, 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 the, 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.
Um, I, I can't speak for what their intentions are behind it.
Um, 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 nineties, uh, that dates me or ages me.
Uh, and I, 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.
So people can fork those off and go advance it however they want to.
And, you know, and, 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, uh, I want them to come out and like go to their conferences and say this for themselves, because they're not paying me to show for them.
But there, 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, 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.
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 and D and they don't have to pay taxes when they, when they pay, you know, they don't pay taxes anyways, Jeff, don't worry about that.
They don't.
So like if they're 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, you ruined the Python ecosystem, right?
Well, yeah, I mean, I like that sentiment.
I think it would, it'd 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.
I'm not going to complain about someone being able to put money in their 401k.
Who's an open source developer.
Like that's the system.
It's working, right?
So 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, uh, Raymond Penner has just got a grant from, I forget the name of the 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.
Um, you know, add, add more features.
So yeah, we'll take, we'll take the money and worry about the consequences, you know?
But cause also like, what was it?
Engine X, right?
They, uh, the, the developer sold it or something happened and then now he's forked it and has, I forget the name, but like, you know, whatever, whatever it's called.
Right.
Cause it is open source.
So, you know, it's, it's not proprietary.
So that's, that's interesting to see.
I'll give one more shout out with the Redis as well.
So.
Oh, maybe I was thinking of Reddit.
Maybe I was thinking of Redis.
No, it's both.
It is both.
So they both recently got forks, which are, you know, more open source.
But it's like the initial in engine X, 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.
Um, one more cool thing I was just gonna mention, and Jeff, this comes from you as most of my open source projects.
Two is, is Zed as a text editor from the Adam 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 Russ, though.
I don't know.
Um, but that's another, it's gotta be Russ.
Everything's Russ now.
So, yeah.
I mean, what else can it be?
Right.
Like, um, 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.
Cause it's March.
Madness.
So when this comes out, everybody will have, the madness will be over and there'll be a champion.
Who's not Kansas.
My, my home team here.
Um, yeah, I've been playing with it kind of like on weekends.
Um, 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.
Um, I'm not changing to it anytime soon.
The fact that you can't customize it more, or 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, uh, 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, yeah, well, I, I, for quite a while I used, I still used Adam 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, you know, 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, uh, for people who aren't as familiar with Django, um, classy class-based views.
There's this amazing website that helps you understand all the, uh, methods.
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 don't know.
It's a little bit more than vanilla.
Right.
But I think quickly, what are, 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.
So Django vanilla views was the direct inspiration in that it, it, it, it takes the class-based views of Django and then re-implementing.
Implements them without the mix-ins and the 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 and 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 makes, it starts to make the control flow much, much more sense.
So for years I was using vanilla views, but they, for instance, I've got a model and that model is restricted to, for the current user, it's a subset of all the instances of 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.objects.forUser and pass in the request.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 an in there, or I need to create a mixing.
It's like, I don't want to do all that.
And so CRUD view, Neapolitan's CRUD view is changing.
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 for a moment more is that I find it really amazing because I create a
new model I just create the one instance of the crowd view and then I can work on my list view
quickly and then there's a make template command so I got right I now need to override the list
and 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 I've only had to edit the
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 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 the all the different methods related
to that one
one model and so a good example is when I want to add an extra view I've got like um 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 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 crowd view so you just add an extra
one little extra handler and then and return your file response and there's your authenticated
download and then you've got the get object logic and then you've got the get object logic
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 class that's why I like it and yeah 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 in Django development and you know it's kind of all we're
doing on a certain level is is that kind of stuff and you know yeah I can go get the user passes
test mix in and update the test underscore funk thing 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 and I'm trying to work on the docs a bit more for near pot and 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 oh yeah sure I mean pretty much I'm just trying to improve them and I'm just trying to
it's still challenging right but at the end of the day it's it's kind of the same thing but you
mentioned templates template partials talk to me okay so template pass was the other thing I created
was because I wanted to use htmx so you know we talked about tailwind let's just leave tailwind
on the side just as it's there it's like you get a file where you've used tailwind and the other
things I use is htmx and then the other one I use is alpine js and then I might have a cup the
template language with all of that in and you get this file where you've used tailwind and then
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 it's 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 at the 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 um but htmx you you'll replace instead of doing replacing the whole page so
you've got I don't know a detail view and you want to quickly edit it and then I don't know
but the example I use um used in my talk last year at DjangoCon Europe was um 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 um a big template and then you just want a teeny weeny weeny bitty bit 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 um and so I create
this little package template 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 f 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 it needs to be
because Django can do all of these things that 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 um it's 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
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 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 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 oh I don't know how to do this
it's weird divide where people are like it's all one and one and the other in in these areas but
I've never seen an argument for both like only functions in both areas oh well I'm an old I'm
a dinosaur here so I use um Django test test case and Django's test case and unit test style testing
rather than pi test by choice um I'm not totally happy to use pi test but you know um I think unit
test has all the features we need especially with subtest so the one the one thing that was really
nice before subtest came along that I thought that pi test brought was the parameterization
where you can run the same test with different inputs time and time again and with subtest you
get exactly the same thing just as 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 rest of the code outside it so quite often you can break it you know break your code up and I'll
put it there and you can and it might be horrible but 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
sometimes I need to know that that's wrapped up nice and safely and tight and by doing it in a
class I've got that namespace which keeps it safe and I could do that in a module I could move it
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 what the rest of your code looks like there is there's no point being
religious about this right it
function-based views class-based views well the class-based view is nested 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
but 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 for classes or for tests I think it's fine either way yeah no there's a lot of excitement
about pi test and then it it leads towards the functional but 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 um I like my test I I hope they rewrite it and for us to make it faster but that's my only
complaint but they'll get that it's the discovery we've got to get that going quickly did that answer
the 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 yeah I'm entirely I like pi test I like using pi test as a runner for
Django is fine um it just it just it's easy it's fast um I I feel like it's easier to explain uh
tests to somebody who's new and show patterns that don't have the the cruft of like what a class may
bring but you can write class-based pi test tests too so that's fine you were gonna ask a question
well well just
for those listening what we've we've listed 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 um 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 Carlton go ahead well I want it you know you I'll let you go in a minute
with yours I'll go um you've got me started now you can't shut me up I want to ask about Django
you've been doing a wonderful job there I want to see what's new and you know what your thoughts are
and you know how's that all going yeah we've been uh keeping it going for sure um I wish I had
something more exciting to say about it uh we basically have just been whenever I when I started
maintaining the project um it had 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
I've as of the time you're listening to this um we're either on python 311 or 312. um so we we
basically kept it up um we've also started working on some rules but behind like how packages get
scored and how the um 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
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
important for the Django ecosystem and it's also just this big catalog of like I think it's like
five or six thousand packages in it uh I checked pi-pi occasionally 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
um 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's been great it's um 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
um it's just I don't have to think about it which is 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 python it's really
hard like with uh something the size of a python and trying to worry about like are people going
to have jobs or what are we going to do or is my family going to be safe is your family you know so
three of the five years so yeah absolutely absolutely you mentioned that um are you still
involved with Django Connor have you managed to step back a bit there as well I 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 um 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 python 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 Django Khan is newer than python part of it was probably because
of the you know the pandemic and not having a conference in person for two years um it's just
it's harder to get that same continuity and so uh we have a wonderful group uh last year because we
had an in-person conference we were able to get like newer people who were 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 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
uh 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 treasure 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 uh we're kind of rethinking
new 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 um Django con us too I think April 24th is when our
CFP ends so that'll be over and you all would have applied and we're hopefully like looking
at your uh proposals by then which is done anonymously I I applied uh I you helped convince
me Jeff two talks actually so I haven't yet but I'm lining I'm lining up I missed last year for you
so many reasons and I'm lining up that I've got another four weeks to craft the the perfect
submission I will I think I will make it this year if I can this episode is sponsored by mail trap an
email delivery platform that developers love an email sending solution with industry best analytics
smtp and email API SDKs for major programming languages and 24 7 human support try for free
at mailtrap.io for 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 Django con how does this affect defna 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 Fridays sometimes um I haven't had one in two weeks
thought I was going to have one this Friday but then I found out it's a holiday if I don't have
it uh I don't have to worry about a conference not happening I don't have to worry about people
not getting paid uh I don't have to worry about the same level of stress right 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 Sarah Boyce is the new fellow has that came out yeah yeah she
started breaking news in a month and a half it's been announced yeah wait when did she start right
away what's the timing on the start I didn't just start second of April or would have started would
have started saying we'll have started yeah well I think it's also just it's interesting I mean
this podcast could be three three uh retired uh volunteer people in a way you know I didn't do
five years but yeah but I mean right you know the old sayings the meat grinder for Django I certainly
saw some of the older gender or the previous generation you know just completely step away
and the 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 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 hadn't been for covet 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 do you know I'm fed
up of Jack I want I mean I'm in love with Daniel 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 it's 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
release it's not like you know you 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 one time and I'm like it's
programming language of course i think you're too uh too caught up in uh what's happening in
the world jeff no it's just the normal thing though like you know you can you know you're
on terms now we're 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
uh 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 i mean it's exactly that there's when you release django
there is a pressure and there's why it's one reason why it's um 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 broke my book you know breaking and you're like oh no now we have to fix
it and yeah it's it is pressure compared to oh yeah 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 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 need some help with things but also just to like settle your mind around the idea that
um you don't have the separate email account or you don't have these regular meetings like
it it 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 um or less of the pressure so it definitely felt
like a vacuum release for me we're like when i was done with the psf stuff then i didn't think
about it it's like cool i can i can go do these other things now and
uh 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 to swing back to django
packages very quickly because there was one thought that one discussion that came up on um
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 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 with 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 here i'm just sort of yeah no and
it's fully open source project would love uh both contributions to the code and the docs to help
people get onboarded touche um and honestly like this is a ongoing i 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 what's the
future of django if it's not going to be a good project i think it's going to be a good project
to try to get somebody from django knots 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 um 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 can 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 in 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 an hdpx libraries that replace requests maybe those are really core
and we should know more about them other than just uh amazon uses it so it gets downloaded a lot
because everybody uses amazon seal like that's 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 6 000 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 through that and then we can do that and then we can do that and then we can
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 that's a big enough site that people will try
to hack it and i want to prevent that yeah and just one more one more thought that came to mind
um was you were talking about the grids and them getting out of hand but i use i find them
still a really good um research tool so you know if i 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's on django packages i don't use but it had a kernel of some
good idea that you 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 and you're right i might the issue i think is um 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 uh 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 um 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've 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 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 fund 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 it 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 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 cred views on it right there's things we can do to facilitate that to to get
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 i think the other two are the other two just to give a
shout out uh ryan chile and uh max andu 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 we do it or i do 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's 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
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 yes that could be a cool i love seeing things like uses this or just you
know quick takes on stuff now you say that i'm seeing sorry now you say that i seem to recall
that um you did a blog post on this will right recently this is how the conversation started
because you posted your 20 your 20 packages that you always use oh yeah yeah yeah 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 um add their things you know it
was like top five or top 10 packages but yeah it'd be it'd be great if that was a little more
systematic because uh you know actually i just i just peeked at the site and i see that our
our next guest um justin duke from button down is on uses this right so you know we could do
just a django subset of uh of that anyways 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 um 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 um because you get pull requests and stuff but even now with
django news now it's big enough that we get uh 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 um
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 creation but i think it has value to have some curation out there um
so sustainability and i think to to your point too um i uses this i like a lot i've followed
that site for i feel like 15 years and i've been using it for like a year and a half and i've been
using it for like 10 years or something it's been out forever um i 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
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 up 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 django stuff but i would love to have more of the positive kind of
and less of the django stuff but i would love to have more of the positive kind of experience like that
and less of the django stuff but i would love to have more of the positive kind of experience like that
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 um or their sponsorship and just go sponsor this thing and then people understand like cool
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 i think from an ecosystem point of view something like that would just be amazing because
you know we're always like oh i don't know what to do with this i don't know what to do with this
like oh you know django secret source or one of the secret sources is the third-party package
ecosystem but then we say nothing about it and you're kind of on your own a bit on discovering
which of the packages you can use or should use and well there is 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 uh official docs don't want to be in a curation position
which i get but yeah it's not maintainable just as we have third-party packages there's
definitely a need for it um 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
um that's also part of it and that's kind of the like not as you know that 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 um but actually but speaking of things coming back from
the dead django rust framework uh carlton 315 is finally out um yeah it's 315.1 as well
yes yes um is there anything you want to quickly say about this because you know so
just as context i still like django rust framework i know django ninja is very popular as well but
django rest framework has been both pretty feature complete but also it didn't have support for 5.0
there's a long list of things on it and so i was so happy to see uh the first feature release since
in a while a couple years a couple of years yeah a year and a half or something like that yeah i
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 it is compatible 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 that there's not a new release
the problem is not the 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 um and so it's very difficult to then take take a feature request say oh we
could restructure the mix-ins to make them reusable you know in this way or that way it's
it's very difficult to do that but it's very difficult to do that and it's it's very difficult
to do that but it's very difficult to 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
um now i you know and i don't think there's a way around that um so you know jeff you've been using
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 bail back on Django's
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. For me, and I've written, to me,
it's just fast. Fast as 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 nested serializers
are still going to be hard, 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. And it's going to understand like, oh, you have a created date, you have Boolean fields,
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 Lacey Henschel 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 be in there. And then
just work as dates and get cast correctly. And it's just been really nice to be able to change.
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. 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 schema? I would 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 are more forward facing right now than
than some of the RF spits. But it's a nice experience to work with. Frank Wiles, 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 do? I don't know. I don't know. I don't know. I don't
know what to say. 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 is battle tested. But it makes just
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 and what's the right what's the exact
place to put them and the docs 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 to read it so but you
know it's a young project it's promising I think it's worth checking out 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 and I were actually talking before we started
I'm
dealing with some permissions issues right now and it's uh 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 it's when you
do that yeah you know you don't want to mess it up right um so I think that I think in some ways
that's the biggest thing is like if you're giving permission to someone it's like oh I hope this
is correct and then maybe you have to tie it into a payment process
webhook um 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 it's it's hard because
it's up it's literally up to you like it's not something that you know these are 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 not going to be able to do that so I think it's going to be
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 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 docs show 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 I wanted to ask you you you
said about um earlier on you sort of flew past really really quickly and we didn't pick up on
it was you mentioned this uh Django jobs which um tell us about that and and you know I'm I'm not
hiring but say I'm hiring what what do I do how do I how do I hire with Django jobs so Django jobs
right now it's a free website um I don't know why I'm really going with free as a feature uh but
basically it's kind of an offshoot of doing Django news for you know as long well we've done almost
five years four and a half years so it's it's what it's just like what how long is it yeah
someone congratulated us on I forget 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 I been doing the newsletter
I think it's four years so yeah it's it's time flies so the idea is for one
I 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 you know bullshit so I 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 to 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 I'm all for 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 and then we're going to put it in one area and then we're going to put it in
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 thousand people what I think we just hit 2,700 or 3,000 I
don't know 3,700 see I don't even know almost 4,000 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 a job you can
use it I think that's good for the ecosystem and I just want I want Django's 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 four hundred jobs have
come through and so I felt like that's a pretty good success for something that I kind of fiddled
with for probably a decade and then a pyke Django con 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 don't understand job 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 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 work some rust in it so we can
get that VC right so we get the BC you're right okay yeah we work we work with a lot of people but
we work we work Django with rust and you know just to the to the health of the ecosystem I
think also it's worth uh shouting out the fact that uh John Gould and the Foxley Talent team
exist doing at the moment more bespoke Django hiring and um 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 I think John
wants to do a job board too and I that's why I like having an aggregator like I I hope John
he wants to do a community-based one ours we might open source at some point it kind of has
open source roots and then it's just it's gone so far and my 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 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 it's like
a non-client thing you can point to and be like oh I 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 because I can
I can share stuff with you too but my you know you you have a lot of you know client work that
you can't share so that makes sense 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 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 uh do dumb but 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 um since I have two months before this comes out I shared with you
asking me and I sort of procrastinate on something and did a deep dive of like what would my 65 70 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
are would ask the same kind of basic ones you can go through you know how do you know someone's
talked to me about this and then you can go a little bit deeper um 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 um 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 a for the advanced ones anyways
like I kind of know but if I actually put something I think it's a good list I 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 so I and I'll just one more
thing like the talk I gave at DjangoCon two years ago um was sort of a blueprint of all of Django
uh 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 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
you know I had no I figured we talked about jobs coming in and then everything you asked me I had
no idea you're gonna ask me so that was uh well we needed to be honest and then yeah and I Carlton I
think you're doing a lot of fun stuff right now so I don't I don't know I was writing stuff down as
we went but I think we pretty much got it all anything else from uh I don't know like I 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 um 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 gonna 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 um 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 uh 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
set at that table why aren't we in conversations for that and I feel like if we had the right
person that's connected uh 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 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
gonna have like say a fundraising thing or we're gonna 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 yeah Django is successful despite our model and I
really want to push us to like
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 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 yeah it has to be that's the whole thing right yeah exactly we had
Deb Nicholson on a few episodes ago this season and you know just asking her about her role as
the executive director of the PSF and absolutely clear that you know Django needs one and of course
Jeff you know you were you were involved in hiring her for python yeah I got to sit on the hiring
committee I was on the board at the time um 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 um
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 I know at the same time I will say like uh I felt a little
bit about a little bit bad about that because there were a couple uh some other things that
were in the works um 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 um that I was
lacking well it you know hey 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 tens 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 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'm glad that we have
the fundraiser every year for the fellows and that stresses 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 yeah yeah yeah yeah yeah yeah yeah yeah yeah yeah yeah
yeah 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 it's 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 um 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 um
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 there's things are happening I'm glad you bring that
I'm glad you bring that up fundraising 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 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 costs 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 uses 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 are you know I think that I don't think that's as much of an issue today as maybe it
is but I think 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 uh
that's myself that was the extra topic good thank you for mentioning that all right I'll 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 uh 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 be two months yeah yeah all right I can see daylight since it's the 26th yeah
so Django chat.com and we'll see everyone next time bye-bye all right this episode is sponsored
by mail trap an email delivery platform that developers love try for free at mailtrap.io