← Back to Show Notes

Transcript: Two Scoops of Django - Daniel Feldroy

Hello and welcome to another episode of Django Chat, a weekly podcast on the Django Web Framework.

I'm Will Vincent, joined by Carlton Gibson. Hi, Carlton.

Hello, Will.

And we're very pleased this week to have Daniel Feldroy, author of Two Scoops of Django, Django Crash Course, and many other packages in the Django community. Welcome.

Thank you for having me.

Thank you for coming on.

So I think a lot of people who listen to this podcast already know who you are, but for those who don't, what's your quick background, how you got into Python Django, and then we'll talk about all the various hats you wear in the community.

Okay, sure. So I was born as Daniel Greenfeld. And then when I got married to my wife, Audrey, I became Audrey Roy Greenfeld. I adopted her family name as my own just because it seemed like the right thing to do. So just clearing that up right away.

a little bit about me i grew up on the east coast uh i spent most of my life uh nearby

washington dc either north or south of it in maryland and virginia and uh i got into python

started to get into it in late 2005 although i had the chance to go work for the zoop corporation

when guido van rossum was there around 2000 except for it was about two hours away in blacksburg

virginia and and it was you know back oh virginia tech right yeah and back then um python was like

no one knew what python was it was all java java java so they called me in for an interview i was

like well two hours to go for this obscure thing i've never heard of it sounds pretty interesting

thing but you know i didn't have a car just getting down there for the interview was like

going to be a challenge so i not so intelligently didn't go work with guido van rossum and paul

everett and all these other like personal heroes of mine that i'd love to have been mentored by

oh well yeah not one of my better decisions uh however that's a sliding doors moment

well and actually i think um jacob kaplan moss is in blacksburg right now oh really as we speak

wow yeah his wife is doing veterinary school there so there's lots of python django connections to

that part of the world yeah absolutely uh so in so i i programmed for you know a number of years

um starting the late 90s i'm old and uh uh in 2000 at the beginning of 2000 actually the end

of 2004 i had the job interview of my life and like the best job interview and i landed a job

at nasa and um at that point i was doing java and i i really didn't like it nothing against java but

strong typing often just drives me nuts and so uh um i i've discovered when i started working

there that oh wow cold fusion is is pretty awesome because it's you know it's cold fusion

uh because you know it this loose typing is so wonderful and for those who don't know cold

fusion's typing is not that far off from like javascript or php it's very loose you can combine

objects without there's not too much casting too too many problems when it comes to casting

and of course but i wasn't happy either with call fusion i was thinking well maybe

programming isn't for me and in the summer while i was there i met this guy named chris shenton

and he said, oh, let me show you this thing called SVN and track, which is based off of

a language called Python. You should also consider learning Python. And what happened then was a few

months after that, I finally had a little bit of free time. So I was like, oh, I'm going to

download this Python thing and try it out. And I was like, wow, this is awesome. It checks

all the things that i really really like about you know programming and i wasn't doing web stuff

at this time or if i did it was just like little bits and pieces so then a few months after i

started to play with python i was on this project where we're using java and at that point um the

java naming directory index jindy i think it is uh which is how you connect to ldap and x500

uh are those things used anymore i guess they are they are okay but uh uh it it could not connect

to another nasa agent another nasa centers uh x500 database because they had um rolled their

own cert their own ssl cert okay okay which you know you you're you know back then you're warned

don't do this and this was actually been not even for actually it wasn't for ldap it wasn't for x500

it was for microsoft active directory and so they had rolled their own cert and um jindy couldn't

handle it and we needed to connect to this it was part of this project and we were we were running

up to our schedule and we were trying to figure out you know how can we make jindy work with it

and then crescenton said hey i got it working with python and so then we created this little

bridge script between java and python you know to try to make them talk together and that

wasn't going so well we worked on this for i worked on this for months and i saw a deadline

coming up and then one day it's like why don't i just rewrite this whole application in python

and mind you like building the application in the first place in java this is enterprise java back

in the day java is quite a bit different now um it taken us taken me weeks to put it together

and yeah 90 minutes after i said hey let's get this working i had it working right so 90 minutes

and so i was like oh my god the productivity boost of this is incredible so it's not like

cold fusion which i don't know about now but back then it was very limited and java which just

wasn't working um this just it worked and it and the speed difference because of what we were doing

was pretty inconsequential so at that point i was i was totally sold and uh crescento was like yeah

i got another one because he was the only one who liked python at our nasa center which was

headquarters and so then but the thing is it wasn't really accepted because it wasn't one of

the the big three languages that we use which were java cold fusion and uh anything in the

microsoft stack so then this is my favorite part so we we started using it surreptitiously we

called ourselves the python underground well we had there's nobody noticed the dot py no yeah uh

so um we started using it surreptitiously and we found that all these project managers who had all

these little scripts and actions that they needed to do um you know found out that chris and i were

the two people who could get these little scripts and uh done for them these little like we'd come

up with python executables i forget the name of the tool that we use that would work on windows

you know and uh we we would put it on their desktop and then they would point that at

spreadsheet data for example and it would um like uh pull you know it'd collate the data as they

need it or it'd hit the x500 or ldap or um active directory systems that we're often interacting

with and grab their data and clean it up so rather than ask someone to do it and set up this

big project where they have to go get funding they just go to chris and i and say hey can you

can you do this because it wasn't the accepted language there's it would have been almost

impossible to get clearance and yeah over the course of about a year that that that reluctance

to use python change actually took several years but within about a year we we got on to an active

project and it was a clone project clone is a older cms and python it's the precursor to

django and a flask in that whole environment uh or that whole those ecosystems and um that is kind

of my story how i got on board with python that's really cool that's really cool so we were i like

