← Back to Show Notes

Transcript: Coding with LLMs - Frank Wiles

Will Vincent

This episode is sponsored by Hacksoft, your Django development partner Beyond Code.

More on their services later in the show.

Hi, welcome to Django Chat, a podcast on the Django Web Framework.

I'm Will Vincent, joined as ever by Carlton Gibson.

Hello, Carlton.

Hello, Will.

Will Vincent

And we're very pleased to welcome back Frank Wiles, who should need no introduction.

He is a partner at RevSys.

He was the boss of the Django Creators.

Your former president of the Django Software Foundation.

We could spend half the show talking about what you've done, but we're pleased that you're with us, Frank.

Thank you for being here.

Frank Wiles

Hey, thanks for having me, guys.

Um one correction there, I was not their boss.

Oh, well I was I was their co-worker.

Yeah, I was their coworker.

I actually worked in a different department.

Oh, right,

Will Vincent

because you weren't working on Python, but I thought you you're doing Lisp, right?

No, it's Perl.

Carlton Gibson

Well, one or other, one or other.

Will Vincent

You take you take a shot.

Oh, okay.

So not not the direct man, but you were there, but you're older than they are.

Frank Wiles

I'm I'm older than them, and I I had more ops experience, and so they they would rely on me to help with like performance things and database backup things and stuff like that.

Will Vincent

Um and Jacob is still a partner, Jacob Kaplan Moss is still a partner in Repsys.

Um, a lot to talk about, but maybe just we were just before we started filming admiring your your setup, and you were mentioning giving us a little bit of the history of the designers on Django because uh, you know, there's sort of three people who get credit, but there were a lot of people involved, yourself included.

What about on the design angle, right?

Is this more focused on the admin, or could you the you mentioned a couple of names that may be worth a shout out in terms of

Frank Wiles

yeah, um and I talked about a lot of this history in my last DjangoCon talk.

Will Vincent

Yes, we will link to that.

Frank Wiles

Yeah, that that's a that's a good one to link to.

Um, because it goes into much deeper detail.

But yeah, so when Django was getting started, there was uh, you know, as most web shops had, somebody who was kind of focused on the design, and that was Wilson Minor.

And he um was pretty much responsible for designing the Django template system, like from a the the user API side of it.

Um, and then you know, the initial website and the the Django admin, um all of that original design, and and you know, it's held up for 20 years.

I mean, we've we've you know touched it up a bit here and there um and you know modernized some things, but for the most part, it's still the way it was 20 years ago.

Um you know, and then after that, um uh Brian Veloso and then Adan Gazit both uh had roles in in kind of pushing design elements um through through Django in the early days.

Yeah.

Carlton Gibson

When we were talking before, you you meant you used the phrase design BDFL, right?

So the benevolent dictator.

Frank Wiles

So there was there was a brief time, there was a brief time where there was like, you know, Jacob and Adrian were BDFLs of Django, and they sort of had kind of I think it was somewhat unofficial, but like we sort of like here, you're the design BDFL.

We're gonna we're gonna defer to you on all design things.

Carlton Gibson

So the thing I wanted to pick up on that is do you think we need that again or something similar?

Because I some but when I was fellowing, we'd get these design issues come in, and uh, we'd and that was both on the website and on the admin, we'd be like a some of a bit paralysis, uh power pro uh paralyzed because we you know we're we're backendees, we've got this design neurosis, right?

And no one could kind of make a decision.

But do you feel that if we had if we could put one or two people or three people in that that kind of role, it would help us drive forward a bit?

Frank Wiles

I I I think it it wouldn't be a horrible idea, but I I don't know that we have that many design issues that come up, you know, month to month.

I think that if we had a a group of designers who were involved in Django in any capacity, and we that we could kind of point to and say, hey, would you give us a couple of ideas?

And maybe the steering council could just pick up here's two ideas that you know steering council picks, right?

I don't know if we really need a design committee or anything, but it's not it's not the worst idea for any, you know, by any means.

Will Vincent

Well, I I would say we could use a design slash marketing BDFL, you know, because Django Project.com we don't need to go all into all that, but there have been multiple attempts with lots of time spent by very talented uh volunteers to update that.

And yeah, I mean what you know, because what is Django?

It's it's the admin, it's the land, it's the little rocket, and really it's Django Project.com.

And I think that's that's what's kind of holding us back in terms of you know, it looks like it hasn't been updated in a while because it hasn't.

Well, it just got a bit of a refresh of modernization.

Frank Wiles

You know, yeah.

People are working on it, but I hear you.

I hear you.

Will Vincent

If you came in right 2025 or 2024 or 2023, you would, you know, change it.

Frank Wiles

Yeah.

I don't know.

I mean, on one hand, that probably means that we're more focused on code and releases and features than than you know, flash, but and we're obviously succeeding despite it, but I you know, that would definitely be a good idea.

Will Vincent

Well, it's like that uncalibur, right?

It's not like as ugly as Simon Willison's website where you go, oh, this is either a noob or like a pro, right?

It's like somewhere in between.

Like this that's the problem.

Don't be in between.

Yeah.

Frank Wiles

No, I I uh I've I've often thought that I'm kind of surprised that uh like an up-and-coming designer has not approached Simon about data set and saying, hey, like I will I will do this for you, but like I just want some credit, right?

Like I've I've always kind of wondered because I mean dataset works great, like it's fine, like, but it's very, you know, designed by programmer, right?

And uh, and you know, I I don't think I'd do much better, right?

Um but you know, but it's it's one of those things where like I'm kind of surprised somebody hasn't reached out.

Maybe they have, and maybe he's like, eh, just you know, like it's the features, not the look, right?

But um, but yeah.

No, I mean designs are obviously, obviously important.

One of the things, you know, that we've as a community have gotten right is docs and you know that they're readable at least, right?

Like, you know, that they they don't, you know, they look good, they're not just tech, you know, black text on on white background, um, that they're organized well and searchable and and all those kinds of things.

And that's that's huge for Django's ability to get picked up by people.

Will Vincent

And then, you know, we we beat this dead horse, but you know, the community is, I'd say ultimately what we got right.

Um, I don't I'm not gonna put myself in the we there, but that others have gotten right.

Um, you know, even looking around, as much as it's nice to think I wish we had a benevolent dictator kind of thing, you know, look at look at WordPress, look at material, right?

Where you have you know, one person can uh have whatever sort of mental health crisis they're having and just blow up an entire thing.

And uh Absolutely Yeah, so um that's a

Frank Wiles

and I think that's yeah, that's the danger, right?

Like, or even not even blow it up, but just lose interest or lose focus.

