Transcript: HorseRecords - Andy Ide
all right carlton take it away oh come on sorry go ahead hi welcome to another episode of django
chats podcast on the django web framework i'm carlton gibson joined us by will vincent hello
will hi carlton hello will and we've got with us andy eyed this week he's um builder of horse
records and all-round good fella hello andy g'day carlton g'day will good to be here good to have
you thank you for coming on the show i've wanted to be talking to you for um online for ages i
brought some light reading i'll just hold it up to the microphone oh jenga for professionals i see
yes written by some hack and uh pretty much for apis oh yes thank you very much a bit of light
reading for this evening afterwards okay so andy we're always plugging the books what would you
what would you say about wheels well look i love the django for professionals because
i'd learned django and i needed something to take me from sort of experienced beginner
that that targeted like the mid-level of programmer of django so i knew things but i didn't know
things like management commands i didn't know template tags i didn't know management i didn't
know um uh model managers and this book django for professionals just took me up to that next level
and answered a few questions that was great django for apis uh uses i don't know if you guys know a
little plug-in called django rest framework have you heard of that one carton we've heard of that
yeah heard of that heard of that just just in passing what i loved about this book was the
Django for APIs book was, I went through it and I went, oh, that's how I do it.
Oh, that's how I do it.
Oh, that's how I do it.
And I was like, it gave me a sense of confidence in that what I was doing with DRF was actually good because I was running about three or four apps and I had no idea if I was doing it the right way.
And yeah, it turns out that we were in agreeance on how to do things.
So that was good.
But yeah, if I had to do my pick, I'd say Django for professionals.
but get the lot okay yeah but that's interesting because i always you know someone was saying how
do i learn django and i was always i always point people to will's books was thinking django for
beginners and then django for apis but of course a tweet came up the other day well where's all
the middle grade material that gets you from that beginner to intermediate level or beyond
and it of course will's books are the answer there as well actually because the professional's book
takes you that you know that step further so it's nice to hear that that's you know your take on
that we'll get into your background andy but you have a background so i think that's why
yeah it's a bit unnecessary but i know it's very very kind of you to say that i i appreciate that
because i think of of the books the professionals was the hardest to write and is the one that
there's because i'm trying to i'm trying to but there's so much that's not in it like there's so
much more that i want to have in it and it's hard to push the curve up to the point where it's like
this is kind of this is the best practice you need to know this versus who the heck knows and
experts do it differently so that's that's the level i'm trying to get it out is like there's
pretty much consensus up to here and then i think i do in the book i'll say now it's a choose your
own adventure and it's where do you draw that line where do you say this is yeah you know this is
where i'm gonna go um you know do i talk about hacking django or no well and and that's i think
the critique is to the extent there's a consistent critique of the books it's that they show and
don't explain. And I kind of get that. I wrote them explicitly to be the opposite,
to be top-down instead of bottom-up. But the issue I have now is that now that I'm
10 plus years into Django itself, I'm really interested in the details. And so I have that
urge past engineering-based authors to really, really show you how cool it is, but I know I'm
just going to lose people. So it's always that mixture of context, like here's how to actually
do what you want to do. And then let me explain it to you because it's really kind of cool and
you could do all these things but i don't want to totally lose you yeah exactly yeah you know
like a university professor can just lose you but you're stuck there but for the book if it's not
engaging no you know you're not going to study for the test it has to be useful yes any event
let's let's well you've totally hijacked my opening there andy with your your plug in will's
books i was just so excited about the books carlton yeah no no you've got the hard coffees
as well so that's good um normally look no you you the thing we won't really want to chat about
your web your your application horse records that you're building and everything that's gone on
there but in order to give a bit of intro to that tell us who you are and your background and then
we can lead into um yeah sure that you're building and this i'm andy uh look i'm based in a little
country called australia you can probably tell by the accent i've i've flipped my video upside down
so I come up right way to you guys, so that's all good.
Mate, I started with computers in the early 80s.
My grandfather was into a thing called a Sorcerer computer,
which is a bit like a BBC Micro of that era,
before Commodore 64 was that generation,
so BBC Micro was the one I remember,
but ours was called a Sorcerer.
um, I never had enough games. So I was, I'd start coding in, in basic. Um, they had some basic there
and, you know, just car racing games and stuff I'd find in a book and type in, you know. Um,
and then after, after that, uh, uh, probably in the late eighties, I've, I was given this book
turbo basic which had everything that turbo basic did and i went completely nuts um and just
wrote this was early pcs like 286s kind of sort of two meg hard drives were where you went
and i remember my old man wanting to get a four meg hard drive and everyone said you're crazy
you'll never need that much so so those were the days um and uh so yeah i was still at school and
then in the mid 90s i was working as a team leader for a company that was coding in this uh
this strange language called php um yeah so i started learning that kooky language and got
into websites which were all the rage in sort of the late 90s early 2000s um they were sort of a
lot of them were written in pearl and we were moving into php um so yeah i i had my own business
for about eight ten years building websites and um i found near the end i was starting to get
beaten in the website game by the graphic designers because they could draw they could
make a website pretty they couldn't necessarily make a performant but or secure but but who can
see who can see that who can see that yes customer didn't care um and it got to the point where you
know these sites got hacked and that the graphic designers would be calling me to sort of clean
them up and i still do the odd wordpress unhack site job um yeah so i made a career building
websites in php and there was a brief foray into angular with javascript and ember the javascript
framework um and about sort of late 2018 2019 i was given a task at work and a new project
and i was agonizing with my mentor i said oh what do i do here do i code it in php i hate
all the frameworks i hate all the javascript frameworks i just hate everything and i hate
everybody um so that's the 20 20 year age that's a life in tech and he said well why don't you use
this as an opportunity to learn a new framework learn something new oh that's good okay well i'll
look at python so i looked at python and i had a i looked at flask and i looked at django
and i started off with flask and realized that you sort of you have to bring your own batteries
so what I found with Flask, I was new
I didn't know, they said oh you could use all these packages, there's like
three or four for authentication and I'm like I don't know which one to use
and then after a week of watching videos on
YouTube I thought okay I'll give Django a chance and I looked at Django and they said
oh use this and I went well if they've chosen it and they've been around 10 years
12 years whatever, it must be okay
and I just found that the decisions that Django had made
with its batteries included concepts really resonated with me
and allowed me just to focus on actually writing what I needed to write
and solve the problems I needed to write.
I didn't need to worry about what authentication library
I needed to install or what templating library I needed to install.
There were sensible defaults that were good enough.
So that's sort of my journey into Django, yeah.
Well, there is a saying, if you use Flask long enough,
you end up kind of rebuilding Django.
Yeah, exactly.
But it is, I think there's an interesting combination of
beginners go to Flask first because of the hello world,
even though Carlton's given a talk on Django hello world.
And then at the same time, I think in larger companies,
there's actually quite a lot of Flask usage
because you can just spring up a dedicated API endpoint
and just bolt it on.
You can do that with Django too, but I think the combination of those two is partly why – like there's a lot fewer fully Flask sites of any scale out there.
There's a lot of, you know, tiny sites or some endpoints with Flask.
Yeah, yeah.
I think that makes the numbers, the comparison a little bit off.
You know, if you look just at stars, they're used for different things.
Yeah, exactly.
And often, you know, part of being a sort of engineer
who's got senior in front of his title just because he's old,
not because he's good.
But you've seen, you've been in the game long enough
to realise maintenance matters.
So what is it, the median age of developers is five,
five years experience on Stack Overflow.
I thought you were going to say five years old.
Five years old, yeah.
Some of them are pretty good.
But the experience, so half the developers have got less than five years' experience.
And if you've been around a while, eventually you start to see your projects that you coded need maintenance.
And a lot of the maintenance problems start to come up.
And so you, yeah, so Flask being small works well, but often with things like Django.
uh, it, it goes, your projects get bigger and bigger and, and you always need to be able to
maintain them. I wonder how much of that is, you know, being, doing consulting and having ownership.
I mean, Carlton, you, you had did consulting quite a long time. You know, most people are
either new in their career or if they're, even if they're at large companies, you know, they do
something for a year or two and then they move on to the next thing, right? Like what was that
Google Stadia, the new video game thing they killed. And partly because, you know, all the
impetus internally is on creating the new thing and then you know there's no reward for maintenance
so i think correct a lot of people even people who make a lot of money and are very prestigious
don't don't feel that pain or they know that someone else will feel it and so it's
you know you don't get promoted for maintenance in a lot of places and you can always move on
after two years so you don't have to maintain your software so well that's i mean that's that's
especially like i was briefly out in silicon valley that's the you know the the two three
year itch it's like the first year you're like oh this is great like new thing second year you're
like okay i know what to do it's getting annoying third year like i hate all of it's a dumpster fire
of tech debt and then you go to the next place yeah and then you sort of but then you but then
you get you know then you used to get a you know 40 percent raise i mean you used to so you know
again you you can't like put get blame on like someone's resume like i keep following this person
and their code is trash but any event yeah so that's um yeah did you did you can i ask did you
so python's not necessarily sorry carlton i i just have i know you have you're gonna have all
the questions for this but i just want to get a couple in while i can so python isn't necessarily
the the sexy thing these days there's like elixir and there's all sorts of other things what was it
maybe you're too experienced to be excited by those what else did you consider i guess is my
question is my question you know back two three years ago back in the day uh it was always for
python um my mentor once you know i think you'd be really happy if i went with a compiled language
but it's just not my background and when i started coding python i sort of got the feeling of back in
the basic days you know everything's fairly simple and clean just kind of works yeah the nomenclature
is easy it's been around a while so most problems are solved that you that i would find you know i'm
not here i'm not one of these devs who's sort of on the cutting edge of stuff i'm just using it to
to produce something cool and you sort of i don't know i don't need the latest and best thing i went
there with the ember and the angular i got burnt when angular went from angular 2 to angular 4 and
then got called angular and what was angular turned to angular js and the fact that they
didn't have any portability between the versions and no backwards compatibility just turned me off
java scramble java frameworks forever
what is that thing that you still use you still use uh you know an old-time javascript framework
by choice not ember right but what's the don't you have a favorite what do you use for javascript
frameworks if you have a choice if i have a choice these days i will use um htmx for
before that but then i'll use um i'll use alpine js i use l the thing i like is l okay that's what
i'm going for right but not to attack you but just to say like you don't have to it no but it's a
whole left field maneuver and the reason i like it is because you it's written in it's this whole
little other language it's sort of functional language is a bit like haskell and it compiles
down to javascript but you never see javascript and it because it's um strictly typed there's no
if it compiles it runs no runtime errors like you the you know you can it's a miracle if you
can get a runtime error out of it you you know so you never see javascript and that's why i like
elm um okay yeah but you know i've got a bit of jquery on my site so yeah no but exactly but like
jquery so jquery was awesome and then i got into um sort of backbone because it gave you a little
bit more state around jquery um and then the ember thing and it just no it was all just getting too
much i never followed it i never got there and then you know it became it the whole world became
so far removed from what i was used to that i was kind of ever more migrating towards being a
back-end developer back-end developer and that's why i'm so excited by um this html over the wire
thing which you know we'll talk about in um andy because you're using django unicorn i know yes
htmx django unicorn the hotwire stuff it's just so exciting because it's like do you know what
this is just like doing javascript back when you first picked up um jquery sorry it's just like
doing jquery when you first picked it up and you're like you know select my selector and then
remove it oh and it's gone and all animate that oh it's animated wow amazing and
and it's like these little these lines of you know i can recreate the marquee tag
yeah yeah and if you want that yellow fading thing yeah so give it background yellow fade
that out link text yeah that's awesome yeah i've got the shivers now guys
anyway so andy so you're not you're not agencying anymore you're not doing um client work particularly
you're working on a site called your own site because the one thing that came to mind when
you were talking about agencies is the trouble with ownership is you give over your project and
you try and convince them to take on a maintenance project um you know contracts they want it and
they'll be like ah no we don't need a maintenance project and then you know a couple of years they
come back to you when it's totally broken and you're like but i don't want to fix it now i
wanted to maintain it you know every six months i wanted you to pay me so i could keep my business
running not come to me when it's all on fire right so that's why i got in the end i'm like i can't do
this this agency work i want to you know do other things and but you're doing horse records tell us
about yeah so um i uh somewhere in my journey when i had my web business i met a pretty girl
and I ended up marrying her and turns out that I married into a pretty good pedigree
if you pardon the pun she and her her mother have run the largest the oldest stock horse
Australian stock horse stud in South Australia so a stock horse is the Australian working horse
it's like a quarter horse in America it's not bred for racing like the quarter horse was bred
to do the quarter mile but the stock horse is bred for uh versatility uh intelligence
you know strength endurance you're just a working horse that can just do a bit of everything
anyway so i'm married into the horse world so city boy you know moving and working yeah going
to horses and no one warned me how hard that would be on the body anyway so after a few years my wife
wanted something online that could record what she was doing with her horses so horses need
worming horses need a farrier which is for their their hooves their feet uh they need a dentist
you need a horse needs a dentist once a year and she wanted to record all of this as well as the
breeding matches keep a good record of the pedigree um and you know just dates and stuff
so i wrote wrote a program pretty simply in php and then after a few years of running it she said
why don't you make other people able to use this so this was sort of in 2018 and then by early 2019
when I had that project at work which I did in Django I thought well I'll create horse records
and I'll do it in Django as well so I built horse records um at the same time as I was learning
Django and doing Django for work so there was a lot of cross-pollination between the
the things that work cared about and the things i cared about in horse records so yeah what is the
software well it records everything about your horse so um i've already said your farrier your
your feeds your dentistry your worming your performance so like the the ribbons they win
or the trophies or the races they win um you can customize it so you know things like chiropractic
If you have a chiropractor for your horse, you can record all the servings.
So all the whole breeding operation is its own thing because, so horses, mares come on every three weeks and that's when you can introduce a stallion to them and the stallion can serve them.
The other, you know, there's about three or four days a mare is fertile and will accept a stallion.
The other three weeks she'll kick him, say go away.
So, even though they're mammals like us, it's a little bit different.
And you can record pedigrees, which is really important for horse people.
They like to know the lines.
So, pedigrees like the mum and dad, grandfather, grandmother, progeny, etc.
So, yeah, it's a full-service horse application written in Django.
A little bit of jQuery, a little bit of vanilla JavaScript.
and uh yeah hosted uh on a fairly small um uh vps i was gonna ask about hosting yeah yeah so
it's hosted yeah uh yeah sorry we'll work backwards yeah we're backwards okay let's
work backwards hosting okay so hosting i've got it running on a vps because it's in django
and a lot of it is all it's all back-end stuff it's all server rendered you don't actually need
a lot of grunt in the server.
It's not a single-page app or anything like that,
so it doesn't have that delay that single-page apps have.
So, yeah, I just run it on the Linode plan.
It's sort of at the lower end at this point.
There's plenty of room for many orders of magnitude growth
just in the Linode plans before I even go to the custom gig.
And yeah, Linode uses AWS.
I think they buy AWS and sell it or something like that.
So yeah, it's all backed up and secure.
Whereas I run Cloudflare on front,
which handles all the bad actors trying to hack the thing
and all the bots trying to port scan you and stuff like that.
So it blocks all of those and adds some caching.
So I don't need to use any of the white noise
or anything like that in Django.
I just use the Cloud Flare Caching.
And yeah, it renders pretty fast.
So I'm pretty happy with the performance of the site.
Yeah.
Just such a cheap plan, yeah.
And I mean, users can upload photos and stuff.
So I assume you're using Django storages
and are you hosting that on Linode?
Are you using S3?
What's the media file?
Just on the box?
Mate, it's on the box in the media directory.
Oh, you're a wild man.
Wild man.
No, no, no, no, no, no, no, no.
Right, okay, so this is the key point, right?
So you stick it on a VPS and just use the file system.
And I bet you've got recurring jobs, right?
Like tasks that you need to run every time.
So what do you use for that?
Okay, so I use Cron.
Just use Cron?
Right, exactly.
Yeah, and then I'm this close to implementing Django Q on it for emails.
Right, okay.
So I'm using quite, you know, fairly trusted, old school, boring as hell tech.
Right, but there's an episode, not episode, essay about use boring tech, right?
Yeah.
And use the old stuff and just focus on the core things.
So Andy, you're a one-man operation.
Yes.
And you're running the web application all by yourself.
Yeah.
And you're doing the ops all by yourself.
I had a DevOps guy help set me up.
and i ask him some of the hard things like ssl certificates and you know self-created anyway
all that stuff that they care about and but yeah just running it day to day is me yeah so it has
to be simple um i've got enough problems mate yeah no but this is it it's and it's the same
you focus on django you focus on postgres you use nginx you stick it on 1vm and that's all
the operational complexity that you need and you can scale up to a bigger box and then a bigger box
and then a bigger box and nothing changes my um cpu sits flatlining at about 1.5 usage
and occasionally spikes to 15 but it sits at 1.5 like i'm pretty happy with that on a like a low
end plan so so i've got i worked it out i've easily got a thousand times more capacity just
in the linode plans so you know there's plenty of so good for now i'm good for now and that's
without any sort of scaling or having to worry about scale or anything yeah no kubernetes yet
no if i need kubernetes i'll be calling you cardon no no no you actually you won't you won't because
So I'd be like, well, just get a bigger box.
Yeah, just keep going.
Well, once you get beyond the VPSs, then you get a dedicated service, you know, and people, you make enough money there, you're happy to pay for someone to do it all for you.
Yeah, so I'm pretty happy with how the stack sits and how it performs.
It's really, really good.
I just want to say this because I think the best example is Stack Overflow.
They, Stack Overflow, they did eventually move to, you know, containers and, you know, probably Kubernetes underneath and all the rest.
But for years and years and years and years and years, they were just running on, you know, a couple of servers at the front end with a big old database behind it.
And it was the most old-fashioned thing in the world.
And they were like the top 10 internet sites there are.
And it's like, you are not going to be bigger than Stack Overflow.
You are not going to need more traffic than them.
What on earth are you doing?
You're hurting me, man.
No, Bill.
But what on earth are you doing with this Google scale technology when you could just be keeping it simple and getting on with building your application?
Yeah, there's a few gurus that say that people sort of, you know, will it scale?
Will it scale?
Well, how big do you want to go, mate?
Like, there's about 1.5 million horses in Australia on 2016 figures.
There's about 10, 15 million horses in America.
That's not a lot of rows.
Like, you know, you get every horse in America, you know, and then you get every horse in America.
That's big enough.
And you're starting to think, well, maybe I should, you know, handle scale.
So, yeah, I'm not hugely worried at this point.
And what will happen is that 1.5 will start to go to 2.5 and then 5 and 10 and up to 50.
And then I'll go, okay, you know, now I need to start thinking about adding a couple more meg of CPU, you know.
So, yeah, I'm happy with the server side render.
I render as much as I can on the server side.
And, yeah, it seems to work really, really well.
So, yeah, it's really quite a fast site.
I think that misconception, you know, where does that come from, especially for people who are newer in their careers?
I think it's a combination of many tools are built by big companies for big company problems, right, Angular React.
Yes.
And then also who's out there talking about it?
It's them.
People at big companies who have the time to talk and not work because they're in a monopoly.
And so they're preaching about the things they struggle with.
But, yeah, it's not what 99.9% of places do struggle with.
Yeah.
Do you really need to be able to handle a million hits a second?
No.
It's a good interview question.
Yeah, I just I just wanted to ask mention on on assets. I'm actually glad I was playing around with white noise yesterday because I'm doing some docs for a hosting service. And Jacob Kaplan Moss has a great talk. I actually saw in person at PyCon 2019 called Assets in Django Without Losing Your Hair, where he basically says you can just put it in the file system almost until forever. Like he did all these tests. I mean, like, yeah, you can white noise and just get bigger, bigger, bigger, bigger, bigger.
But you really don't need to.
And I love, too, he also said that's the part he hates the most is, like, static and media files.
Because it's not that tricky to just do white noise and Django storages on an S3 bucket or whatever.
But you also stick it in the file system.
Maybe not, I mean, media files, you know, but I guess unless you get hacked.
Yeah, I'm limited to 100 meg on my video uploads.
So I've said to my users, look, it's, you know, 10-second videos, 15-second videos you can upload.
And if someone wants more, ask me.
And I haven't been asked yet because that's when I'd look at a third-party video
because they're big files.
Yeah.
There's all those different encodings and stuff.
And that's when I'd look at a third party to handle the video upload.
But for now, I just stick them on the file system
and just check the gigs left every week.
make sure someone hasn't gone right i'm gonna upload them all
i think there's a good test a good litmus test for for like you're running you're running a site
and you just need to upload a pdf so that someone can download it how how easy is it for me to just
stick this pdf online and get a link to it and if you're using the file system on your vps you just
stick it in your media file there's your link it's you know already set up to serve it yeah
whereas if you're on some platform as a service or whatever it's like oh no i actually have no way
of uploading it so i've got to find some way of sticking it in yeah i'm gonna use an api
yeah i think i think it's a good like you know simplicity test yeah but anyway we have it works
for now yeah go on it works for now is what i'm saying we had adam from django unicorn
and just last week or last episode right so there's your opening andy come on yeah okay so
i did a lot of work in laravel in my last job they were a laravel house and um
one of the cool things that came out of using laravel was this thing called live wire and i
said i'm sure there's something like this in in django i just couldn't find it and eventually i
found unicorn i went yeah this is basically it it's in its early stages at that point i think
It's up to about 0.8 or 0.9 now, but I think I got onto it about 0.3.
And it was very, very close to Livewire.
So what it is, is it creates AJAX pages, but does all the JavaScript for you.
And it ends up that your view becomes very, very simple.
And then anytime any variable in the view changes, it does an AJAX request to the HTML page and updates it.
So it is a bit like HTMX, but you're not passing templates back and forth.
You're just changing variables in your view, and your template is updating automatically.
And you can do much the same things.
So one of the things for HTMX is to check if usernames are unique.
Well, that's trivial in Unicorn as well.
In fact, I like the project so much,
I'm actually a Patreon of Django Unicorn.
So I think 10, 12 bucks a month I send to him.
And I just want to say one thing.
There's different ways to support open source software.
So there's obviously contribute, upload your code.
You can do the documentation.
You can, you know, do what I'm doing,
which is send some money to them monthly.
You can be an advocate for them.
So there's all these different ways.
So if you're like me where you're a little bit too nervous or embarrassed to actually commit to the Django repo itself, know that there are other ways such as sending money or just simply being an advocate on Twitter or the socials for it.
But yeah, Django Unicorn is great.
I've looked at HTMX.
I think that's valid as well.
Unicorn sits better with me.
Sometimes you just pick text because it,
a technology because it just works for how you think
and works for your brain.
I'd love Adam to get some funding
to work on image uploading.
And I've chatted to him and said,
oh, we're going to get a Python grant for you, mate.
Or a Django grant somehow to get image uploading
working in Django Unicorn.
But otherwise I use it in production.
If you go to my website, horserecords.info, click on tools.
There's a foaling date calculator and you can just put in a date that you say, pretend that your mare was served and it'll tell you roughly when the foal is due based on gestation times.
And simply what it does is it's a date and you add 340 days if you're in Southern Hemisphere, 342 days if you're in the Northern Hemisphere.
No, that's just because one of the good Lord's greatest jokes about horses is no one knows the exact gestation time.
So, yeah, I asked a vet in Texas, who's one of my clients, what's the gestation time in the US?
She said, oh, 342 days.
Yeah, definitely.
And of course, here in Australia, it's 340.
And there's one breed that's some weird number.
So, yeah, I don't know.
But yeah, so it looks like an AJAX-y page, but the actual code is really, really simple.
You just get the date from the form, add 340 days and say, you know, due date is this.
And it does all the JavaScript back and forth.
You don't touch JavaScript or see any of it.
But the point with that is that the actual request that does the calculation that comes
back to the server, renders the HTML, sends that back, which gets put in the page.
Is that right?
That's correct.
Yeah, I think Django Unicorn does that.
They call it hydration or something.
Anyway, there's some word for it.
It knows what to replace.
It does the template for you where HTMX, you kind of say here's the template, I believe.
I think that's right.
So, yeah, it works fine.
It's really quite good.
Yeah.
Okay.
I mean, Adam, when I asked him, well, what's the sort of big difference between HTMX and Django Unicorn?
And he was like, Django Unicorn is slightly better integrated with Django.
It's like it knows more about Django.
It knows Django, yeah.
Yeah, exactly.
So, well, HTMX is a JavaScript basically, yeah.
I'm still thinking about what you said about grants
because that's something that on the Django Software Foundation board
we sometimes think about if, you know,
why would we try to raise more money?
It'd be nice to do Django grants.
Or even Python, like we have this issue with, yeah, I can say this, with Django Girls events, where a lot of times they'll submit both to Python and to Django.
And both of us have money set aside to sponsor conferences, but the vetting is difficult.
And so one thing we've been trying, I think we're hoping to work on is to ask the organizers of Django Girls to say, you know, if we put aside X amount of money, can you vet it for us?
But then that sort of like trickle-down ownership for volunteers on volunteers.
But there are these like motherships that have funding, but it can be hard to give it away.
Yeah, and there's a lot of people.
But, you know, grants – and there's a lot of people who want it.
And, you know, it's like if you give to one, is that – but there's got to be something better than Kickstarters.
And there's some work we're going to do on corporate sponsors.
I would like to – and actually DjangoCon US is coming up.
So I'd like to, you know, if we had more money, how do people think we should spend it?
Because we could get more money, but we're not going to get it if we don't know where it's going.
Don't have a plan.
Yeah, and if you look at something like Laravel, which is, you know, this is my opinion, and once again, feel free to, people will probably reply to this one.
Laravel makes PHP good.
A lot of the weirdness of PHP, Laravel writes wrapper functions that do things like make it always haystack needle, where PHP arguments are sometimes needle haystack, sometimes they're haystack needle.
Who knows?
Sometimes it's underscores between the words.
Sometimes they're jammed together for your function calls.
Who knows?
Which is part of the organic growth of PHP.
But Laravel sort of wraps that nicely and hides some of that away for the punters.
But Laravel makes quite a bit of money.
The disadvantage with Laravel, for example, is, you know, they've got a benevolent, you know, the owner.
What's his name?
Can't remember.
Taylor something, yeah.
brilliant engineer very talented man um and he's made money in laravel and good on him and but you
know he is laravel sort of there's a limit there there's there's an issue there the fact that he
could go evil or he could take laravel in a way that you don't want to take your software where
with django we don't have that problem of that kind of django being taken the other way because
you can go right well i'm gonna push a pull request up and hope that carlton or marius
apply it but lara finds makes money
lara bill is making a bit of coin one of the ways they're doing well he i mean he just posted
an instagram photo of his orange lambo in front of his house and you know good on him if someone's
gonna make money it should be it should be something like that but you know he's and they've
got a number.
There's not a
Django Lambo.
No, no, just
the one that we
drive.
But Laravel
has a bunch
of tools that
it makes money
off.
Well, there's
two, I think,
right?
There's the
hosting is the
big one, and
then there's the
starter.
There's that
starter kit, yeah.
But maybe there's
more, but I know
those two, and
especially the
hosting.
Yeah, there
a few trickling around the edges, like there's sort of, we provide a basic one for free if
you want the paid one, which has got all the bells and whistles. So that might be an option
for the Django Foundation is to have some of these tools to make some money. Now what
those tools would be, I don't know, but throw it out there. Let better minds than me work
on it what do you think carlton i think i've spoken about i'm thinking i mean i think it's
difficult um for django itself because of the way that the sf is structured and whatnot um i think
there are a few starter kits uh i know will you've got a starter template jeff's jeff triplets just
um published one he just tweeted about it yeah we had him on cory cory yep yeah he's doing pretty
reasonably well with that i think yeah good yeah so i mean so the pegasus product is is paid and
he you know he's doing okay with it and that's that's great then there's room for you know i
didn't there's room for your package to be monetized well maybe i don't know but it's
it's open source it's difficult how to make money with it i don't know i'm working on button which
you know it's been part of carlton's guys lambo ordered 10 years from now but i don't want to
i don't i don't want a lambo what i want is just you know if it can make some money that's great
but what i really want is to not see people driving themselves down rabbit holes building
silly thing so if i can package that up that's great but for the dsf to do it it's kind of like
but the dsf just isn't this set up like a business owned by a person no it's a charity it's a non-profit
and how is it that django gets to be 17 years old and is all like it's almost like we're at
the verge of another golden age with all the changes that are happening and all the things
that are coming out the usage you know we've just had 600 people at django corn europe it's like
masses of interest and masses of usage would that be would that have been the case if
Django had been a commercial enterprise monetizing itself from from the go I'm not sure because
how did the trouble is if you've got a dictator how do you move from one dictator to the next
succession is always a problem whereas if you've got a community-based project there's life around
but i think i think it would be nice to see projects around the sort of django core being
able to make money i think there's been a kind of you know a reticence for that to happen in
the community um i don't know this seems to come up every episode no it's just a there's just a
therapy session we talk about consulting for carlton and all you guys who got your bingo code
you have to take a shot now dsf for me yeah okay but okay so why does it come up it comes up
because um the problem of open source is sustainability yes right so when i was coming
into it some of my absolute heroes from the early days of the framework they were busy
publicly melting down because they'd had such a hard time oh really well yeah but the whole there's
this idea that brajango is the meat grinder and you need fresh meat for the meat grinder and it
you know people just get wiped out by it and it was like this isn't sustainable and the fellowship
program which is that the one kind of sort of monetized bit in Django it's probably the reason
Django still exists I agree it was able to take on paid work that made the unsustainable work
sustainable and so it really is a big question like Will's work how do we make sure that people
like Will are able to continue to produce quality content and make sure that it's remunerated in a
way that is realistic and you know I saw a comment on Twitter about Will oh why don't you do free
tutorials and you know add to the docs and it's like because it's a job and because will has a
family and he has like to feed them well i think it's crazy isn't it well it's it's it's less that
no i mean it's that i mean whatever that's just i'm used to that at this point but it's it's more
so like the the dsf board specifically like anna who's been the president does a lot and has done
a lot unpaid largely invisible and it's healthy to have recycling but there's a reason why the
board the board cycles and there's all these other areas translation teams docs you know
most people are doing it pretty in much invisible yes and so you know and carlton's great about this
when it becomes too much people step away you know if you were paid maybe people could stay longer
um i don't know how healthy that would be but um anyways yeah at some point the formation of the
dsf will need to be changed it seems to work now but there's all these i mean it's all for a full
circle before i was on the board i was like why don't they do all these things and now that i'm
on the board i'm like well this is why uh and it's because it's it's a handful of people who
we meet once once a month and they do a lot of things but trying not to take on more is why it's
sustainable right like why don't we pull in a dozen third-party packages that are essentially
part of core well then who's going to maintain them carlton marius like yeah you know no
yeah if anything you know kicking things out of their heart kicking things out i mean but
well since we're diverging all over the place i'm curious to ask you andy i've been
talking to people there's gonna be a state of django panel coming up at django con us
and one thing for me on the technical side carlton's mentioned is like the start project
command there's like there's such a gulf between local and production uh yeah deployment it would
mean more more batteries you know what would what what are your thoughts on that do you think
there's a way to have like start project dash production and what would that look like yeah
Yeah, well, deployment's the big thing, isn't it?
That's the sticking point I had with Django.
Remember, I come from the days of PHP where you just upload files via FTP.
Carlton, too.
I'll sink in a can of beer, mate.
Yeah, that's right.
Done.
Yeah, look, the way that Laravel Forge does it
and the way that Carlton is doing it with Button,
I would hope is the way to do it.
What you really want to do is,
I don't have a problem logging into the,
so I don't have a problem logging into the server
and doing a Git pull and then changing your branch
and then running, you know, make migrations,
collect static, and then gunicorn restart.
I don't think that's a burden,
but getting to that point of being able to just use
your Git repo as you sort of upload the new files,
that's the hard bit and tools like button and you know laravel forge and the other language
they do that they get you to that very quickly without making it hard and i think if you could
get to that point you would find that a lot of programmers would sort of you know yeah a lot
of programmers would would find that appealing because they don't have to worry about they don't
want to program is devops when i started devops and programming with the same thing now devops
is specialized because everything's expanded you have to specialize specialization leads to
interdependence i'm dependent on someone with devops but i don't want to learn devops i just
want to code there's enough problems there i don't want to not have to know a million linux
bash commands to get my site set up so if someone took that devops part away from me so that i could
just run a git command and and then obviously a few make migrations and stuff that would be
brilliant that would be where i would want to be well we've we mentioned this i think i think in
the episode with adam that comes out tomorrow um but like um eric mathis is working on this
django simple deploy tool yes try to standardize this i mean i think i was actually talking with
jeff triplett about this yesterday about because i'm again i'm writing the docs for a hosting
company i was like trying to make it really simple and it's really hard to make it simple
versus just saying this works trust me but like so let me ask you set multiple settings files or
environment variables i think django because django environ i think should be pulled into core
so this is the question yeah should we i mean there's also there's a couple of them i mean i
like environs django but yeah one of them if you if start project came with built-in environment
variables yes just for like debug allowed host secret key csrf trusted origins i would get ignore
file solve yep get well get ignore and then if there was something if static like why don't we
have static root and static files ders just set up and if you throw in gunicorn and while we're
at it make startup have a urls.py file i think that hits a lot of it yeah and um yeah i would
agree i would agree with that i when i went with larva when you set something up it automatically
does the dot env file with django it doesn't you have to create that you have to know to create
that and then you have to create it this is kind of why i'm here people pay me is for this stuff
but i would rather teach other stuff you know like because it's like there's just it's so much
This is so rude to say.
Stuff.
I agree.
You shouldn't have to say the horse is the head is this end, the tail is that end.
But it's one more thing to pull into Django itself, back to what we were saying initially.
Then we're picking a third-party environment variables package, and we're picking environment variables over multiple settings files.
We could just code our own.
Then we've got four.
No, but there's a hot take here, which is this, is that we can't bring this stuff in because every time it gets suggested, and it does get suggested quite frequently, there's a massive outcry.
And we have this thing called the API Stability Policy, which you all love because that means when you type pip install-u django and it upgrades and your site continues to work, it works because of the API Stability Policy, right?
But it also means that we can't make changes unless there's a consensus to change.
And when you come to topics like this, there's no consensus.
Everyone will go, oh, yeah, we could make the START project a little bit better.
And then you say, well, how about this?
And then there's four voices that say no.
And they say, well, what about this?
And there's four voices that say no.
And there's any concrete change, it's not possible to get in.
I say not possible.
We need a dictator now.
Well, this is where the dictator comes, the benefit of the dictator is.
They just say, we're doing it this way, and then you're like, yeah.
Right.
So the way forward here, though, is to just create, like, do it your way
or do it one way and just say, this is mine, and just live with that
and be happy with that and get some people who are also yours away.
Look, there's 400 people all advocating for Andy's way of doing stuff.
Which is the best way, yeah.
But let's merge that.
And there's more of a chance.
It gets really difficult to pick out exactly what the change is that's possible to merge with the various competing issues that come in.
Because even like Enviz, we all agree you shouldn't hard-code secrets in your settings.
Yes, yes, yes.
We all agree that.
It's all very bad.
Don't do it, kiddies.
But there are like, if you do a survey of it, there are about 17 just Django packages on how you load environment variables.
Because everyone's got a different take on it.
And everyone's really quite committed to the take that they've got.
I've got a package with the Django variable in the settings file.
Don't talk about it.
Well, I think one sort of baby step that I liked with SecretKey is, you know, now going back, I think, one or two versions, it'll say Django Insecure in the name being like, hey, you really, really need to change this.
Yeah, that's good.
And, you know, we do have in the docs and elsewhere, but, like, something like that for a loud host, debug, CSRF, trusted origins would be something.
It's not a solution.
But I find with SecretKey, I found that was helpful because it, like, really beats people over the head with it.
So what you mentioned, Django Simple Deploy, one thing I want to do for that is create a plugin for Button.
So there's a pre-step for Button, which is get your project ready for Button.
You have to have these environment variables ready to take the environment variables that are given to you.
If I can automate that as a plugin for Django Simple Deploy, I'm going to do that because I think it's a great project and it can just go automate all and it's ready to go for Button.
Well, one last thing on these platform hosting companies, because I was doing this yesterday.
So Heroku is based on Git, so you'd have a Git ignore and you would Git push just as you do to GitHub or GitLab or whatever.
Yeah, that's what I use in my stuff, yeah.
Is what, Git?
Yeah, I just do a Git pull to get the latest branches and then, yeah.
Yeah, so the newer hosting companies, like Fly.io in particular, but many of the others, it's all containerized, it's all Docker stuff.
They don't use Git, so you need—they don't—so they don't respect—
Another thing I'm going to learn, Lou.
Well, you just run a, you know, fly deploy or whatever, you know, command.
Ah, yep, yep, yep.
And so you need a Docker ignore file that says ignore the Git repo.
Otherwise, you're going to toss all your Git stuff up on there.
It doesn't automatically look for the Git ignore because it's not Git first.
It's basically Docker first.
So that's going to trip up a lot of people.
Yeah.
But I guess that's why I get paid, right, to write stuff like that.
That's right.
If our job was easy, we wouldn't have one.
Yeah.
Yeah.
But anyways, we were talking about Git.
It's a little bit of a mind shift for me, too.
It's like, huh.
So then it's like, okay, well, so if you're writing the docs for a button or something else or for this company, it's like, okay, well, I want to tell people to have a Git ignore file because that's a good practice.
But it's not really related to this.
It's kind of like you should know that, but it's not their fault that people don't know how to do that.
So where do people go for that, you know?
I mean, they come to me, but, like, you know, should the Django docs have that stuff?
It's like it's not really a Django problem.
It's like a web problem.
It's however the hosting company is doing it, and their doco is extensive, but they're trying to cover every case.
Yeah, and Git, I mean, universities don't teach Git in any way I've seen.
You know, people don't know how to do a professional pull request.
people don't even know how to check out a branch on a board like you know the you know cs students
who you know they can invert a binary tree on a whiteboard no problem but they can't they can't
pull out a branch from a remote i've been coding for 23 years and yeah i don't know how to invert
a binary tree you turn the whiteboard upside down i'd probably just i'd probably just go
Python.invert.
Yeah, exactly.
Import interview.
Yeah, that's it, right?
Yeah, it's...
Okay.
Go on, Carlton.
No, I wasn't there.
I wanted to ask about your...
So back to horse records.
So you have an API that people can access.
Can you talk about building that, how it's being used,
what you want to add in the future?
Inside horse records, if you're on a paid plan,
it gives you access to an API.
which is a DRF API.
They got a token and they can access all the horses they're allowed to access.
At the moment, it's just a read-only API.
The idea is that they'd have their own website.
They'd pull the data from horse records and show it on their site.
So if they've got a, we call them studs in Australia.
You would call them ranches or farms.
We call them fellows.
Fellows.
Yes.
So, Carlton's not smiling.
That's okay.
He is a beautiful man up close.
It's great.
Oh, thank you, Ed.
Sorry, continue.
So, yeah.
So, you might have a site for your stud where you say, here's all my beautiful mares and my stallions and my foals.
Please buy them.
And you can just basically do simple get requests to the API.
I say to people, look, please put some caching layer in.
you know but but yeah my next major job is to get that really cranking for our own site it's
i have to do breeding at the moment uh breeding i'm working with one of the largest ai studs
in australia to get a breeding platform working um and then after that i'll be getting the api
beyond just, hey, it exists,
to something that really, really pumps.
So that'll be some more endpoints
and some permissions and stuff.
It won't have patch back at this point.
I would want to talk to someone
who's going to use that before I implement it
because I want to know what they're patching
and why aren't they just logging into Horse Records
and doing it.
If it's another API wanting to talk,
that's something different.
But yes, so there is an API in there
For the guys who want to use it, yeah, it's all pretty cool.
You can update your token whenever you like, et cetera.
I want to ask about you won or came second in some award.
You got the final of some award about this.
Because you told me this story, and I'm like, wow,
that's such a good advert for everything that we do.
Tell us about it.
So a few months ago, there was the Innovation Awards, the iAwards,
And in South Australia and Northern Territory, which is sort of the two states in the middle of Australia, I was a finalist in the technology section of these iAwards.
And I came second in the end.
But I was the only solo developer there.
In all the different awards, there was about five awards, two in each.
I was the only single bloke there.
And the one that beat me, by the way, was converting a phone call into text for entry into the census.
So, you know, I don't know exactly how many programmers they had, but at least 20.
And, you know, AWS, huge budget, blah, blah, blah.
And there's me going, oh, you know, horses, man.
And there was another company that deals with forestry all over the world, the Forestry Supply Chain.
There was another company working on the cost of insurance for houses all through America and Europe.
And, yeah, I was certainly in a good company.
Yeah, and it was amazing to just come second to something, you know,
so competitive.
And, well, just well done for that.
Congratulations.
Thank you, mate.
You know, did you not feel like Thor against the Hordes when it's you
as a one-man Django developer taking on these tactics?
Yeah, I so wanted to be pulled up on stage for them to go,
no, no, you can call the rest of your team up.
no it was it was a really good night um yeah and i was i was really happy to get that award
um and uh yeah i sent out a press release to a whole bunch of papers and i got featured in quite
a few and i also got featured in a horse uh website in new zealand for it um even though
it was an australian award so well done new zealand um by the way i'm at the process of
talking to new zealand horse associations to begin exporting to their i mean you know any kiwi can
register their horse on horse records because it's a sass online but to talk to those formal
associations and get a formal relationship so um similar to what i have here so in south australia
northern territory every retired racehorse goes through horse records so when um when a horse
retires from racing as in around the track they get a rug they get a 500 food voucher and they
get entry into horse records so that the racing association says hey we've provided you that with
all the tools for you to give the best care for your horse all the ethical care you know everything
we can and when i call up these customers and i say oh good i'm andy from horse records
like 90 of the time the first thing they say is let me tell you about my boy and i go your boy
apache sunrise you know he won a few races oh he's got such a big personality oh my god he's
looking at me now and they they were wax lyrical for 10 minutes about how much they love their
horse um and it's really nice to hear and you're thinking yeah these horses are going to be some of
the best treated happiest animals and i go oh by the way in horse records if you sell them
you can transfer the records to the new owner oh i'd never sell my boy um he's he's here for life
it's so great to hear that because you hear all those stories of x-ray sources being
treated poorly it's not the case the vast vast majority are treated beautifully so yeah
can i ask about payments are you what are you using for payments yeah do you implement that
yeah i'm using stripe um that'd been pretty good a lot of the developer type questions though you
need to find out for yourself uh their customer service is very much what you see on the dashboard
is what you get don't ask some questions why something is something you got to find out
um are you using a third-party package or you just implemented the latest i did look at dj stripe
um right that's the big one yeah the document was lacking in it documentation was lacking in a key
part um and then i looked at they got a big grant from stripe i was oh did they like well struck
Because Stripe has money, so I'm pretty sure that they got quite a nice grant.
Yeah, I just do it raw with the Python Stripe library.
Carlton as well, I think, right?
You're doing...
Yeah.
Well, I use their hosted portal stuff, which is all great.
Their console is great.
It's very easy to implement, and people can update their card details and things like that.
It's super.
I recently found that their payment receipts aren't sort of EU tax compliant.
And their invoices API, which is, doesn't integrate with their payments API, which isn't.
And so you can't create an invoice from a payment.
Anyway, so I've got to sort that out.
There's always wiggles.
That's why there's those, yeah, there's those like what tax jar.
There's all these like third party ones.
The new tax stuff in Stripe is brilliant and it works.
And it allocates the right tax depending on where people are and depending on where you're registered.
And it does all of that brilliantly.
It just doesn't create the invoices that, like the receipt they send to the customer isn't good enough.
It hasn't got the right details on it.
So you then have to create another one.
Okay, fine.
You know, but compared to what it was two years ago, when I first looked into it for Button, I was like, I'm going to have to implement the tax myself.
And that's a whole different thing because, you know, EU tax is not simple.
No.
So now that Stripe do all that for you, it's like, okay, yeah, this is really quite manageable.
Yeah, I use the console too.
I find that really great.
The risk I'm at at the moment is that I'm just using one payment processor.
If they decide to turn the switch off, I'm in real trouble.
Yes.
But that's a phase two problem.
I'm in phase one, which is just expanding the business, getting it out there, getting it self-sustaining.
And phase two is doing things like, you know, reducing risk across the business and exporting to other things.
And phase three is to go into things like pet records, dog records, greyhound records.
Yeah, yeah, yeah, okay.
World domination.
So, yeah, I'll be covered in gold chain soon and driving a yellow Ferrari.
Fantastic.
i will i'll just say on the um payment thing i think it's um you know like once you've got
revenues coming in at a certain scale i think to go to your bank and pay their gateway fees is
perfectly reasonable but when you're starting up and you're at zero to go to your bank and it's
like oh it's like you know quite big charges to begin quite monthly charges quite high percent
it's like no i'm not doing any of that and i i used to at one point i was working very closely
in the payment space i actually had plugins written for wordpress and um woocommerce and a
few others uh in for a particular payment gateway and yes the banks really want to know your volume
and then they can give you a price if you just say i'm just starting up you won't get a good price
so yeah well this is in australia anyway so no i think it's the same as stripe stripe two stripe
two will change your rates based on your volume yes yeah um i'm not at that stage yet but one day
i hope that they're calling me yeah yeah well i know we're coming up on time there are two
questions i wanted to ask carlton you may have others one is function-based views you you have
thoughts yes i'm a big proponent of function-based views i started uh when i started i coded in
uh class-based views because i thought oh well they're newer they must be more correct
and as time went on i just found i was writing more and more methods to do
these class-based views and the thing is class-based views are good for vanilla but almost
nothing i do is vanilla there's always something so for example with a horse i have to link it to
the stud they're in or the ranch or whatever so anytime doing anything on a horse i have to link
this and there's not a straightforward way to do it in class-based views you have to code it
And then I saw that brilliant, brilliant article that said, I think we know the one.
Yes, that just says, yeah, it's okay to use function-based views.
And it felt like he'd solidified in writing what I was afraid to say.
So now I always reach for function-based views right from the beginning.
I'd never do class-based views because I know exactly what variables I've got in scope.
I know where they've come from, and I know what's happening.
And you actually write less lines of code usually for anything beyond a really vanilla instance.
And I will die on this hill, Will.
Well, that's okay.
So I was going to ask what your longest function-based view was,
But I think maybe a better question is, at what point do you move the logic elsewhere?
Like, are there any examples you can think of where you can move it to the model or manager?
How do you think about that?
As I'm getting more and more experience with Django, I'm putting more and more in the model.
So, yeah, when I first started, even though, like, I've been coding for 20 years.
I've been doing, you know, MVC for, which is Model View Controller,
which is, Model View Controller is what it's called traditionally in Django.
It's basically Model View Template.
Just the names are different.
That's just for the listeners who are thinking, who don't know what MVC is.
And, you know, I always knew, you know, skinny views, fat models.
And when I was learning Django, I tended to just, you know, sort of sway towards fatter views.
And now I'm swaying back and doing less and less.
And it's more and more in the models.
And it's more useful because you can use the same code multiple times.
It's only written once.
But, yeah, it's more of a discipline to do that.
At what point do you do it?
Basically, when I think it's going to be needed twice, needed more than once,
I go, okay, I'll just flip this to the model.
is a fairly good rule of thumb.
You know, you've got to be gentle on yourself.
Sometimes it just doesn't happen
and you're too busy solving the problem
and, you know, you've got so many balls in the air,
you just write something down to get it to work.
But yeah, if you get a chance,
do put it in the model if you can.
Oh, and use the property.
Would you agree with that, Carlton?
Yeah, I mean, yeah, at a high level, yeah, I would.
um i think i realize i was thinking about this in the shower like i use forms in a way that i don't
necessarily see a lot of people using forms and i should perhaps write up i use like i really have
quite a strict um uh validation layer that sits between so the view will interact normally in my
in my life with the form um and it will rarely interact with the the model layer directly
and so i put a lot of business logic in that in the form validate and save in the form yeah because
i don't necessarily view it as part of the model layer but it's the same idea it's that same
breaking it up quite up when i'm you know if you sit down and you know you're just trying to write
some stuff yeah bang it all in the view just stick it all in the view yeah and the reason why
i'll use a class-based view not necessarily the the built-in class-based views but just a class-based
view is because it gives me a name space to break up the logic you know i've got i've got oh yeah
this is this is do this thing so i can put that in a method i can call it and pass in the parameters
and that kind of stuff um but stick it all in the view and then factor it out yes one thing i i one
thing i do to let me use the form is say for instance you've got to associate the um the the
horse with the stud yeah with the with the ranch yeah the place it lives with the ranch i will the
form i'll give it an init keyword arg that takes the ranch so you instantiate the form with with
the that's what i've been doing yes and then and then in save you're able to um make these make
that association and so the view it just goes if form valid form save and it gets back the instant
save but it didn't see anything about that that interaction logic but you could do that as a
you could do that you know i haven't been using the form save in forms that's maybe something i
can look at i sort of do it in the view but yes i'd see where you're coming from that's better
yeah i should put it in the form in the form safe thing yep but you know it's just i'm gentle on
myself yeah i know you know yeah one thing i used to do was compare myself to the best
so i'd go on twitter and i'd see the best and people pulling out amazing things people like
simon williamson that guy's productive as anything and everything he does is just
you start comparing yourself to simon you're in trouble and i was like yeah i'm never gonna be
like this guy i love what he does i love his approach and i'm just like i don't understand
half of this um but then i realized that uh someone contacted me uh and i realized he was
comparing himself to me i'm like oh god and that really realized that yeah that you know you only
ever sort of see the the the best parts of people you don't sort of uh there's there's words for it
but basically i stopped needing to compare myself to the best um and i think that every programmer
while they can admire the work of the best and learn from it don't beat yourself up because
you're not as good as someone who's been in the game 10 years less than you um and knows more
that that's okay you know there's reasons and it's all right so yeah just i guess to the
the younger coders just be gentle on yourself um yeah yeah i think it's also if you look at
success in terms of financial or size or other things so much of it is
luck, of course, but, but pointing, walking the right direction. Like there are people who
can run really fast. Often they don't ever pull their head up and look around for where they want
to go. So they're just running in circles. Whereas if you just horse records or whatever,
like have a thing and can apply a modicum, a modicum of ability and talent to something
that's underserved, that's always going to be someone running fast in a circle. And if you're
too in love with your tools you never you know like because pure engineers don't really care
what the product is they just want to hack cool tech and that's great but that's that's different
than building a business that's different than having an impact that's different than having a
popular third-party package where you find out hey the code is like 10 of it and 90 of it is
marketing and docs and going on podcasts and all these things and having the relationships required
for success i think so i think it's just how you define it was it you will who said um i think it
was you in one of the earlier podcasts of Django chat, you said, look, I don't know how to invert
a binary tree, but I can create a whole website. I can create the front, the marketing, I can do
the admin area, the backend, I can link up payments and I'm going to have it selling a product.
And, but I can't invert a binary tree. So I think that was you, but if it was, it really.
It sounds like something I would say, I can invert a binary tree, but, but yeah,
The point is, it doesn't matter.
It was awesome to say that sometimes the whole product is valuable.
And that really inspired me at the time.
And I realized that I'm that kind of guy.
I don't know the intricacies of Django down to reading the source code and questioning what they're doing.
But I can build a site from beginning to end, which is a skill in itself.
And that's okay, too.
I think you need a reason to poke at the source code.
Like, I like the analogy of chefs and farmers, right?
Yes.
I mean, Carlton's a bit of both, but most of us, myself included, are chefs.
Like, I just, you know, pull things off the rack and combine them.
I'm not growing seeds.
I'm not working on core Django itself, really.
And most people aren't, but there's a skill to both.
And it's a temperament thing, too.
Some people are way more comfortable on digging super, super deep.
But is that what you should be working on?
Like, I don't know.
It's hard to know.
Yeah.
I did a blog post where I have dug into Django Q and found out how to do something that's not documented.
I was quite proud of that one.
Put that up there.
Put that out there to the team.
Yeah.
I think, do we feature that in the newsletter?
I think we've had some of your stuff.
If not, I don't know.
I'll go check.
If not, we would.
I don't know.
We might have.
I think I have.
Wow.
I did not know that.
I must have missed that.
Well, I don't know if I did.
I think I recall seeing that and I meant to.
So if I didn't, I will.
Oh, then I know I made it.
Listen, guys, we could be going on forever here,
but we're really coming up for time.
Andy, is there anything else you'd like to cover
that we haven't touched on thus far?
This is your window.
I'm really happy to talk to any horse people about horse records.
So if there's people out there in Django Chat land
who've got horses and want to have a look at horse records
and have a bit of a chat, happy to do that.
We can do it via, you know, Facebook or whatever.
Happy to have a chat.
But, yeah, I think I covered everything.
I wanted to talk about work-life balance,
and I'm glad we got to talk about that.
That's really important to me.
Well, did we?
Well, we said be gentle on yourself, mate.
Yeah, okay, fine.
Yeah, yeah, yeah, fine.
Okay.
Well, as you may know, that's how Carlton and I got connected.
He has a beautiful talk on the topic and at a certain point in your life, in career, it resonates.
Everybody should listen to that because, yeah, you've got to look after yourself effectively.
It's that five years median age thing or median experience thing, right?
Yeah, that's right.
You're going to go beyond that.
You've got to look after yourself.
You've got to look after yourself.
Yep.
Yeah, and things come up and, you know, management always want more out of you.
There's always more points in the sprint they can get out of you.
But you need to know to look after yourself.
So the reason being, you need sustainability.
You need to be able to keep going.
You can't just have these crunches all the time.
So, yeah, I could go on.
Well, next time.
Next time we have you on.
Next time.
And we'll do philosophy next time too.
Yeah, okay.
We'd have to start a new podcast.
Right.
Andy, thanks very much for coming on
and well done with Horse Radicals
and keep, and well done, you know,
I enjoy seeing you on Twitter all the time
and it's lovely to chat with you about it.
Thanks, Carlton.
Thanks, Will.
It was great.
Thank you all.
We're Chat Jango, Jango Chat,
Chat Jango on Twitter,
jangochat.com.
Join us next time.
Bye-bye.