Transcript: Mastering Django - Nigel George
Hello and welcome to another episode of Django Chat, a podcast on the Django Web Framework.
I'm Will Vincent, joined by Carlton Gibson. Hello, Carlton.
Hello, Will.
And this week we're joined by Nigel George, who runs DjangoBook.com, has written a number of books, has video courses, and lots more we'll get into.
Welcome, Nige.
Hi, Will. Hi, Carlton.
Hello, Nige. Thanks for coming on the show.
Sure. Thank you.
So maybe let's start with the big one, DjangoBook.com.
You took that over years ago.
How did you manage that?
I'm trying to remember how long ago it was, but it was just I was writing.
So I was writing under the MasteringDjango.com domain, and it started out being quite lazy.
I didn't want to start from scratch, and I'd always use the DjangoBook resource that Jacob
and um the guys at yeah yeah they they published and um i had the original book
and then there was the old green and yellow website that was there and um i just started
republishing that content because it was all all um open content and um started republishing it on
masteringjango.com and uh a few guys around the community i know uh danny um uh roy greenfield
he was he was harping at jacob can we do something about this site because everything points at it
and it's all hopelessly out of date um and and i threw into the community well here's mastering
jango.com and then i i sort of reached out to jacob and um said well i can take care of this
website for you um and he said yes and that was as simple as that he just he just checked it off
with with adrian and they they handed the domain over and i've pretty much been the
somewhat reluctant sometimes caretaker of it since so there you go well i don't yeah you know i think
probably maybe half our listeners are intimately familiar jango book and half maybe have no idea
what it was but it was the original jango book written by the creators and went through a number
of iterations right i forget how many they did this is how i got yeah they got to an unofficial
third edition which was the one that i picked up but that was always my my my favorite story about
django because i would get emails early in the piece from people just tagging me task for um
pinching the django docs and that i was a pirate and i was i was plagiarizing and i was this and
was that i had to patiently explain to a few people um this is the django book this was written
by the creators of django yeah it is going to look a bit like the docs so it was that that was that
was quite amusing to start off with but of course now that content has well and truly been retired
and it's all pretty much new stuff but there's there's bits where it's not though right because
there's like if you there's bits where it's like you know and if you're used to php then it's got
you know this like these and you know you might be familiar with this and that's just straight
straight from the original source it just hasn't been you know that's that that stuff should all
be gone um but the other thing is too is that the reason why i like the original django book is that
um they write very similar to the way i write like i write just sort of really quite laid back i've
got that that aussie attitude to my authorship is that i just i i tend not to to sort of add too
much fluff to the writing it's all very direct um and and adrian and uh jacob's writing was all
very similar and like the pragmatic programmer thing is pretty much my career you know i i was
the one that would always sit on the peripheral of of the language flame wars going guys really
honestly um and and and sort of have a ball from time to time but it was always like well stop
thinking about software as a religion and start thinking about it as a tool that you actually use
and and i have the same approach and i very much like that um but yeah i should have weeded out
most of the really old stuff and and php is an easy target honestly like you know this it's had
it's really interesting the laravel community because it really has a i don't know if the
renaissance is the right word but i i have a couple friends who swear by laravel and actually
there's a number of things i think django can adopt from that but php right has gone through
a lot of iterations in the language itself and i can't go too far because the django book website's
wordpress so yeah no but it's nobody's criticizing jang um php but like there was it was the dominant
thing at the time like two mid early 2000s like and it was like and the django book and the first
version of the docs and there are still references there's like these kind of sentences in the django
docs from from this epoch yeah he's like look here's a way of introducing django compared to
something that you'll already know it's not necessarily throwing shade or bagging on php
it's just this is different you'll be used to doing it that way and now i'll happily bag php
well maybe we can um talk about how you got into programming in django because especially you know
the attitude you have not everyone has i think carlton and i are more along the lines of you
know tool tool users rather than um are there still flame wars zealots do we there are but
we're too old for all right i sent carlton i sent carlton links on reddit about this and that and
jango just to get a rise and yeah you see it so a few times it's like okay we're still doing that
yeah i know they never went away we just lost interest in them
that's just like we should mention before we got on i was we were discussing uh i was saying the
u-shaped uh happiness in life where you're happiest when you're younger and then our age 40s 50s
it bottoms out and then you become happier because your expectations change not that your day-to-day
changes and you know so what like unless stuff however you manage less stuff worries you it's
like i yeah well that was yeah that was uh i i nicked up my car the other day and the guy was
asking me how much i wanted to spend to fix things like oh this thing is cosmetic and
do you care and i was like i got kids like nothing is perfect in my life so he's like yeah i get that
i was like i don't care about a scratch yeah well and that and that and you know what the world's
thrown at all of us over the last 18 months and that stuff it's like you know what priorities
change yeah i'm just happy when anything works yeah i think younger me was like why isn't
everything perfect now i'm like wow it's amazing anything so or any back back to your question
where we started was um so that that pragmatism that so i have never actually in my life been
employed as a computer programmer i've never actually been employed as a software developer
i'm an engineer i'm an electronics guy and um and programming came to me long before there
courses on programming so like i'm 50 next birthday um admitting that to the world um and
i got to see my first computer when i was 10 and computers were brand new when i was 10 um and
nobody knew what to do with the things so you know i remember i had my my god disc which was a dos 3.3
disc on a five and a quarter floppy which most people have never heard of before um you know
we have yeah yeah the generation now are going what what's a floppy um and that and um nobody
knew what it was so they handed it over to me and the the basic and the dosk dos manuals which
came with computers way back then he used to get a manual used to get a manual they were amazing
yeah and then and i jumped on to the school's apple 2e um which was a recent import to australia
from from the great united states and um i started from there and um started programming so by the
time i left school i was playing with electronics i was working with computers and this is what i
wanted to do but i went into engineering so software was something that just came as a part
of the the job the role or whatever i i'm entrepreneurial so i actually run my own
I ran my own computer hardware and software business
for a few years in the 90s, right up to the Millennium Bug,
which is another thing that not many people have heard about
for quite a long period of time.
I was silly.
I told people the truth and didn't make any money out of it.
So I just ended up working my way up
through technical engineering, design, R&D,
and that sort of stuff.
So I was always using software to solve problems.
And that's where the thing I've only ever come at software,
which is why over the years,
as much as I like taking pot shots at some software,
you know, don't get me started on Java as well.
But, you know, I've actually used all of them
as tools over time.
And they have their pluses and their minuses.
So where I got to Django was that I was doing early in,
before they called the internet of things,
was just like distributed sensor networks and that the internet of things you know wasn't really
coined until a few years ago but i was developing environmental sensors for the local university
here and i'd been using python because i don't know if you've ever used python on really large
text data sets but it's brilliant like a couple of lines of code and you can pass megabytes of
text data it's just fantastic and um i've got border wind forms and c because i've been doing
that for a few years and i so i wrote a desktop interface with wx python um and just just for the
hell of it because i've been working with python and the university and the local water mob here
said well we want to put this online we want to look at this stuff online um can you build a build
a website that shows all this data and and they wanted to see maps and all that sort of stuff
well i've been writing stuff in python so i googled python web framework and that's that's
where we started with django um but back then django was 0.96 hadn't even had a full release
so we're talking 2006 2007 and um yeah that's where it was so i went in and out with that and
then i um got to a point where pretty much the only resource in the market was danny's book
uh danny's and audrey's the two scoops and there was pretty much nothing else out there except this
out-of-date Django book that everybody was complaining about and by then um I don't know
where Adrian had gone but um um Jacob had moved on to um uh what's the hosting mob um Heroku
Heroku yeah yeah and um had no real interest and and that's kind of where it went from there I said
I thought well I um I fancied myself as an author um and I wrote a fiction book and it was disgusting
it was terrible and my wife told me well if you're going to write something write something
and stop talking about it except she used a different language and I picked Django because
it was an easy target and then I just got deeper and deeper and I enjoyed it more and more and
here we are what six years later fantastic and then you've also done you've done so I'd love
to talk to you about teaching Django because you've done the site the book the book you've
done a couple of books. You've also done videos. I mean, we started talking, you did, you've done
a lot of videos too. So I don't know how to enter into that. I guess, what do you see or what have
you heard from listeners or readers, viewers, you know, who prefers what? Because that's what I'm
always curious because people always say, why don't you have videos? And I find that not everyone
wants videos, but some people do. And I suppose I'm sort of prejudiced towards thinking that videos
or more total beginner level um yeah do you agree with that or disagree with that um it depends
it really does well it depends what mode your brain's in at the time like obviously if you do
any sort of training on teaching and that they talk about learning modalities and you know you've
got that you've got your auditory your visual um and you've got your you know in terms of watching
videos and reading and that sort of stuff and they say if you if you want people to absorb material
as deeply as possible you've got to actually get them in multiple modes so i actually think that
it's complementary because i even know my own consumption like i um sometimes when i'm chasing
it because just recently i've i've had a bit of a run on on um amazon um and aws and that stuff
and and when i was kind of getting my head around how that all worked i not only did online reading
stuff but i also watched the videos and that and i trolled through uh linkedin learning and did a
whole bunch of that sort of stuff and and i find myself that that um i get a greater absorption
right across that and that's most of the feedback that i got like some people will watch videos
but it tends to be actually what that person's after i notice the most if somebody's just skimming
over something out of interest yeah they'll just watch videos and they won't have the depth and
that but when people are genuinely trying to learn Django I find they come at me from multiple modes
I know I have a core group of people that have pretty much been with me from the start and they've
pretty much consumed my content in all modes they they will listen to it they will watch it and they
will read it as well these are guys that have got the course they've got the books and they
they sort of send me emails and that sort of stuff so it's um it's definitely one of those i think
especially technology benefits from multiple modes different ways to consume the same content
obviously the quality varies widely and there's there's areas where i won't touch
um like don't get me started on places like udemy and that where they just exploit authors they
They don't teach.
But I think having that mix of content out there is actually valuable
and it gives people choice.
Yeah.
I think that's – I mean, whatever level you're at,
whether you're a beginner or, you know, more advanced,
like, you know, to have a video perhaps that gives you a high-level overview
and then when you go to the docs, it's going to make a lot more sense
than you try and take on the high-level concepts from the docs.
It can be like, this is hard going.
Yeah, yeah.
And it can get bogged down because programming can get dry.
You know, it's just one of those things.
It's like learning any language, you know,
is that to be able to order a drink and have a ball at a Spanish bar,
you're sort of going to get more out of learning the language,
but that means having to wade through a lot of stuff
that's a lot drier and a lot less fun.
And, you know, computer languages are like human languages.
There is a basic syntax, there's a basic structure
that that we can all get like we all know how to open our mouth and make sounds um but the
different ways of getting that across you you've just got it you've got to do the hard yards you've
just got to get there and um yeah i think depth comes from that that broad ways of consuming stuff
in terms of what i'd prefer right every day of the week video is a pain in the butt
um just just what you need to do to go through and of course i'm i'm i'm type a about everything
so my you're just never going to see any of my work where i'm just sitting there you know you
see those youtube videos where guys i'm in and are and clicking through the screen and explaining
one thing and and typing forward and deleting backwards and all i i can't do that i i i heavily
produce all of my videos so it's a lot of takes yeah well it's not so much takes but it's edits
and overlays like if you look at the stuff that i've got there i do overlays and then i'll highlight
stuff on each line of code and explain each line of code and that and and that's a lot of post
that's a lot of extra work i think you're probably responsible for why i haven't done any videos
because we've talked for a number of years and i think well i i think i'm inclined as you are
down that route of not being okay with just sort of not winging it, but a more informal style.
I want it to be more polished. And, and hearing you talk about, you know, all these things,
I just was like, wow, that's, it's just a whole nother realm. And then the challenge
with Django right is it's it changed it's a there's a new one every eight months and the
three of us understand that generally those aren't huge huge changes but it can mean having to redo
almost everything I mean I'm almost done with finally my 3.2 updates because you know something
changes and then the web browsers change so I can't just like swap in a screenshot I gotta do
all the new screenshots and and so the idea of doing it on video seems um yeah it adds a lot
difficult you're ahead of me i've only just started my 3.2 stuff because i'm sort of blending
it into my four stuff because there's not a lot of difference at the level that i'm teaching
um so like my beginner's book and that really that my beginner's book it was it was a bigger
pain going from 3.0 to 3.1 than it was to go from pretty much 2.2 to 3 because of the change with
pathlib because that broke everything um yeah yeah i have a whole post on that for the seo i
was like i remember telling carlton i was like people are gonna muck this one up yeah i mean
it's well i've got a writer once you know but it's like you know the the pathway that the jango's
development team has chosen that's you know that's the one that they've chosen but for a content
developer yes it's painful i mean it's difficult but it just weeds out the it weeds out the you
know, it weeds things out, right? I mean, you and I are grizzled veterans of content at this point.
As much as it's, I mean, I've really worked to adopt the attitude of, you know, it's not my
favorite thing to revisit the same thing over and again, but at the same time, it's something that
people want to read. And so it's sort of like a, you know, you've got a guitar sitting behind you.
It's like a band playing greatest hits. Like I'm happy to have greatest hits. I keep, I think I
keep making it better each time. And, you know, I'll have some for me, like I'm working on a
python book now and i'll have some for the masses and you know i'm happy to have that mix yeah yeah
i like your grizzled veteran thing because it definitely some days it feels like i've got ptsd
that's for sure well i don't even see it's just part of it is i don't even see things sometimes
because i'm on i don't know version six or something of of mine and someone will write
something in and there's a small i don't know usually it's not code it's a text thing but i
just don't even see it i'm so yeah no i just don't even see it it's just not there anymore
and um and then and then you get the the ones where they insist your code is wrong and you're
on like version six or seven it's like yeah dude you know i i kind of appreciate that i guess i'm
old enough to appreciate the passion because i know that i mean there's a tiny tiny percent chance
i'm wrong but i'm like i'm pretty sure i'm right about this um when it's you know there's an error
as opposed to, Oh, is that the best way to do it? So I suppose I sort of, you know, I'm like,
yeah, I've gotten the same kind of emails for so long when someone comes in really firing,
um, you know, a, I, I never responded in 24 hours. Cause half the time they'll figure it
out and send me another email being like, Oh, I figured it out. So I just let that lie. But then
I'm like, okay, like, yeah, you're young buck, you know, you're, you're passionate, whatever
your age, you know, I appreciate that. You can harness that. Cause I'm, I'm more like you. I'm
like well you know like yeah whatever the language framework like i figured out you know i've sort of
lost a little of that uh beginners arrogance or whatever it is yeah it's definitely something
it's optimism that's yeah you started programming you're like i can build this in a week no problem
you know 10 years later that's right yeah first two years you don't know anything two to five
you know everything and then beyond that you don't you know how hard everything is and yeah i mean
that's why I love beginners. Like I asked my, like my dad the other day, he's like, yeah,
I'm finally going to read one of your books. I was like, okay, like, sure. Like, and I was like,
well, what project do you want to build? Right? Like, why do you want to do this? He's retired.
I mean, he's like, why do you want to actually get through the dry stuff? And he's like, well,
I want to, he's an architect. He's like, I want to build an app that will, you take a picture of
a house and it will, you like figure out what type of style it is and dah, dah, dah, dah. And I was
like whoa like that's that's not a crud app no no people come in with these crazy ideas
yeah yeah no but i want you know i want people to like before i tell you how what's hard like
you know write down your ideas because everything's doable and then someone like me can say what's
hard or not and you know things change too i mean you can use existing apis for image
recognition so anyway so i enjoy someone i'm like wow because i just start thinking you know how
would i actually do anything and i'm just like oh that's hard that's hard that's hard that's hard
you know i get kind of discouraged yeah whereas you know they don't they don't know the difference
so no no well i i had a had a a reader that sort of took me through a similar journey
i didn't understand what he was trying to achieve but it sounded kind of cool
um but he sort of he worked his way through it and i answered a few stuff and like in the end it's
i basically said mate you're doing really really well um you know once you work it all out come
and tell me because you'll be teaching me something true yeah that that happens you find
that too like there's a lot to Django and I find I've got plenty of breadth but not a lot of depth
in in some areas like you know you I can sort of talk to a lot of the top end of of most of the
stuff that's in Django but when you're writing about it all the time you know you're not actually
in the thick of the code writing really deep and working stuff like out like um you know and you're
doing things like professional for me um you know when you're writing it's different to professional
programming um and i find that so like with mastering django when it got to 650 670 pages
it's like oh come on enough is enough i just can't do anymore um and that and then you know i i get
taken to task because i skimmed over some sections and said just go read the docs it's like please
i've typed until my fingers have bled for 18 months you know go and go and have a look at the
docs um so when people come to you where they've had the time and they've got into the project
and they've got really deep you actually find yourself learning from them and i think that's
just great like teaching materials almost going to necessarily be at the beginner to intermediate
level right because there's so many the market there is much more addressable like there's lots
of beginners there's lots of intermediates there aren't so many advanced people so if you're going
to produce learning content it's got to target the people who are there and it's yeah and it's
also difficult to take them to the next stage where they'd be doing what they would be doing
in a in a professional setting like i made a conscious choice not to um you know have get
running in any of my courses or anything like that i made a conscious choice not to build test
suites and that sort of stuff because it's like these are the mechanics of being a professional
programmer they don't teach you programming and like you know like that and and i keep thinking
well one there's plenty of resources out there for that stuff and two i did test testing anyway
so i would avoid it like the plague and let somebody else teach it well we should have a we
should have an episode with you and adam johnson on to get brian oaken on to fight it out with you
so then so no if you're building a site what do you do just sort of click through and make sure
it works i mean no judgment in that statement just ask him no i just get somebody else to do
the test right okay yeah i am so it's automated yeah no i i so i've been building software with
agile like long before they called it agile somebody gave it a really fancy name about 2000
but we've been doing it since the early 90s because you're working in small development teams
so you know the whole idea of m um you know mvp and iterations and all that sort of stuff so i um
i've read the testing goat and all that sort of stuff and i i understand that stuff i would rather
just hand it off to a qc um but at the end of the day is that i'm more of an advocate of of
um the whole idea yeah i could go off on a tangent but the whole red light green light
refactor thing is that it's like write something that breaks and then put in any old thing that'll
that'll make the test pass it's like what yeah and then the trivial doing trivial stuff so i i do it
but at module level so like i i build a a module that i know works and i'll throw on everything i
can at it and then i add something to it and then i add something to that and add something to that
um and sometimes like yeah you're not sure what behavior you're you're trying to write at the
beginning because you're just exploring the domain so to write a test it's like well i can't write a
test yet so you you kind of craft up the software and then you're like well i better have a test
just to make sure that i don't break it later on yeah yeah but that'll get you off harry percival's
christmas list saying that well i'm already off his list i think i like the jungle yeah
well i i just i fall in the bucket of i mean i don't think anyone's truly test-driven development
at the extreme um but i find i i'm more playful with it i want and then right when before i push
something up to to master i'm like oh i need some tests for this because that is the best time to
write the test is yeah but like after i've gotten it working and i'm happy with it because there's
For me, it slows me down to write tests when I'm switching around the code often a number of times before I get it.
I think we're also a product of the environment we're in.
I'm intensely creative with software because I've always worked in the R&D end of the spectrum.
So I'm solving problems early in the piece.
I've never been the one at the end that has to make this work for a million users.
And we're just a product of that experience.
Like programming to me is creativity and the things that I use it for is creative pursuits, which is why I end up writing about it.
I'm not out there grinding out code every day because that's just not my place in the world.
Like I've employed programmers like that and I respect that.
And, you know, I've worked with quality engineers and those sorts of things.
And I'm about to step into a product management role in a couple of weeks.
So I'm going to be dealing with those sorts of guys again on that.
But see, I'm the product manager.
I'm not the guy who has to make tests work.
So I'm still working at the creative and problem solving end.
So I think it's just our experience with that.
It comes back to that pragmatism and saying, well, I have my own views of this.
I understand how it all works together, but I know what I like and I don't like it.
That comes down to our discussion about being an old fart.
You stop caring after a while.
It's like, no, these are the things I like.
These are the things I don't like.
So I'm not going to do the things I don't like anymore.
But there's a big difference between that
and then going that step further and saying,
and you have to like what I like too, right?
Yeah, absolutely.
But that gets back to those slow moments
that we're not interested in, remember?
Yeah, yeah, yeah.
Well, Carlton, I mean, you, how do you,
I'd be curious just your public take on testing
because obviously you're working on Django itself.
Django is eminently, you know.
It's a massive test suite.
It's very tested.
Yeah, I mean, the key bit is regression tests.
How do I know I didn't break something?
So what you want is for every existing behavior,
you want a test that covers it
so that when you're adjusting the code
and you change the behavior,
that's flagged by the test suite.
And then you might be like,
actually, that's an allowable test.
You know, that's an allowable behavior change.
But what you don't want is gaps in the test suite
where the behavior, well, how does it behave?
Well, we don't know.
We don't know how it behaves
because it's not covered by the tests.
And that's where you run into difficulties
because someone comes on with a fix.
all the existing tests pass we push it out and then you know Django's you know x point y new
feature blah blah and then we get you know reports on the tracker saying this is a change of behavior
from previous version then we got a you know trouble um but that's different from the situation
Nigel's talking about where you're first creating something you don't necessarily need to begin with
a test right but as it starts to get bigger and bigger regression tests become more and more
important and for something like django which is 15 16 17 years old you know and a lot of people
rely on it we can't break things so we need tests yeah if i was a django dev i wouldn't be
so now we don't need tests yeah yeah it's not it's not creative in that same way it's not new
no it's it's just not a space i inhabit i mean sometimes sometimes i'll test i'll do test driven
development like if i know if i've got like oh i need it to do this particular part of a behavior
so okay write a test for that particular part of the area and make that work and then i can move
on to the next step of the problem and i've got a test covering the first bit and then i can build
up like that sometimes i do develop that way other times i do it we get it working and then
write some tests to make sure i don't break it later i think i think too like with that because
because i most because i'm from an engineering point of view too we're working in very very
small memories um in c and you don't have test suites you you basically have a text file that
has all sorts of rubbish in it that you throw out to see what breaks and in your kind of testing
from that point of view you know an integration test yeah well it's it's similar it's just that
you're you're type testing you're basically saying well you've got five inputs to this thing
let's let's throw you know mix up uh text everything like obviously in python it's not
such a problem with dynamic typing although you do get really weird results but of course embedded
C or any of the Cs absolutely detest when you throw the wrong type at a variable. And then
with those embedded system, you get memory overflows and all sorts of lovely, interesting
stuff that we don't see in the Python world happen. But you just don't have the overhead
to have a test suite on a chip that's got 256K memory on it. Yeah. I think the other bit related
to testing, and I'm curious, Nigel, what your experience is, is that people who are learning
Django sometimes will say, hey, I got my first job or I switched jobs. And they have this sort
of sense of shock when they work on a commercial code base because it's not as clean as open source
software. No, it's a very different creature, isn't it? I think we all go through that shock
phase. It's like you look at a commercial code base and I've been around long enough to see good
ones, bad ones, and plenty in the middle. And I've also been around long enough to blame for
some good ones some bad ones and some in the middle um get blame yeah yeah um you know especially
things like oh yeah windows 95 dlls and and some of those really really hideous program structures
that just give me the shudders even thinking about them these days i am i think we're always
going to do that i i think and even now like i'm sheltered from that most of the time because i am
not like i'm i'm even switching back into it now as i said before it's as a product manager i'm just
not working as an engineer in those areas and having moved on from it at times where a lot of
the technologies guys need to deal with now or guys and girls obviously but programmers need to
deal with now just didn't exist like all of this rubbish in the front end i'm like i don't mind
javascript but it's just like which one i just i don't know i don't understand that somebody htmx
htmx solved yeah yeah it's it's it's like i i've only just starting to decipher that and i think
it's much much harder like like everybody has to be full stack in that they might hire a front-end
developer a back-end developer an aws expert aws expert or something like that but at the end of
the day if you don't actually understand how it all works together you don't understand any of it
um so you know that's that's a that's a that's a world that i'm glad i'm actually a fair way
away from these days so yeah i wouldn't i i think it is a bit of a shock for most people and it's
not something that i'd be in a rush to do i think as well like the most code only barely runs like
most real code in real life you know i mean you know maybe maybe the code for i don't know some
nuclear rocket launching system is double checked and proofed with theorems and all the rest but
real code in most companies it's like yeah it runs but don't touch that staple there because
yeah yeah yeah because because it'll bring the whole building yeah yeah so speaking of full
stack do you how much do you cover apis in in your own material like because i i have a whole book on
it but trying to kind of get at that but close to none no one can write a book on i i'm sort of i
I've really, Django has kept me busy for six or seven years.
Like, I haven't really had to step forward.
But I get a lot more of that.
Like, obviously, the Django REST framework.
I get questions about that every other day.
And then doing other things like full stack Django.
So I was trying to work out, well, how do I approach this?
Like, how do I look at things?
It was a couple of years back I was originally looking at Angular,
But, of course, that's kind of plummeted in terms of popularity compared to React and all of that.
And then, of course, React's built on like NPM and just trying to get my head around all of that stuff.
And the other thing is, is that I'm still at that stage going, well, I can understand React.
This is great.
You've got all of these objects you can encapsulate like a UI and everything like that.
But, shit, we've been doing that with the Django template, the DTL, for years.
So why is it so impressive?
Well, it puts it in the front end.
Okay, yeah, all right.
So that's what JavaScript's for.
But just trying to get my head around, well, how do we do React and Django justice in one thing?
And how do we do things that are actually teaching people
how to come up with real-life solutions here
rather than just cobbling something together
so that I'm using React and Django in one thing?
Well, that's a good point.
How deep does your knowledge have to be
before you feel that you can teach something?
Well, I'll tell you the truth.
Most of the teaching that I do is basically I'm the learner with the learners.
whenever i disappear into depth i don't come from a position of expertise um a lot of my writing is
approachable because i'm learning with them so you could be learning right yeah so so i've started
playing around with it so so you know to sort of to to answer will's question i've started dabbling
um but i haven't i haven't yet decided where i'm going with django next like because you've got
this eight month cycle and you've got this thing that you you hit 2.2 and as soon as there's a
0.0 that comes out inconveniently three months later you're explaining to people again that that
no 2.2 is or it's whatever 0.2 is no longer obsolete it isn't obsolete we've just gone to
the next major one um you know because every time when we went from 1.11 to 2 people are saying
where's your two book and i say hang on 1.11 still good for another two years and and i've had this
conversation each iteration of django and keeping on top of that when i work full time um has has
been a thing on itself but it's flat out obvious like django does not work in a vacuum and its
future is working with the front ends and and how that works together i know django's got async now
but again that's that's in an area that if i was teaching somebody async i'd be learning too
because i've never had to work with it i've never worked with sites big enough where async makes a
difference um you know i've always worked in in that i've been around since wsgi was actually a
new thing it was all cgi back then um you know yeah yeah um and and that and you had to had to
write um um scripts on the server to restart the python long running process otherwise your server
just go blank and sit there every hour or so you know it's like so i i've decided i haven't decided
yet whether i want to keep on the front edge of the learning curve or i just want to sort of you
know slowly slide back and stick with the stuff that i know i think what you said about where you
are in your own learnings when you create content is that that rings true for me and actually that's
something i wanted to ask you about because i find so the first versions of all my stuff i wrote as i
was learning it. So I had that mindset. But now, years later, six, seven iterations later,
the challenge is I've lost that perspective. I get lots of emails from readers, which helps me
have a sense of what trips people up, but I don't feel that myself. And that's actually something
I'm facing with the Python book. It's sort of fun to approach it top down in a way where I feel like
I know Python reasonably well. It's not like I'm learning it for the first time. So when I'm doing
my updates or i'm doing new content now it's i think it's almost more of a challenge to be honest
to mimic what a beginner is going through because i'm not a beginner anymore yeah i think we always
get that and the other thing that i get with that too is that it's material that i have seen so many
times i just don't want to look at it anymore too yeah well i think but that's where the context
matters right i mean because it's as you're saying with different programming languages it's the same
old concepts, but that's, it's the same to us because we have experience. You know, that's,
that's the thing is that, I mean, when I wrote my Django materials, I actually didn't find yours
when I was looking, or I might, I might not have. But I had that sense from the docs, hey, this
presumes you already know web development with PHP, which makes sense, but I didn't know PHP or
web development. So I often see that people assigned to Django blame for learning web
development when you just kind of have to get through it with something and get another framework,
get another language and then you'll appreciate it um so people lump those two together yeah and
i think we're never going to win that argument like really when you're doing beginners material
for a particular language you've got to make the assumptions because you turn around like i know i
i i've done a python primer with my django stuff so it's it's on the website for free and it's and
it's um in the book um in the beginners book and that but it's it's it's never really been hugely
utilized and and i've tried to do stuff before where you dig a little bit more into html and
css to provide support but ultimately you go well again it comes back to the same discussion i had
to sell myself with uh mastering django and that that is a book that is django from start to finish
um it's 650 pages and i still had to leave a heap of stuff out you know yeah yeah it's like you you
you're always going to to start a journey with people and knowing some of those people have
absolutely no idea about anything and all you can say is well this is what i am going to teach you
and this is what i'm not going to teach you and i think i've just taken that approach with with the
books and the start and you you did the same with yours as well it's like well this is what i am
going to teach you um if you need to find that here's a whole bunch of links but i can't you
You know, I can't be a start you from very scratch sort of thing.
Right.
You have to figure out where to draw that line.
And I think the top Amazon review, the most helpful review for my beginner's book is shows doesn't tell, which, you know, I'm like, well, yeah, that's the point.
One star didn't tell.
No, people are people are generally pretty nice.
But I mean, that's the thing is that, you know, my own interest, right?
like all of us i'm i'm more interested in the details now because uh they make more sense to me
um but when i was starting out it was like yeah yeah i just want this to work yeah so i try to
sprinkle in the understanding as we also get something you know as we put up a website um
well but it's i think that's what i think about like where do i draw that line when i'm teaching
well yeah and and um you know i get a similar line sort of things because i play the the python
setup right down the line um so i used to use virtual env but once the later versions of python
3 came out i just used vm and pip and you know and people say why aren't you using pip env or
why aren't you using this and why aren't you using that and why aren't you using the other and it's
like well i'm teaching something here so i'm always going to play at first principles standard
modules everything because if you understand pip and you understand vm you'll have a better
understanding of what pipenv actually does you know and and if you ever need to step back or
you've got a different toolkit it's the same as you know right back at the beginning of the
discussion is that software is tools it's it's it's not a not i don't hesitate use the word
religion but it some people really do treat software languages like that like they evangelize
about something it's like well no you're just solving you're using tools here and that and
that comes back well this is the basic tool set this is what i'm going to give you the basic tool
set i'm going to explain to you why what that basic tool set does what it'll achieve for you
and where it will get you because i think once people understand those fundamentals they can
jump into the more heavier duty stuff and understand it they get that conceptual stuff
because like i've done enough languages to know they are all fundamentally the same like computer
languages are the same syntax and structure the way we build things and all that has not really
changed um we just use different semantics we use different you know we python got rid of curly
braces and and and semicolons um but the way you structure a class or a function is pretty much the
same um and then you've got everything that came out of c and that you know and javascript and all
those so at the end of the day i find once people know that basic toolkit they can turn their hand
to just about anything that's out there and yeah and the failure modes on the the more advanced
tools like they can be mysterious if you don't know what's going so well it didn't work you get
some error and you've got no way forward whereas if you understand the more simple tools it's like
well actually i can recover from this because it's just a folder with some stuff in them i think it's
also it to me it's a mark of if not immaturity i sort of drop my opinion down a couple notches
of someone if they are either a incredibly confident because the best programmers i know
are not you know they're not braggy about their ability at all and then if they're deeply wedded
to a particular tool set saying this is the one true way it's like well how many ways have you
tried because i mean i you know we all on this podcast appreciate python and django but there's
other good ways there'll be new ones you know being wedded to a particular ideology seems
immature to me well yeah like i've pretty much that i've spent most of the last 18 months writing
vba you know so you know you you um you know you've got you've got to to have an appreciation
that every tool has its place um yeah and that and and yeah i i agree with you because because
anybody who who has to tell you how great a programmer they are is not a great programmer
because most of the rest of us have learned to be humble a lot time before like if there's no
other profession out there where you can be wrong about 900 times a day um and there's a straight
you know 12 year old girl somewhere who comes up with way you know teaches me something about
django you know reading reading my stuff that happens all the time i mean age age isn't a
implementation you know so you see the the talent that yeah it's opportunity i wanted to ask you
both um because you're both um creators of um teaching content for jango i wanted to ask you
your opinion on um you know where the the level should be um pitch for the jango docs because i
quite often see criticism of the jango docs they're too hard the tutorial is too hard to get going and
then i look around the community and i think but there's lots of great getting started material
like awesome material like your your two stuff and other other stuff as well and i kind of look
at the capacity of the django contributors to produce that stuff and it's just not there and
you know i mean what do you think the balance is is there room for i mean i kind of think it's nice
that people have to reach outside the django docs to find more stuff but and i yeah from my my point
of view carl not i actually think that's just the way it has to be like the django tutorial gets
people started that's where most people will see it that'll be at the top of every search term so
that's where anybody coming to django is going to start um you know and like you look at the
documentation for every sold software project out there you know at the end of the day is that most
of the documentation that comes out of django is the same as documentation that comes out of python
you know you're writing in doc strings yeah you're not you're not actually writing teaching
material you're writing reference documentation and at the end of the day bringing that out it
isn't the job of of the guys doing Django you know that that the job of the the dev team is
to make it stable to help it grow to possibly not bring a major version out every 12 months
um so the rest of us can keep up um you know and and that i i think it's a valid question but it's
not one that the the dev team should actually have to answer they should say no go and see
nigel will or or um you know the other guys that are putting out huge work out there um i know
there's a guy i've forgotten his name off the top of my head but he's um the simplest better than
complex um he does oh yeah he does some fantastic material um and you know and there's the tango
with django guys the django girls like there's a lot of us out here i don't know what danny and
audrey are doing these days they've been quite quiet for a while um but there's people out here
like this comes back to to um the discussion before about the difference between engineers
and content creators we come from a different mindset you know i i'm not terribly sure i could
get as much out of what i do and and my the people that learned from me can get as much out of it if
i was a card carrying engineer like we've seen some of those guys on youtube and man is that
stuff dry and hard to follow um no comment yeah but will you put a lot of effort into that too
you know like like your work is is very similar in that that like we do something different but
it's complementary um so yeah push pushing pushing the dev team to to try and mimic what we do
is a different set of um skills and it's also not necessary we need to sell books yeah i mean i
i understand now deeply the distinction between docs and tutorials i think i was in the shoes
of a beginner where I said, I just wanted both. And I think that's, you know, beginners or someone
who's frustrated, it's just, they want both. And we all, we three understand why that will just
never happen. But someone who's new, new doesn't understand or care. They're just frustrated. So I
think that's, you know, I, what would I add to the docs? I think it would be nice to have a simpler
introductory, um, something beyond polls, something a little more flask like that's
hello world. I mean, Carlton's done a whole talk on this. We have, you know, there's,
there's room to add something else, but beyond that, you know, it's just not possible,
but I don't know how we explain that to someone new, new to web development, that this is just
how it is. It's, it's unbelievable that the docs are even as good as they are. And if you're
frustrated, um, you know, I mean, it's, it's also Django purposely doesn't link to, doesn't
recommend any resources, which makes sense because Django's, you know, Django's its own thing,
but it makes it frustrating for a newcomer because they don't know who to trust. Like you were saying,
people have followed you in your career as a creator. I find that's the same way. If someone
likes a teacher, they'll take everything from that teacher and everyone does it differently.
So that's why I always say, if you like my stuff, here's more. And if you don't,
there's plenty of other people with a different take on it. You just need to find someone who
matches up with your learning style. That's what I would say.
Yeah, I think so. And a lot of them, too, you're not going to. There's so many people who will come to that and say, I want to understand this in 10 minutes. You know, and it's this massive multi-million line project, but I need to understand it today. And then they'll go to the next thing. And this guy's not helping me understand it today. You know, like there's this expectation that it's all going to magically come together.
But I think we can sniff that out.
I mean, I feel like my ability to sniff that out
from an email has gotten a lot stronger.
Yeah, yeah, you get very good at it.
Well, I mean, I'm not free tech support.
I'm happy to help people if it's related to my content.
I'm happy to point them somewhere else if it's a quick one.
If someone's just tossing a bunch of code at me
or something else, it's like,
I'm not getting paid to answer your question.
And just because you don't know
that this is an incredibly complex question,
even if i provide the answer to you which i'd have to spend time on you wouldn't appreciate it so
i i don't lose sleep on that what's the main way someone should find your material is it the
jango book.com website because you have books and courses best place to go is the website because
that's where the free stuff is and and um you know that's that's where i um publish anything
that i'm doing um so yeah it's just jango book.com and then there's a student login is that still
active can i ask about that there was so i've made that course free so i had a beginner's course that
i i was a paid course for a long while um but but i i made a decision that i'm going to make that
free um so that's open now so anybody can go on they can go and take that course it's um it's
still packaged up as a course at the moment um but all the videos on vimeo which i'm paying for
so I'm pretty much going to tidy it up for 3.2 and migrate it to YouTube so it's just linked there
as that and I'm going to leave that free I'm not actually going to make the course paid again so
it's pretty much just the books and the content there and I do have a YouTube channel but it's
kind of got nothing on it so keep an eye out in the Django book website for when that's actually
working um so i got this idea i want to play a little bit more with django like writing books
as you would well know will is is a real mission um and as much as it's it's great great to give
birth to that baby at the end it's it's it's definitely hard labor um so i'm looking at
probably doing doing some much shorter content and just posting that on youtube and on the site
and and i and i don't know you know what i'll do with that i'll probably bundle it up as pdfs and
like you know things that people can use on multiple devices and that but definitely much
shorter content just like how to do this in django kind of stuff um and and that'll all be on the
website and that as well so yeah that's going to be the best place um and and of course there's the
updates for the beginners book and for mastering django which will most likely be updates for
3.2 and then just like a free addendum for django 4 because again at this teaching level django 3.2
and django 4 are pretty much the same beast yeah i think that's right i wonder we both have this
i we both have all this different content like what are your like teaching fantasies like mine
is to have one book that like instead of having all these sites to take my three books and just
to have one book and you know that cannibalizes my sales but the idea of just having one thing
and being like here you go uh seems quite nice yeah i i don't know i um yeah i don't really know
i don't think i actually have a have what you would call a teaching fantasy with django because
it's for me it's it's a it's a hobby wow i mean that's the healthiest way that that's the healthiest
way to do it well i think though yeah i think that what you were saying though about shorter
things like when i think of my three books the the hardest one to write and to update is my
professionals book in part because i think i'm i'm a little too far over the curve in terms of
it's hard enough to keep up with what people are doing at scale let alone to write it and then it
also it unlike the other books the other books have a bunch of smaller projects the professionals
book is one big project where i lump things in and so it becomes just this jenga puzzle updating
anything because everything is linked and i have to update everywhere it's it's really painful for
me like i want like discrete like i i understand the two scoops approach a little bit more where
i'm like okay like logging boom here you go you know security like i think i i if i keep it up to
date i will have to do that because this whole narrative thread crushes me more than the other
books yeah yeah well i i i i took one look at that that well i took more than one look at that
um um and then it was like yeah nah i i just like i well that was wise i because i've looked at i've
looked at the professional stuff and and and yeah as i said to before like i i will probably do some
stuff around rest and that but but for me to do a django rest book probably not um you know and
because i had the same thing because i was thinking about doing a full stack django book um but
instead of just picking one technology is sort of say well here's django as a back end and here's
here's like starting off with bootstrap templates here here's how you you put bootstrap in with the
dtl um and and then going to jquery and front ends and like there's a whole bunch of stuff you can do
there but at the end of the day what you're doing is you're pulling data out of a django back end
and putting it in a javascript front end and and the javascript libraries you know as much as i i
i think the development timetable something for django could slow down sometimes so we can keep up
javascript is the wild yeah it's impossible um you know into um it's like i'm not even going to try
and keep up with this um i'll just throw out short content and if it's out of date in six months time
at least i haven't put six months into producing it that i just now um and like tied to it and an
absolute slave to it um like you'd know yourself like you get those things out there and it's just
this endless update cycle that's why i left this update until right near when four was coming out
because i didn't want to be doing 3.1 then 3.2 then four it's like you know what i'm just going
to leave this right until sort of october november december 2021 i'm going to do the
updates for 3.2 and then i'm just going to do a free supplement hey this is how you install
django 4 but guess what the rest of the code at my level is the same but not much not much changes
i can't take the path lip you know change would have been disruptive yeah well the part range
tutorials but yeah in term in terms of writing content at the level that i'm at i don't know
will experience the same but there was a bigger difference between 3.0 and 3.1 because of path
loop than there was between 2.2 and 3.0 because the only major change between 2.2 and 3.0 was
async and of course at the level i teach async didn't really need to discuss we have the
deprecation but like we pick up that because the deprecation is actually too nearly a full version
behind by the time I'm writing stuff for 3.2 anything that was deprecated because it was in
2.1 is it's kind of not relevant anymore because I've already weeded it out of the books
so I tend not to run into those issues I don't know if it's the same with Will it's it's more
but yeah Pathlib killed me it's like I was I Pathlib first came up somebody because because
i'm in australia um most of my feedback comes from continental us so it turns up in the middle
of the night and i got up in the morning and it was like three emails saying your code's all broken
like what's this import os it's throwing an error and um i had to madly write some errat over that
sort of thing um and that so it's those things that catch you out um but it's more perception
with django in that like it's fair um you look at java at the moment like the the dot versions of
java seem to come out every other day um at the moment so it's not as though django is unique in
that um but yeah i'm not sure what it is but it tends to be it's always something right like
i try to think about like sorry to interrupt carlton like what at the same time that not a
lot changes it still is a big pull every time to update the books and i think it's for me it's
partly like i i try really hard not to rely on external things but you have to a little bit so
get github heroku sendgrid and they they change their stuff all the time um i had way more third
party packages and other services like stripe and stuff at one point and i just can't keep up with
that. And so I pull those out, but it's still, I find that for me, it's like things build up in
terms of people asking questions on areas maybe, or on best practices. So every update, I can't
do a huge redo. I go through everything from scratch, which takes quite a while.
But this current one I'm on, I'm like, I'm switching from pipenv to pip. I have things
more on function-based views than I have before. Like I'm kind of cramming in all this stuff.
Um, and so I found to make it maintainable, I can't do that every update, but, um, this is one
of those ones. So the 4.0 update, I'll go through everything again and see if what's new. I don't
think that'll be as big a one, but this one I've sort of let things build up and I kind of don't
want to release something until it's that perfectionism is kicking in. So I think I'm a,
I think I'm a week old hope. Maybe by the time this comes out, the update will be out, but
It's been like 90% done for six months.
And I think I was going to, another point, you know, what's the difference between, you
know, you and me and, you know, people who people will pay money for and someone cranking
out free things.
And I think it's that, that extra 20%, you know, you can, anyone can kind of blurt out
a tutorial on something, but all this stuff we've been talking about, about keeping up
to date, about thinking larger picture, all this, you know, basically like the fellows
roll you know all the stuff nobody in open source wants to do that's i think the difference and
people can immediately tell like i open something it's like well there's typos you know or the code's
off it's just like i can't trust you um but you know when you just wrote it for free it's like
well you know i'm busy doing my j job i'm not going to update this thing here i curious that
resonates i think that's how i view it anyways that's i think that's open source i think you
know like you you have this this this dichotomy or all this this polarized thing about it is that
open source runs the world but nobody wants to support it um you know it's it's it's always been
the thing like i with this last book so i i was pretty much you know will i i was doing django
full time for what 18 months or so while i wrote mastering django and i did all the courses and
everything like that but it wasn't sustainable it's just you know like if anybody out there
listening thinks there's that you know we're rolling in it writing content for jango i've
got news for you you know you know i made i made more 10 years ago than i do now yeah yeah it's um
it's definitely a love job something that we do but you know you get people coming coming through
with that sort of thing but but open source i think is always going to have that sort of problem
it's very difficult to value the work that goes in you pick up a book like ours of mastering
django i think there's 1200 hours in mastering django and the beginner's book would probably
have to be around about um 300 or so with that and that's before all the updates that i do no
the economics makes no sense yeah it makes no sense at all you know like you you you just sort
of and for me i i just went back into industry and that night i do this now so i've got to balance
my time um and you you know you've got a young family will so you know exactly what that's like
so you're always going well yeah i'm putting this you know you put the free stuff out but some some
of this has to cost you and and this is the extra value that i'm giving you this is the extra value
that i'm adding but to be fair and i reckon you got that like out of that core group i've got so
my core group the ones that have followed me all along you know there's a few hundred there they
They haven't all bought stuff, but there's a core group in there that it doesn't matter what I bring out.
They'll buy it because they want to support it, and they're always the same guys.
And they're the ones that I know by name.
I can send them an email, and they'll respond to me, and I'll say, yeah, what do you think of this idea?
Yeah, I think that's a great idea, Nigel, or no, I don't like that, and I'll give you good feedback.
And ultimately, that's what you do it for.
It's not because, you know, you get a certain amount for a book.
I'm going to fiddle around with what I'm doing.
To be honest, I'm going to try a few different ways to just get a few bucks here and there.
I don't give stuff away.
I don't know about you, but I get a lot of four-page emails about how poor somebody is
and why I should give them my book.
But I don't answer those.
I'm not belittling a person's situation, but it's like I put hundreds of hours into free stuff, answering emails, doing that sort of stuff and that, and there's that much free content out there.
This is probably the only way for me to get some sort of return, which, as you know, at the end of the day, really just covers your publication costs.
Yeah, that's where I draw the line.
No, no.
That's all true.
I think with the requests, I view it as if I'm in a good mood, if it's early in the morning and I feel generous, I'll do it. But generally, I don't waste too much time on it. I had a case, which I don't know if you want to talk publicly about one of your books coming out before publication, but I had a case where Iran, I get a lot of emails because a lot of educated people in Iran, and they're not part of the formal international monetary system.
So there was someone from a university that wrote me, you know, this full page letter.
And I was like, OK, sure, I'll send you the book, e-book.
And then I literally got 20 emails from like because this person ran like a Python Django group in Tehran.
And I got 20 emails all being like variations of like, hey, just give me this book because you gave it to this other person.
I was like, well, they probably just gave it to you anyways.
But I was like, you know, so it's like open source.
You got to be like, you know, if people are going to steal it, they're going to steal it.
And if I feel in a good mood, once in a while I'll do it.
But, you know, I'm not getting paid to answer your email asking for a free copy of something I've spent thousands of hours on.
Well, my favorite one with that, like my shortest one with that was, so my first book was traditionally published with A-Press.
It was on Django CMS.
and um i got a um a an email from one of the guys from jango cms and he'd found the copy
free online before i'd even received my publisher copy i remember you telling me that story
but my yeah um but my favorite favorite one um is from one of my one of who a guy who ended up
actually buying one of my books but he sent me this um this email saying i'm really confused
which is the latest version of your book and he attached the original 1.8 version of mastering
django to it and it was like well so there was three files attached and i said so the first one
is a pirate of the lean pub version of my book the second one is a pirate of the one off my website
and the third one is a pirate of the packed version of the book because packed publishing
actually distributed that book as well and yeah he found all these things and all three of them
them were pirates of different versions of the same book.
Hey, Nudge, could you help me out here?
Yeah, I got a tech support question for you.
And I told him that.
So, but, you know, he asked for a discount, which I'll give him credit for, but he ended
up buying the PDF off the website in the end.
I mean, what can you do?
I mean, sometimes, more these days, I'll get emails from people saying, apologizing for
having stolen my books and saying i'm in university or i'm going to get this job and you know i you
know i will uh i'll buy your books when i have the means to so i'm you know okay like you know
yeah we're rambling on but we're coming up on time here we're rambling on here this these
publishers stories about people we could go on forever folks so yeah all right i think i'm gonna
call time i'm gonna i'm gonna call time here like so nice really good chat thank you for coming on
the show um thank you for um reminiscing with will or share it you know sharing a sensitive
moment with will about pirates
no i'm just teasing i'm just teasing but we've got to call it quits because um otherwise this
this episode will go on well beyond our jingo book.com mastering jingo.com to find
nigel's stuff we are at jingo chat.com chat jingo on twitter and we'll see everyone next time
bye bye
join us next time
thank you folks
thank you all