the way you go ahead i like you like oh and you know i had it working in 90 minutes like it was

my experience coming to python similar and i'd be like i'll try writing this in python and

you know no matter how complicated it was it was always like just 150 lines and you know

fit in a single file and it was like this is nice yeah yeah uh so that's that's my story of learning

python and then with django several years in we were um you know we had launched a clone site we

had a public clone site which might actually it got converted to django and then we um for for

the project that I built in 90 minutes originally I wanted to serve out the data using Django but

because Django wasn't at 1.0 in fact none of the Python web application servers were at 1.0

I wasn't allowed to use it so we hid like we made the mistake of talking to managers about the

version numbers of the application frameworks that we're using and since none of them are 1.0

we couldn't use any python web application server this is a very different time when if your

software didn't have like version 3 or version 5 you you couldn't sell and i know there are

still places like this so what happened then is we didn't tell them that web.py

was below version one we just didn't give them a version so my first application was built with

uh web.py but a few years later we were going to build a nasa social network

that we were going to call spacebook and we decided we decided that we're going to use

um django for it and uh because then there's a suite of tools called pinax that was out there

and so we built it on um django and pinax and that was spacebook uh the the problem there is that we

were competing with several other at least one other nasa social networking tool and someone

chosen enterprise java one and this is like 2009 era java so it's not modern java java's really

changed as a language and also the whole i i don't know if ejbs and all that stuff still exists so it

was the the application that one was not the popular one it was the one that where they had

the pull with management um right but nobody ever got fired for using java right um no i don't think

so probably not uh nowadays you can say that about python which is exciting yeah and django

yeah yeah i mean i i still like the story of when i was flying back from pycon last year the woman

next to me was i was had you know the the gear and she worked at a government defense contractor

that used java and i said oh are you switching to python because it's better and she's like no we

just can't hire anyone under 40 so they're switching as she said just for higher ability

for recruiting reasons wow that's and then that's so awesome yeah i was like well that's that's a

change and then also i i asked her you'll appreciate this you know i was like oh well you

know have you heard of django she's like yeah i've heard of that i think people use that i was like

oh you know how would someone learn that and she said oh and she pulled up you know corporate

subscriptions to o'reilly uh you know the big three what is it um you know so she pulled down

it's so it's safari um linda.com and plural site and she said yeah here's 60 courses um and i was

like but how do you know which ones are good she was like so that kind of broke my heart but i was

happy about the python thing anyways digression yeah well i mean at least there's 60 courses with

django that she can find quickly yeah it was something it was some huge number and um you know

it was a good insight into the corporate realm of like oh well we need training for this like

here you go and um in a large company's hr makes that decision and they want to you know they'd

rather write one big check than lots of smaller ones and give autonomy to employees to make those

decisions um yeah that's yeah we've we've danced around the subject of um doing um o'reilly's

safari for years and um we we might do it this year we'll see um yeah i mean i'm not slamming

those those platforms there's i think they make they can make a lot of sense and there's fantastic

content on there um it's if you're in the indie bucket which you and i are right it's a little

it's you have a different perspective on it but i totally get how for large companies they don't

want to i i wish they would just say here's a budget for your employees you know x number of

dollars for professional development but aside from github i think almost no one does that instead

it's here's the corporate account for for whatever yeah um well one the part i guess my issue with it

isn't so much the platform it's having to go through o'reilly i i'm trying to convince um

um bill pollock of no starch press which is awesome awesome company um i i think i'm gonna

go and try and convince them hey can you can can you talk to riley about this because i don't want

to try and go through that process again we tried actually last time and it was just they started to

make us jump through hoops and it's like we're we're indie authors why are we having to jump

through hoops so um it was kind of weird do you all right do you work with no starch i thought

you were self-published no we're we're we're thinking of going and asking bill of no starch

to um to be like hey can you can you represent us with a riley we'll figure out some way to make it

worth their while yeah well i mean i agree no starch seems to be at the very top of technical

book um publishers and certainly there's a lot we pay the best of of the i believe they do they pay

the best in royalty rates in royalty rates yeah yeah well they're public about it you can go and

look it up yeah um which i that's that's why i'm pretty certain that they're the they're the best

ones just because you can find the royalty rates and then they're they're pretty high yeah well it

is true i mean we don't i'm sure you and i could talk about the you know the issues with self

publishing i don't think people really care about that but there's a lot that goes into it so it's

certainly often a appealing idea to have someone else team up and handle distribution and all of

it because i think so maybe we can segue to um to two scoops of jango so when did um because i

remember i think because you and audrey were hand um mailing those back in the day maybe can you

talk to how you you both came to to write that book and do all that sure so uh let's step back

time to 2012 and we weren't married yet uh we were engaged um and we were running this consultancy

called cartwheel web and we were also doing a lot of open source work and community work uh that was

the year that um she and six other women founded pie ladies uh and and this is in los angeles uh

And so we had work coming in, but the work often was, hey, fix our Django project, which the consultants, the people that we hired, started to work on and left.

And so it was like these rescue projects.

That was almost all of our work.

and our new work coming in trying to get people to actually pay was really really hard so where

the money was was coming from was these rescue projects and again and again we saw the same

mistakes where the people started projects and then just through in you know just through not

knowing how to build applications in Django, they made design and architectural mistakes

that made it really hard to finish their projects. And so what would happen is you'd have people who

would, you know, the entrepreneurs or investors would scrape together what money they could give

to a developer who just because they they they didn't know how to finish the application they

would get bogged down and then they would quit out of desperation we saw this pattern again and again

so after the um and the these projects were exhausting to work on if you've done software

work and you come into like just a horribly engineered project it's it's it's draining

it's not fun and we prefer building new things it's horrible to um it's not horrible it's