Yeah, lose interest

Frank Wiles

or I mean

Will Vincent

or alienate, yeah.

Right.

There's imp there you don't have to fully I mean the material thing is wild.

I don't know if you followed that at all, where the it just like suddenly

Frank Wiles

that one.

I followed the WordPress one with popcorn and uh uh just like you know, it's just like everything you could do to to shoot your community in the foot, right?

Like at like as a masterclass.

Will Vincent

Um and someone who up until that point had about as good a reputation as you can have, too, right?

Which is the why partly why it's so strange, but yeah.

Frank Wiles

I mean, I've never been a WordPress user really, uh you know, because early days they had lots of security and update.

Well, yeah.

Uh and I have to

Will Vincent

use it for some stuff now.

Frank Wiles

Yeah, and I I don't, you know, and I it's gotten way, way, way better.

Like, don't don't get me wrong.

Um, but you know, I just never got into that world and all of my CMS needs, even with clients, have been I've been able to do with Django.

And it was obviously home, and so like I I wouldn't look elsewhere.

Uh, but but yeah, I I don't I don't understand how you know well really anybody in a powerful tech position that is making really good money for some definition of really good money, I don't understand when they go for the money grab, right?

If you know, just any pick large tech CEO.

I don't understand when it's like, oh, okay, this means I'm going to make 1% less money, so I'm going to make this horrible decision.

I just don't understand it.

Like, I don't understand why they don't just retire and have boat drinks, you know.

Carlton Gibson

Is is that not because the sort of when you're so desensitized to the world that all that's left is the graph, all you can see is the graph going up or down, and down is not acceptable.

Frank Wiles

I I I guess I get that on some level, you know.

Like I always wondered about like Bill Gates, right?

Like when he was at the height of things, I was like, why are you still doing this?

Why aren't you, you know, playing golf or whatever it is you enjoy, right?

Um, and and it turns out, like, you know, I watched a documentary and read a little more about him kind of personally, and what he enjoys is that thinking through the problems.

And I and he basically structured his job and his role at Microsoft for years to he wasn't he wasn't in HR meetings about 401k bullshit, right?

He was he was just there talking about like what is the next, you know, what is the next focus and what is the cool tech that we're doing in RD and and helping steer that.

And I could see that still being fun, right?

Uh, but yeah, I don't I don't get when when somebody's like, oh well, I could make 1% more money and I'm already loaded.

I just don't

Will Vincent

I think you just go insane at a certain point with too much power and surrounded by yes men and women I mean I think we've seen this is the history of the world right I mean so Carlton you're the philosopher what are you well no

Carlton Gibson

well okay well I am not going to answer that that's just that's just crazy I want to bring it back but Frank so you've got as long a as long a view of of Django as you have and we were talking there about um you know B BDF sales and the BDFL model perhaps going wrong at times and Django's community model

is very strong but sometimes we have not sometimes quite often we feel that we go too slowly because of it and it feels like there's a trade-off that like you've got these two obvious models and one of them they've each Google got their downsides do you are there obvious things that you think or not obvious things are there things with your sort of long view of Django that you'd think do you know we can speed up there we can change that we should we can perhaps do this

Frank Wiles

yeah I mean there's definitely been points over time where it's like oh man like like you know like we've been discussing in the on the steering council about ele

vating the the visibility of third party packages anybody in the community knows that half of Django's strength is the ability to grab third party packages to solve the problem that you're facing or the the you know something like Django storages to store you know files in S3 for example like you know that's one of those things that you know a lot of people are like why isn't this in core and it you know it's so that it doesn't have to move slow right like just the you know the same kind of the cores where things go to

die like from the from the Python world.

It's not quite true but there's no good reason that it has to come in right um and so it's better to be out and you know fellows can only do so much and maintain so much.

But there's so many times that I've run into people that they're like they're unaware of that.

Like they're doing their own S3 file handling from hand by hand with Bodo because they don't just they just don't know Django storages exist.

And and and they they've never heard of Django packages or awesome Django or jazz band or any of the things that like everybody who's really plugged into the community knows and not even really plugged into the community.

I just mean like you know barely plugged into the community well

Will Vincent

it's in the it's in the you know it's in the official tutorial now like there's a link to finally finally but yeah I agree.

I mean it's yeah

Frank Wiles

right and so so yeah so like one of the things the steering council is doing that Carlton I are on is is trying to help elevate that a little bit um and making it a little more acceptable there was always this feeling like well we Django shouldn't pick winners here.

And I still think that I don't

Carlton Gibson

think that we're not extended right I mean like we've got three or four CMS solutions.

I don't want to say that CMS solution I want to tell you about

Frank Wiles

my favorite I have the one I steer clients towards the others are fine they're just they're just not for me right like I I like the certain features and of this versus that I like you know the amount of work I have to do to achieve what it is I want to achieve with different libraries.

You know there's certain ones like Carlton you maintain some that are great that I don't use because they don't no

Carlton Gibson

you're not allowed to not use them

Frank Wiles

but but there's but there's a lot that you know I do use right and and so like it just depends on like what you know what kind of thing I'm doing.

I don't do a lot of form stuff because most of our projects of late have been API stuffed so I don't have a lot of need for libraries related to forms.

You know right and and and so like that's you know that doesn't mean that they're bad like and and I that doesn't mean that everybody should do React front ends you know by any means.

But but yeah like just the fact that like we we all know that there's this handful of libraries that are the top for this category and this handful for the top for this category and if anybody asked us we would list them off off the top of our head the fact that they're not that visible to the wider community is I think holding Django back a little bit because you know like we were talking about with WordPress everybody's the thing about WordPress is you can get a plug in to do anything.

Nobody necessarily knows that about Django right as and when they walk in the door.

Will Vincent

Well I've long thought since I need to do videos of like a third party Thursdays because I I mean part of it is you know those of us it's like we're we're like it's out there like we're doing stuff you know like they're like the awesome Django repo that I you know manage with Jeff Triplett um your partner we just hit 10,000 stars.

You know Django packages which Jeff now runs with help um gets a lot of traffic but yes still a lot of traffic yeah still people don't know about these things or even if they do they want some degree of curation which makes sense right you can't just go you can't just go by recency and stars.

And if you don't have you know a podcast where you can allow these questions to uh guess how do you

Frank Wiles

well like you just you just mentioned like having a you know uh third party Thursdays like when I first you know got involved in using Django as a developer and not just friends of the founders um uh one of the things that I found really valuable was uh Python module of the week yes um the and and it it exposed me very you know slow

