Transcript: Django 20 Years Later - Adrian Holovaty
This episode is brought to you by Six Feet Up, the Python Django and AI experts who solve hard software problems.
Whether it's scaling an application, deriving insights from data, or getting results from AI, Six Feet Up helps you move forward faster.
See what's possible at SixfeetUp.com.
Hello, welcome to another episode of Django Chat, podcast on the Django Web Framework.
I'm Will Vincent with Carlton Gibson.
Hey, Carlton.
Hello, Will.
And we're very pleased to have Adrian Halavati, who is the creator of Django, up here.
Welcome, Adrian.
Hi, thanks for having me.
No one's
saying thanks for the number.
We've been trying to get you for years.
So really excited that you can
do it.
I finally made the room in my agenda.
That's right.
Well, maybe I'll just quickly jump to so it's been over 20 years since you first created it.
What have you been up to since then, right?
I think mainly this SoundSlice project, or what would you like to say about, you know, you what
you're doing.
What I'm up to these days.
Yeah, these days.
Well, SoundSlice is my day job.
I've been working on it full-time since 2012.
It's no longer safe to call it a startup.
It's just a business and it's a way for people to practice music.
It's used by all sorts of musicians to practice, to teach, to uh transcribe stuff.
It's uh basically a web-based interactive sheet music platform with all sorts of stuff attached to it.
So that's how I make a living.
And uh yeah, there's there's no end in sight.
It's the project that keeps keeps uh sprouting new features and new challenges, and it's super interesting.
It's a great combination of my two part two parts of my life, music and computer programming.
Right.
I mean
you did call it Django after Django Reinhardt, so it's not a new a new thing.
I guess that would be a question.
Which came first, jazz guitar or programming for you?
Oh, interesting.
Well, it depends on uh your definition of programming coming into my life, because I did some as a kid just copying uh code from a magazine and putting it into my Commodore 64.
I don't know if that really counts.
My first big thing was a calculator program for the TI-85 in high school math class.
It was called A Math, and it did basically all the formulas.
And uh basically by the time I graduated, everyone in the advanced math classes had that, and I was I became obsessed with making making it more optimized, adding features, removing bytes.
Like at some point I find out that the size of the variables influenced the size of the ultimate compiled code, so I have renamed every variable to just a single character, like and this is I don't know, 15 or something.
So that
used to be
only my first programming thing, and I was a guitar player, but not a jazz guitar player, so I guess programming came first.
15 years old, you've got the memory to like recall what variable A and variable B and variable C, what they sort
of refer to, right?
Yeah, I mean couldn't do that anymore.
I don't I forget if I had it written down or something, but I still have it, actually.
It's right here in my desk.
Good.
Nothing goes to waste.
So for those of you watching, boom.
It's a dead D math on it.
I don't know why it's so at the ready.
I just have it to be on my desk because all my my accoutrement.
You can get
a Python on the latest version of those, right?
I I yeah, I heard that a few years ago.
That's awesome.
Because this thing was some bastardized version of it was some proprietary Texas instruments language, and I still have the actually the manual on my bookshelf over there.
Speaking of weird things that I've kept around for decades.
Wow.
And yet I think you didn't formally study computer science in college, is that right?
I did almost completely C and uh assembly language, and then there was a web development class that I took that focused on Perl.
And so I my original web development programming was with was with CGI and Pearl.
Yep.
That must have been 2000 2000, maybe 1999.
Wow.
And then was it 2000 was it 2003 or 2004 when you started on on Django internally?
Because it came out, I know it came out or it was released in 2005, so it must have been at least 2004, but maybe 2003 when you started working on it.
I don't want to just say one of the days
because I can for sure.
But yeah, that that's the right ballpark.
One of those two years.
That is kind of wild though, three years after your first web class, you switched to Python, which at the time wasn't what it is today.
And you're
like, yeah,
let's let's just let's just do a web framework.
Because I guess PHP was the frustration, right?
Like that was the kind of the default, and you had experience with PHP.
Yeah, I was using PHP.
I I switched from Pearl to PHP at some point because that was kind of the the trendy thing at the time.
It was the new
help, right?
It was the new hotness.
And yeah, then uh Simon Wilson and I were big fans of this blogger called Mark Pilgrim, and he wrote a lot about Python around that time and actually released a free online book called Dive in the Python.
So that influenced us to just try playing around with Python and we really loved it, and just started building stuff in it to the credit of our boss who really didn't didn't mind as long as stuff got done.
So uh that that's uh something I'm eternally grateful for is that sort of hands-off approach by management.
They his his his name was Rob Curly, and his famous quote was, I don't care how the sausage gets made, as long as the sausage gets made.
I mean, that's the dream for any programmer, I think.
Definitely, yeah.
Well, Carlton, I have a long list of questions.
You jump in here.
Yeah, well, no, I want to ask a little bit more about the SoundSlice and about the underlying.
So it's all all built in Rust, right?
No, I mean you built with Django in the backend.
Not Rust.
So uh all the backend is in Python and web stuff is in Django.
The most interesting well, I I take that back.
The front, I was gonna say the most interesting, but I actually don't think that anymore.
The the front end is all in JavaScript, of course, because that's the only game in town.
And it's the interesting thing about the front end is that it's an entire sheet music rendering engine in JavaScript.
So what that means is we take the semantic data, like the the pitch C followed by the sit pitch B flat, and we actually turn that into graphics, like you know, the dots and the lines and all that stuff.
So that's and it's responsive, so it'll fit, it's dynamically generated for whatever your screen size is because a lot of musicians are using smartphones and tablets these days.
So that's that's one that was the original interesting bit of the project.
Unfortunately, not Python, because you can't do Python, or at least I guess now these days you technically can with some really weird hacks, but yeah, it's it's all JavaScript.
And then on the back end, we do have a new interesting thing, which is sheet music scanning.
It's it's the uh basically OCR, but for sheet music, it's called OMR, optical music recognition, where you can upload a photo or PDF of sheet music and we'll figure out the semantics of it and reconstruct it so you can hear it, you can edit it, and yeah, you get the you know, the fungable data.
And that's all using our custom machine learning stuff in Python.
Uh no Django stuff really.
Oh, I guess there's Django stuff because it's there's like a web interface to it.
But Django would be just the web layer, right?
That the sort of interface layer, the view layer.
And then Yeah, yeah, exactly.
Well, I mean, we store data in Postgre and access that with Django models.
So I mean it's it's not just the web stuff that's Django, but yeah, it's it's all Python behind the scenes.
Okay, so I've got two questions.
The first one um would be like, because now 2012 you said you started it, so that's like a 13 coming up 14-year-old project.
And I guess I wanted to ask you about stability and maintenance.
Because one of, you know, one of big Django's big selling points, you know, at least in the last say um five to ten years of its life, has been about you
know the ease
the stability and the ease of upgrade, and you know, as a as a as someone running a business using it.
I mean, I wonder what your thoughts there are, you know.
Um, it's happy.
I'm happy that it's the Django is stable.
I mean I at some point it started doing everything I needed, and that's sort of around the time where I decided, you know, I I don't really want to spend hours of every day on this anymore.
Because for me, Django is always about a tool that helps you build cool stuff, as opposed to, oh, I'm gonna work on this quote unquote academic project of making the best possible framework.
I've always it was always just uh a means to an end for me.
And it continues to be so.
Uh so yeah, I'm glad it's stable.
I uh it's but yeah, again, at some point it started doing everything that I need, and we, you know, we upgrade to new Django versions, and occasionally there's something that that we'll find interesting.
We being like my colleagues Joseph and Edward, that's something that we'll find interesting.
But uh yeah, I mean I I was cool with it a long time ago back in 2012.
That's a good selling point, right?
Because I uh you could understand maybe you're like tired of it in a way, right?
When having worked on it from the beginning.
But no,
it's it's great because it just gets out of the way.
You don't have to worry about it.
You don't have to learn something new every six months like it is if you're on the JavaScript, JavaScript's uh front-end framework train, which is another sort of uh passion of mine is not deliberately not using all JavaScript frameworks, no React, no Angular or whatever the heck the new thing is.
Just vanilla JavaScript does the job and it's fantastic, frankly.
I have a whole theory on that, which you may have to say for another podcast episode.
Oh, I don't know about that.
Well, we'll have it out of you yet.
But can I ask you then?
Because in the last couple of years, there's been this big um HTMX has jumped onto the scene and there's been this big sort of swing back to the server render um multiple pages instead of single page applications.
I was wondering if you've you know you've you've obviously seen that going through and if you've had thoughts.
Does that fit your way of thinking or
I have totally sidestepped all I sidestepped that entire pendulum swing from client-side rendered to server-side rendered.
I've just always done server-side rendered.
It's always been really good, really fast.
It's what browsers are optimized to work with.
I don't I do not understand why you need a virtual DOM.
That is ridiculous.
So uh yeah, so I haven't used that the the new thing.
Uh, but I I feel like I don't need to because the way that we write JavaScript at SoundSlice is just so dumb and simple, and I mean dumb as a good thing.
There's there's no abstract see the the a big difference between front-end and back-end frameworks is that on the front end you get penalized for abstractions because you get penalized because the user has to download more, and you get penalized because the user has to run more logic.
On the back end, you don't have to worry about that as much.
So in the in terms of Django stuff, it's totally fine for there to be abstractions and uh various layers and stuff.
But on the front end, that to me that does not make sense.
And it's just so much better if you are cl as close to the metal as possible to the extent that we can call JavaScript metal, which really shouldn't, but you know, remove as much abstraction as possible, basically, is the idea for for JavaScript.
So the last couple of years you've just been like, oh, welcome back in, you know, as you as the folks come back into the room, you've been you've been a firewall.
Honestly, I well, I go back and forth about whether I even care.
Yeah.
The nice, uh a huge luxury of having our own business with just three developers is we don't have to worry about the stupid trends.
Because I mean, one one there's one legitimate reason you would need to worry, which is hiring, because often it it's easier to hire if if you can target a specific framework and you can, you know, make sure that it's sort of a way of pre-qualifying potential coworkers.
But for us, uh we just don't care.
And and I wish more people would do that.
And and the philosophical question I have that I've been battling with for years is to what extent should I care about that uh publicly?
For a while, I just sort of was in my own little cocoon and was happy to watch the world burn in terms of using such stupid JavaScript stuff.
But at some point I realize it's actually detrimental to me indirectly, because the more these frameworks get used, the the crappier the web gets.
Things get bogged down, pages take forever to load.
It's just a crappy experience.
And it's because, to s to some extent of these JavaScript frameworks, at some point I decided maybe it is worthwhile to be a little bit more public about why using these JavaScript frameworks is not good.
Even if you don't use them yourself, you're affected by them negatively because they sort of impact the reputation of the web at large.
And if you're building a website, you're indirectly impacted by that.
So you never felt the need to have iOS or Android apps then, I think goes without saying.
Carlton has I think made his career doing the back end of that, and then you've dabbled a little bit in the front end, right, with various projects recently too.
Well, me.
I've been using um HTMX and Alpine, and it was when I discovered them.
Because I I, you know, I used to do some jQuery and a teen, you know, a teeny bit of backbone when that first came around.
I was like, yeah, this is nice, this is okay.
And then for me, the whole world just went mad.
And I was like, ah, I was busy doing iOS stuff.
So I couldn't keep up with you know all the all the JavaScript frameworks.
And then um I'd been using Elm, which I really enjoyed for the sort of functional nature, and that was that was quite good fun.
Um, but then when I found HTMX, I was like, oh yes, because it goes back to doing it in the web.
And yeah, you haven't used HTMX per se, but you've been doing the same, you know, the same kind of thing with your yourself by the sounds of it.
And it it really got went back to me to like kind of how the web wants to work, and it was it fitted Django's pattern so very well because it was, you know, just make a post request, just make a get request, just make a delete request, whatever.
It was it was with the grain of the web, which is something I've always said about Django.
Like Django's got a grain, and if you just go with it, it makes life very um simple.
It's when you try and fight the grain that it becomes more difficult.
Definitely.
Yeah.
Yeah, I totally agree.
Well, so
you you wanted to talk about native apps versus the web?
I was just teasing Carlton because he he spent some time um even on some individual projects.
I mean, button, we can say its name, right?
You were doing some stuff with with apps.
Yeah, yeah.
Now that you have full, full choice with what you're doing, it's like you don't need to
mess around with that.
I liked what you were saying, Adrian, about um, you know, just being a small shop with the three of you, you can not care.
You can, you know, you almost I I make the joke about being hiding up the mountain herding my goats.
You know, I'm just I mean But there's this tension between um wanting to try the new things, wanting to keep up, wanting to, you know, this go with the state of the art and and develop versus the stability of known, you know, known tools that really do do the job.
And so rarely for me does a new tool actually improve it.
Yeah, I would uh I would maybe push back on the premise of that statement, which is that new equals state of the art.
That's not necessarily true.
No, exactly, exactly.
It wasn't I wasn't pretty it it's that tendency though, ooh, we must check out this, we must check out that, to otherwise we're getting behind somehow.
Well, with that said, I did have a question for you, Adrian.
So if you had to do a new web framework in Python today, is there any bit of Django that you go, mmm, I might change that?
There must be something.
Yeah, the fact that the settings are global is I think was a bad design decision.
I would find a better solution for that.
I probably would have like a settings object instead of just having it in a module, a bunch of global variables within the module.
And the whole setting, the Django settings module environment variable is it makes things awkward in certain situations.
I would try to find a better way of doing the things that that was supposed to solve.
In terms of the nitty-gritty of uh views, URL patterns, models, templates.
Views I think are really good.
If anything, I would not have created generic views because I think that set a weird, messed up expectation with people that that was a good thing to do.
And in fact, I think they're they're not worth the mental complexity whenever you work with them because you have to hold so much in your head, so much more than if you're just doing the writing it out from scratch.
I often think about the the, you know, the the physical work of being a programmer is so easy compared to anything in the real world, compared to being a plumber, electrician.
You get to sit at your desk and the the uh extent of your movement is your fingers.
So for p program for programmers to be uh up in arms about not wanting to type a lot, that argument does not resonate with me.
It's I would all I would nearly always rather just pay copy and paste some stuff than have abstraction for the sake of abstraction.
And I think that's what we had with Django's generic views.
You just have to hold too much in your head but if you just have all the code written out it's so much clearer and easier to understand and more maintainable.
So that's what regret is sorry go ahead.
That last one it's more maintainable it's like when you come back to read it and if you if you have written the whole method out by hand it's really easy to make the the one time edit whereas if you just use the generic views and you've perhaps overridden one class which is a one line hook and it is oh where does that go and you have to go and look it up.
That's that's re tags.
Yeah yeah yeah so yeah that one um what else the I think the template language there's some fundamental limitations to the template language uh I remember emailing with Armin who made Ginja I was emailing with him years ago and asking well what would it take for us to benefit from the Jinja
optimizations and you know all the stuff that's better about it and integrate that into Django and he did a bunch of research and just decided you know there's some fundamental problems thus uh it can't be done so I would want to fix those fundamental problems so that we can you know benefit from uh the
ginger approach to
things but otherwise I think we got a lot of things right uh and I don't mean that in
a tweeting our own horn way I just think like it
it's fine.
Uh yeah
not a bad not a bad scorecard 20 years on I'd say yeah
exactly what I like about your answer there is all the things you picked are kind of fine detail thing.
Like you know the settings yeah okay it's not yeah I get it it's not architecturally fine but it's not architecturally as good as it can be but it works.
It's not that much of a trouble you know you need to put it somewhere um you know complaints about the generic views they're kind of you know standard conversation uh a Django meetup that's okay you know the we can live with
it um
there's nothing fundamental right and as Will says 20 years later that's
that's perhaps why yeah but I mean the huge caveat is that uh I and Simon and Jacob and all the origin
al contributors wrote this to fit our way of thinking so I'm one of the worst people in the world to ask about this because it's
you know
it's inherently my way of thinking so uh yeah so it it's it does
it work the way I think it should
if I could extend that so what was what didn't fit your way of thinking about maybe PHP in particular, right?
Like what caused you to say you know what I'll do my own version.
There must have been some frustration separate from just the language and the approach that the frameworks at the time took
it interesting.
Well the the approach with PHP was that the code was littered in the template.
And I know you can have some discipline and not do that but I'm pretty sure that's how we did it is just having .php files that are basically a mixture of HTML and PHP code and that is really hard to maintain.
That's probably one of the biggest things yeah honestly I don't remember you'd have to interview 2002 Adrian for that one.
This portion of Django chat is brought to you by Sixfeet Up what's stopping you?
Maybe it's an application that won't scale or an AI initiative that just isn't delivering that's where SixFeedUp comes in.
With deep expertise in Python Django and AI they solve hard software problems modernize platforms and get teams to market faster.
Their impact speaks for itself automating healthcare pipelines for hospitals helping NASA explore Pluto building severe weather prediction tools and applying AI to connect farmers with vital crop data.
When the stakes are high and the problems are hard six feetup is the partner that delivers see what's possible at sixfeetup.com delivery
back in the day that was glorious to a sort of certain period you know the first the first few days of a project that was just wonderful and then
tail off after a while yeah and you know there's something I like about it which is it's so accessible to people you don't have to if you have a PhD in computer science to just edit a PHP file.
It's so easy to deploy just throw it on a server that has mod PHP boom you're done.
There's some advantages for sure yeah I
mean to go back to the way you you you think and like you know I we'll talk about the Django book that uh Wills resurrected us last week that that you wrote that's how I learned Django but one of the things I really liked about the template language was coming from PHP was the discipline it forced, you know it had loops, it had conditionals, but it didn't let you just dump your business logic in the template.
And you know often people will come on the forum and they'll they'll be want to you know add some much more complicated behavior to the template language.
It's always the same old hands going, no, no, we like it how it is we like it.
Do a template tag you know keep it out.
Yeah well I mean you can use whatever template language you want obviously but it
is it it was about that um way of thinking about it.
I think you know um reading the the Django book that you and Jacob did was to learn Django that was like okay yeah this is the way to think about it.
Will hey are you
pulled it up Okay pull it up yeah so it and this ties in I think to a question about just community but you and Jacob wrote the original Django book which is now up at DjangoBook.com that obviously helps I think to have a free good book on the community right this is still an issue for any any framework is like what's a good free resource to help people out.
Well back in the day I remember there was a lot of hesitation from book publishers to write a book about Django because they considered our docs so good and they thought it wouldn't be a commercially viable idea to have a book because the docs pretty much set it all
I'm got I've got a question right there about the because every the Django docs are you know objectively very high high standard but there's often um con complaints or or not compla
ints complaints isn't the right word there there's often like a desire for them to say a lot lot more about how to use Django and and strategies and the more kind of discursive um content which it's interesting whether we have the capacity A to write B to maintain whether the docs are the right place for it or whether books are you know books and courses are you know the sort of extra research resource that you need alongside kind of more solid reference docs.
And what you what you feel
about that.
Yeah I don't have a
another way of phrasing it is why isn't the Django book just in the Django docs?
Why was it a
separate thing?
Well I if I remember correctly a couple of the chapters were taken from the docs and and edited for sure and expanded but I think we even put some back into the docs.
Yeah I I I could see an argument either way.
I could see an argument for uh giving a commercial incentive to authors because writing a technical book is so much work for so little money that maybe they deserve the the money they actually can earn from it.
But at the same time, if it's an open source project the docs you know should maybe should include as much information as possible and maybe the biggest limitation is just making sure that they go go out of they don't go out of date.
This is something I face with SoundSlice because we have a very extensive help section hundreds of pages and it's there comes a point where anytime you make a feature change you start to groan a little bit because you're like remembering all the documentation pages you need to update.
You know the hardest thing is the screenshots.
Yeah right because it's easy to edit but the screenshots oh and sometimes we have animated gifs with you know showing parts of the UI and you have to redo those that's why we basically stopped making YouTube videos because like that goes all out the window once you change anything.
Just as an aside, I think videos it's it's so much better to make instructional content in text than in video for yeah, with the caveat that there's certain things like when if you actually need to see something, like it's some sort of home improvement, obviously it's better to have a video.
But in general, I think that's something that's chained and changed in the world over the last few decades, not necessarily for the better, is this expectation that you search YouTube first.
Like my son, who's 14, he uh had a task and I asked him to look something up and he just immediately went to YouTube to look it up, even though it's like something that a a single web page would have very easily answered.
So anyway, long story short, how why am I even talking about this?
No, I mean this I mean, I I agree.
Like I've written books too, you know, but it's I have a soon-to-be 13-year-old, you know, she doesn't she doesn't use Google at all.
Like she just uses LLMs, actually.
No.
Because I don't let her use YouTube at home.
So, you know, some of this has just been negated by the fact that, yeah, LLMs, like in the most recent Django survey asking how people found and learned Django.
So the docs, I think, were 79%, and then tied at 38% was Stack Overflow still, though that will probably decline.
YouTube and um AI, meaning like ChatGPT.
So I would strongly suspect that, you know, everyone just goes to an LLM now.
So that that's sort of the thing.
Like obviously I'm I'm biased towards text because you sort of lean in, you can take your time, you're not stuck on someone else's schedule, but everyone's just like what's what's the economic incentive for text when you don't even get attribution anymore?
You know, so for me and any other technical book author, we've all seen since around 2022 when something happened, just traffic sales fall off a cliff.
So, you know, I mean, and more generally, too, if you think about even just the underlying economic basis for the web, you know, what's the point of, you know, affiliate leak affiliate links?
Like, you know, why review 10 great hiking backpacks?
You know, it used to be if you ranked you could get traffic and then you could make some affiliate money, but now if the LLM just gobbles it up, there's really no incentive to do that.
Though actually one thing I heard interestingly is that um what do they call is that Google is actually missing out on this because it's sort of has it's sort of um versioning, creating a version of the web that then the LLMs are consuming.
So people are are just take using Google's work semantically labeling the web, and then Google's missing out on that.
But I can't say I feel so bad for Google.
But they what do they call it?
AEO.
It's um yeah, it's the LLM-led search thing.
I don't know.
It's a brave new world, but uh you know, some some products, you know, for example, Button Down, which is a newsletter built with Django, Justin Duke, we've had in the show, who's at DjangoCon US, it's now I think his number two referral is um LLMs.
Like if you go into an LLM and say, what, you know, other than Substack, what should I use?
Like his service pops up, right?
So it's
well I had an experience with that a couple months ago.
But you did, yes, please.
Yeah, please, if you don't mind repeating the story.
Yeah, well, uh so I mentioned the SoundSlice sheet music scanner.
Uh every day or so I look at the error log just to prevent misuse and see the images that didn't get any good results.
And I started to see screenshots of ChatGPT where they were saying in uh copy and paste this text into SoundSlice into their ASCII tab feature, and you'll hear the music played back.
Problem is we don't have an ASCII tab feature.
So ChatGPT was telling people about something that does not actually exist.
So we were faced with the question, what do we actually do?
We're not gonna be able to convince ChatGPT to fix their database.
I don't think that's how the nature of these models works.
And uh yeah, that's just not gonna happen.
We could uh put slather our website with notices like, hey, if you're coming to us from ChatGPT and you're expecting this ASCII tab thing, that does not exist, but that's just really lame.
So we ended up just making the feature to meet that demand, which is kind of dumb because ASCII tab is a very old-fashioned way of notating guitar tablature that yeah, it's it's super old.
I remember that
from 30 years, 20, 30 years ago.
Find a site, print it out.
Like I had binders of tabs tabs, and there'd be like four or five versions.
You're like, oh, is the third one's the good one?
The fourth one's the good one.
You know, because the books, they had tab books, but they were they're pretty expensive, right?
It'd be like 15, 20 bucks back in the day for 14 songs, and it's like, well, maybe it's in the wrong key, but it's close enough.
You know, because the key would always be off too.
Like, uh yeah.
And yeah, there's all sorts of problems with the published tabs.
The people who the fans who make their own transcriptions are often much more accurate because they care more than maybe there's a parallel there between open source documentation and the book authors.
Um I don't know.
Anyway, um
So you do you have a phrase for this though?
Was it was it LLM driven development or something?
I think you uh you did a blog post on it.
I did a blog post that got some attention and nothing's really happened from it.
Although funny, funnily enough, the other day I saw another Chat GPT screenshot in our error logs where
someone said
a chat GPT incorrectly said that we support yet another thing called Chord Pro format, which nope, that is not a thing.
I I I just think there's some there's like a fundamental uh problem that our society really is gonna have a huge reckoning with if we're training a whole generation of people to trust this information that is not necessarily true.
That is not a good thing.
Well, we're post-truth, right?
That was the whole idea is with the web.
Now all the answers you want, it turns out, we're back to kind of misinformation central.
Um, I wanted to add it's yeah, answer engine optimization, AEO.
I was just looking at that.
That's the phrase for like Gemini or you know,
how do you do that?
You how do you insert yourself into their training data?
I mean, it's sort of like the early days of the web with like hidden text.
There's all sorts of hacks that kind of work.
Or I mean, I remember you can, and you know, if you got in before the training deadline cut off, you have like a nine-month window where like you're ahead because you put in some keywords and someone else didn't.
Um I mean, it's all gonna filter out.
But um one one thing I wonder about, you mentioned just to circle back to typing in fun in uh function-based views.
Um, I don't want to make this all about AI, but one thing I found, I just came from a company on-site visit with engineers uh at PyCharm talking about how we're doing stuff.
And using using agents, you don't actually type anything yourself.
So even if it gets the right answer on a query, which we'll just put that aside and assume it does, um if you haven't actually typed it yourself, it like sort of that connection to your brain isn't there.
So you don't really feel feel the code or the logic or you struggle with it at all.
I don't know if you I guess that's a lot roundabout way of asking, and I can probably guess, but are you using LLMs at all to help with
your code?
With the code, no.
Personally, no.
And your team too?
Is it getting
isn't it?
My colleague Edward, who's a designer and and can do some, you know, sort of knows enough to be dangerous sort of thing uh in front-end code, he's been using it to make prototypes, and I think it's a really good use case for that.
It really has has empowered him to make some prototypes uh you know uh totally on his own as a single person.
Uh but uh would I use AI-generated code in our production code base?
No, definitely not.
It I have, of course, tried it and there's nearly always subtle bugs.
Yeah.
And they run the gamut from outright bugs that any anyone familiar with our code base could tell right away to very subtle things like yeah, it technically works, but it's not, but it's gonna cause a problem in the future if we add this one feature.
Like it's these these kind of things that we all hold in our heads as the developers of products that that the AI doesn't have access to.
And and another reason is it's fun writing code.
I like holding all that stuff in in my head and reasoning about it.
Why would I not want to do that?
Well, why would I intentionally have less fun for capitalism reasons?
Like to to churn out more features and make more money?
What like what what's the legitimate reason?
Carlton, you have a thought here.
Come on, yeah, no,
I mean that that rings true to me.
I why do I you know I'm gonna be 48 years old in a month or so?
And um, like why why am I still at the keyboard rather than why have I not moved somewhere else after 20 years?
It's because I love writing software.
It's like you know, crafting stuff out of nothing.
And you know, I can type a, I can tell I can write, I write, you know, specs.
I've been one one thing I'm interested in is that people are now suddenly keen to write specs when for years and years they oh I couldn't possibly write a requirement stop, but now they'll do it.
So they'll do it for the machine, but they'll never have done it for any other reason in the past.
But I've always written specs up of what I was trying to do, and so I can paste that into a into whatever and I can get some stuff out and I can look at it and I can not really understand it, and eventually I can see why it's not as nice as what I might have written.
None of that's as enjoyable as just writing stuff myself.
And I don't know.
Let's say it makes writing code faster.
I'm not convinced it makes writing code faster, but let's say it makes writing code faster.
The writing code bit is the least of my job.
Like it's it's a fraction of my job.
That's not what I'm paid for.
That's not what I've made a good living in my my professional life doing.
It's not the writing code bit, it's all the rest of it.
And yeah, why take the fun away?
It's like if, you know, I enjoy cooking.
Am I gonna go down the supermarket and buy a microwave meal?
Absolutely not.
Or like that soylent stuff.
Does any of it still exist?
You know, a couple years ago.
I think that I think, yeah, yeah.
I think that's correct.
I I never I think so.
I'm not living in Silicon Valley still, but like I I don't I think I there's probably still a dedicated culture, but they've moved on to yeah, something else.
Yeah.
So I'll uh
let's swing let's swing
let's swing topic momentarily.
I was at uh Django in the Med last week with Jacob, um amongst other people, Jacob Wals, who's the new um Django fellow, and he's he's um he's a um composer and he you know has been into the music world.
And he was telling me that you're quite involved in the technical specs for encoding music in the world.
Yes, it was beyond what I knew about, but it sounded interesting, and I wanted to ask you about it.
Yeah, uh well, there's a format for encoding music notation.
Well, there are many, of course, because you know you can argue music notation is the world's most used language if you consider it a language, but there are many ways of encoding it.
And one of the probably the most used, the most popular these days is called Music XML.
So it's as you could guess, it's an XML format where you encode all the notes, all the rests, all the chord diagrams, all the stuff from your score.
And that uh is now a W3C community group.
Uh it's m uh maintained by this W3C community group, of which I'm one of the three co-chairs.
And several years ago, we decided actually my predecessor, this guy Joe Burkwitz, uh started a project to create a new format to address some of the fundamental limitations of Music XML.
Obviously, insert XKCD number, whatever into another format bomb.
Exactly.
Uh but I it sounds so stupid to say this, but this one will be better.
Uh it's JSON.
It it has a more Pythonic approach to things to be very So is it gonna
be called Music JSON?
No, it's called MNX, which is not my name.
Uh it doesn't stand for anything.
It's just a random acronym, Music Notation X, MNX.
So I'm in charge of that.
I've been working on it for years now, and it's uh it's really great.
I mean, on the off chance that anybody listening here is working on any sort of sheet music thing, definitely check it out and get involved in the development.
Fun fact that documentation system is a Django app.
Uh I made this app that is very has a very specific task of um creating documentation for uh JSON format where you can have examples and it automatically color codes things and links every attribute of the JSON to the appropriate docs page, blah, blah, blah.
And that's all open source anyway.
So yeah, this is uh what I do in my free time instead of it's sort of like what replaced Django for me in my open source contributions time.
But this is the sort of thing that I think you know it takes an i i an individual group of individuals to craft on over a while, and it kind of has really long-lasting value because that standard will be finished and then it will be around for you know a long time, a lot of yeah.
Hopefully decades.
Yeah.
Definitely.
That's really cool.
I have
I had just one more question.
Um, and this goes back to Django architecture, which is around local versus deployment.
So there's still this kind, you know, when you start a new project, it defaults to local.
And then that leap to production.
Um I'm wondering if you have any thoughts on maybe making that easier because it is still quite a bit of a leap, and everyone does it.
You know, when I think about how to put this in a book or to teach it, it just varies so much.
There isn't even just a simple path, and then we go from there.
It's like even that simple path, you still have to tweak I don't know, eight, fifteen things.
Just curious if you have any thoughts on you know, so there's talk of maybe we have when you start a new project, toggle something like local versus production.
That's one idea like Jeff Triplett has explored.
But curious what you think.
I think it may be inherently complicated.
Yeah.
So there might not be an easy solution.
And I think we as programmers don't like to consider that option.
Uh I'm probably one of the worst people to ask because I j once I set something up for production, it's set and forget it.
And well, right, this is again
this is.
I mean I
set it up in SoundSlice like more than a decade ago.
The other production site I have running, well, my blog, which I did probably around the same time.
Yeah.
I so I personally haven't even faced that in years.
Yeah.
So I'm I'm definitely a bad person to ask about it.
Okay.
It does seem like there could be
some sort of more framework level switch between production and development.
But yeah, I don't have much
to say.
Sorry.
It it could be explaining that because that is, you said it and then you kind of go on.
Um Eric Mathis, who's wrote Python Crash Course, he's been working for a while now on this Django simple deploy third-party package that links into some common providers and um is trying to address that.
So, you know, mainly from started from his uh pain point as an author of, you know, he would have a different provider each edition every three, four years, and you know, the free tier would go away or they'd change how they do something.
And I can certainly relate to that just with having I've switched between Heroku and other and I can't remember, fly.io.
Like, you know, you write this book and people kind of are like, hey, this part's broken.
You're like, that's not even the Django part.
Um so I I think what's good about Django simple deploy is that each provider has a plugin.
And so it's a way it that that plugin then becomes the kind of focus point for people in the community who are, you know, if you're using that, you can contribute to this one plugin.
So that it there's kind of like a shared knowledge bank, if that makes sense.
Um it's yeah,
kind of cool.
Uh deployment's one of the perennials, right?
The you know, long gone are the days where you could just run you know mod Python and it was it was all taken
care of.
You would have thought that it would be solved by now.
Not just for Django, but just like sort of for the whole world of web development.
But maybe it's inherently complicated.
Well, but or if you look at if you look at other web frameworks that you know that raise VC money, they just have a hosting platform.
So like Laravel has a hosting option.
Um fast API, right?
They raise money, they're gonna do fast cloud, you know, kinda to address this.
So Yeah.
I did have, sorry, I have actually one more last, last question, which is you mentioned how you with SoundSlice, you're using um Django and data pipelines together.
I feel like this is the issue I want to try to get a better story around.
And at DjangoCon US, we're talking about how what how do we say how Django fits into this AI world?
Because people will misunderstand how things fit together.
Like there are a lot of people, the new generation are Python machine learning engineers, but they're not web engineers.
And so they think, okay, I just have a fast API endpoint, my work is done.
But, you know, so I will get a question in others as well, like, hey, I want the Django ORM plus Fast API, which I feel like the question sort of misunderstands what's going on.
So I'm curious if you have a sense of how Django can market itself better, is like, you know, okay, maybe on the inference path you don't want Django, but all this other stuff that you need, Django's there for you.
But this new generation doesn't even know to ask, really.
That's my take.
I so I have never used Django REST framework,
but I'm going to bring it up at the risk of being totally ignorant about it, because like I said, I never used it.
But I don't understand the point of it.
What is so difficult about just making a normal Django view that returns some JSON and that like throws the right HTTP status code if you use the wrong like HTTP method?
I don't understand that.
And I I think there's maybe it's a generational thing that uh people expect their hands to be held to such an extent where if something doesn't explicitly have like, oh, this is the thing for writing JSON APIs, that if they if the product doesn't have that, then they're like totally at a loss on how to do it.
I think people maybe are scared of going too low level, even though low level is laughably still high level.
We're talking Python here and typing two lines instead of one.
So I I I guess I I question the premise of the question, if if that makes sense.
Uh I maybe it's just a matter of educating these people, like, yeah, so you're preparing some training data for to train a model.
Here's how to use the Django ORM to spit out some database records and create a CSV or whatever the format your training data needs.
There's no there there.
It's just it'll be different for whatever machine learning system you use.
Like, so we have we use like a image classification model, ResNet.
It needs the data in a certain format.
It's basically like a directory structure.
There's no there there.
You just have to know, yeah, put the files in this right in this directory, name them this way.
You can use Django to do that.
It it's just writing code.
So I I'm kind of confused, you know?
Like what's the issue?
Well, no, I mean I okay.
So from your answer, I think the the point there is people that the phrase you said to some people won't need that hands hold.
Maybe it is a
kind of um uh
skill level problem.
Like people are expecting just to have out-of-the-box solutions for absolutely everything.
And it's like, well, I don't know.
I mean, I I guess people uh want out of the on you know, the REST API example, people want out-of-the-box solutions for a lot more than just returning JSON responses.
I guess what does REST framework give you?
Um it's got permissions, it's got um you know it's got generic views that help help you out, it's got yeah, authentication, it's got um rate limiting as part of it.
Um I guess people want those kind of things, which are perhaps more difficult.
Andrew Godwin once said to me about the batteries that um Django provides.
He he said the battery Django has to provide the hard batteries, the things you couldn't just write yourself.
Um Yeah, okay.
Um But I think uh you're qualified, Adrian, to say, you know, back in my day we had to write our own web frameworks.
So that's part of the problem.
Well the thing is, nobody remembers this.
Back in the day, it was a joke in the Python community that there were too many Python web frameworks.
This was before Django was open source.
I remember at a PyCon years ago in Washington, D.C., there was a keynote speaker who put a Yeah, we talked about this on the last podcast.
Well, that's okay.
Not everyone, yeah, on the the the uh the the talk Python 20th anniversary.
Yeah, you mentioned this.
Yeah.
There was a slide.
Sorry, say it again.
I was just gonna say if you go to the ASGI um ASGI ref um website, the ASGI.readthedocs.com, which is the the the docs for the ASGI spec, there's and you go to the implementations, there's about you know 15, 20 Python web frameworks that implement ASGI now.
It's like it it's almost back to that old days where the
you know thousands may bloom.
Why why did I bring this up?
Oh, yeah.
Yeah, I was you didn't have to.
There were so many, and we were kind of embarrassed that we added another one to the list.
Yeah.
Well, but you know, you need that combination of self-desire and maybe I don't know if I'd call you say you were naive, but you just like, yeah, why not, right?
Like definitely naive.
Definitely.
I mean, I was 22 or 23 or something.
Simon Simon and I, fun fact, we're born five days apart.
Um, but we're both like 22 uh
22 or something.
Definitely not still
my Doraba.
Well, it is.
I mean, this is so a perpetual thing I have, and maybe it's inherent to the ecosystem, is why isn't there a JavaScript batteries included web framework?
Right?
There's always a new thing.
And I think there kind of is, but there really isn't.
There seems to be for each language, there's like, you know, kind of a Django, right?
Like PHP, you have Laravel, Symfony, Ruby, you have Rails, I guess Java you have Spring.
Like it feels like everyone wants to just write everything in JavaScript, or they used to.
But there have been efforts, but nothing is nothing that I see has any sticking power as like the Yeah, that we're just gonna do it this way in JavaScript.
Maybe clear you're talking about server-side.
Yeah, well, maybe that's part of the problem.
Yeah.
Yeah.
Well, this uh gets to the the idea I alluded to earlier where I said I have a whole theory on JavaScript that JavaScript ecosystem that could be a whole separate podcast episode.
I think at some point, this is already being erased from history, which is kind of sad.
Uh some point, it was like 15 years ago, before JavaScript frameworks really came out, before React, before all the all those things.
It was the era of jQuery and uh the reputation of JavaScript front-end developers was these were a bunch of clowns.
They started out as HTML people, they're not real programmers, they don't know how to do any back-end stuff.
There were horrible things are being said about these people.
Uh and I my little pet theory is that that community got a huge chip on its shoulder and it needed to demonstrate, hey, we're real programmers, capital R, capital P.
We're real programmers too.
Therefore, we're gonna abstract the crap out of everything and make these huge architectures just show how clever and smart we are.
And I think that's what created this generation of frameworks.
Um when did I bring that up?
No, I was asking, yeah, I was asking, I forget.
I asked DC.
I think it's great, but
so if you grew up in that environment, you don't have the context.
Uh, you for you if you're 20 or even 30 now, all your professional life, you've known JavaScript web development is using these crazy over-engineered frameworks, and you don't have a sense of the history.
And like, why did that come to be?
Not necessarily for good reasons, in my perspective.
I'm just one person, but I've been around.
I mean, I've been a web developer since the late 90s.
So that that that's a whole thing that I wish more people were aware of is this.
The world of JavaScript client-side frameworks is not they they didn't necessarily get created to scratch an itch, or they the itch that was meant to be scratched was not a great itch.
It was also a big company itch, right?
It was like Facebook size problems, Google size problems.
It wasn't,
hey, let's let's make it, you know, for a small group to do.
I think that's a big part of it.
You can't say that about all the JavaScript frameworks, but like I mean, Carlton and I mentioned this, you know, like their problems are not your problems.
So same thing now, like with uh ChatGPT, right?
They're using what Remix now or Next.js, and so a lot of people are doing it, writing blog posts, it gets on Hacker News, and people becoming programmers think that's the way it's done.
Right?
Like if you go on Hacker News every six months, there's like, oh yeah, Django's still around and it works, but it's not like out there in the same way as cutting edge stuff, which again is not the problem most people are gonna have in their professional life, but they think it is.
That I mean, we're getting into deeper philosophical takes on the world.
But yeah, if you're loud and uh attract a lot of attention, unfortunately, you get attention.
If you're just cool and just doing your own thing and you don't care to toot your own horn, chances you may be you may have the better solution, but just because you don't care to think about marketing, you kind of get screwed.
Well, I mean, it's all well, it's a tale as old as time.
Right.
I was just seeing something.
It was, it was like this, I think it was a Reddit post about like what's the biggest flex.
And my favorite comment was the biggest flex is not caring what other people think.
Exactly.
Which is like great.
But you know, yeah.
There's a gener there's a generational thing here, I think, because we talked about like preferring text to video.
We talked preferred to we talked about learning from typing in magazines, and then what was it learning from Stack Overflow and then these videos?
Yeah, 85s.
I guess that's until around that.
Okay, that was that was before.
But then you learn from Stack Overflow, and then you now you learn from an LLM.
And okay, this I often think about this long arc of history.
I've been using Django for a long, long, long, long time now.
And when I see a new framework come up and everyone's like, oh, Django's in trouble because we're not like, you know, new hotness.
I'm like, hey, take the long view because in a couple of years' time, you hotness will have faded away and we'll still have the same fundamental problems.
And what I haven't quite mastered is how to communicate that without sounding just like get off my lawn, old man, you know.
Right.
We Carlton and I feel like we're the two old gut muppets, you know, up in the balcony a little bit for a number of reasons.
You're like, you're like, but you know, there's something to that.
Like, were they wrong?
Were their takes wrong?
Not at all.
There's some great YouTube supercuts of those guys.
Maybe maybe that should be the opening.
I've been meaning to add like an opening uh snippet to the video thing.
I'm like, maybe we should just enough so it doesn't violate copyright.
What what do we have to do to stay open to the young sisters?
Like to, you know, the newcomers in so that we don't just sound like old files.
Yeah, that's a question for wiser people than me.
I don't know.
But the thing is, I don't care.
Right.
Because it's good enough for me, you know?
Um Yeah, it's fair.
So uh I wanted to swing to just ask you about your music because you've got some albums and you tell us a little bit about it.
You put one out in the gypsy chat.
Yeah, definitely.
I I've uh I've got a full album and I've got an EP.
The EP was released this year, album a year and a half ago.
It's all my own guitar, instrumental guitar music.
So if you like lyrics, this is not for you.
It's uh yeah, uh the music that I wanted to see exist, you know, like uh certain combination of melodies and harmonies and instrumentation and aesthetic that I like that I haven't found as much as I would like to find.
So it's a matter of being the change you wish to see.
Uh yeah.
I'll order my own name on all the streaming services, and so I can make it.
I think we'll get a GitHub bot that plays it while the CI is running on your P PR.
So you can listen to Adrian playing.
Yeah, I'm always seeing PR could be managed.
It's weird because I don't want to promote the music.
It's like well, I do and I don't.
Right.
I I don't want people to listen to it just because like I'm the Django guy.
Like you might not like it.
Big deal.
Like if it's if it's not for you, it's not for you.
But I I like it.
You like new stuff basically every every other evening.
I'm always recording, songwriting, arranging.
So that's
kind of like your other part, your third space, your other Yeah, yeah.
It's so fun just to make something uh make try to make something beautiful.
Well, as we go out, we've been doing favorite books and stuff, but maybe in your honor we should do favorite jazz guitarists.
I'd like to go first.
I'll tell you who I like.
Um I'm a big fan of Howard Alden, I think because I saw Sweet and Low Down.
I there's that I'm always blowing bubbles song.
Yeah, Forever Blown Bubbles.
And I was like, who the heck is this?
And then I think 10 years ago that sent me down the rabbit hole of um all his stuff.
And I mean, he's one of many, but he's just this beast of a guitarist.
And kind of the problem is listening to stuff like that.
I don't have to tell you, and then you listen to like a rock solo, and it's like it's kind of different, different things.
It becomes less impressive.
That's the curse of getting knowledge about anything, you know.
Yeah.
You just realize that your your standards become a lot higher.
Right.
But at the same time, like not every most people don't have that level, so they're fine with whatever.
Like, you know, so my kids now are always in the car, they're like, play some music.
And on the one hand, it's a little bit like I don't want to, but now I'm like, ooh, I can like slide in, you know, little more mature stuff that I like and see how they do.
So um, but I'm curious for you.
Uh you must have a, if you had to pick one, a modern jazz guitarist, it must be someone you listen to and go, wow.
Modern.
Well, my all-time favorite is Django Reinhardt.
Sure.
Yeah.
He's he is nobody, no guitarist could play as beautifully as he did.
Every he could just play one note and it just sounds beautiful.
And in modern jazz guitar, the concept of beauty and and just having a lot of yeah, beauty is not that prevalent for some reason.
It's more about the note choice.
Sorry, we're getting into kind of uh musician talk.
It's more at some point, this is a whole other thing that I have a rant about.
At some point uh jazz uh became uh uh a university subject.
I think it happened in the 60s or 70s.
And then books started to come out, and there's certain things that a book can communicate, and there's certain things that a book cannot communicate.
Uh talking about music.
A book, when it comes to music, a book is really good at communicating the exact notes, so the note choice, the pitches, how long they're played, but it can't communicate things like a bend in a note or vibrato.
You cannot communicate it in any way other than listening to a recording.
So there was a several generations now of musicians who came up learning in that environment where there's this invisible hand influencing the music that was created that was influencing them to think about it like a what they would learn from a book.
And no one plays like Django anymore.
But anyway, so rant over.
Just sorry, just another aside.
That's why I I really love the saxophone as Johnny Hodges.
He's like my second favorite musician after Django.
But there's
like a schism in jazz saxophone.
There's like Johnny Hodges' school, and then there's Charlie Parker's school.
Charlie Parker.
It's all about the note choice, the the um the phrasing.
But for Johnny Hodges, it's more about like the beauty.
It just sounds so beautiful, the tone.
Charlie Parker did not care about that.
It's totally different dichotomy.
Anyway, modern.
No, I can
really yeah, like my my kids are all my wife, they're all super musical and they're old enough now where the lessons, it's not about the notes, it's all about you know, taste, or it's about the things that aren't on the page, because everything's on the page.
But how do you get to next levels?
You know, they for violate.
Yeah, they're yeah.
You're starting out, you want to do that, but you don't have the technical capabilities, so you're kind of like it's frustrating.
Yeah.
But it's hard to get that across, right?
It's not it's like the first stage is just playing the notes more or less in the time to signature, and then it's all about you know, the feeling and and all these things, and then that's infinite.
But it's just like programming.
Yeah, I was yeah.
A lot, a lot of uh commonalities for sure.
All right, so back to the topic in hand.
Uh I would recommend an album by Adrian Mignard and Rocky Grossettes called Well, it's in French, so I'm gonna butcher it.
Entre octave.
Carlton's been learning.
Entre actus in in a horrible American accent.
Is it between octaves?
Or what is it?
I think it means between us.
Umtree new?
I'll edit.
We can look it up and sound learned.
Oh, between acts?
What is what is that?
Carlton.
I don't know, I haven't got the album.
I haven't got
the album.
Um well, it's uh really beautiful modern jazz guitar album.
It's just a duet to guitar.
Oh, it's in the chat.
All right.
Well, we could keep talking, but I'm
curious about Carlton's.
My my big love was um uh Miles Davis and Kind of Blue, and then the um, you know, that there was a kind of series of albums he did uh Birth of the Cool and then through to Kind of Blue, and the the the interplay with him and John Coltrane, Giant Steps, and Love Supreme, and that that kind of period there.
And it gets later on, it all got a bit much for me.
I was gonna be like, oh, I haven't, you know, I have to have to have a had a specific mix of narcotics before I listen to the later stuff.
Yeah, right.
That particular period was just beautiful for me.
All right, we'll put we'll put links to all of that.
Um Adrian, thank you for taking the time.
This is truly when we started this podcast six years ago.
We were like, oh, it'd be great to have the creators, you amongst them on.
And now we've now we've had all three, so I feel like we can quit, Carlton, right?
Yeah, we can quit now.
We can quit.
We can go and put our feet up on the beach.
Side quest, side quest over.
Yeah.
Well, thank you for taking the time
and thank you for yeah,
sharing your
your perspective.
I'm I'm personally glad that you're popping your head up a little bit more.
And uh yeah, I I understand the desire to sort of hide out.
Carlton, I talk about this all the time, but I'm glad you're sharing your thoughts.
Yeah, well, thanks for giving me a platform to do that.
Yeah, it was fun to chat.
Thank you.
All right, and we are DjangoChat.com.
We'll see everyone next time.
Bye-bye.
Bye-bye.
Thanks again to Six Feet Up, the Python Django and AI experts you call for the hardest software problems.
From scaling applications to simplifying data complexity and unlocking AI outcomes, they help you move forward faster.
See what's possible at sixfeetup.com.