difficult to keep it working whilst you'd make the changes right yeah so you're constantly up

against you know this barrier where you're like you can't break it but you need to move all these

bits around here and how can you pull that apart and that kind of mental exercise is just

ah exhausting yeah and then a lot of times of people who would hire us to do this their budget

was nearly blown so they they wouldn't they would be struggling to pay us and they would pay um and

then for these new projects um just you know we we couldn't get paid like we do some work and then

they would stop paying us which put us into a financial bind after i remember this one day

where um we went and we talked to this company who um they decided to go with someone else and

they told us who they were instead of us this is for a new project and it was someone who we had

rescued two projects from in the past and and this is on the los angeles area and i was just like oh

my god like you know we're gonna end up picking up their leaving again i was so angry and so i was

like i'm tired of these rescue projects i'm tired of you know uh these people coming to us who are

now broke saying can you fix our project i'm tired of um these engineers saying oh this is why we

should be using rails and um and so i was really angry and i started to and and i went to um i was

hanging out with randall dags he's a friend of mine some other people at a the local django group

in in los angeles and on the way back randall had just released this book called heroku hacker's

which is yeah i bought that book yeah and we we stopped to get something to eat and it was at um

an ice cream place and because i was like i'm just gonna get ice cream because not on the diet but i

didn't care and uh because i was angry and we were talking and and somehow the discussion evolved to

you should write a book about django if you're running into all these same problems again and

again you you know this you've worked with core django developers uh uh you should you know write

a book about it so i was like oh okay i'll write a book so i started writing two scoops of django

actually it was originally called real world django out of anger i was so just there and uh

uh so i i was like okay i'll be like randall i'll write it in a weekend because he wrote

heroku hacker's guide in a weekend it's a smaller book than two scoops of django

and django is a bigger topic than heroku so the book kept growing and growing and worse i kept

getting stuck and so i'd look to my fiancee audrey and i'd say can you help me with this i'm stuck

and so she'd help me out or she would rewrite a section and then after about the fifth or sixth

time I was like why don't you become my co-author and she said I would but you're you're too angry

I don't want to have my name associated with something that's angry you have to make it happy

and funny and I was like that's so weird and so I was like okay we'll we'll we'll make it happy

and then she's like all right well we need to have a good topic for writing code examples for

because you know these code examples that you have like they're just switch topics all over

the place i want to have a consistent topic yeah and so we brainstormed and then we came up with

ice cream and uh because you know that was once a week i broke my diet and we would go get ice cream

and uh we noodled you know we brainstormed some names after that and eventually we settled

on the silliest name we could come up with which was two scoops of django because there's two of us

scoops ice cream django it it kind of all worked uh so that's that's the story the name of two

scoops of django i didn't know that started yeah can i ask what started in anger well you have um

i do want to stick on two scoops but in jingo crash course your new book you have a lot of

cookie examples were you i was curious where those came about you mean cheese examples oh cheese wait

yeah cheese yes you're i've i'm only the beginning part but you're um it seems like there's a cheese

theme running through it yes and i love cheese i've never had a cheese i didn't like so i approve

so we've i guess we have a fixation on dairy products and for the listeners out there we

do want to say we recognize you can make cheese and ice cream out of non-dairy products and we've

had some really good ones so we we don't want to disparage uh cheat you know non-dairy versions

of these things at all uh so we we really like cheese and um on our trips we we that you know

We've had the chance to travel a bit for work.

Whenever we go someplace, we try two things.

One is ice cream, just because every place does it slightly different.

And the other one is cheese.

There's pretty much every culture in the world, at least that we visit, that has cheese.

And if they don't have cheese, they're working on it.

For example, we discovered the last time we were in the Philippines that there is in the highlands that's up in the mountains where the temperature is cooler, there's a growing blue cheese movement that they have, that their livestock, that their goats and sheep and stuff like that, that they have up in the mountains where it doesn't get warmer than 65 degrees any time in the year.

they have these herds of sheep and goats now that they are cultivating cheese and it's it's pretty

good i mean we tried in early 2015 it actually was shockingly good so um yeah so anywhere on

the planet now is getting into cheese and can i just ask um i think did you and audrey meet at a

pycon conference right isn't that yes yes we did yes we met at pycon us 2010 in atlanta and i met

in james bennett he's a old-time core jenga developer he was running he's on the board

he's on the board um we met at the end of a jango tutorial that he was teaching there

And yes, I was sitting next to someone who Audrey recognized

And so Audrey came up and said, are you so-and-so to that person?

And then I turned and I was like, oh my god

Yeah, so for me it was nearly love at first sight

But it was a professional event, so I was respectful

But that's where we met

Awesome. I think I'd heard that or you had mentioned to me. I love that a little bit.

But so Two Scoops, so you were just at the point where she was going to join as the co-author once

you adopted the ice cream theme to make it happier. Yes. So yeah, so she joined and she

has written over half of it. So I am the vocal one. I'm the one you tend to see on social media,

But she is the power behind the scenes.

And not to say that I'm stupid, but she's smarter.

Carlton and I have a similar dynamic, so I'm familiar with it.

Yeah.

And when the first edition was a few weeks out from being delivered, she stopped writing one day and started doodling.

And I'm like, what are you doing?

And she says, I'm doodling and I'm drawing.

And I'm like, but we have like so much more to do.

And money was getting tight because we weren't working.

Working on that book is a full-time effort in any edition.

And I'm like, but we have to get this done.

And she's like, if I don't do this, the book isn't going to sell.

And I'm like, I thought she was crazy.

And she started – Audrey is a visual amongst other things.

She's a visual artist.

She does sculpture.

She just does painting.

And here she's doing these cartoony-style doodles.

And, you know, she kept showing them to me, and they're these cute little goofy drawings.