ly but over time to standard library modules that I didn't know that existed and that's partly because I came from a Perl world where there wasn't that much of a standard library compared to Python.

Python's standard library is probably four or five X the size of Pearls where at the time CPAN was way larger than the cheese shop way back then, right?

And so you knew to you you know you always had a a handful of third party packages in a in a Perl project uh where that just wasn't as common with Django or with Python which is why like early Django had no dependencies right and still only has what just three or four TZ basically yeah it just it's just a handful yeah

Will Vincent

well that yeah you you just I mean you need that kind of you need the interest okay you can't give someone the interest but you need that drip function right like I've yeah maybe I should maybe I should do a newsletter ne

Frank Wiles

wsletter like a Django yeah yeah Django app of the week or whatever right I I thought about doing that a couple of times that I just sadly haven't had time

Will Vincent

well because I think and I we could link to it you know on the forum I put a post I've done some posts and and Jeff has actually helped you know try to do some high PI statistics which we can debate how accurate those are but you know some version of like top tens.

I feel like that's a perennial thing.

Like I'd love to get you know just the top tens that people are using because I invariably find stuff um that way.

Frank Wiles

Well and Mike Carlton I ended up talking about this a couple of weeks ago uh I've always had this idea of basically creating a FICO like score for software packages and libraries where go ahead yeah somebody you know somebody me and a small group come up with here are the factors that matter but the factors are kept close hold so that you can proprietary

Will Vincent

baby right because

Frank Wiles

you you yeah and and not like in a way to make mone

y off of it but just in a here's the you know I don't know the frank score for you know it's gotta be called

the prime score it's gotta be called the prime score

Frank Wiles

and and and yeah and and and that if you over time learn to trust the frank score then you can trust future frank scores on other on other things right um and I think that could be a way you know like I I I haven't had time to do it obviously but I have some ideas of things like you know around velocity of of of you know issues vers

us pull requests versus releases like things that are a little deeper you know downloads obviously factor in there not just stars but like things that would be not impossible but more difficult to game if you have like a game credit score

Will Vincent

like a six eight factor model we could probably probably probably end up at this relatively the same place on that but that would be what you what one would do.

Frank Wiles

Right and then and maybe expand it to other systems too right like it doesn't not just Python are not just Django but you know JavaScript and Debian packages and you know like Rust greats or whatever.

But yeah

Carlton Gibson

JavaScript packages is a nice one because as a Django developer what you want is the sort of the recommendation for JavaScript packages which are kind of Django adjacent rather than dropping you right into the you know the pickle barrel.

Frank Wiles

Yeah.

Well and then like an the other thing I think that happens too is often um often there's a new you know kid on the block that is dramatically better than the you know the status quo and many of us find it and use it and know and talk amongst ourselves that oh this is so much big you know this is and it's ready it's ready for prime time.

It's you know and but people are slow to adjust to it.

And I think one of the things that we wanted to talk about like one of one good example of this is UV.

Right.

Yeah let's do it um you know like you know tried out UV like you know first couple of weeks a little rocky, a couple of features I needed, couldn't use it for all projects, but like very quickly within a couple of months, we were switching most of our projects to it, and now I don't even know if we have a project where I fully get to decide what's used that isn't UV.

Um, and and that's been in like less than a year, right?

Can you

Carlton Gibson

it's only been our house?

Will Vincent

How much of that?

Yeah, well just a year.

It was February, February when it came out.

Um I've been doing my research, Carlton.

Because PyCharm has UV support.

Uh, and so at PyCon US, I spent the morning we're doing some stuff around that.

Now, of course, you know, support we can make it better, but we have built-in tools and I suspect other IDEs will as well.

But I wanted to ask you, Frank, so so for a greenfield project, sure.

One of the things is how do you decide, you know, switching over to it from a more legacy project?

You must have some battle stories on that.

Frank Wiles

That's the thing.

Is it no?

It it takes me it, you know, 15 minutes and we're switched over to UV and CI and everything.

Will Vincent

Wow.

Frank Wiles

Hmm.

Right?

Like we had one project where there was like a weird we were accidentally and didn't even know of relying on kind of an old uh dependency resolution to get the packages we needed.

And that might have taken me half an hour, an hour to sort out that I need to pin this one, you know, like to figure out which is the one that I, you know, the dependency of the dependency of the dependency that I needed to pin to not cause the test failure.

Like that took me a little bit, but like most projects, it's been put UV in front of your pip commands in local stuff and in your Docker file and in your CI, and you're done.

Will Vincent

Well, and that's the thing, is it's uh, you know, uh Charlie Mar Marsh, the creator, was making the point that it's it's not just fast, it's so fast that it changes how you do things.

Like, for example, things that were written, the um the CI you can put into pre-commit as like as one example.

I'm curious, are there any other ones like that that you found since you've you know been using it a bunch?

Frank Wiles

No, I mean like we we

Will Vincent

are you using that one, for example?

Are you

Frank Wiles

the um I'm not using that all over the place?

Jeff just kind of to tuned me into that uh a couple of months ago, and so I haven't gone back and done that to some some projects.

Um, but yeah, it it's so incredibly fast that like you know, like I think it was uh Sebastian from Fast API said he was like, I had to double check that it actually ran.

Yes, right?

Like, and and and that's you know, that's and that might have been for rough.

I might be getting that quote wrong.

That might have been for rough, but but like, you know, that's it is it changes your workflow, right?

Like I I went from you know, like rough on save, right?

I I run rough every time I I save, and I save habitually.

Will Vincent

Yeah, I I use rough rough rough ET commit and just yeah, I don't even think about it.

Frank Wiles

Yeah.

Yeah, it's uh yeah, I I save every time I stop to think, right, in my editor.

Five times a day.

Frank Wiles

And yeah, but more like five times a minute.

But uh but yeah, no, I I yeah, I I I over save for sure.

But um uh but I I lost I lost two weeks of work once and uh and I've never forgotten it 20 years ago.

Will Vincent

Oh man.

Carlton Gibson

I I still have my editor configured to create a a timestamp backup of every save.

And so there'll be like four a minute, five a minute of them.

But the number of times over the years that I've gone in, found the found the version that had the exact thing that I deleted and saved me.

It's worth it's worth having it.

Frank Wiles

Well it's sort of like like you know, git branches being cheap changed how we all worked.

Like subversion creating a branch might be go get a sandwich on a you know large legacy project, right?

And you know, and git makes it instant, and so you create lots of small branches.

Um and UV changes, yeah.

Like I'll just install stuff, you know, to play with it and then get rid of it.

And I'm not even concerned with how much time that's gonna take.

Right.

