Transcript: Django 4.1 Preview - Jeff Triplett (Ep 115 Replay)
Hi, welcome to another episode of Django Chat, a podcast on the Django Web Framework.
I'm Will Vincent, joined by Carlton Gibson.
Hi, Carlton.
Hello, Will.
And we're very pleased to welcome back Jeff Triplett.
Welcome, Jeff.
Thank you.
You two sound exactly like you do when I listen to you on the podcast.
I thought that was like a pre-recording or something, but...
No, we do it live every time.
That's why there's the occasional error.
You have to spot that.
I think it's like seats in class.
The first one you pick, you have to stay with.
There's no reason we do the intro that way.
It's just we did it once that way, and it's easier than thinking about it.
But anyway, so Jeff, I don't know if you don't need much introduction, but very briefly, you're a partner at RevSys.
You're on the board of the PSF.
You help with our former past president, still involved with DEFNA, which runs US DjangoCons.
You've taken over DjangoPackages.org.
We'll talk about that.
you and I do the Django News newsletter together. And you also are a consultant,
so you just see lots of Django in the wild. So always have stories about how it's being
used or misused. So I'll use that as a preamble. I also, you have a five-month-old, so I won't try
to ask too deep questions of you in this interview, because I know how that goes.
I have the opposite problem of new parents, is that I actually got a full night's sleep last
right so i don't know how to function like sleep again so sorry for being rambly the the trouble
when you do get a little bit more sleep is your body goes oh more of that please yeah it's like
what is this not being totally dead asleep feeling i have but yeah so this will be i think even for
us a casual conversation but i did want to quickly mention um uh for the jingo software foundation
we will be doing a pie charm um a promotion this year after all they took a pause but it's going
to be happening beginning of june so if you're thinking about trying out pie charm wait a week
um you'll get 30 off most likely and all the proceeds go to django um so that will be happening
in june normally we do it in the spring it got delayed but it is happening in june so that will
be on the django project website soon carlton what were you going to say oh well i was going to ask
jeff about um django con because i i filled in my um submit to talk application yesterday and i'm
very excited about it coming up because it's been you know a long hard slog for everybody
these last couple of years um so jeff can you let's what's going on when's when's django con
when's the when's the call for uh participation open and you know what what do we need to know
about that sure thing yeah django con us will be this october uh we are very hopeful that
pandemic and everything subsides enough that we can have a safe conference. Biggest thing for us
is making sure kids under five can have vaccinations and stuff too. That way everybody,
the whole population is covered. The deadline for the CFP for submitting your proposal,
we're doing talks and tutorials this year. I think it's June 10th. So it's the fun Python
AOE time. So as long as it's been, I guess, June 10th somewhere in the world, then you're good.
we'll we'll have links to that in the show notes and you're you're not organizing it this year is
that is that right uh yeah i am i've tried to step back a little bit and give other space uh the
hardest part has been because we haven't had a physical conference in three years uh we haven't
had the normal supply of volunteers come in now the last month we actually have had which has been
really interesting so we're getting some new people who've who've uh kind of raised their
hands and say, we want to help. Uh, but then also it's this burden of like, do you really know what
you're getting into? So we're trying to, Hey, how do I get out from under this thing without crushing
somebody else? Um, not that I'm Superman of this thing. There's a ton of great people who do a lot
of great work, but, um, I've kind of been one of the primary people who kind of know what the dots
are, the cadences and just kind of helping advising. So this year I'm hoping to be mostly
just advising mentoring uh but yeah i'm i'm doing my best to try especially with a with a five month
old as you said and a four and a half year old it's it's just not not not that where i want to
put all my time in at the end of the day even though i love the conference and i look forward
to being there so yeah i think the thing that's really hit um not hit because everything's going
on to plan with genco in europe as well is that because we haven't had it for a couple of years
there's sort of like this gap in the continuity and so you know a seasoned hand like yourself
it's even if you're not doing it to have you around is really important to have like that
knowledge and we do you know again we have people who have been around for five years six years
helping with the conference still helping so like it is not not just me by any means a lot of great
people are back um i think too well last year was really interesting because we did a virtual
and we, the previous two years didn't do one. And so the thing I think is funny is I know there's
been a lot of people say like, there's not a lot of interest for online virtual conferences, but
the opposite was true with us. We had over, we had 2,200 people sign up for the conference last
year. Now, granted it was free. So you get a whole lot more free people, but that's technically
bigger than PyCon US was last year. And we really just kind of planned on putting videos out over
two days and not really being as interactive as we kind of last minute had to be. The person who
was doing our av work adam fast his wife was due to have a baby like a couple days after jango con
because you know that's that's how we schedule things that's always that's always how it works
dates are announced it's like oh crap so his wife went into labor on monday night before the
conference and thankfully i think you know thankfully they had a little bit of a delay but
there were like four or five talks that he's like what do we do i'm like well i guess those talks
will go up a week or two or a month later like it'll be fine so yeah we've all had so much family
stuff over the last three years as everybody's had it just wasn't worth it for us to do it so
returning to in-person will be interesting we'll probably scale some things back I don't know if
we're going to do two tracks this year one track let's try to spread tables out maybe make the room
bigger we also put out our call for venues so if you live in North America and you want to host
DjangoCon US next year that that's what is it called CFV call for venue is up so I we're going
to do our best to not be back in san diego even though we've only been there three years it feels
like it's been five or six because of not having the conference for three years yeah no entirely
can i ask a little bit about um virtual versus in person and is there going to remain a virtual
element because i you know for me i've really missed really missed the in-person conference
but also the virtual ones have been really good but i've seen lots of comments saying hey i wasn't
able to come and you know to have the virtual is also is there going to be a mixed format thing or
what's your thought in that area sure so the hard part about me saying i want to step back is that
when things like this come up and it requires more work and i'm kind of the one who's like i
really want to do this part i want this to be an emphasis then that our philosophy has always been
don't volunteer unless you're willing to do the work and then there's very few things that we
turn down if you're willing to put in the effort and do the work um so my view and then there's a
monthly conference organizer thing um i'll have to find a link to it and stuff i don't even know
what we call it but uh there's a couple of us have been doing it for a long time john from py
gotham uh elaine from pycon canada uh we've been doing this chat thing for probably four or five
months or sorry three or four years uh and it's like the first i think our second wednesday of
the month i could not have done a worse introduction for that thing possible but i'll try
to make it even worse next time you get a infant infant pass infant pass it's all it's all good
then um so this is a topic that we talk about a lot on our like monthly organizer anybody can go
to it uh so basically i think the days of only in-person conferences are over i think you
philosophy wise i think you have to design for a hybrid or online first experience and bring that
to an actual event otherwise i think it's going to suck to be there because no one wants to see
cameras in the back of the room and do a virtual experience where you're seeing that you know the
tops of everybody's heads and so how we pull that off i'm not sure but it's kind of been my feeling
is i've seen conferences return and everybody wants to try to bolt on a hybrid experience because
it's more money and it's low effort and so i don't know who all well this is probably before
your time but carlton were you at django under the hood way back when no no i i for some strange
reason i sat using django for you know forever and it wasn't until florence 2017 that i went to
a django con and then i was like ah this is what i've been missing for a while nice i think 16 was
the last under the hood right gosh i think so 16 17 something like i've seen the videos from it
yeah but yeah anyway django under the hood yeah i'm well i'm well researched today so one thing
they did a really good job of is curating the talks as they went through the day and they kind
of did it in a way that forced people into either a Slack or something. So you could ask questions,
but you had to ask it and they curated on the fly. I don't know that that's something that we can
pull off or want to pull off. But I think it's a more interesting format if the people that are
watching from remote can submit questions and then kind of feel like they're a part of the
conference. So if there's a way we can pull it off, so if you're remote that you feel like you're
part of the conference is what I want to try to emphasize. Obviously, being in person, you can go
by the pool afterwards uh have your happy hour do whatever you want to do meet up with people that
you couldn't meet up with probably online or it'd be a little harder uh but we want to try to like
cater to an experience that doesn't suck online and that's where i think it has to be prioritized
that you know be kind of online first with you know all the benefits that you get for being a
person i mean one one thought that comes to mind but you talked about the camera it's always been
at the back of the room traditionally but you know a stand-up act always has the you know the
camera at the front in with the front row right so maybe there's a space you know to have a camera
at the front to get a decent you know video of the person on stage yeah it's gonna be all metaverse
this year then it's gonna be all virtual avatars 3d projections and all the technology that no one
bothered to you know perfect yet but now uh yeah we'll we'll have to shift some stuff around and
then maybe by spreading people out and a different room set up we'll you know make that a little
easier i think that the questions is sort of exciting about hybrid because of the two talks
i've given sometimes there's a lot of questions and sometimes there isn't you know because it's
the end of the day or whatever but if you have lots of people online um it's always nice you
know if you're open to taking them it's i always like having the questions and um sometimes where
people are shy in person right sometimes people would like right after the talk come up and ask
me a question and it's like, well, I'm happy to answer it, but I would have almost preferred to
answer that publicly because others probably had it. So, you know, so that hybrid approach maybe
will lead to more questions is what I'm trying to say, which I know not all speakers want to
take those live, but if you do. That's exactly it. Yeah. We, we, I wouldn't say we discourage
people from taking questions, but, uh, we, we definitely don't make them feel the pressure
to do a Q&A. It's kind of like you can do it if you really want to and shave off about three to
five minutes of your time. That way we can try to get questions. But, you know, like here's our
schedule and here's what we're trying to do. We also, I think, want to try to have a deep dive
day again. And again, I might be just making this up. I think we've said on the website we want to
do it. If we get enough talks that meet that format, we would kind of like to have a very
focused, go a little deeper in the Django than maybe what some talks would be. We figure after
two days of intro talks too and you know we have a whole selection of beginner intermediate advanced
talks but we figure after two days even if you're new to django maybe you will have recognized and
picked up enough in those that that period of time that the third day hearing into some of the
maybe whether it's django internals or shift the advanced talks maybe but
so carl and i look forward to your deep dive let's just say can we can we can we talk about it or do
we not want to we do we not want to prejudge uh his talk um because he and i were just talking
talking about his what's the is is it okay to talk about his um proposal or would you rather
we should we wait until it's um accepted or not jeff his topic because it is an advanced one that's
interesting to me yeah we probably should shy away from it if this is going to be out tomorrow
then uh if this was to come out after then also there's a certain amount of um you know suspense
i want you to you know have to wait a little bit yeah because i read everyone so yeah that's that's
right i don't want spoilers you know i wouldn't talk about you know the the upcoming um obi-wan
kenobi series if i'd happen to have seen that yeah i mean someone might submit your exact idea plus
one thing that makes it better right so you might get no no no that's not what i mean that's what
what i mean is i don't you know when you turn up for the talk on the day you want a little bit of
you know what's this about you don't want to have heard it all on some rugby podcast
what's it gonna talk about yeah we can just put a big emoji question mark next to your name on
the schedule and then you know you surprise us all one more question about jango con and then
let's move on who should submit to talk jeff anybody everybody um something in the realm of
jango web accessibility anything that makes you better at jango better human um just in general
it's the bar is pretty you know we want the conference to be accessible to you know life
skills or anything that makes you a better whether developer or writer writer what do they call them
documentarian um anything in the scope of what we do as far as an industry goes so so don't be shy
yeah and a lot of people are new to Django that give talks every year and they're some of the
better talks so don't just because you haven't spent that much time on Django doesn't mean you
can't come up with something that would be you know advantageous for the community yeah I really
like the beginner talks because it provides a different lens on Django for those of us who've
been there for a while and you know as you think about oh yeah middleware is kind of confusing or
it's also if you have co-workers who are new to Django it's a way to get in their head a bit more
if somebody says, Hey, I'm, I'm new to Django and this was my experience. So I, there's
a lot of value in that perspective. It doesn't have to be, um, deep dives. Deep dives are
fun too. Um, but there's sort of an endless source to me anyways, of the beginner experience
on Django, which I kind of get a lot of just from emails with readers, but I think a lot
of professional Django people don't. Um, so yeah.
So your talk is going to be about your emails and stuff that Django would fix. You would
get less email is that the no i know i'm i next year i'm i'm gonna submit be back to doing talks
i actually i i have a plan for a uh 30 000 foot view of of django and web frameworks like a
how do the pieces all fit together um kind of way that i think would be interesting so
there's plenty of time till october come on plus i think it's you know so if you know talks i would
like to see i need to write a blog post up on this which means i'm just going to tweet not blog
because it's just easier but like you know htmx is super exciting i think anything that makes spa
apps um you know your single page apps easier is cool um htmx is doing some awesome server-side
rendering stuff there's other frameworks i think django unicorn doesn't get enough emphasis to
those are super cool the pie script stuff is amazing like i've wanted django that runs on
my browser so templates get rendered for years i just can't get like i don't make decisions in
django to make this stuff happen but i would love to see you know nice py script django like what
does it look like for django to run on py script in your browser like that would be so cool so i
don't know i'll come up with a tweet thread or something and try to like you know give some
ideas out but the best i'd have to say when i went to florence my first django con you know
i thought it was all going to be technical talks and you know that's why i'd signed up to go and
But the best talks, the ones that really stuck with me were the community talks.
They were about cognitive biases and inclusion and, I don't know, community building and team diversity and teams.
Well, that's what inspired me to do my talk in Heidelberg was that I went to Florence and I was like, oh, well, actually this, that was, I was just blown away by those talks.
And they were nothing to do with Django per se, you know, yeah, there were people in the Django community giving those talks,
but they weren't technical talks.
And so,
you know,
I gave my talk in Heidelberg
on what I did
because,
i was like oh wow can i give a talk like that maybe but so yeah any anything but dude absolutely
like what would you two like to see i like testing talks i'm really on a i would love to see more
about testing just how people do it different approaches because it feels like a somewhat
undefined thing to me beyond the basics how it's actually done um i i've added a plug so i i got
the 4.0 version of my jingo for professionals book just out so all my books are 4.0 which is a big
update for all of them. I had a lot more testing, but testing is just endless. I would just love to
see how people test stuff, thoughts and strategies, doing coverage, integrating PyTest, continuous
integration. I just think that's bottomless, and I don't see any great resource for doing it other
than whatever the company already has or whatever go-to approaches you have. I've been trying to get
you Jeff to do a book or something on testing. Cause you know, a little bit about it. I think
I like your line that you get paid to write tests, not code. Can I say that publicly?
I think you, uh, yeah, I, I, you make things that I say sound good or I don't remember saying them.
So thank you for having a better memory than me, but I think it was in the content. Yeah. Yeah.
Uh, sometimes, yeah, that is, that is sometimes true for clients, but yeah, I write code too,
but it's, you know, being able to like ship something that, you know, is repeatable,
it's not going to break. It's an underappreciated value, I guess.
So I would say deployment is the other one. There's been interesting threads about, you know,
Heroku had had some issues and quite a few Django people have worked at Heroku and
it's a sticky, sticky wicket to make deployment work well. But that's one as well, like something
between kubernetes and a one-line script like how do you get there and i know carlton that's near
and dear to your heart you're still plugging away with but yeah no it's still coming on very well
those we were talking about before we came on i was talking before you um came on jeff um i was
talking to will he was like well come on you've got to ship it i'm like no okay i'll ship it i'll
ship it but i'm building i'm building move fast and break things carlton well yeah yeah but no
it's just deployment it's just deployment you know it's just deployment it's easy it's go slowly and
build something that you you care about and want to um work on for you know an extended period so
i was saying i was building nate i'm building native apps and um you know the one reason why
it's been so slow is because it's like okay well i have to relearn swift because i used to
it's like okay i'll build a mac app swift i know no i don't know the modern frameworks i haven't
used them for half a dozen years to to relearn that has taken quite a big chunk but now it's
coming together it's like okay yes actually this is fun and then i was just about to ship
mac only and then i had a potential customer come along and say um well can i can i pay you to use
it as a you know and you can work out some i mean of course that's the perfect you know that's the
perfect test environment and they were on windows and i was like i haven't got a window story yet
so i'd had to learn all about um you know how well okay what am i going to do so i investigated
dot net and you know what's going on now i'm like maybe maybe well java and then the thing i've kind
of settled on for my windows story is um to use rust and there's a pack a packaging system called
tori which is like electron but it's a much um lighter weight and you know the bundles come out
sort of about five megabytes and they use the native web view so you're not running this
chromium instance you know the jokes about running slack or teams that they take up the whole it's
it's not like that and so i think that will be my window story um and so that's all coming together
but that to learn swift again took me much longer than i ever gave that credit for and then to learn
rust and to learn these things and to investigate that that's all the backstory that took a long
time but that's okay because i haven't been in a rush and i'm not building i'm not building like a
heroku competitor i'm not building a platform i'm building toilet tooling to you know communicate
with those so that's that's all been fun um and then obviously the last two years have been tricky
and then like the start of this year i was knocked a bit sideways my family were um ill um and so
that that wasn't a good start but i just last year at jangokon europe i said summer 2021 and
reviewing that it's going to be i know i was re-watching your talk and i sent you the screenshot
of that slide um yeah you said it was going to be 2021 well it's going to be 2022 so that's fine
my advice you didn't ask for would be assuming you all you you both are at django con us this
year is that will and i will publish it for you if it's not done so we can we can have the moment
i'll press it i'll press it i've got the perfect thing i'll have a button that you can click to
deploy there you go we can uh do that near the pool at uh in san diego it's it you know i've
been talking about for a long time working on it for even longer and it is and it's coming nicely
and i'm very happy um but uh what all i can say is well you know it's going to be worth waiting
yeah i mean it'll be ready when it's ready and what are you doing i mean you're embedding python
i assume inside your application well actually it actually turns out that i i'm going to use rust
for the for the bits which aren't um such a hipster i was like you can't lose you carlton
this is where good python developers go they go to rust this well this this is where it all went
just like i was looking i looked at the python embedding story and frankly it's terrible um and
there's some great work being done to make it much better but i can't ship you an app and say oh can
you please jump through all these hoops i just i can't do it like it wouldn't be an app that i
would be happy to ship and live with so the on mac it's going to be swift base and that with a rust
core and then on windows it will be rust with a web um interface with tori on there and then
the web app will be the web app and it will be those components um but on the server component
that you ship is a single rust binary that you just download stick where you want and run um
and it ultimately had to be that way and i took a long time i took a long time investigating the
various python packaging solutions and they what they are coming on massively but they they just
aren't there right now and weren't there at the time and so well i was thinking about why
swift took you a minute to to learn it's also because you're you're still fellowing and yes
4.1 feature freeze has happened do you want to talk about uh you know coming in august well that
was so the feature freeze was last week and i've been yeah and oh i'm release manager 4.1 so
it's a lot harder there's a lot in there there's a lot in there can you tease you know tell us
okay so we've got um a class-based views can define async handlers so you can write a class
my view subclasses view def async def get and then you can do your your async handler there
we haven't worked through all the class-based views to be asynchronous maybe we probably never
a will but um if you're into class-based views you don't have to drop into a different um idiom
now to write an async handler so that's kind of cool then um the orm has gained an async interface
so you can do async async also you can do await my model filter dot get but whatever and it will
stream out the objects to you um in an in an async way effect be underneath it's still the sync
um the sync orm we so we're still working on integrating the drivers and getting the compiler
to be async compatible and that work will continue but you could now write from 4.1 you can write an
async view with an async interface to the orm and that will pick up any performance improvements
just as you update django in the future rather than you having to rewrite your code so that's
kind of like the yeah i can write async views and to be honest the limit here is um is not threat
So at the moment, the way the ORM works, in 3.2, we had this problem with thread sensitivity of ORM operations such that basically any ORM operation was single-threaded.
It would only go one at a time, and so your requests become one at a time, and that's not great performance.
But in 4.0, it's per request, the thread sensitivity of the ORM.
So that's a big speed up because you can more or less, as long as you don't have too many open connections at once, you can process them in parallel because there's one per thread.
More or less now, the situation is that your blocker isn't the speed of the async, isn't using threads, it's number of connections to your database and it's the number of times you...
So until we get fully async drivers, there's not going to be any big speed up there.
So the async codes you have now, it's going to be nice and performant, nice and fast.
Yes, it's going to use threads to connect to the ORM, but that's fast enough for most cases.
How did I get into that?
4.1 features.
And I'm curious when you say drivers, PsychoPG, I think there's like a new PsychoPG 3.
Yes, right.
So there's a draft pull request to integrate CyclePG3.
And then what about SQLite?
What about Oracle?
What about MySQL?
We've got a, there's a lot of, you know,
the ORM wraps up a lot of complexity for you.
With the big issue now you're going to find
is we're finally at the point.
So when you started Node.js all these years ago
and you ran up the Node.js 101 example
and you got these resource limits
because you opened too many file descriptors
or you opened too many database connections.
We're now at the point where actually that's the problem you're going to hit with Django,
is that you're going to find, oh, I've got too many database connections open.
But that's the place we want to be.
So then the next thing is, well, okay, we need a DB pool, a connection pool.
So you use pgBouncer if you're on Postgres.
But, well, what about the other databases?
Well, okay, so at some point soon-ish, Django will grow a DB pool for the four native supported databases
with an API for other database backends
to be able to support a connection pool as well there.
That's kind of really exciting.
So that's where it's going, and that's exciting on async land.
The feature I'm most excited about
is that model constraints can now be validated in full clean.
So in your database layer, you can say an age field.
Say you've got a minimum age.
You say the age can't be less than 15.
I don't know for you know some non-child no children allowed so higher than 15 say you can
set that constraint on your model and that will be a database constraint so the database will
enforce that but now that that can be that can be validated when you're in a form say and so you
won't get what what you might have had before is the database constraint in place your form says
is valid true but then you go to save and you get an integrity error no those constraints will come
into validators on the form level and that's going to be that's actually going to be i mean it's it's
going to be if you've done forms that's really cool it may sound abstract but if you've i've
hit that yeah that's a big thing and then the form rendering has updated um as well so we've
got new new div based forms um form templates which have got modern more modern standards so
for instance they um they group related elements in radio lists in field sets with legends and
things like which makes make them much more accessible for people with screen readers and
whatnot and that that's an easy opt-in with a form renderer but those templates will become
the default from django 5.0 you can still use the old templates they're not going anywhere
but the form rendering changes over django 4.0 and 4.1 are just amazing like you
we're at the point where libraries like crispy forms or floppy forms the need for those is going
to drop away um and then there's an interesting question what's left because say for instance
crispy forms has dynamic form layouts where you can build your form in python and sometimes that's
much nicer you know you want to construct your form in python and then output it um but just
the template packs you're not going to need those you're going to be able to just change your form
renderer at the top project level and say um my you know my bootstrap form renderer and you'll be
able to use that as your form renderer class and provide all the right templates so that you get
the bootstrap styles or the you know the tailwind styles or whatever you're well they just become
more like template based then less code more template so exactly that that's it so um 4.0
inch moved the the actual form element rendering the form rendering from hard-coded strings plus
the widgets were formed with template based to all the form rendering was template based
and then 4.1 has added this much easier customization so it can just be done at the
you can you can either do at the project level with form renderer or you can do it per form
class or you can even do it per form instance like changing the templates and so it's it's
it's really cool it's good stuff it's like you know every release i'm literally blown away by
how much new stuff we have in you think oh there's going to be nothing for the for the new one no
there's masses and we're already planning 4.2 now already we're starting to um we're starting to
think excitedly about that so anyway this so that was last week that was the feature freeze last
week i'll just say one more thing this week after the feature freeze after 4.81 i've been i've had
on my list for ages to get back to um async stuff and this week i finally you know cleared the decks
i'm like okay i can start taking on these tickets on daphne and on channels and on django and it's
like ah i can spend summer working on you know lots of exciting async stuff that's been on the
back burner for a long time um and that's why you're a jenga fellow is that statement right
there lots of exciting async work yeah well okay yeah fair enough so speaking of updates
jenga rest framework you're also very involved in that and we had discussions because um
you're not tom but you know uh he kind of said recently like um not really taking new contributions
um is there anything you want to add on drf i mean just i think i mean it's does what it does
yes um it's feature complete basically is was tom's point and it has been for quite a while
and yeah um so tom i think is at the moment at the point where you take um inputs to keep it
compatible with upcoming versions of django you know if changes in django require changes in
Django rest framework then um great we'll have those but um Django rest framework itself is not
in the position to add in new features um the last new feature we tried to add we just never
had the capacity to to finish through was the um open api schema work which we got and we got an
okay version going but um the thing you really need to be using there is drf spectacular which
is just you know just a super implementation and what was nice was that it it took the api that
we provided in rest framework and it rode with it and it went yeah and it's produced it's it's
sort of showing what could have been done if only we'd have had loads of capacity and loads of
bandwidth to work on that so i think he's putting tom's putting the docs or is it the point of
putting in the docs hey go and look at drf spectacular for that and then eventually we
should be able to debt perhaps deprecate the inbuilt stuff in in um skip the schemas sub
package in rest framework and that will keep working but perhaps move it into a sub into a
third-party package and say look you know you the modern version of this is over there but you're
still using it will still work no problem it's not going to break on you it just isn't actively
developed and then that will make rest framework itself really tightly and tight and nicely
developed and then you know it's okay for it to um to mature and grow and then at the same time
though a lot of what's important about rest framework can be brought into django itself so
um serialization is one big thing and for that i'm really excited by django readers which um
you know we had yeah from dab apps come on the show go and check out that show again go and
check out Django reads it's it's great for serialization and then the other
thing that Jack rest framework really does is the content negotiation it'll
let you handle rest JSON requests so you content type application JSON and so
what we'd like to do is bring request passing body passing in so it you add a
request dot data property which says you know if it's forming coded you'll get
request.post as you always have. But if it's
it's json encoded you'll get a dictionary back that goes via json load you know i've wanted this
for so long all the drf features that come back even view sets which i don't know it's popular
to hate on but they're so good well but there's no reason why there couldn't be just a little
package which had you know just literally a crud view set in it um but what what i think the thing
needs to be in core is the ability to respond differently to um different mind types so this
is html this is json and if we could respond to those different that would be the 99 case if
that's pluggable so you can respond with a yaml parser or toml or great but if we had html plain
text json that's almost all the web requests web responses you ever sent right and all the request
bodies you ever get um so that's what we'd like to do and then go on go on oh no go ahead finish
your thought well the the last is then adam johnson's got this um this um pending pr to update
the the the request object to make it more modern give it a slightly more modern api with you know
the uppercase get and the uppercase post being a bit of a hangover from the old days and that
that nearly went in and maris and i were a bit like but that's a massive change really
disruptive change without any features it's just literally a cosmetic change and it would affect
everything the diff was massive if we can get the request passing in as well the content negotiation
in as well then it's not just a change for change sake it's a change with um a whole load of feature
goodness to go to justify and to go with it um and so you know uh that's kind of that's kind of
what's on my list is the async's work plus that kind of request modernization request data type
stuff um i think maris is very much focused on things like um you know orm cycle cycle pg3
db connection pool these kind of ideas you know can we get those in as well so
it's just a really positive time um that's great you know
i'll say one more thing and i'm going to shut up because i'm my throat's starting to get dry but
i think we're really seeing now the maturity of the the api stability policy and the move to the
to the three the new request the number is where it was 2.0 2.1 2.2 is the lts and then
we've maintained the stability from 2.2 to 3.2. And, you know, the, the upgrade cycle is really
easy. And because we've got the stability policy, it's like, okay, this is, this is a given space
and time for Django to keep, keep growing. And, you know, then with the async starting to mature,
it's like, oh, wow, these are, this is a positive and rewarding time to be working with Django.
i think we're all a little biased on this podcast but anyway i would i'd agree with that so anyway
i'll just talk solidly for 20 minutes well i was just thinking like i'm definitely the the color
commentator in our relationship carlton because it's like oh there's a deep question let's give
it let's throw it over to the fellow well i mean i didn't know this much was coming in for one so
to me it's enlightening to to know this um as far as drf goes uh model serializers are so
underappreciated. Yeah, I'm doing a project for a client to like now where I had to deal with CSV
data. And it was just so much easier to do all my validation through through model serializers for
it, even though it's CSV. And then there's a third party project that adds CSV, you know,
handling. And then it was funny, I was writing tests for it. I'm like, why is my response codes
all messed up. And then I viewed the output and actually returned it as CSV. So I was getting
status code and description. And it was amazing. I'm like, Oh, this is horrible and great at the
same time because of course status codes would come back in csv format versus you know json or
or whatever um but you know the extendability so like the hard part i think is what what will
jango take from routes i feel like will be interesting to see because uh you know tom
did this had this beautiful playground of coming up with all these concepts that he couldn't do
in jango and so view sets i think are super powerful serializers were just a better version
of jangos um and then you know like you said the content type negotiating mime type negotiations
um yeah i don't know it'll be kind of curious to see the parts that need to go back this has
been my wish list and i've talked to you all for about it for years like when is drf going to merge
back in the jango or what does this look like so i think it's exciting it is i think the point you
made there about having the playground outside the jango it's like that's really important like
if you've got an idea and you want to feature in jango we'll implement it outside the jango and
show what it looks like and then maybe you know because that's to to email the developers list
and say can they have this new feature the answer is pretty much always no whereas if it's like
there's this third-party package that i've built and it works really well and everyone's like wow
that's amazing can we have it that's a different conversation can i ask you two a question yeah go
ahead go well i want to ask you about django news because we've had this last difficult couple of
years and the one of the big things holding the community together that's really felt i felt has
really given it a kind of sense of continuity when we haven't been able to see each other has
been django news and i wanted to a thank you both for that because it's just phenomenal the work
you've done and b ask you about it and how's it going and what your thoughts and that sort of
stuff well thank you that's quite a compliment i don't really know how to follow up with that
after that compliment actually will you have thoughts yeah yeah i'm never never short on
thoughts. Um, yeah, Django news is, it's been fun. It's been, I mean, in some ways it was an
excuse Jeff for us to collaborate more regularly. And it also came out because I think even more
than me, you just have your finger on the pulse of what's going on with Django packages and things.
And, and it just seemed like we should share that with other people because there isn't a
Django newsletter. Um, it's a lot easier to do the newsletter than the podcast. Um, you know,
I think like, like we do it weekly, but it's, you know, I look around and find stuff, you find
stuff. We kind of do a little communication on Thursday night, but it's, um, it's not that hard
to do. And if we need to, like, you know, you can take a week off, I can take a week off. So it
feels pretty sustainable. Um, the, we use this platform called curated, uh, so that handles
most logistics. It's, it's a little expensive. I think it's $70 a month now with where we're at
with 2500 plus readers, but we have ads and we have job postings. So it's, you know, it's not a
moneymaker for us, but I enjoy doing it. And I do think it helps the community. And
I like things that are relatively easy to do, I guess I would say, as opposed to the podcast,
which I love doing. But you know, it's gonna take me the rest of today to produce this episode,
whereas the newsletter is a little bit faster it's definitely low effort and i think high reward
as far as like time spent and so i i don't know i was we kind of talked about it and the whole idea
of like is this a project we can do in about 30 minutes a week and for me it's kind of a byproduct
of things i'm already starring and articles we're already seeing so it's kind of interesting of like
what we notice on twitter uh will was very twitter adverse for a while but i guess you're back on
Twitter. So you're maybe seeing this stuff again, or maybe you were lurking before from a, I was
lurking. Okay. So, you know, go ahead. Email me if you want to talk. I prefer email to Twitter
stuff, but I try to never get another email again. I think I'd be happy except for our newsletters.
But yes, yeah, there's, but there's, there's, there's, you know, in some ways I'm
surprised that we're able to find two to four high quality projects every single week. I mean,
I mean, there's just so much stuff out there.
I mean, we don't repeat things.
It's pretty amazing.
I keep wondering, well, we're going to run out of projects or there's not going to be new stuff to feature.
But between all the Django things happening with the fellows and then Python has things and people have articles and tutorials and Django Girls is now having a podcast, you know, there's – it feels good to kind of wrap it together.
And it gives us an excuse to look around more than we normally would for what's out there.
Yeah, I think plus with the cadence of Python 2 is, you know, I know there's some relationship
between Django's release process and Python's, but there's just enough going on with new
Pythons and versions.
And if we can help move the needle a little bit so people know, like, it is okay to use
Python 3.10 or start testing with 3.11, then that's super valuable.
and i i hope that that influences people to try these things out and update their ci and you know
if there's something that we think's cool um i'm super opinionated about stuff like htmx i've said
for a while like use this this is gold uh even though i've maybe done one or two projects with
it so like anything like that that kind of helps move the needle back that django is good let's
give you examples by showing you something that maybe will inspire you to write something or use
a library, then that's, that's where I get fulfillment. Yeah. Seeing it. I think, I think
that the, sorry, go ahead Carlton. Go on. I was just going to pick up on the Python release process
that we sort of, um, go on. I was just going to briefly say that my, my major concern when we
started the newsletter was being in a curator position sometimes isn't ideal because you have
to say yes and no to things. And it's been far better than I feared it might be in terms of
when people submit a project or an article or something, or we see something, you know,
people kind of understand where we say, you know, it works or it doesn't work. Like we're trying to
be a positive voice here, but we do have to curate it. Um, I sort of envisioned more negative
interactions on that front. And there basically haven't been any, um, you know, same thing with
awesome Django, uh, repo that Jeff and I do that it's now over 5,000 stars. Um, you know, it's,
It's hard to say no, but the whole value is in saying no and trying to enforce some degree of maturity in the things that we promote.
That's all I was going to say.
Awesome Jenga is probably harder because like since we're curating.
Yeah, I mean, it's not like a this is a fact thing.
So if we include a link that is not great, but it's not bad, then that's OK, too.
Like, you know, you never know.
You know, like I said, there's twenty five, twenty six hundred people who subscribe to the newsletter.
And if one article appeals to 100 people, great.
But there's no pressure that, you know, there could be bummers and that's fine.
Awesome Django is interesting that I feel like it becomes this like you can't use Django in your product name more than anything.
So we kind of joke about that probably on the side about like the number of like trademark issues that sometimes come out of Awesome Django.
go which well people yeah submitting like paid software packages which you know then becomes a
trademark thing which then the dsf um me has to deal with so there's probably more like agony
with it than django news so awesome django is a bit like a honey trap for trademark infringements
right yeah unintentionally yeah it kind of becomes that sometimes give us give us something to fill
the meeting with yeah but please put a yeah please please put this note in your your footer and ask
the dsf before you do this like this looks cool but you know you can't just name your project
django django django django can i ask you one more question jeff about django packages because that
just came up there previously you've been working you didn't want to mention your python thing you
had a python thought carl no well the python thought was just to what jeff picked up about
what jeff's saying about the relation between django releases and python release it's a bit
like at the moment we're in a well i feel that we're in a bit of a an interesting time because
they've moved to this annual release cycle um but then what that means is that at any given point
there are basically five supported versions of python active at any one time so 3.6 has just died
3.7 will die in uh october but then out will come 3.11 and it's 3.8 3.9 3.10 3.11 and so for the
for the lts the django ltss we kind of have to end up supporting all five of them because people
be like i'm on the lts and this new version of django has come out can you please support it i
think we've said that 4.0 will be the first version to support 3.11 so drink django 3.2
probably won't support 3.11 but we've had this problem before where you know month after month
people are asking to support the old the new version of python even though they're on the
old version of django it's like this is hard this is really you know i'd like to get to a point where
we can support say three or something like you know the last three years worth of python or
something i don't know apply for a psf grant carlton oh i don't know i mean if it's just the
ci that bothers me we run these we run this absolutely massive matrix of the same tests
again again again and there doesn't seem to be a very clever way of saying we'll only run this one
if that one passes you know do you see what i mean because you know you're running 50 builds and it
takes an hour and a half and it's like that's too long that's you know i just pushed a docs change
um anyway that that was the only thought about the python release cycle is it's
I mean, I feel like there's ways to deal with CI that's even though it's annoying, if it's like running certain things at different times, you don't have to run the full thing. I mean, I know that it's few that you have to run the full test suite every time somebody updates a readme. But with CI now, it's gotten easier to only run tests when you need to or what's appropriate. But I mean, yeah, to your point, I think that it's gotten a lot easier to go somewhere around Django or sorry, somewhere on Python, like three, seven, three, eight, moving to three, nine, three, 10, three, 11 has been very, I've yet to have libraries just fail.
because you switch versions.
I suspect Django is going to get more like that, too.
And it's probably more about, you know, with the depreciation messages and stuff,
you're probably going to be able to, I don't know, they should at least be showing up on CI.
So I think, yeah, the tooling needs to change a little bit about it.
And I feel sorry for authors because, you know, I've heard people complain for years
about how much like changing versions of Django impacts their book titles
and makes their content out of date.
so like it's even worse i'm sure for people writing python books today but i don't know
the solution oh no i have no sympathy for python people no sympathy it doesn't update every eight
months no sympathy i mean you could name it like four ish you know django four ish for professionals
or uh yeah yeah yeah it's like how to comment i'm like the only django book author left i mean
who's been here for a while. Adam Johnson is still updating, but it is a—I'd like to say
it's beyond my control, but I guess it's somewhat in my control, but, you know, I don't—it's a
technical decision. Yeah, it would be nice if, you know, it would make more sense for newcomers
if 4.0 was the LTS and you could just be 4.0, the .2 doesn't help book authors. But I know that
it's relatively new to have that whole system. And as Carlton mentioned, it really helps the
development. So it's not all about the book authors, even though, yeah, that would be easier
if a book, you know, didn't go out of date so quickly. Yeah. I mean, it's a, it's a hard problem
and it's a maturity problem. I suspect we'll figure it out or there'll be a better way of
laying things out. Or maybe it flips at some point, maybe by, by Django seven or something,
the LTS lands on a zero. Like I don't, these are solvable problems. I think it just hasn't
been obvious what the friction is but you know the more you talk about it on your podcast then
well what's python python is just going to be like you know three three dot fifty like when
does it go to four does it ever go to four um because of the resistance to go from two to three
took so long it took like 80 years or something like that it's a long time predates python's
origin even full 10 years yeah so i think because of that there's apprehension to go to python 4
But my theory, and this is completely made up, is I think that there's no way in the
world you're going to have a language called Python that has, you know, PY in it that they
would switch over to Python 4 before they could have Python 3.14.
So they're going to land on Pi, and then I suspect at some point someone's going to say
Python 3.85 is weird.
Let's just finally match dates or do something.
So I think it'll flip at some point.
The point is to get this cadence down so it's so much low effort that when they switch
from Python, let's say 3.14 to Python 4, then it'll be such low friction, low effort that we're
not going to have this whole, you know, the grief that we've had in agony before. I still have
Python 2 clients that, you know, we do porting jobs, probably two or three people at Rebsys are
doing porting jobs at any given point in time, because there is so much Python 2 code out there.
And, you know, other than like security is a good reason, but if you've got millions of lines of
Python 2 code, we didn't really give people a compelling reason to switch other than we want
to work on Python 3. And that's totally, totally valid. But, you know, companies kind of get a bad
rap, I think, sometimes for saying, you know, you wrote this code in this thing, and things are
stable, and you're supporting features and stuff. But when you're trying to flip a million lines of
code over because of print statements and stuff, I mean, it's kind of silly, in my opinion, but
eventually, you got to do it. And there's compelling, cool features and great things
that have come out of being stuck on versions
that, what is it, Django 2.0, I think,
was the last 2.7 release?
It might have been 1.11, was it?
1.11, yeah.
Maybe 1.11 was.
We can look it up, something like that.
Oh, I remember when I deleted my local test environment
for Python 2.7, I was the happiest person.
I was the happiest person.
It's great, but people are still all stuck on that island, right?
Do people do, what is it, Red Hat has some Python 2 somewhat supported version?
Do people use that kind of stuff at all, these company-supported Python 2 things?
Right, I think it's Red Hat that has that, right?
Yeah, I forget. There's a particular version of Red Hat I think a lot of them use,
but we tend to put them over in Docker, and then that way they can run the old in a new environment,
and they don't have to worry about 20-year-old or 80-year-old servers running,
because those are pretty crusty.
Yeah, that makes sense.
um have you got time for my jango yeah yeah i just wanted to ask you about jango packages because
this is sort of a couple of the old sites that are out there's jango snippets and jango packages
which are sort of old ecosystem things that are still going and you know still being kept up to
date and i wanted you seem to i've seen you tweet a lot and you've done a lot of work on it he's
updated it yeah are you getting contributors as well because that was the thing and if you do
want contributors and one of the reasons i'm keen on these old these old sites is that they're sort
of real django applications that you can have a look at the source code and poke around and see
you know how they're built rather than just you know academic exercise like
learning exercises i think i got it updated to four point django 4.0 um so to me it's pretty
cloudy we had a we had some really good momentum going and then we had a baby and then i kind of
you know i i keep up with it and keep patches and i've got a bunch of like get stash code for some
features i want to change um the the code was in excellent shape so other than like some blunting
and random stuff and then i've been kind of making i do what i do at revsys like look for patterns of
what's maybe broken or what's not so much broken but like performance issues and i've been slowly
kind of like every every couple of fridays or something i'll spend half a day or day and just
like kind of devote to you know what can i fix like can i fix search and there's been some spam
issues and stuff because you know curation is really hard on it and then right now we still
have too many packages and grids and so um i've kind of been yeah just slowly iterating on it and
stuff to try to like um make make it a more solvable problem i think for a project that
was created back in like the original was original django dash or the second django dash or something
when uh danny and audrey created it um and then what has it been like 12 years or something since
um it's a cool site i think jango snippets doesn't get enough love either i'm certainly
don't give it enough love so i would love to see y'all you know maybe bring a maintainer on or talk
about it well the ops team still um sort of maintains it like i get ops team emails and
there's stuff on snippets it definitely needs a jeff to come in and give it full love i think
they have one i think somebody's doing it oh okay i'm sorry whoever you are i'm sorry i'm just out
of the well that's just it i think yeah it needs more attention and we should bring we should ask
bring that person on yes i wish i could remember their name right now oh my god who's it's chris
chris chris chris sorry i was just oh man it just totally chris i'm so sorry yes chris is on no he
does chris um but chris stepped forward a while back and was like look i'm happy i'm happy to
you know because a lot of it's just like merging the updates and keeping going but it's like okay
he's been he's done a really good job of cleaning up the backlog and keeping keeping it going and
then you know he's even asking you know what features do we want what can we do and i think
it's a great it's a lovely opportunity for you know i want to get involved work on a little
project it's not high stakes in terms of you know you don't have to be intimidated by it you can
just work on a little feature add a thing that work with contributors working on github it's it's
a nice opportunity for ah i can get my toe wet in open source and it's a lovely little application
and it's a real django app that's been up time of forever and just been it's been hosted on heroku
and they've done very well and we're no doubt going to have to move it at some point but
it's you know i love that it's still going and we had to shut down django people because we couldn't
keep that going and again that was a an old app from the old days and it was just the thing is we
had um was it this european legislation gdpr issues and people weren't able to update their
their um their personal data and it's like well you know we even is this even legal now to help
to have this site i don't know and then there was spam issues and so we had to shut that one down
but to be able to keep django snippets going and it's you know it's a cute little thing and there's
some genius little if you dig through it and how do i customize the the choices in a form
forming based on the current request ah there's it's on django snippets there's a perfect example
of that from you know 2000 whenever well this is a broader issue but i mean we should feature
things that are official-ish on the django project site right like on the django community page
snippets isn't there you wouldn't know that it's what it is yes yes except um
right so that's the larger docs fellow thing that carlton and i talk about um yeah i think it's a
good resource um and django packages too is one that i used every week i almost use it daily
and so for me like putting some time into it to maybe fix search or get it up to date with django
for. And it really didn't take a lot of work to do that. Once I get kind of more back on my feet,
and it's kind of hard with DjangoCon. So part of like doing snippets, or sorry, part of doing
Django packages was a good excuse for me to dive into more open source code, a little less community
stuff and kind of give me something to buy some time and, you know, fix issues that I fix for
clients and give me a place that if somebody I get, I get requests all the time for people who
want to be want me to help mentor them. And it's so hard, I don't have the time. And I thought,
maybe I can throw out an issue on GitHub and point people to it. And maybe we update the docs and
make it an easier experience so people can give back if they want to. And then maybe I can use
that as a good way to, you know, have a quick win. But yeah, people want to contribute. We had,
I think, 100 issues. And I think I got it down to 12 or 13. Granted, GitHub has discussions. So
probably three fourths of those I shifted to discussions. I don't want to butcher his name,
But there's a Fabio who also works on the project, too.
He's one of the maintainers.
Look at the footer.
Sorry to butcher names.
I don't want to butcher names.
But like so there's there's more than just me working on the site.
I'm probably doing most of the main lead stuff now just because of time.
Both of us had kids in the last year.
So, you know how that goes.
But, yeah, I would love to see it grow.
I want to change the default grids to be more list based and then give you a more of a comparison
because those grids that are 100 200 wide are just it's just too much and then there's a pretty
big spam update coming up and you know part of it like too is we are starting to filter out projects
that are 12 and 14 years old i didn't want to immediately remove all of those so that you know
some old packages wouldn't be accessible and so yeah there'll be some quality of life updates
i saw a project the other day i don't i don't want to mention their name but somebody kind of had a
like this is like django package has been curated and i thought oh that's kind of neat but again
this gets into another trademark issue probably with the dsf so i hate to bring it up i love
seeing those sites exist though so i think it's the exact people are like here's a thing plus this
but just be careful with what you name your projects the dsf doesn't like sending those
emails like i don't think will enjoys that's not what will wakes up not just me but yeah it's one
of the things i least enjoy is being the enforcer of that but you know needs to be um haim on the
board is also very helpful um just ask first i had one last thing to um plug that sort of relates
jeff you and i have talked about so um django x is the starter project i have had for a while
that i just just updated to 4.0 has a over a thousand stars which i guess is is good um it's
a lightweight starter project you can just get up and going with pip pip m docker um white noise
bootstrap jenga debug toolbar and crispy forms so and all off so deliberately very lightweight not
not cookie cutter cookie cutter is amazing but designed to be somewhere in between um so people
should check that out and also um you know jeff you and i have talked about our you know potentially
collaborating on our own version of like a premium version of that which um is one of these
interesting but is it worth the time kind of thing to do like i mean so i guess i'll tee that up to
you as a question i know at revsys you have an internal kind of template you use right like
is there anything you could talk about what do you like to see in a starter uh template project
um i like to see batteries but not every battery possible like there's some really really good
cookie cutter templates that I see a lot of people use, but there's so much inside them sometimes
that it's not like it's not as useful for stuff. RevSys has one we called AlphaKit and we've kind
of toyed around with like opening it up too. And so we, our problem is the industry has hit. And
so I guess hot right now, as far as like, we've got more work than we have people for, but we also
know that the market will correct itself or can change. And so it puts us in a bind where like,
we would love to be able to spend time working on products or this type of thing uh but you know
like what do you do you um take on client work while you have client work and then if we can
get in the lull maybe we'll work on something um it's like going to grad school yeah so you know
things are great um i hope things continue um but you know we would rather be a little too busy
than not busy or have to lay somebody off or something so that's probably more inside baseball
than the casual person who listened to your podcast would care to hear.
But yeah, I think in general, starter projects, I think, are great.
I think there's a couple of people who've tested it.
I like to look at, I like to see what all the other communities are doing.
Laravel is doing some really awesome stuff for a while.
And that's kind of, you know, when you have somebody who creates a framework
and then they decided that it was okay to make money
by doing all these products that are adjacent to it.
And so I think I showed Will, like, my idea playbook, like, three years ago, which is, like, I think there needs to be a good newsletter.
I think there needs to be a good news site.
I think there needs to be, like, a good starter project.
I think there needs to be a good button out there.
Yeah.
Yeah.
I mean, that's what Laravel makes its money on, the starter project, but really on deployment.
And he's tailoring.
Laravel Forge is $4 million or $5 million a year, I think.
Yeah, yeah, yeah.
I mean, that, um, so, I mean, those are, those are the two ways you do it.
You hosting in a starter kit and really probably hosting.
Yeah.
And again, like, it's not really, they're, they're not necessarily doing hosting.
They're kind of deploying your app for you.
Right.
And so the hard part of Django is deployment, which, you know, smart people at Carlton and
I think, uh, Pete from Lincoln loop.
And, um, you had, I just listened to the, is it app?
App you like?
Yeah.
I just listened to that.
I just listened to the podcast the other day and it's interesting.
I mean, I've kind of like, you know, kicked the tires on these apps to see kind of what they do, except for button.
Yeah, I mean, I think like there's a whole healthy industry here that, you know, don't be afraid to start these companies or try these things out and stuff.
Just get permission first if you use Django in your URL.
That's really my only advice for your domain.
You know, you know, SAS Pegasus, which is probably the dominant paid starter project, you know, Corey was very good about checking and it does not have Django in it.
So it's fine, for example.
Yeah, and I think it's good to have competition in these areas, too.
So, you know, this makes everybody better because it's such a huge industry.
I think people think that it's like, you know, 2,600 people that follow the newsletter.
There's 10,000 times more that people, hit my mic, 10,000 times more people that are part of the Django community or that use Django.
We probably only get what we call the community or probably a very small piece of the pie of the overall people who use Django.
The biggest competitor is non-consumption, right?
People just, they don't have a solution.
And so it's not that there's a saturated market or anything like that.
Like there's room for a billion options.
Tons of room.
Like there's, I don't know if there's a dozen Django shops or something, consulting agencies,
but we're friends with everybody.
Like it's been such a big market and stuff.
And I've never felt like there's been competition.
Like sure, we may put bids on the same stuff, but overall, I mean, there's always more work
than any of us can do.
And it's, you know, a lot of great people running a lot of Django shops.
So, you know.
And there's big shops too.
I mean, I met someone at the playground yesterday or last week who had been at JB Software.
I think he said they had like 100 people or something like that.
You know, they're a sponsor of Django.
You know, I mean, because RevSys is relatively boutique.
Actually, there are these really large shops out there.
Yeah, I think JBS is my friend Adam Fast, who's part of Defna.
He works for them, I believe.
Yeah, and I don't know that they have that many Django or Python devs.
They probably have four or five or something.
And again, that's probably made up numbers.
But they do a lot of, I think, .NET and different stuff.
So nice plug for them, by the way.
They're a sponsor, so they can, you know.
It's all good.
I was not being facetious.
Sorry, Carlton, what were you saying?
Well, it doesn't matter.
There's any agency that you work at.
There's like, you know, two Django devs and then two front JavaScript hands and then two designers and then a business development fellow.
I think I've worked with every agency in our space over the years.
We've either co-worked on projects together.
There's been a couple where we've hired their devs
and I've been either lead or project managed on.
And that's the same thing.
I've worked with other shops too
because they needed help.
So we are very good friends in this industry.
And the problem has just been really getting people.
Well, Jeff, thank you for taking the time.
And I enjoy these somewhat rambling discussions,
but I think between the three of us,
we cover a bit of ground in the Django community.
So it's interesting to me.
I think hopefully fills in others on all these things we talk about that maybe we don't talk
about publicly. Yeah. Thanks. I really appreciate being on your show and appreciate that you all
keep doing it. I know it's more work than a newsletter, but we have, we have, um, we have
one more, uh, air culture from read the docs is, is coming on and then we're going to, uh, take the
summer off. We'll put out old, old episodes and start up in the fall. So with Carlton's mentoring,
I've, you know, that's how we keep doing it is that's how we do your breaks. That's how we do
the summer in europe it's like no it's too hard right that's amazing for working you know read
the docs is another django dash project too i think it came out the same time as django packages
somebody should redo django dash yeah someone from defna maybe it's got too much going on
all right thank thank you everyone for listening we are django chat.com chat django on twitter
and we'll see everyone in two weeks and then in the fall so see you then bye bye