And I'm like, what are you doing?

And so she said, people need a break because even though we're trying to make it funny, you know, technical material is dry content.

We need to break it up with humor.

And so I was like, fine.

And so I humored her.

I'll admit that.

But then once we started putting it into the pages, it started to make more sense.

And that is where, you know, she started to do those, you know, those illustrations in the book.

And we know that makes a difference because people send us screenshots of those from around the world.

So, I'm pretty happy she did it.

And, yeah.

It was super.

I wanted to ask, what was the first edition?

Because I was looking through my Gumroad the other day and I saw in my library a 1.5.

That is it.

It was for 1.5.

And, you know, we had this funny thought that we would do a new edition with every release of Django.

Yeah, why not?

Why not? It's easy, right?

We can just put out a new book every six months.

And the scope of work involved in updating this particular book is outrageous because it's not – well, one, updating tutorial books is hard.

william will i'm sure can talk for hours about that yes i try not to but yes um uh with two

skips of django it is harder because we have to refute everything in the book it's would refute

be the right word uh but we have to double check everything in the book and so every package every

every statement everything that was a fact at the time a current edition was released

it's just so much work so yeah it's a big jenga puzzle is how i describe it to people you think

one little thing but but you do that you do something quite hard as well which is you

recommend packages third-party packages from the ecosystem and that's brave yeah you know

yeah let's i do it too but very reluctantly and i always get hammered for it the same way as

Whenever I show how to do something on Heroku or SendGrid or Stripe, inevitably they change it faster than Django changes.

Yeah, and also there are people who want to have their package featured in your place.

Yes, yeah.

And so sometimes you just, you know, it's why we will often explain why we chose something.

But yeah, we've certainly made our share of people become our enemies in the past.

And the thing is, is we have one, we have to be a bit opinionated because that's part of what the book is, because that is actually it's not number one.

It is the fact we have to be opinionated because people will base serious business decisions that affect not just a company, but whether or not they get paid based off of what we put in our book.

So we have a responsibility to our readers.

And if we make some enemies, I'm so sorry.

And maybe we don't always handle that gracefully.

We try to, but yeah, it's a hard one.

So I remember reading your choices and I remember being like, yeah, great, great, brilliant, brilliant, brilliant.

But those packages coming out of date and to remake those choices each edition is like,

You have to verify that this is still the best option.

Yeah, yeah.

And it's easy to get colored by your friends.

And so if a friend has a package that they maintain

or that they just believe in,

it's like, okay, we just can't.

Yeah, it's tricky.

Well, in a minor way,

I have this issue with Awesome Django repo.

two years old now that only has it has like a fraction of the stars of cookie cutter but it has

i think almost 2 000 stars and it's largely a curated list of third-party packages but i you

know everything you said like i'm starting to really feel it right where people to put in pull

requests and sometimes i know them and a lot of times it's like well if it doesn't have a lot of

stars and or i haven't used it and i always say like this is just my opinion and like it's not

meant to be canonical that's that's kind of what i like about two scoops though is that you and

audrey tried and i think basically succeeded in saying you know as we write this book this these

are best practices in the community because people want to know those and you know maybe there's in

total agreement but largely there is and someone needs to kind of say it and have the expertise to

back it up i would say yeah i i've wondered about those awesome django um lists how how those are

maintained well they're not yeah so there was one before and then i think two years three years ago

and then with the problem i mean what always happens is they just blow it out of control

and you get endless prs and you just go oh stuff it um and so my way of dealing so there was so

my way of dealing it is i just i try to be very public on like i'm just gonna look at this

periodically and it's my choices um but it's you know it's unpaid right so at some point you're

like i don't need the negativity here yeah and yet there is a value in curating things right but

then but you constantly it's i mean usually it's helpful people do pr saying you know jenga rest

off switch to dj rest off hosted by jazz band and all this stuff but it's it just becomes a lot and

it's like a lot so and then there's the personal stuff right if i feel bad rejecting things that

from people i know or just in general but there has to be some sort of baseline

on it otherwise what's the point so that's what happens that's i think that's that's what i see

with awesome repos they blowed out people get tired of it they stop maintaining it and then

someone forks it and that becomes a new one and then it repeats every three to five years yeah

right but at this point at this point we have to bring up um the project for which i first came to

know of you danny which was jango packages oh yeah it's haven't you got exactly the same so

So Django Packages is a great site where you can go and browse.

You need something for auth, it'll show you the packages, how many stars they've got.

I mean, how did you manage the same problem there, keeping that updated?

People just submit or user-generated?

People submit because it started in a hackathon called, it no longer exists, called Django Dash,

which is run by Daniel Linsley,

there were some early design decisions

made on no sleep

that make it a bit harder to maintain.

And then there've been some pull requests accepted

that shouldn't have been accepted.

We got better at that.

So it's a hard project to maintain.

And at this point, Audrey and I

we're pretty much stepped away from it.

We've tried to hand it off,

um, several times, uh, for various reasons, some of them related to us, some of them relate to

other people that's never really worked. Um, so we, we have a few trusted volunteers working

on the source code. Uh, the primary one right now is a guy named Vaibhav Jain, who's in India. He's

awesome. Um, but, uh, main, you know, yeah, it's, it's a critical project and, uh, I don't know.

I can't remember. What's the question I'm on like no sleep. Well, just like how did you, so the,

the, why create that if you just talked about the challenges around third-party packages?

Yeah. I mean, I'm keeping the lists up to date of what are the third-party packages,

you know, cause we start with two scoops of Django and then the same issue is,

with the Ortham Django repos, and then it's Django Packages.

How do we keep a list curated?

Right. Django Packages is a mix of curated data

maintained by the users of the system.