Will Vincent

Well, and some ID I'm sorry, Carlton, one last point.

I was just gonna say

Carlton Gibson

some you do yours and then

Will Vincent

thank you.

Uh some IDs as well, you know, PyCharm is an example, uh, VS Code has this, I'm sure others do, have you know, a local history kind of thing, which is basically like you don't have to configure it yourself, but it will save a lot of things for you so that hopefully, broadly speaking, losing just losing stuff is a lot harder now than it was, you know, 20 years ago.

Frank Wiles

Yeah, absolutely.

Uh the the other um uh aspect of that, I think, is that like cycle time is super important to flow.

Right.

Um I talk about this a lot, especially with clients, that you know, if you know, if your CI is two minutes, that's amazing, that's great.

One minute 30 seconds is even better.

And and and and focusing in on that, right, how long your tests run, right?

That ability to just iterate and try.

Well, let me try that.

Nope.

Let me try that.

Let me try that.

Frank Wiles

If trying something means 30 minutes, you just you you start to debate your choices, you maybe pick the wrong one, right, instead of try all three, right?

Um, you you you you lose flow.

You lose your place.

You you know, naturally, our brains are, you know, you're on Reddit all of a sudden and you're like, how the hell did I get here?

Right?

You know, you're texting your wife, you're you know, you're checking your

Will Vincent

total waste of time, whatever.

Frank Wiles

Yeah, no, no, not waste of time, but like you just get distracted because you know, it's like the oh, we're compiling and so like let's go get coffee, right?

Like that that that slows everything down.

And so if I can, you know, construct the scenario and iterate on it in you know, increments of you know, single digit minutes, I can just plow through stuff.

But if it's double digit minutes, I'm I'm walking through stuff, right?

Carlton Gibson

Yeah, and getting in like you know, when you're working on something and you've got exactly the test that you need and it you can just uh yeah, run it, run it, run it, change, run it.

Yeah, okay.

Frank Wiles

Problem solved in 15 minutes instead of all day.

Yeah, right.

Carlton Gibson

Yeah, no, absolutely.

Will Vincent

Hacksoft is your development partner beyond code.

From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they're ready to take your project to the next level.

Well, and that was the in the UI.

Okay, I'm sorry, Carlton.

I'll just this promise last one.

I was just gonna make the point that uh in UI UX stuff, there was this is back a number of years.

They did the research on I forget how many, like hundredths of a second it was, but if the page took a little bit more on Amazon.com, the percentage of people just like l leaving went, you know, so it's just a clear speed, you know, and it just yeah, just if it pauses you at all, you know.

And I think it's even worse worse as a programmer because you're trying to be in a flow state, you're trying to like have the tools take care of themselves, not get in the way.

Frank Wiles

Absolutely.

And and yeah, I mean, I guess I spent, you know, a large part of yesterday shaving a hundred milliseconds off an e-commerce.

Carlton Gibson

That's all right, it's fine.

Frank Wiles

Right?

Like, and you know, and it's one of those things that you know people are like, oh, it's fast enough.

And it's like it can be a little faster.

Like, let me spend a couple hours here and shave that off because yeah, the research has shown you can feel 100 milliseconds.

Will Vincent

Okay, I'm done, Carlton.

Go.

Carlton Gibson

Okay, no, I was just gonna swing back to the the so the example you hit was one of these um cases where UV doesn't handle the sort of legacy resolving algorithm.

And what's interesting, you said you've only hit that once.

And I wonder if like um Pip itself could sort of use the the much faster algorithms.

Yes, uh UV's written in Rust, but a lot of it is to do with the caching and the different algorithm that's used, not necessarily just the fact that it's in Rust.

Um and I wonder if Pip could sort of implement uh the more optimistic algorithm and only fall back to the legacy slow one if it if that failed, because I think there's performance being left on the state.

Frank Wiles

Yeah.

And but I I I do I do think that like I think they did make a change because there was a pip change where you could say like use their the legacy resolver in pip a while back, and I think I may have basically leapfrogged that problem with UV before, you know, before like I would have run into it with pip.

But but you're right, they're they they may be able to do that.

And I I would imagine, you know, they're going to strive for a little more performance parity with UV, but I don't think they're ever gonna really get there because of Rust, right?

Um, and and I don't know, you know, sure, like I think we should always have some competition in tools, right?

Because it makes everything better.

Uh, but I think that, you know, for the foreseeable future, UV is gonna win.

Okay.

Um, you know, and but the minute somebody comes up with something that's twice as fast and Dart or whatever, like I'm gonna I'm gonna use that, you know.

Uh the I I don't quite understand people's concern about the switching cost on this, because I've yet to have the switch take more than an hour for large projects and microservice projects.

And like, I mean, like it does not take very long.

And then the other argument I've heard people make is that like because it has some VC backing, like what happens when they pull the rug?

And uh I I I I've jokingly said on on social media, it's like, well, then we'll fork it and call it the U.

And and you know, like and run with it for a year before we really have issues, and somebody will come along and maintain that, or or or they'll come up with a new one and we'll switch to it, and it'll take me another 15 minutes in years down the road.

Like, I mean, I don't I don't expect Charlie and and and the Astral team to do that.

Uh, you know, I think that they've got other ways to make money, but even if they were, like the switching cost is so small, you know, it's not like switching from Python to Rust or something, right?

Like this is a pretty small piece of the puzzle to to of your stack.

Like it's a it's a very important part, but it's a pretty small one to switch, really, right?

Switching testing libraries would be weeks of work, right?

Uh or switching from Django to something else would be weeks and months of work for most projects.

But like switching how you install your pip packages, like just like moving to Docker, right?

Like might take you a whole day if you don't know anything about Docker, right?

Might take you two or three days if you know nothing about Docker, but like now I can move a project from not Docker to Docker in an hour.

Carlton Gibson

Most of that's finding your template Docker file to copy across.

Yeah.

Frank Wiles

Exactly.

And knowing kind of, you know, like I already understand how layers work and what I need to do.

And that that one time I ran into the libg DAO problem.

Yeah, you know, like that that you know, that kind of stuff that like that that is, you know, that is because I I do this a lot, right?

And I do this a lot for lots of projects where most people have a project or two that they change once or twice a year.

So it probably feels harder, uh, but honestly, like it's really not.

It's really not that big a deal, most of these, these sorts of changes, right?

So go on.

Carlton Gibson

I so you um said you're still mainly doing rust uh REST APIs and you know um React front ends in front of that.

Is that's that's still the case?

You haven't swung into the HTMX world and

Frank Wiles

not as much.