So if you're listening to this and you have opinions about Django Packages,

you can enter your own data there.

But it also pulls stuff like GitHub stars and PyPI downloads.

I think it still grabs that.

I'm pretty sure that data is available.

So it grabs a mix of hard and soft data.

um so that way people can make a an informed decision and we don't let people uh and there

are constraints like there's administrative tools that we visit so we find junk data on there we

strip it out and we block users and if um like listeners quite often say oh how do i get involved

in these kind because there's django packages django snippets which has got a new maintainer

now and you know there's other other um kind of sites in the community which are built with django

people if people want to get involved can they do that can they become a a trusted contributor

i mean obviously you have to build the trust but yeah you have to build the trust um for us um

we because we do not visit django packages what usually too often um basically when vibe or one

of the other people who currently work on it ask us to get involved that's when we get involved

but what i suggest if if you want to get into these projects um uh you know it can start with

triaging issues uh or submitting pull requests and then once um uh once the people are currently

working on these projects get to know you and you can build that trust then perhaps you can get

core maintainer rights. It is not a quick process. And with popular projects, even if they started

out relatively simple or beginner-friendly, Django packages started out pretty beginner-friendly.

It is old enough now that it is not beginner-friendly. Like if you're just starting

Django, there's enough weird things in Django packages that it's probably not the project for.

you need to have a solid grounding in in django and python to be able to contribute um so i hope

that explains that question i'm not coming across too sleepy or amped on coffee no no no okay no

you're too fine well related to mature packages i want to ask about both cookie cutter and then

django cookie cutter or cookie cutter django do i have that backwards i'm i feel slightly dyslexic

that's okay people get lacking sleep people switch that one all the time okay so cookie cutter um

audrey started that one um she uh wanted a she actually was working on static site generators

and um she wanted to be able to she came up with one but the boiler plate that was required to get

working was a bit much so she decided to come up with a template manager for it and that that

prompted the creation of cookie cutter and then for some reason she she got fixated on several

things one was she only wanted she didn't want to have any classes in the project those any that

exist in the code there were added like defined classes were added after she pulled away to do

other things um and then she also wanted it to work on every operating system uh so that windows

users were first class users and thanks to paul moore um go ahead i was gonna say that's very

prescient yeah because now you know when python support on windows in the last few years has just

you know blown you know gone on leaps and bounds it's now a great place to do python yeah um

we have stories about that um so thanks to paul moore who's an awesome guy he helped that out in

the early days um it got to a point where cookie cutter worked on windows windows was a first class

language um there's still pull requests for linux specific or osx specific features and um those are

rejected just because we we can't um uh so and then i wrote a blog post about it and she

you know she i was like hey audrey can you give me an image for a blog post and then she threw

together the current logo in 10 minutes and she's like this is a placeholder and of course

these horribly talented people i know yeah and so coming up on seven years later it's still the

same logo uh so um yeah so the the project has done really well um it's you know we know of all

these companies who exist to use them some you know internally or um if you are downloading

their command line interface tool a cookie they're actually using cookie cutter um that's how they

render out templates that's pretty common and um the um and they pay us the uh that we actually

make money off of it and it's not enough to go to a fast food restaurant every month but you know

all these companies um who these billion dollar companies they certainly do do pay us and we're

we're very happy that um i think we're up to 12 now a month so we're living large is that github

sponsors actually i don't you don't have github sponsors um we've been slowly working on that

we're we're yeah um uh we're not it's funny people say wow you're good at marketing yourselves like

yeah but we're not good at getting paid from our marketing so um we kind of we're kind of

we're kind of cynical that we'll make any money from github actions we certainly haven't with

patreon or other open collective or other things that we've done in the past yeah well i just as

an aside i mean we django uh added github sponsors the end of last year and obviously there's a

attention using an intermediary versus doing it direct but it's so far has been a good experience

so oh awesome well we the the thing is is audrey and i are not you know we only get involved in

cookie cutter periodically and in a lot of our open source packages just because the honest truth

is is when you go for so long without getting paid it's hard to continue to work on stuff so

We've let other people take over maintainership

who are getting paid by their jobs

to maintain these packages.

And that's really an economic decision.

And while GitHub Actions might make it possible now...

Sponsors, right?

Because Actions is the...

Oh, sorry, GitHub Sponsors, yeah.

They might make it more possible now

where we're involved in other things now.

Yeah, it's always a priorities thing.

Yeah.

But speaking of passing the baton on there,

we should quickly talk about crispy forms because you were one of the um creators of crispy forms

all the creators of crispy forms yeah i am the creator of it um i was at nasa uh i guess we're

going back there and we for space book the you know this jaguar project that got killed at lunch

so we had 80 forms that needed to be made accessible to users with disabilities um it's

it's a u.s law that we have to you know u.s federal government projects have to follow um section 508

which is for accessibility for people of vision or various vision disabilities in in this case for

the web. And fixing 80 forms to work that way seemed like too much. So I created Django template

tag, and I made it as an open source package. That was, you know, I threw that together,

and then it grew organically from there. Eventually, you know, with the consulting

work that i had it was uh too much for me to maintain that by myself so um i i got on another

person to work on it and at that point um the library that we were using the accessibility

library was unmaintained um it was like this html and css library called uniform so we decided to

change the name and call it crispy forms audrey suggested that um she never i don't think she

ever contributed that much to it but she gave it the current name and so that is um and eventually

we decided to move it to its own organization it just makes it easier for people to set up

you know continuous integration and other things like that if you're or to maintain those things

i'm not i'm not being called in so yeah that's the story of django crispy forms yeah so what well but

i like so i took that over like so oh you're in charge of that now well well i'm well this is the

great story of open sources right you you began it miguel was there for a long time and then

around the time of 1.8 it was it was falling over 1.8 was due to be released and crispy forms wasn't

going to be compatible so i was using it and i'm like well you know i'll jump in and i i took it

over and kept it going and you know we added bootstrap 4 slowly with you know because i was

doing it and you know it took a while for that to mature and that's quite mature now and then

recently i was i've been struggling to maintain it what with the django work and this framework

and django filter and you know working on trying to work on channels as well and crispy forms wasn't

getting loved so i last year i put out a sort of call for help i said look you know if you're using

crispy forms we could do it two or three people turn turn up and do it and now it's got a brand

new maintainer new release and there's going to be another template pack for tailwind um which is

the new css package is everyone raving about and so crispy forms is as healthy as it's been in

in years and it's you know it's like this long continuous past the baton thing and i imagine

the people who've just stepped in they'll run it for you i'm still there i'm sort of

offering advice when i can but they're running it they're releasing it the recent release was

the first one that i haven't pushed out in four years if someone else did it and it was like

they're all grown up carlton yeah it's it's when that happens it's like yeah someone else has

picked up the door he's like but it's my baby and uh but it's like so it's so good because it's like

yeah the baton moves on and you know and then and as i say there's now there's now a few contributors

working on it and it's like yeah that's perfect yeah that's that's so wonderful there you go

that's a feel-good open source story right yeah too often it's the negatives yeah this i've tried

to to stay positive in this um no that's the issue with open source is one person can't give

hours and hours of volunteer time just in like without end right and it is without end and so

you do your you do your season and then you need to step back and if you if you don't come with the

expectation that you'll do a bit and then step back that's when you get burnout and all the

real big problems that you know we've seen so many times in the community yeah i think tom christie

has really um shown how to handle this because i think um you know with jangara's framework i know

he's involved there but he's he has um one he's i think he's getting continuous funding that

supports him and his family but also he's gone and built other stuff like starlet so i really

respect what he's done and i've at times i've thought maybe i'll i'll copy that um you know

that's we'll see i uh you know uh he he started with um a jenga rest framework which is a critical

package so that that certainly worked for him yeah yeah yeah i yeah i was waiting for you to

add something Carlton I mean on I mean I know it's it's it's the perennial problem right even he

has some struggles with that but I think just as a developer having that mix of a stable package

that's widely used and then he has his I mean he's rebuilding the whole python stack async style and

doing incredible stuff with starlet and a whole bunch of other things so just as a creator right

he's not endlessly updating yeah old django books right speaking of burnout yeah um i did want to

i know we're going over on time of course i want to ask about cookie cutter django and then

your um uh the updates to two scoops and then django crash course so whatever order you want

to tackle those okay so all right so i'll try and cover that quickly cookie cutter django or django

cookie cutter um they're you know uh it is it's still out there it's still being maintained uh

it is there's a day when it was all about bleeding django now it's all about super stable django

um so the maintainers you know they'll they'll get around to supporting django 3 at some point

um but they have to make sure every package that they are relying on works with django 3

and um and that's that's a bit challenging and and periodically when they come to me to say hey

this is you know we're having trouble keeping this portion of it working and i'm like is is

maintaining another version of linux out of scope like try always try to reduce the scope

um because cookie cutter django is so broad um and in fact when we started to

convert django crash course to be a book rather than a course we um originally we're going to do

it in django crash sorry in cookie cutter django but um one that wasn't ready for django 3 and 2

it was so broad like the this since i've pulled a bit back um it's gotten really broad which is

hard on the maintainers it's also hard on the users so um that is why jenga crash course doesn't

use cookie cutter jenga we just needed something with a narrow scope these are the tools that we're

using can i ask why you recommend anaconda in the book because um virtual environments are the bane

of professional and beginner python developers um but anaconda was an interesting choice so i'd love

to hear your reasoning on that um it's to support primarily the windows users um uh not too long ago

i the the computer that i'm talking on uh was bricked for several weeks and so i i started

to use windows and trying to get binaries to work with virtual env was nightmarish and i had people

say oh just use docker and it's like but i i don't want to use docker for everything well and

docker had a windows specific bug recently that my users were reporting so even docker on windows

you know it doesn't save you so by using conda and chocolaty chocolaty is like the homebrew of uh

or homebrew of windows i know there's a competing package but chocolaty for me was awesome

but conda also let me get past um all of the binary issues i just stopped having to worry

about it and i know that conda has some things that experienced users don't like and honestly

um and i think we might mention in the book if not it's it's on our to-do list

we mentioned if you want to use a different tool chain go ahead um uh you you know for you

that portion of the book you don't need to care about the use of conda is for um for example data

scientists who are already using conda um because conda is so prevalent there because conda makes

installing of the data science packages trivial on windows makes installing um uh the yeah tons

of libraries are much easier to install on windows using it and nothing against pip or poetry or

these other tools but they are not um their focus is not making it easy for people to run binaries

on windows yeah i was amazed like just open lift up my visor a little bit and look out because i'm

busy on windows using pip and vm no problem and then realize that there's this whole world of

folks out there that aren't necessarily in the web django world but are using conda and you know

it's very popular and they're like, well, what's a VM?

And do I have, why do I need a VM?

Or if they use PyCharm, which handles virtual environments

or, well, and even, so Miniconda,

if you wanna use a Chromebook, I recommend that approach.

Like I have a tutorial on that

because Chromebooks are starting to give access

to just straight Linux and using, did I say mini?

micro conda is the easiest way oh wow so on the install python3.com site which i run uh you can

the linux part recommends that because that's a big thing is that chromebooks are ubiquitous but

still it's hack city to actually write code on them unfortunately you can do it but installing

python is non-trivial and but you can yeah it would be nice if there was a sub thousand dollar