Um the the rest of my team um uh uh does that more, uh mostly because most of my team doesn't know JavaScript very well.

Um and so it's it's much easier.

And and it depends on the project, obviously.

Like, you know, uh we've talked about this.

Like we have some projects where, you know, there's you know, it's a large site, 100,000 lines of code, there's seven elements that kind of need that reactive slickness to it that HTMX can provide.

And so HTMX is perfect for that sort of thing, or even just a little bit of vanilla JavaScript, right?

Like that's perfectly acceptable for those kinds of projects, and it's the sort of projects that members of my team that don't know JavaScript can do, or I can jump in and do those little bits, right?

Um, but then we have other ones where it's like I've got, you know, it's a it's a full flow, full-fledged desktop app, but in a browser.

And those, you know, in so far in my experience are easier for me to do in React at this point.

And, you know, I'm sad to say that I'm almost faster with JSX these days than I am Django templates, which really surprises me.

But I still occasionally get tripped up on something in a Django template that years like I remember from years ago, oh yeah, I remember

you're gonna do that.

Frank Wiles

And then like, but it'll trip me up for it'll trip me up for five minutes, right?

And uh where like I just I'm I'm in flow with JSX these days.

So like I've moved my personal blog to Astro simply because it's it supports MDX, which is marked down with JSX components in it.

And that seems to be the sweet spot for me and and like simple blog like websites.

Carlton Gibson

Okay, so from that perspective, what's because um you know, one thing that always comes up as well is uh Django's um front-end story or lack of front-end story.

And you know, for if you're just using it with sort of the old-fashioned Django way static files does everything, you maybe got Django compressor to you know compile combine your JavaScript files or whatever.

From a React, as from a React kind of point of view, what what integrations or what things would you like to see that you know help Django integrate with the more you know Next.js Astro React worlds?

Frank Wiles

I I I think we've already got it, really.

Um, you know, Django Webpack loader, Django V basically take care of it.

Um, you know, if you're starting a new project, definitely use Vit, uh V.js.

Um it's a bundler and Transpire and does all the all those pieces for you.

That's much, much simpler than Webpack, um, but just as powerful and quite a bit faster, honestly.

Um most of our projects have moved from Webpack to Vit um at the next time we need to touch them.

Um and it's install a Django app, toss it in installed apps, load a Django template tag in your base template, and that you're integrated.

Like that's it.

Like there's no there's nothing more to do.

So I don't know that we need any tighter integration than that, except maybe, you know, if five years down the line, VT is the de facto only way to do that in the JavaScript world, which I would find hard to believe any one thing to be the de facto way, maybe that gets pulled into core just because it, you know, it's a small project, right?

It's not it's not gonna be a large lift to maintain.

Uh, but I think that we really dodged a bullet as a framework, not picking one because the JavaScript ecosystem has moved so fast, right?

Like if we had to pick um um uh what was before uh React that um started to be.

Will Vincent

Oh no, that's that's CSS.

Frank Wiles

Um no that's CSS.

Um, it's driving me nuts.

Keep wanting to say bootstrap.

Carlton Gibson

It's not bootstrap, it's um

Frank Wiles

uh yeah, but I just had to move somebody off of it a couple years ago.

But um we'll find it and put it in the show.

Backbone, thank you.

Will Vincent

Backbone.

Frank Wiles

Backbone was was the hotness around the time this kind of started talk, you know, in a jQuery, and like let's bundle these, let's make a better front end story.

And we'd still be having to support backbone, um, which basically no one uses.

Um and then moving off of it would be, oh, well, now I've broken, you know, like I can't upgrade to Django, you know, 2.2 because it doesn't support Backbone anymore, you know, and and we'd be playing that game every couple of LTS releases as as as JavaScript changes, right?

And even as much as I think, you know, there's merit to bringing HTMX in, I think that we might look in 10 years, assuming Django's still around, you know, knock on wood, but that we'd be we'd regret that decision, right?

And and like I said, the integration is is is small.

It's it's like trying, I don't know, it's sort of like should we bring UV into Django?

Like it's it's we you know, we're only gonna work with this.

Like, I don't think we need that.

I think that you know, a couple of good blog posts, a couple of good doc posts, you know, pages in the documentation of how to do this and show that it's 15 minutes and you're running.

I I don't know that we need to.

Carlton Gibson

But again, it's that lack of messaging more than the actual what's actually there.

Yeah.

Will Vincent

All right, I'm gonna give you some messaging.

Tell me about kubepod, because you just released this.

It's go.

Frank Wiles

Yes, so uh it's it's my but it's my second real Kubernetes related CLI tool written in Rust.

The other one is called KubeSecrets.

Um it's a little tool that removes an annoyance I have with working with Kubernetes all day.

Um and that is, you know, one of the benefits of Kubernetes is that your your pods, which are one or more containers that run together, um, have very randomized-ish names.

And so, but you often want to just pop into one of them and check is the Django setting set to what I think it is?

Right?

Like I've set the environment variable, I'm pretty sure that you know debug is false, but I want to pop in and double click on the code.

Carlton Gibson

You just hit a URL that doesn't exist, right?

Frank Wiles

Well, yeah, that's one way.

But um yeah, yeah, but like, you know, that's the sort of thing I'm talking about.

It's like I just need to pop in, I need to run this this management command that you know resets some situation or or does some batch processing or something that I need to do.

And so the first thing I have to do is say, tell me the list of the current pods, and then I have to cut and paste one of those to pop into it.

Um we also have a pattern we use with uh just the command runner to exec into a pod, take a snapshot of the database, copy it local, and restore it into our local compose environment because often it's very convenient to grab a copy of production, bring it local to debug a certain situation instead of trying to scaffold that situation's data correctly to debug it.

And that also I need to know a pod name to exec into it to take the backup and bring it down.

Um and so that finally annoyed me enough that I built a little tool that just you give it a string prefix of the deployment or stateful set that you've got there, and it comes back with any one of like the first pod name it finds, and or execs you into the first pod that it finds.

And so it's a little bitty tool, uh, but it's one of those that I probably do that 10 times a day.

And so it's you know, now that it's one easy command and not two or three commands is is very nice.

Um, you know, there's other tools that make some of that a little easier sometimes, like K9S.

If if you're doing Kubernetes and you don't know about K9S, uh definitely look that up.

It's it's like top for Kubernetes.

Um gives you up super easy access to getting a shell in a in a container or getting the logs or seeing the definition of the pods YAML, um seeing memory and CPU usage statistics and things.

It's a great little window into your kube cluster.

Um, but yeah, that's one of those uh it's also a claw uh success story.