machine you could do code on yeah especially it's called a raspberry pi

well everyone just uses replit and stuff instead so that's how they get around it

for students anyways yeah i mean especially um and the thing is students often don't have

access to the funds that us professionals have so they are working on whatever machines are

hand-me-downs that they can get and they're often working in really disadvantageous circumstances so

the use of conda is focused for them another problem with having docker on a windows machine

and maybe this isn't so much the case now maybe it is is that for them docker is you know it uses

up a lot of processes conda is just on a mac too lightweight yeah like someone just someone just

bought a new macbook and they're like yeah 16 gigs of ram i'll never fill it and i was like

are you using docker because that'll take up eight easy yeah or they're they just have slow

bandwidth and so um whereas and and docker using docker is oh my you have to be on fast bandwidth

yeah because you're putting these 500 megabyte containers or gigabyte containers all the time

yeah well python is python standard library is a 700 megabyte image last i checked for example um

but you install it once so that's true no on docker you might install it multiple times so

yeah so that's that's another reason why we decide not to go with docker having

worked with people in lots of different countries or just in the rural us which

for the most part doesn't have broad bay and internet um you know yeah no i mean my my my

most recent book rec uses docker jenga for professionals trying to avoid this problem of

being specific to mac windows linux but it's i i mean i may switch that out in an update um because

it is it's you know it's a beast but it's still there's i still struggle to have the oh you're

on this machine boom this is the way to get going the reality is all the pros i know do it slightly

differently and we all kind of struggle through it once and go great i'm not touching that for

years but that doesn't help the beginner right even for me like if i have i got a new computer

and i was like oh god i'm gonna have to like install everything again like it took me like a

week yeah because i was like i'm gonna do it from scratch just to go through it and it's still just

like oh my god so but it's it's hard to tell a beginner i don't know how you're gonna get through

this and you're gonna learn about path variables but when you join us on the other side you can

just wave your hands about it yeah um so yeah i mean we've we've gotten heat from people who

don't like condo for various reasons i think it's mostly religious it's not they don't have a really

solid reason um or they don't like the fact that they might have to activate something i mean

um but again the if you have a strong opinion about it that's probably because you're you've

already have your own preferences and you can just skip that version and use your own environment

preferences and maybe if we have an admonition about it we just need to reinforce it and say

if you want to use poetry or pip and virtual env go go right ahead and do it yeah yeah um so you

do you have any questions about the upcoming release of two scoops of django yeah so that's

the one thing we haven't really talked about you're updating it right yeah so um uh there's

some exciting stuff um we're finally adding a chapter on graphql um which is awesome we prefer

that over rest so we're so excited by this oh okay well that's gonna stir up conversations

the community oh no yeah cool i'm gonna in a good way in a good way um uh so yeah we we've got a

graphql chapter um we also we used to have a chapter called consuming rest apis and we're

converting that to be really about java javascript from the django perspective um which is yeah um

trying to reinforce that if you are doing Django,

you should really get up to speed with modern JavaScript,

especially because even, and it's not just the front end,

it's also compiling assets.

I'm going to, here, I'm going to set off a firestorm.

There is no better static asset manager for compressing stuff

than what you get from the Node.js community.

sorry django compressor i know that you are carlton won't take that personally

no no i'm just gonna say yeah well i help out but no what's um what's the thing with compressor is

you shell out to um you know oh you do whatever webpack or whatever or post css so so compressor

is actually a wrapper around this and you know i've been using it for years and i do and so

i've gone i've used react in it i've used webpack i'm using post css currently i'm using you know

and never do i have to change the django bit i just add a little compressor script change the

mead mime type it's awesome so but it's exactly that is it it defers to okay whatever other tool

you want so clearly it's been a long time since i've looked at some of the source code

because i remember back in the day we had tools that but you know where python was doing the

minification um oh yeah you there are python libraries available for things like css min and

but why would you use those like yeah okay so i guess i'm not setting off a firestorm except for

my own ignorance um but the the the point is though is that people often equate the front end

with um css and style and and design and nothing and those things are great um even though i suck

at them um but really it is you know having even a basic understanding of modern javascript

is it's so important and so useful it you know for debugging stuff not everything

you know i certainly am tempted to do which is to hide behind the django and the python and the

back-end stuff but um you know that this is one of the the shortcomings i see especially with a lot

of senior Django people that I interact with from time to time they're like oh I don't I don't touch

the front end yeah I mean if you're a professional you don't need to yeah yeah and but what's funny

is these are the same people who will tell you well you have to understand deployment backwards

and forwards because otherwise how do you debug or analyze issues that they will they you know

these people invariably tell you that and it's like look I'm not asking you to become full stack

i i can understand the reluctance there i don't like the term full stack so much but um at least

under you know at least get cognizant it because it'll help you debug stuff i mean no disagreements

here yeah yeah no totally so is it going to be um so the previous versions were at 1.5 1.6 1.8

i believe so 1.11 oh right one point i mean i i have all of them are is this going to be

three three one or three zero what's the because you've you have talked about sticking to lts's

in the past right so we're we are calling this uh 3.x it is covering the entire three series

uh what that means is we will not print it until um uh 3.2 is on the horizon and that way the links

inside the book will go to 3.2 which is long-term support and it also gives us more time to polish

it because um uh as as william knows once you send a book off and then people get a print version

you can't update a print book uh yeah i liked i mean i've i've obviously with with interest

seeing how you've handled crash course where you've had the with all the different alphas and

there's there's something to that because it is yeah there's just so many little things that crop

up and and yet people still i mean so for me like partly i think if i just had everything online

you know i wouldn't have to deal with this stuff but a lot of people still do

want a physical print book um even so even for framework stuff absolutely and i love print books