Um I I know enough Rust, uh, but it would have probably taken me all afternoon, if not all day, to get it right.

Um, and then I thought, you know, I'm I'm gonna do this in Python, but like let me just try Claude with Rust.

And about 30 minutes later it was working.

And about 30 more minutes, I had it polished, and then I spent about an hour on, you know, the README and the docs, and and uh, and then Claude helped me set up the GitHub Actions to do the the multi-architecture build for Linux, uh Intel and ARM Mac and Windows, and just automate that as part of the release process.

So if I push a tag, it builds and releases binaries for everybody, um, which was great.

And so yeah, in two hours, I had my tool, and that's just amazing.

Carlton Gibson

We've got to ask you then about LLM, obviously enjoying using Claude, and you know, they make a big difference, right?

Frank Wiles

Yeah, they do.

Um in in you know, used smartly, they're they're they're not perfect, right?

You gotta, you know, you need to have tests, you need to, you need to kind of understand what it is you're trying to accomplish.

Um, they do hallucinate things, uh, but often it's very apparent, you know, they're you know, they're trying to pip install a library that doesn't exist, something like that, you know, like and and you can quickly say, oh no, no, use this library, and then it's no longer confused, right?

Um I find them super useful 90% of the time.

About 10% of the time, I'm just like, I get frustrated.

I I know what I need to do, and I've tried to prompt twice, and it's you know what, it's gonna take me 15 minutes, but I'm I'm just gonna I'm just gonna code this part because I I know what needs to happen, right?

But where I found it to be super useful, like Claude Desktop, um, for I am confused about this situation.

Like I I I I see this, I'm getting this error message, I think that's this, but blah, blah, blah.

And it comes back with an answer, usually in an area that I'm not super familiar with.

Like I had an FMmpeg issue converting some video for a client that I was getting this weird weird header error out of FMmpeg, and uh and then I I had no idea what was going wrong.

And what it ended up being was the file name suffix was telling me it was one codec, but the file was actually a different codec.

So somewhere in my code or my stack, it was appending a suffix that didn't match.

And so I was telling it to convert from A to B, and it really wasn't A.

And that, and and you know, and it just didn't give me a good error message saying, hey, you you said this was WebM, but it's actually MP4, right?

Instead, it just said, you know, header error at byte zero, you know, something, something, and I'm like, well, and and it worked for 300 of the 306 users that had done it that day, but those six had a problem, and I I just was sure it was something deeper than that, right?

And so I overlooked it, but it quickly said, like, double check the file type, and I'm like, yeah, let me do that.

I pulled it down, it's like, oh, this is an MP4.

Like it's you know, probably saved me two hours of debugging by just pulling up.

Carlton Gibson

Um like the a perfect example because it's the the the API on that or the user interface on that is so big that no human could ever master it.

Was you know, an LM can be like, no, you need these options.

Frank Wiles

Well, I find it, I I find it really great for like these tools, like any pod.

That thing I've always wanted, but I haven't found a Saturday afternoon free enough, you know, that I felt like spending building it.

I can often build it in 30 minutes.

A really rough version, not one I would release to others, but something that does what I need real quick in a virtual environment on my laptop, maybe that maybe never even makes it to GitHub, right?

Like just a throwaway tool.

And, you know, I I get a lot of situations with clients where they're like, they'll give me an email that says, hey, we we noticed there's this problem with these 93 records.

Here are the UUID primary keys of them.

And I have to like cut and paste them into something, turn them into a Python list to go fix them, right?

And I can take the whole email, select all, paste it into Claude, say, hey, see those UUIDs, turn them into a Python list for me.

And two seconds later, I've got a Python list, and then I can cut and paste that into my shell or or whatever, you know, into my code and and take care of it from there.

And if nothing else, it's saving me some carpet time, right?

Like, you know, like I just just put in quotes, you know.

I can do it with my editor, I can do the regex that'll put quotes on the front and quotes in the commas on the end, and like I can do it pretty quick.

I've done it for years, but I can't do it as quick as an LLM.

Yeah, no, good.

Carlton Gibson

Uh in Mythical Man Month, there's this um graph where it's like works on my machine, and then to get it into a product, it's like times three, and to get it into something you can actually sell times three again.

Whereas if you just want that down the bottom, you can get it done.

You know, you you don't need all those requirements.

Oh yeah.

Frank Wiles

Well, even just thinking about thinking about like I I know what options I want, I know what defaults I want.

I don't have to think through or provide a way for you to do your defaults, Carlton.

Like I can just do what I want the way I need it, only taking into consideration my scenario, you know.

Like I can hard code things to a Kubernetes cluster name that you could never do in a

Carlton Gibson

tool, you know, in a real tool.

In the real world, right?

Frank Wiles

It's in a real tool, yeah.

Will Vincent

Yeah, so

Carlton Gibson

I find them.

Will Vincent

I was just gonna say I find them fantastically useful for those, you know, finding a missed comma or dumping in a whole bunch of stuff.

And I I guess, yeah, I was trying to think about it.

It's sort of error checking that for whatever reason other error tools that we have don't pick up.

You know, the framework doesn't pick up or Python doesn't pick up.

And so hopefully that's something where I remember back when I was way back getting started, you know, if I missed a comma or something, that could be days of my life.

And now, you know, even for a beginner, I think that's a very appropriate use case to just dump it in and see what it spits out because it's there, they are so good at spotting those things.

Frank Wiles

Well, and as a rubber ducking debugger, right?

Like we've all had that experience where like we're just not sure what's going wrong, and we end up talking to a colleague about the problem, and maybe even they don't even say anything.

About halfway through our conversation, we come up with what the possible answer is.

But this is somebody I can talk to about it at two o'clock in the morning if I'm up with some insomnia, right?

And you know, yeah, hey Claude, you know, what are you doing?

You know, and uh but

Carlton Gibson

select chatty mode.

Frank Wiles

Yeah, yeah, exactly.

But you know, and and you know, and then tools like Ader, I'm a big fan of ADER at this point, um, because I can really control what context goes to Claude that helps focus the answer I get back, right?

Like, here's the model you need, here's the view you need, here's the test you need, like write me another test but that checks these two scenarios, do it in the style of the existing tests that are there, and it basically spits out a test like I would write it, using the fixtures that I've provided and and everything.

And I don't have to do much to it.

Um, and it's great, and it costs you one cent sometimes, you know.

Will Vincent

Yeah, Jeff is going on and on about this to me and on the socials.

I just sorry, Carlton.

One last one.

So I just so what how exactly do you have it set up?

Because, right, like you people can use these within IDEs, you can use the desktop app, you can use the web app, you can uh CLI it up, you know, assignments tools.

Like what's your particular poison?

Frank Wiles

So a little bit of all of it.

So if it's the random question, like that FFMPEG thing, I'm I'm clawed desktop.

I I just paste the error in and say, this is what I'm trying to do, this is this is the error I'm getting.

Uh, can you give me some hints as to what maybe the problem might be?

And you know, it spits back some stuff, and maybe there's a follow-up question or two, right?

And I just kind of have a thread about that.

Um, sometimes it's just I forget the the the best way to iterate through a list of lists.

Can you show me an example?

And it will spit out a little example that I can basically cut and paste into my code.

Um if it's I'm writing a test or I'm wanting you to add a feature to you know some code, I'm I'm probably using Ader uh to do that.

And then a little bit of like Pydantic AI or something like Simon's LLM tool.

Um, if I'm building something that's a little more um reusable, right?

Like um one of the things that I often when I write a blog post, uh, for whatever reason, it'll take me an hour to write the blog post, and then I'll spend an hour agonizing about how to summarize it for the tweet and for the for the meta description tag.

Like what's the, you know, like it'll take me almost as much time to to do that as to write the post.

And so now I ask Claude or Chat GPT, here's the post, give me 10 headlines, 10 tweets, 10 summaries of this, and I kind of pick and choose from there.

Oh, I like that wording, but maybe not that whole sentence.

Like, let me put those two to and then I'm I'm done in five minutes or 10 minutes instead of an hour.

And and so I have that.

Carlton Gibson

And it's worth it to avoid the agony, right?

Right.

Will Vincent

Well, it is interesting, like the the cutoff for when you know, so we have you have a monthly subscription, and then when are you willing to pay, you know, pennies, dollars?

Um yeah, I d I I

Frank Wiles

I think I think people would be very surprised how little it costs.

So when I first started using ADR, you know, and Claude, they gave me five dollars of free credit or whatever, and I thought, okay, well, I'm probably gonna burn through that really quickly.

So I threw 20 bucks in, and uh then I was using ADR, and and it even shows you like how much was this last prompt, how much have you spent this session, so you can kind of keep track of of what's happening.

Um and then I ran into an API limit and I saw something Simon had said that basically people who spend more get a little bit higher API limits.

So I threw another hundred bucks in.

That was in December, and like so 125 total from December.

Um, and I think I'm down to like $118 of credit, right?

Like now I'm not using it eight hours a day or anything, but I'm probably using it at least 30 minutes a day, if not an hour, on the Ader API side where you're paying, right?

Um, and like I'll have, you know, any pod cost me a day.

Carlton Gibson

And it was worth it, right?

Frank Wiles

Right?

It was a dollar.

I got the tool I wanted in an hour for a dollar, right?

Um now, is it the best rust in the world?

Absolutely not, right?

Could I dry it up a little bit?

Absolutely.

Frank Wiles

I even had it go through and because it was really not dry, uh, the first version.

And so I had it dry itself up a little bit.

And uh, but still I see some stuff in there that I'm like, oh, okay, like this should really be a function that just takes a workload and like, you know, but like I'm just gonna leave it.

Like it's it's like 600 lines of rust.

Like, I don't really care, right?

Uh, it does the job.

Um, and also I had to get home to dinner, right?

And so, you know, maybe, maybe someday I'll I'll I'll pick that back up.

But but yeah, like some of the things, you know, like we're we're really approaching a time where you can build real software in a day for 10 bucks, right?

If you're an experienced programmer, I'm not trying to say that in a way that like you right, that's that's me prompting along, right?

Knowing exactly what I want, how I want it architected.

It's just it's saving me from the oh, I missed a comma, uh, the agonizing of what am I gonna name this function, you know, like it just puts it there, and then I look and I'm like, you know, that's a perfectly appropriate name, right?

Or it's not, and I change it, right?

Um, that variable message, you know, that that comment is confusing, let me change it, or it's wrong, you know.

Um, I I can focus on the parts that the the higher value stuff, right?

Just like we don't, I don't write code and assembly, right?

Um, I could like you know, I I learned it at one point enough to build a little dumb calculator, right?

But like I wouldn't want to work in that all day.

I'd be doing something else.

Frank Wiles

I'd be a lawyer or something.

I don't know.

But uh that you know, that's the low level, and and and but the higher the higher level stuff still takes thought and effort and experience and everything.

And and you know, my I don't care if Claude gets three times as good as it is right now, my wife is not gonna build great software with it, right?

Perfectly capable of building those throwaway tools that work for me, right?

Um, but but for a you know, you you know, the the idea that any time in the next 10 years, Amazon is gonna have, you know, 10 high school kids and they're going to maintain Amazon's software is just insane.

Will Vincent

We have it in the US government at the moment.

Frank Wiles

And that's working really well so far, as we can see.

Carlton Gibson

Um just jokingly here, like the um it seems like there's a good empirical experiment going on.

For years they've said less government.

Well, they're testing that.

And everyone else is just gonna sit back and see.

It's in the name of science.

Frank Wiles

Yeah, I mean it is it is an experiment.

Um, this may be one that we look back on as and uh and and think should have been an illegal experiment, but uh like you know, you know, like we've we've experimented on people uh you know in ways that weren't ethical in the past and uh have learned from it.

And I think this is gonna be one of those case studies in the future of how not to do things.

Carlton Gibson

Like me.

The thing that I'm hopeful for with these NNMs is to is that you know they open up um kind of let's call it automate the boring stuff with Python's or build a job blog with Django level skills to almost everyone.

Like it's you know, and they're not quite there yet, and that you know, the the blog won't quite work or the the script won't quite work first out of the thing, but there'll be an awful lot of people that have access to basic software skills, which currently don't.

That's gonna be a major changer.

Frank Wiles

I mean, you know, I've been around for a while.

I'm kind of old for for a techie uh at this point, and uh, you know, when I was in middle school, I was the computer nerd because I knew how to use a word processor.

And in high school, I was the Uber nerd because I knew about the internet and I had an email address, right?

And those things are my my kids have that stuff now, right?

And it like, you know, they're doing it on an iPad and it's second nature.

Like those are just day-to-day tools for 98% of the rest of the.

Well, maybe, you know, but that I mean that's a little that's a little more advanced, but like the you know, you know, word processing, email, searching Google, using using basic internet things is is just table stakes for most jobs at this point, right?

And I do, I think you're right.