um so yeah the point of 3.x is so that way we don't have to wait until django 3.2 is around

the corner to get the the book out there for people which means that um so one of the things

that i've seen in a lot of forums and um places is people um starting to adopt um either asking

questions that are answered in our books a lot or in two skips of general a lot or they're starting

to embrace anti-patterns because they just don't know you know it it's one thing to use an anti

pattern if you understand the potential issues with it but if you're recommending it without

any caveats that's dangerous this is where you get into failed projects like you know the django

world is a lot different now in 29 2020 i guess we're in 2020 now than it was in 2012 there's

the tribal you know we you know to to pat our backs we started to capture the tribal knowledge

that is out there for django and we wrote it down and and some of it's gotten into core and then

people have reblogged what they've read in our books um but because it's been long enough with

two scoops of django 1.11 having come out in 2017 and also because of django versioning issues that

i know william and i have talked about um as soon as you come out with something for lts you know

you jump a whole version number for the next jenga release so people will tend to ignore resources so

part of the reason why we've released this for the entire three spread is to fight um the the

lack of knowledge does that make any sense or my um that makes sense i think i mean i'm babbling

i mean i've i've come to try to view the situation with django where it keeps moving forward as a

content creator that's hard to keep up it does winnow the field because very few people will

update their books and if you're not going to update it at least annually it's kind of no point

other than maybe i mean it's a harder thing um so i try to view it as like it's a forced

you know reconsideration on a monthly level of the content um but yeah so i think yeah having

the 3.x and and then waiting till 3.2 to go to print so then you have the what i guess two three

years until 4.2 would come out something like that i know the schedule's online yeah that makes a lot

and basically our determination as to when we go to print is when django 3.2 uh gets documentation

links for us oh so before it comes out but when the links are yeah that is that is our plan um so

since you so that'll be the alpha period so that'll be the you know three months before we

release it do the feature freeze release the alpha um that's that's when you'll get links to

of that version yeah that's when we get it when Django is enough at that point

he skips the Django 3.x will be really solid and we should have a better

understanding of how asynchronous views are gonna be used within the community

which I'm very excited by and so we can really write to that I mean yeah cuz

like the async views nobody knows anything about right now you know we're

gonna see how they're using you know what the patterns what the good patterns

are what you know all of these kind of things so it's been an hour i i didn't get a chance to ask

you about your fiction writing and all that but are there any is there any last things you want

to mention to listeners about about your work um let me think what what about also about my work

um so yeah um uh we are at feldroy we're coming out with not just books but products and one of

the things that we're working on is a tool to write books i could use that so if you want to

write fiction or um or technical books you'll be able to use the platform and we hope to have that

out and ready in the next few months and you'll be able to either work through our interface or use

google docs or connect a git repo we're going to try to do both github and git lab so that is that

is another thing that we're working on and while the front end that people will interact with

may not have any django i assure you the internal tooling has django the just to track jobs um as

doing the build book building process we we needed something and django django's admin tool

was was such a you know win out of the box that we're going with it that's exciting yeah there's

i mean there's open source tools that are quite take quite a bit of wiring um and then i use lean

pub which i believe is the only kind of popular sass ish tool for that but it would be great to

have another option yeah and we've used lean pub in the past and we think that they're awesome

um uh but our focus you know they do they're both a publisher and a book renderer uh and they even

provide their markup language um we're gonna focus entirely on the book generation so for

i believe you could use our system maybe to publish on lean pub um if if that doesn't work

then you can certainly um use our system to create stuff to be sold on sendal or gumroad or

amazon where you know all these different platforms for selling that sounds really exciting

so um i'm trying to think if there's anything else i want to say oh yeah so i'll i'll give you

people who say what you know um people ask me two questions one is um you know what what's how do i

become a writer, like a professional author? And two is how do I get better at code? And I'll give

my two quick answers there. To become a writer, you just have to write. And writing a blog post

is infinitely easier than writing a book. But I wouldn't wish book writing on my enemies.

Not that I have any. But if I did, I wouldn't want to wish book writing. But on the other hand,

it is such a fulfilling process when it gets out the door that um it makes all the agony worthwhile

and then to become a better coder you you just have to code you just have to practice um if

you're not practicing you're just watching tutorials so i think that's exactly right and i

because i came from the the book world before the coding world the challenge i find with improving

coding is that if you want to be a great writer, you need to write, but you also need to learn how

to read and read good stuff. And with code, it can be harder to do that because you have to work a

bit harder to find good code bases. A lot of times they're more advanced. So having a linear

progression, I found, I still find is more challenging than with, you know, fiction or

nonfiction where it's just there for you. It takes a bit more work to find, you know, intermediate

level still best practices code that you can learn from yeah it's it can be hard to find good

intermediate code i agree with you there yeah well thank you so much for coming on we're gonna have

links to everything in the show notes and i i'm currently reading crash course it's great i'm

looking forward to obviously the two scoops i know everyone who listens to this is as well

thank you so much for coming on we have links to everything in the show notes uh what's the

best way if people want to get in touch with you or or audrey about your work do you have a preferred

method uh sure i mean i tend to be more responsive uh via social media um twitter is a good way to

get a hold of me um if you really have to you can use facebook or linkedin email um i get so much

email i will probably there's a good chance i will miss it um so um yeah i just get a lot of

requests and stuff like that sorry everyone um so those are best ways um audrey is a lot less

responsive than i am so often um people who know us well know that often the best way to get a hold

of her is to get a hold of me and it's not like i'm gatekeeping really i'm not it's just that

um she just likes to be she's a very focused person and um just doesn't respond much to things

yeah she's wise i aspire to that well thank you everyone for listening we're as ever at

chat django on twitter django chat.com and we'll see you all next week bye bye join us next time