I think in five or ten years, you know, or maybe even faster than that a little bit, things like I'm gonna build a little bit of software to generate that report because I want to show my boss this report in this fashion, much like people have gotten really good at Excel, they're gonna be able to do that, but against, you know, the data warehouse uh without necessarily having to have somebody like us give them the data or massage it in some way.

There's just gonna be they have a read-only connection to the data warehouse and they're gonna play with Claude until they get the answers they want.

And I think that's gonna become day-to-day business.

Carlton Gibson

Which unlocks, you know, who knows what, but yeah, good stuff.

Yeah.

Frank Wiles

Well, and also it frees us up to do higher value stuff, right?

Like, I mean, there's a lot of times where I'm spending 30 minutes to just get somebody data in a CSV in the way they need to consume it.

Uh, that's a one-off.

That that's not a this is now a feature in the product and I never have to do it again, but it's this one weird scenario where they need, you know, this certain data for this certain time range because of this certain bug or situation or whatever happened.

And you know, I I'm the one with the quick, easy access, and I can do it certainly.

Carlton Gibson

It's an alright.

It's a expensive way to generate a bit of CSV, right?

If you look at it objectively.

Frank Wiles

Exactly.

Yeah.

Yeah.

Will Vincent

Well, Frank, we're we're close to that time in the show where I have to hand you the magic wand and tell you change something in Django.

What would it be?

Frank Wiles

Ooh, I probably should have thought about this.

Will Vincent

Um anything, anything goes.

This this is something I mean, we'll just put aside your steering cancel hat, your all of the hats that you've worn.

It could be something trivial, but

Frank Wiles

um I I this is an idea I've had for a long time, and I and I think that uh we may want to uh spend a bit of time focused on a couple of very specific performance use case things.

And specifically uh caching uh the user model um as part of the sessions and auth system.

Not just caching the session, but caching the whole user model.

Because in a in most businessy apps, you're always logged in and you are doing that database query on every single page, every single API view, and removing that sometimes removes a third of the database queries on that page, right?

And it's it's fast and it's fine, but like I think if we had a back end that was the auth backend that was more like cache db for sessions, I think we would gain, you know, 10% closer parity to faster web frameworks with that one little bit.

Will Vincent

It'd be nice if Django could brag about a performance win for a change too, right?

As everyone else does with synthetic benchmarks and all the rest.

I'm sorry, Carlton, but it's true.

It would be nice.

You're gonna buy me up now.

You're gonna fire me up now.

Carlton Gibson

Like, okay, so let's let's compare the bed the bed Django example where you haven't optimized the tool and you've not brought in caching and you're pulling the user model everywhere, and let's strip it out so it's equivalent to the others, and then let's see how fast base handler is compared to your whatever handler you've got.

Oh, they're more or less the same.

Why?

Because they're doing the same thing.

Carlton Gibson

Oh, sorry, I gave it so cross.

Frank Wiles

Yeah, I mean, yeah, put plus or minus a couple of function calls, like they're very, very similar in the core.

Yeah.

No, absolutely.

And and but I'm also obviously, you know, often surprised at like the performance differences between things.

Um, it's really hard.

Like, I I would like to think I have a really great kind of sense for such things, but I would not have guessed the the level of impact that Pidantic for serialization would have had to your average Django REST AEI.

Right.

I mean, that's that's the that's Ninja's secret sauce there for me.

Um, is nested serializers in Ninja are damn near free, right?

Where they're terribly expensive in DRF.

Um, and so we avoid them in most of our projects because they're fairly expensive.

And you know, it's like your API goes from 100 milliseconds to 600 milliseconds and just doing something nested, and that's with select related, prefetch related, all taken care of, like just as best as I can optimize it, it's still slower.

And you just switch over to use Pydantic for your serializer, and it you you gain hundreds of milliseconds, and that you know, users feel that and it scales better, and you save on cloud costs, and there's knock-on

effects of all that.

Carlton Gibson

I mean, it's the the the modern serialization, it's so it's pyden, gatters and catters, message spec, like the these options, they're just a world apart from you know the field space approach that we had a decade ago.

Will Vincent

I'm just shedding a quiet tear because I just finished finally the 5X update to my Django's for APIs book, which is focused on Django REST framework, and I'm well aware that the next update for six, whatever, we'll have to uh include Ninja or maybe just do it all in Ninja because that is where things are going.

Frank Wiles

Yeah.

I mean, I I I don't think anybody really goes wrong using DRF, right?

Like, uh, but I don't think that like for me, often, and it's it's my situation, it's not everybody's situation, but for me, performance often matters, right?

Like a lot of this stuff that we do is at pretty pretty high scale.

And so I have not started an API project with not Ninja after I started one with Ninja, right?

And so I don't think I'll be starting a new DRF project.

Um, but there are situations where I would, right?

If we're working with a team that has long and deep DRF experience and they don't have a huge performance concern, it's internal tooling or something, like they have modest performance needs and they're very comfortable with DRF, I'm not gonna make that whole team learn a new thing unless they want to, right?

Like I'm not gonna be like, no, no, you must.

Like there's you know, this is the only acceptable answer.

It it's it's it's more nuanced than that.

And that's I think true of everything, right?

Like if I if I consult with a company and they have deep, deep JavaScript expertise and everything's built in Express and everything's pretty much working, I don't try to switch them over to Django.

I help them with their performance issue and we move on.

And then, you know, um we might you know rib each other a little bit about our choices of frameworks and you know, and and all good and all good fun.

But like, you know, the the right tool for me uh is is not always the right tool for you, uh, especially when it's a large company.

Carlton Gibson

No, we I can't think of wiser words to finish on than those.

Absolutely.

Will Vincent

So Frank, thank you again for coming on.

Thank you.

We've had a a run here of steering council people.

We've had uh Emma, Lily, Frank.

The only one only one we're missing is Tim recently, though we've had

Carlton Gibson

Yeah, we had Tim just before Christmas, though.

So you know that's true.

Carlton Gibson

I mean Frank hasn't been over five years, so we're allowed to get him back.

It's a bit difficult.

Will Vincent

We've been doing this for six, we've been doing this for six years.

So yeah.

Wow.

Will Vincent

Well, thank you for thank you for taking the time, Frank.

We'll have links to all those things.

People should try out your projects.

Frank Wiles

Absolutely.

Thanks for having me, guys, and uh I'll see you again in five years.

You'll see me in five years.

Will Vincent

You'll see Carlton in a month for his uh or a week for the steering council.

Yeah.

But uh DjangoChat.com and uh see you ever next time.

Bye bye.

Carlton Gibson

Bye bye.

Will Vincent

This episode was sponsored by Hacksoft, your Django development partner beyond code.

Learn more about their services in the link in the description.