Transcript: SaaS Pegasus - Cory Zue
Hi, welcome to another episode of Django Chat, a podcast on the Django web framework. I'm
Will Vincent, joined by Carlton Gibson. Hi, Carlton.
Hello, Will.
And this week, we're joined by Corey Zhu, who has a long history with Django, does SAS
Pegasus, works at Tamagi, has a JavaScript series. So we're going to dive into all that.
Welcome, Corey.
Hello. Happy to be here.
Thank you. Thanks for going on.
So maybe we could quickly start. What's your backstory getting into Django? And then we'd
love to talk about these projects and a lot of the modern Django that you you've been doing and
teaching others. Yeah, sure. Um, so, uh, yeah, so I, uh, I studied computer science in, uh,
in university, um, but didn't actually touch Python or Django, uh, until I sort of entered
the workforce and um around maybe uh yeah i don't know when it was maybe like 20 2009 is maybe when
i started using django for the first time do you recall what was the impetus for python and django
was it something work related or was it on on your own sort of projects you you thought it might be a
good solution yeah it was it was work related so um so my company damagi we we do like health care
ish solutions primarily for emerging markets. So we did like a lot of work in, in Africa and
other places. Um, at the time we were doing a lot of.net development, um, and building these actual
like clinical systems, uh, for, uh, health record systems for the country of Zambia was, was the
thing that I was working on a lot. Um, and when we moved to more web applications, uh, we were
kind of evaluating the landscape and we're, we're really torn about, uh, whether to choose Django
or rails, which was the other sort of like popular thing that people were using. And Django was a
little newer and it was a little bit, uh, sort of unproven. Uh, but we had a few people on the team
who were really bullish on it. And, uh, and we're kind of, you know, preaching the Python gospel
and they were like, this is, you know, this is, this is the right decision. And so it was actually
sort of like a relatively snap you know we we debated it for for a few days or maybe a few
weeks but a relatively quick decision that sort of like you know drastically changed the course of
of my professional development i suppose or my career it's nice that django's there in that
story is the new hotness you know because django now is the old stage you know oh well you know
are we going to use xyz no we'll use django but you know yeah yeah now it's the boring technology
but i think web frameworks are a little bit boring these days and just which is a good thing i mean
it's a lot of it is data science and there there hasn't been i mean there's there's fast api there's
there's falcon like there's still some stuff or was it not falcon phoenix been watching that marvel
show um but there's less excitement on uh web frameworks i think in general as opposed to like
python itself and um the ecosystem yeah but in any case i wonder what what are you gonna say
maybe except in the javascript world i feel like things are still i still feel like i have a hard
time keeping up with with you know everything that continues to happen in the javascript world
yeah but that's that's the overwhelming it's still kind of pre-cambrian right
yeah it's true like there's not you're saying there's not sort of like a django of javascript
yet or uh or rails i don't think so i don't think there's a battery i mean it's a whole bunch of
micro frameworks and there's express but i don't think there's a rails django equivalent um at any
no agreed not that i've not that i've found or or at least not one that everybody agrees on yeah
right right well so i wonder how much python because you're you went to mit and you know
being based in boston as i am python seems pretty common here whereas when i was out in san francisco
around 2010 it was all rails all ruby all javascript so i don't know if there's i wonder
how much is python was already kind of embedded in mit i think was one of the first to switch over
to it um for undergraduate teaching it was maybe it was after you left though yeah it was it was
after my time i yourself did the old uh intro cs class and scheme and lisp which uh you know
when they switched to python we were like oh these these guys they they have it yeah
You know, we, we, you know, we, we were the ones walking uphill, you know, to school,
both directions and, and matching our brackets all the time.
And, but, um, but yeah, no, I didn't actually, I mean, I, I learned Python and Django at
the same time.
Uh, and so Django was really my first exposure to Python.
And for a long time, I didn't even really know the difference that well.
Like I didn't know when I was using a Django thing versus, versus using a Python thing
because it was all, it was all new to me.
Um, yeah.
I had a similar experience that, you know, I had the Django book and I was, you know, using that.
And then, but what's this Python?
You know, I mean, what are the deeper bits?
And then there was a book, what was it called?
Pro Django Development or something like that.
And it was awesome because the first chapter was like this kind of, from a Django perspective,
this tour through the Python data model and through descriptors and, you know,
all these bits and bobs of how Python works.
And it's like, ah, yeah, there's Python.
know it's that was a real eye-opener i should i should add that i keep i'm working i'm still
working on the updates to my my django books and that's one of the big things is thinking like
should i should i have a chapter on just the basics that you need for django probably because
i mean you kind of need to know classes and mixins and even if it's a little bit of a flyby just sort
of saying instead of saying like you should know a little bit saying like let me just show you some
stuff and as long as that's good we can continue but otherwise you might want to go brush up on
your python yeah that makes yeah that makes sense to me more work as someone who who learned a lot
on the job and and often kind of followed patterns that i didn't really understand and then sometimes
they got me into trouble i think having that that small amount of foundation to just sort of orient
you is often really useful and and like under underdone sometimes if you're just trying to
trying to ship something or you know get something out the door all right maybe i'll add that chapter
after all, based on this. So Damagi is really interesting. We were talking about this before
he went on the air. So I've visited there for a Django Boston talk. And it's been, I mean,
as you say, it's doing healthcare, but enabling digital healthcare in countries that are using
paper or whatever before. So it's making huge advancements in public health, but it's been
around since 2000, before 2006, right? Because healthcare is kind of hot now, but Damagi has
been there the whole time. Right. So I guess I'm curious, what was that, what was it like in, you
know, 2006, seven. And, um, cause that whole landscape feels very different than what it is
today. Yeah. In a way we were like way, way ahead of our time. And like our founder, one of our
founders, uh, his basically basic idea was, you know, there were these rural health workers in,
you know, in places like India who, uh, who were, he thought that they could have a job aid that
would you know help them uh you know triage patients ask questions do checklists and and
sort of like make make the quality of those care visits better and and serve as like a data
a data system um but at the time like even smartphones didn't really exist uh and and
even sort of like those candy bar nokia phones were like you know not not that common in places
like that and so we we started on this these pdas like like uh if you remember like a palm
toilet type of thing. Uh, and, and anyway, so that was one of the very early projects that we did.
Um, and it, they didn't really work that well, but just because the hardware and the ecosystem
wasn't, uh, up to speed. And then, um, we diverged into doing sort of medical record systems and
stuff in clinics for, for a while. And then sort of once, once the technology landscape had, uh,
had matured enough and the hardware had caught up and, and, uh, feature feature phones, I guess is
what we called them but like those those like old nokia candy bar type phones and then smartphones
came in then it became possible to to really like equip those those rural health workers with a
device that could handle everything that they wanted to do and so that's you know sort of five
to seven years after we started was when we really started seeing uh successful projects and starting
to scale up uh kind of around the world that's really interesting because a lot of the um
infrastructure that we had in you know europe say western europe it's just not there and so
you read a lot about the jump straight to mobile technology in developing countries yeah yeah and
um and connectivity also uh you know is uh as as we'll ask uh is is an issue um there and so we we
built the whole thing to be able to to be fully offline whenever uh whenever you didn't have a
connection, um, and then sort of do sort of like a, like a best effort in synchronization
whenever it, whenever it was able to get data.
And so in the early days, especially, and even today in many parts of the world, it
was common for someone to sort of like, you know, do their use, use their phone, use their
app for, for a week, uh, you know, visit a bunch of patients and then, and then go stand
on top of a Hill, you know, the, the one place within, you know, 10 miles that actually gets
service and sync up all their data and everything else and then, you know, come back and do it for
another week. But so that was certainly a big and continues to be a big design constraint and
a challenge with the applications that we build. So the so I guess so the back end has been Django
from the beginning, but then the front ends switch, you know, switching and the different
local storages, that's obviously changed a lot more as phones have developed. Is that fair to
say yeah that's right um and and uh it's but it's it's actually only really been two big uh well i
guess three there's a there used to be a an old like nokia back end and then there was an android
back end which is the most common one and then and now there's a web version uh which also serves as
like an online only iphone client can i ask about that client because i'm interested in this but
the how do you deal if it's web-based if it's in the browser how do you deal with um storage being
kind of trying because you've got local storage but that kind of gets deleted behind your back
without you really knowing about it or being able to do anything about it yeah the the browser
version is is online only uh so we we assume if you've got a laptop if you've got a browser then
then you've probably got an internet connection and are you um is it postgres like just you know
this is a technical podcast so we can dive in a little deeper than most folks do mostly postgres
these days um we um so so the we we make this product platform called comcare and it's actually
sort of it's an application builder for these mobile apps and so you can you can kind of think
of it like a like a webflow or like a squarespace um but for like mobile applications that that end
up on a phone. Um, and so because our, uh, our users are defining their own schemas, like they
can, you know, they can pick whatever, uh, questions they want to ask. They can, you know,
choose whatever data models, how they want to like update the fields and validation. So it's
basically all of our data is completely schemaless. And again, uh, going back to 2008 or
whenever, when we were first designing and building this thing, um, no SQL was, was all the rage and
postgres json support wasn't really there yet um so we actually uh made probably one of the biggest
technology miss decisions uh probably maybe the biggest one which which ultimately is on my
shoulders but but so a lot of our data was in couch db and and some of it still is in couch db
uh but we are doing our best to move away from couch db and into postgres but that's kind of
sad because couch db was cool like i mean you know it did all the schemeless thing it had the rest api
just sort of just there it you know it did the sync like you know you had couch db which would
work in the browser and would sync to it like which got to suit your use case one would think
like why was it a disaster no it was it was super cool and it worked really well for that sync thing
uh worked really well for um certain types of applications that we built um where it would
just kind of magically handle the syncing for us.
But at scale, it has really become a problem.
I mean, at our current app, I don't
know the numbers off the top of my head, but we've
got order of magnitude hundreds of servers,
including certainly two-digit numbers of database servers.
And at that scale, we've had some issues with CouchDB.
And like when something goes wrong with CouchDB, it's just it's not as easy to sort of fix it and troubleshoot and everything else just because it's, you know, the adoption isn't there.
OK. And so is this is the solution now Postgres? Is that the way you go or do you favor something else?
Pretty much. Yeah. For any sort of structured data.
Got it. So you were at Damagi for quite a while and then 2017, right, you made the leap into self-employment.
Right. You're sort of at a hybrid situation now. But yeah, I'm curious, what was the motivation
for that? And then let's talk about your various projects, because you've been doing the, you know,
out in the wilderness thing for not as long as I have, but almost as long.
I like you've been doing it.
Well, if I'm honest about it, seven, eight years at this point, I mean, I worked at some startups
along the way, but nothing that either got traction or I was an integral part of. So
um yeah the last five years it's been my own show okay nice so um i so i'm sort of like so i i i
said also before we got on you you have a newsletter writing about kind of your journey
and so many of those things resonate with me you know the the up months the down months you know
trying to find reason to equate why sales are up or down and um you know all that rings so true
I find just the highs are higher and the lows are so much lower doing your own thing because
it's just you. Yeah, yeah, totally. Now I'm just sort of sanguine about all of it. I don't even
look at sales on any regular basis. I don't look at my analytics more than every month or two.
That's an impressive level of zen. Yeah, zen or being overwhelmed by little kids. But it doesn't
change anything is what i realized right as long as there isn't a massive spike there's very little
of my day-to-day input that changes the output and um but it's irresistible when you go to do
your own thing to see you know day by day minute by minute you know sales sales or analytics right
it feels so good but the problem is you sort of attach yourself to the good and the bad or at
Yeah, for sure. No, I think that's a, I think everyone, everyone struggles with that. And,
um, yeah, but anyway, so, so, uh, yeah, so basically going back to your question, like
I, so I was, I don't know if I said this, but so I was the CTO of, of Damagi during
the, during sort of this period, 2007 to 2017 or so. Um, and by the time I decided to step
you know, the technology part of the org was like 30 people. Um, at one point I probably had 15
direct reports and it was like, uh, so they were, I was both burnt out and doing a bunch of sort of
like work that I didn't love. Like I think of myself as a builder or a maker. Um, and I found
myself doing lots of, you know, HRE management type things. Uh, and so, so I was, I was just
like, okay, I, I, I need a break. And then it was, so, so I decided to go on a, like on a six
month sabbatical. And then, uh, in the first couple of weeks I was like, well, like, what am
I going to do? Because I'm not the type of person who, who just like sits on a beach either, you
know, like I like to stay busy. And, and, and so I was like, well, and it was right around the same
time that the, um, like I started reading articles on indie hackers about these people who were sort
of like running these small businesses and, you know, making, you know, tens of thousands of
dollars or hundreds of thousands of dollars, like, you know, work and living on a beach. Yeah. Like,
uh, and, and doing crazy stuff too. Like, you know, like selling candies from Japan or like,
like, I don't know, there was, there was a ton of cool stories and I was like, well, like I'm,
you know, I can build apps, like maybe I'll, maybe I'll try to figure this out. And so, um,
but I, I was very, uh, unambitious in my plan. So I was like, well, let's just see if I can make a
dollar just like selling something online um and so so i tried to pick something that was
you know quite easy and and likely to to be able to to make a dollar um and so the first thing i
i tried was this it was a product called place card me which is it's i i still feel silly to
this day talking about it and then the fact that i still uh run it and it's it's made me like you
know 50 000 is is crazy but um but it's basically like you just upload a spreadsheet of of uh of
names and table numbers for like a wedding and then it creates a pdf file that like lays them
out in um the layout of like place cards uh which are these things that you can like put on tables
to tell people where they're sitting um and then you know people can download them they can print
them out they can cut them up and and put them uh on tables for for weddings and events uh
that's super no that's that's you know that's a real problem that's a that's a that's a dollar
to do that uh it was free for a very long time oh charge more charge more
yeah it's still free if you if you are willing to tolerate a little bit of branding on the cards
okay um but uh but yeah now it's eight dollars uh okay for for sort of like a set of cards uh
as as many as you want but that's brilliant right now is that something that i mean i think i guess
all three of us have been are married so is that something that the other there's all there's like
this wedding industrial complex and there's all these like square space for wedding um sites is
that something that they didn't have at the time or if they built that in because it seems like a
great good idea they might come to you and say we'd like to buy that or else they just copy it
yeah it's it's not something that i had seen in the wedding industrial complex it's more common
in print shops like like uh like a company that you know prints photos and photo books or something
like that they might have the ability to do something like this um but uh but yeah like uh
um i i wanted something that was super quick and easy and and like we we would have used it for
our own wedding uh if we had found it and so that was that was like the seed of the idea was like
i was you know i was like sitting there um like well actually my uh my wife ended up uh on the
night before our wedding or two nights before our wedding like sitting around with a bunch of her
friends and writing these things by hand um but uh you know uh i i saw other people just kind of
typing typing the names into uh to like a microsoft word document or something like that and i was
like it's you know it's crazy that this is not a salt an assault problem well there's yeah there's
two extremes right i've seen some weddings where they hire a calligrapher to do you know everyone's
name and then there's more of dy i or in my wedding we just had um like a buffet because
we saw we'd been to enough weddings and seen you know it's like you get married you're like i'm
gonna keep it simple i'm gonna keep it small and it just is so much more complex and so much bigger
than you think it is like even things like i didn't think about the fact that everyone is a
plus one or just like cousins and stuff right so i was like well i only know 20 people right you
know 20 plus 20 is 40 but like no it's like pretty hard to keep it under 100 for most people and the
entire industry is designed to make you feel bad about not being extravagant enough you know and
so like there's like everyone's just trying to one-up at each other and usually all your friends
are getting married at the same time and so you're going to these weddings and everybody's kind of
like oh did you see the centerpieces and like um it's a it's a vicious thing yeah well that's a
great idea that i mean that reminds me and maybe you're inspired by what's his name is it patrick
who's at stripe now who has the like the jeopardy game for teachers bingo card maker yeah is that
what um i i wasn't i actually didn't find out about him until until later on after i'd already
um kind of gone down the road of the place card thing but but i do sometimes fashion my
myself as like oddly sort of following his career in in sort of like you know on a much smaller
scale um but starting with like the paper printable thing and then and then you know
sort of stair-stepping into into products that make more money and i wonder if i'll eventually
end up at stripe i wouldn't i wouldn't entirely rule it out although i don't think it's likely
so i worked at this company called quizlet in the education space and
of the initial 10 people for stripe um so and they're for the best people so um yeah yeah
partly because we were like our founder was roommates with uh one of the early stripe
engineers and their office was next door and you know it's like if there's this hundred billion
dollar juggernaut next door um it's not a bad place to go when you're looking to switch things
up yeah it makes sense but anyway so those next things because you've you have what you've got
so uh sas pagasus what's the janko boilerplate you have this modern javascript series carlton
looks like this is what i want to hit you up about because i saw you um tweeting about uh
your sass pegasus which is just it's great and the way you do it and the way you you blog about
how it's going and you know i love that so can you talk about those products and yeah yeah sure
um and so yeah so the place card thing uh like after i did that and and i kind of started to
get bored of it and i was like okay i should do a new thing um and then i was like i like it's like
all this code that i have to like redo and so i kind of copied the place card repository into
like a new thing and then started editing stuff um and and i kind of realized like oh there's
like this should be like there should be a product that gives you a clean starting point to like
build sort of like a generic web application or SaaS application. That's like, you know,
Django is Django is an incredible foundation. I love it. I think we all probably love it
on this conversation. Um, but it's, uh, I think of it as like a, like it's, it's not being
opinionated about your, your own model, like how, how you, uh, do users and that stuff,
how you structure your project, how you, uh, do like UI stuff. Um, and so I wanted,
I wanted to produce something that would provide, uh, a more fully featured version of Django that,
that has a lot more, even more batteries included, I suppose. Um, and, uh, and then sell
that as, as, uh, a template for other people to, to, you know, use to, to build and launch their
own product ideas, uh, super quickly. Um, so that was kind of the, that was the genesis of the idea.
And I will say like, it wasn't, it wasn't a completely like novel idea.
Like there were other products in other frameworks.
There's something called Laravel spark, um, for, for Laravel PHP.
And then, um, there's a handful in the rails ecosystem.
Uh, and so, but I, you know, I looked around, I think, and I feel a little weird, um, talking
about this, but like, I think something about the Python Django community is they're so
like pro open source and in some ways like not like great business people or like i don't know
if that's right but like i i feel like the the type of person who uses python and django is often
like you know an open source developer who's who's um you know like like the idea of making money
like it's sort of even built into like some of the django um code of uh i forget uh william what
you were what you were calling it but like some of the django terms is like you know we don't
we don't want people to like you know yeah the django trademark yeah um but yeah so so anyway
so like there there just wasn't there was absolutely nothing in the space for um for
django as as like a commercial product and and so it seemed like a a clear gap that um that was
worth filling and how long have you been working on it now like a year two years three years like
how long has it been going it's yeah it's a it's a little hard to measure exactly but i i would say
probably broke down on the code base uh let's see three years ago okay about three years ago
um and it's it's basically been my full-time side gig which so it's it's getting half my
half my full time okay uh for the last two years okay super and you seem to have everything you've
got like a bit you've got a bit of bootstrap you've got a bit of um did you put tailwind or
not i saw you the tailwind is uh experimental okay and but you've got like stripe in there
you've got i don't know you know tell us the bits yeah yeah exactly so the idea is like kind of all
the pieces that um hopefully you need to to build a business that's got stripe for either like one
off payments or for subscriptions it it ships with either uh bootstrap or bulma or experimentally
Tailwind. So you can kind of pick your CSS framework. I'm working right now on kind of
two versions. One, which is sort of like a classic React Django REST API architecture where
you sort of have like the decoupled client server because a lot of people are interested in using
that versus one that's sort of vanilla Django models and forms, that type of thing. At the
moment it's got uh it's kind of a hybrid version um and we we might talk about that more if we
talk about the modern javascript series but um so so at the moment it's kind of got uh it's a it's
a django server side rendered application uh that also uh sprinkles and reacts in in a few different
places um and it so if you want to use react uh it's i like that architecture for uh as a solo
developer and i think it works really well um as a solo developer although i think for for teams
it's often the case that people want uh you know they want to have their front-end devs and their
back-end devs and they only talk to each other through apis and so um so now i'm working on
on figuring out how to how to offer that version as well i think yeah i think in a kind of agency
or small startup environment they very much have this these silos of those are the back-end people
over there and they're locked in that cupboard and here are the front front end people and they're
sitting on gym balls and you know they're socializing with everyone else which is interesting
because i've i've never actually worked at an organization that was structured that way but
but maybe it's just i mean i've i've basically mostly worked for damagi and maybe people didn't
have a sense of how to split things up like that back when we were sort of breaking ground on
architecture because so i guess the the follow-up then is you know how how much of your time do you
spend on building you know features for the for the boilerplate versus you know promoting it and
marketing and telling people yeah because you know you build it no one buys it well
that's because they didn't know about it yeah no totally you know i i try to spend half and half
um that's kind of my target uh and i there's a book by um gabe weinberg i think the creator
of DuckDuckGo and somebody else whose name I'm forgetting called Traction, where they
talk a lot about this.
And one of the things they say is you should probably spend about half your time trying
to get Traction for your thing and the other half building it and making it better.
I think probably as you could guess and maybe as you guys could relate to, it probably skews
substantially more towards building just because I find the building part to be a lot more
fun and a lot more interesting.
But, um, but yeah, it's probably, it's probably closer to like maybe, maybe one third, two
thirds, one third traction.
You have had some luck, right?
Cause I've seen you, I'm sure I've seen you at the top of the orange site a couple of
times, you know?
Um, yeah, like I, I do, I, I have gotten lucky and, and, and managed to get a couple articles
on, uh, on Hacker News, I think is what, what you're referring to.
um it's funny because that's to put a dollar in the pot if you say its name though so
but i think it's just the javascript articles right where it's like oh yeah it's always like
django exists and here's javascript that's my sense of hacker news like i always tease carlton
when he launches a new version of django it's like you know for like a morning it's on hacker
news and it's like all these comments being like is this still here you know and then it's you know
whatever yeah people are still using django yeah more or less nothing i've written about django
has ever made it on hacker news it's it's uh it's all my sort of like that that's my point yeah
yeah so i i am you know maybe too transparent about all the stuff that i'm doing and and how
much money i'm making and sort of like like chronicling i do these monthly uh retrospectives
where i sort of like say how much money i made and what i was working on and how the month went
and and and stuff like that and and occasionally i will take some learnings from this uh sort of
like solopreneur journey and trying to sell them into something more general.
And every once in a while that makes it on Hacker News.
Um, but it's, it's the business stuff, not the, not the, um, technical stuff.
Okay.
But okay.
So then one more question on this and then I'll let Will jump in.
But, um, if you do get a post on Hacker News, it goes really well.
And you know, you, you get that, does that actually translate into a
increasing signups or increasing sales?
Or is it like they come, they see, they crash the server.
they go yeah it's um it does it not a lot right I think I think I had one
article that I published around shortly after Black Friday where I talked about
like kind of how I ran a Black Friday sale and my lessons learned from that
and stuff and that did really well on hacker news and I think led to two or
three sales which is I mean you know it's
it's like that. So the current sale price is, is $300. So like, you know, $900 is, is not nothing
for, uh, for an article, although the article probably took me like 20 hours to write an edit.
So, you know, it's like not, you know, I, I could be, you know, selling my time to,
to big corporations and, and earning more than that.
Well, I guess at that, at that kind of price range, you are targeting, um, sort of agencies
or companies or you know people not necessarily targeting the loan developer uh i think i'm
targeting the loan i don't know i don't know like if i were targeting companies i'd probably charge
well that's what i was gonna at least five times that uh and i've yeah i've often thought about
experimenting with with really big price increases but um but i i also like having lots of people
using it and giving me feedback and stuff so so yeah it's a bit of a trade-off that's always the
the the it's the the base camp folks what is it 99 i'm forgetting their their name but they they
always talk about this about sort of like the appeal of enterprise they talk about how they
deliberately keep their price low enough so they can tell big companies to go away because they
don't want to become custom but like the reality is you know yeah you have one or two mega users and
it's so much you know nicer to have one or two users who drive 60 of your sales or whatever
but there's this like death star pull of then you do what they want versus what your general
customers do but it is where all the money is so it's on any product i think it's really really
hard to avoid that i mean even i remember even slack when it went public was like 60 of the
revenue was 10 companies even for slack and i think that's probably not uncommon actually for
a lot of things is that a lot of things that seem like they're very customer focused the reality is
you have a couple big fish who drive you know so much so it's it's really hard to resist that
temptation and maybe you know it's not a bad thing to do but i i've felt the same way on some things
where i kind of want to do what i think the community wants but if one or two people are
using it and driving a lot of the sales it's like well yeah it's a tough it's hard to make a judgment
on what the right call is totally i remember the the one thing the one the one moments i have had
where i was just like oh i should be charging more it's like there's there's been maybe two
times where someone's email address was like you know like you know alice at like very big company
dot com and i'm like oh they just paid like 300 bucks and they probably would have paid you know
many thousands of dollars for this and you know but um but apart from that it's but they they
kind of need the handholding though right like that's the thing is that at the at that price
range they expect and normally get a bespoke experience a dedicated person and when you're
it's just you it's hard enough to do marketing let alone to you know adequately give the time
to someone spending thousands of dollars on something yeah right just to make you feel
better it's sort of like even if they have you know fifty thousand dollars to pay for a starter
project there's all this paperwork and all these things involved that you know you're probably not
set up to deal with i mean for you know for whatever amount you probably could figure it out
but like i mean we have the same so the django software foundation has this issue with grants
like especially we just recently we talked to um the head of the python software foundation there's
a lot of grants out there for open source but most of them require like a detailed financial audit
and all this extra stuff you know rightly so that the dsf doesn't have the infrastructure to do
so we sort of can't really get a five-figure grant because it comes with all these other
things that's true so i think there's some analogy there yeah i've been watching sass
pegasus and really happy that there is a paid product finally because i share your thoughts
that there's something about python django and maybe it's i've always thought it's make people
are a little more advanced in their career like a lot of times people who want to build a startup
they go to javascript or rails because they kind of want to make money whereas django and python
is a little either pure or someone's later in their career or they're at a bigger company where
they're not as focused on the financials from my experience so it does make the ecosystem around
educational content starter projects hard um i also think that you know because i have some
a good friend who's a laravel developer and so he's always telling me about all the things they're
doing there where he's like yeah for a hundred dollars or whatever it is he's like he just buys
the starter project because he has a lot of clients and it's just he bills it to the client
saves him time but my sense is django is generally maybe with bag tail it's a little different but
it's used for more complicated things or it's an agency that already kind of has their internal
template so they're not um there isn't that like churn it's not like kind of wordpress with
batteries it's like you go to django because you want a little bit more so i've always thought if
you couldn't sell into the agencies, you'd have a hard time making it work. So that's why I've
been pleased to see that, you know, your project has worked pretty well. Because I always just
like I have this project Django X, which is a much more basic Django starter project. And
it has 1000 stars, but I didn't really bother doing more with it, because I didn't think there
was a market there. So I'm glad that there's a market like there should be hopefully multiple,
you know, successful boilerplates out there. Yeah, I'll begrudgingly accept that. Although
i won't mind if there's one yeah no no that's that's i mean that's seriously though i think
it's good for django that there is a paid one and yeah if there's just one all the better you know
laravel is interesting because it's just um taylor the creator like he owns the ecosystem of stuff
right so if you you know that if you buy the starter project it contributes to laravel same
thing with hosting like he's it's i sort of look somewhat enviously that he's a he's a it's a
dictatorship he can just do stuff and it directly benefits laravel you know django is open source
community so i'd say it's it's a little more complicated to add features in the same way
as he's able to do yeah right carlton like you know there could be an official django template
but like who's going to support it who's going to do it right i mean that's the thing is like
it's one thing to do the code like all the rest that you have to deal with like doing the updates
it's marketing it okay okay so we discussed in you know the past like things like um uh
for security releases there is a pre-notification list and you can you can apply to get on that if
you're you know we try and discourage it and you know you've got to have a real reason why you need
to be on that list um but you know there are some big companies on that list and one thought is well
you know perhaps we could charge for that but no we we wouldn't do that because that's charging for
access to security that's important that affects everybody and it's just not you know but why
couldn't that company pay that's a giant megacore they could pay they wouldn't even that wouldn't
be a problem but that's just not how it goes that's just not how django is and you know once
you go down that road does it does it just not destroy everything that makes django special
because it's not really the frame i mean the framework's great it's awesome and it's wonderful
but it's the community and everything that goes with it that makes Django worth hanging around
for it's I was going to say in this in this conversation I've I've both wondered if I'm
now the destroyer of Django and wondered if the Django software foundation is going to compete
with me and both of those no no no no no I mean I'm joking yeah there isn't capacity for
that to be done by Django you know we wouldn't just the thought that somehow the DSF would set
up a hosting company like like you know there was that rails engine thing that was kind of
tied in with ruby on rails it was like go to the ruby on rail site and there was a hosting
option sort of top front and center and back in the day interesting yeah the dsf just to
sway jenny fierce the dsf is so much smaller than maybe if people are even aware of it then
i think that is i mean the python software foundation has eight full-time people and all
this stuff. There's a board of seven, we meet once a month. We have regular emails, but it's
basically Anna, who's the president, does quite a lot for free. I'm the treasurer, I do a bit,
and the secretary does some stuff, and then other people help. But, you know, there's no capacity
there. Like, you know, even the Django survey. So last year, we and I kind of led this, had a survey
on Django usage, which we hadn't had for a number of years. And, you know, this year, we're going to
collaborate with JetBrains, because JetBrains does it
for the Python Software Foundation, and that's
great, because it's like, I don't have
the time I did last year to do
that again, you know, because it's
all volunteer, so anyway, so I
agree, I think it's part of the specialness, though, of Django
like, no one, very
few people are directly getting paid, and even
the fellows that we have, Carlton and Marius,
I mean, they're probably making below market
they're definitely making below market rate
You don't be a fellow, because you think, you know
that's the
highest paid job i can get no it's not it's yeah you do it for other reasons but but speaking of
your boilerplate i wanted to ask about stripe because i've had and actually carlton so so we
all three of us can talk about stripe so carlton's almost done with adding it to the dango some
things from the board well oh yeah we'll talk about oh god
yeah no so we're up there we're updating the we're updating the um the stripe integration
so they changed it all for the um for the european i don't know whatever it is sca rules and so we
we updated the front end bit and there's a bit where you manage your subscription where we're
still using the old api and we want to use the hosted choke stripe checkout because that will
just be so much easier than maintaining the code ourselves and doing all the api hits and
you know all that stuff which it's okay we've got the code there it works but to maintain that code
has a cost and it would be much better if that code just could be deleted um yeah
you're reminding me of that thing carlton i mean let me maybe just for anyone who's listening who's
curious how the dsf actually works so for example for this new thing we need to have a privacy
policy or something was it in terms of service which we don't have currently on the django site
because we haven't needed it so okay how do we do that right like we're django we need to do it
properly. So we need to have a proper lawyer and have proper thing. You know, we don't have a
regular lawyer, and we don't have the money to pay a top flight firm. So I've been talking to
the Python Software Foundation, I've been talking to, you know, someone to Tidelift, you know,
because we want to get someone good, but we want someone who's not going to charge us a lot, or
we'll do it pro bono. So it's this whole process just to get that, right. So if you think about
what that takes, and that's all in my free time, you know, me and the other board members, and then
the idea that we would have you know a job site or a boy you know a starter project it's just like
the madness of thinking that would ever happen is it's not gonna happen yeah well in a way that's
it's it's also sort of like one of the big reasons why i decided to start going out on my own and
and um and sort of like fully owning and controlling everything i do is like i you know
i it's inevitable you know at an organization of you know more than a handful of people that
that you'll just you'll run into a consensus building and bureaucracy and these other things
and um and i'm i'm kind of like an impatient person i suppose and so being able to just
exactly like be a dictator and and make whichever decisions i want to do whatever i want is
is very satisfying and freeing um and so that's that's one of the reasons why i love just having
my own businesses and why i haven't even like considered sort of like trying to hire anybody
or anything like that yeah you still have all the scar tissue of of the the cruft of everything else
well i mean and for django i mean so at quizlet like i did our first terms of service and um
copyright and you know i basically i can say this now you know i basically like looked at youtube
and changed some words around that's what all the startups did because it was a startup so what's
the difference we didn't have money to pay a fancy lawyer but you know django django is django so we
have to and we'll do it right but in the context of you know we're not google where you can just
have an in-house counsel do it so um it slows things down rightly so um but you know i'm sort
of like you i'm used to just being dictator of my own little world but um yeah there's reason
things slow down in big places just finish that and then i'm going to say what did you want to
asked cory about stripe about like with django things always feel like they're moving slowly
but they're kind of inexorable in that you know you look back a year and it's like oh wow we've
done all of that and we've you know two years oh that all of that happened three years all of that
but any given day it feels like things are taking a while because it's a big ship so it takes a long
time to turn anyway i will say the um that the effort that django puts into its release processes
and the lts's and the you know the like deprecations and and all of that like i i can't
imagine how much work and planning that all takes but it's it's incredible it's i feel like that's
an incredible thing that many other uh frameworks don't don't get right in the in the way that
django does oh cool well thank it does it yeah there's a lot goes in i mean we have to
the processes have been set in place over time and that's you know that really helps but
you know every month maris and i are busy you know making sure that train stays smooth you know
so that's good thank you will what did you want to ask cory about stripe about because you mentioned
it and then we got distracted oh we're just having a great fest about changes and um as we all know
stripe you know stripe is constantly making changes i think which generally improve the
product but it's not always the easiest thing to work with um and and i know one of the selling
points of sas pegasus is you have integration so you probably feel you need to keep up with
those changes i i do although because they still they still the old ones still work is the thing
right they have a quite a big deprecation period yeah but they don't work with new cards sometimes
um but but like you i think i'm i suspect that in a future release pegasus will just move over
over to checkout also, just cause just like you, it's like, I, I don't want to continue to
be on this, this Stripe financial system treadmill. Um, and I think, uh, more and more companies are
using Stripe checkout. I think even consumers and especially like prosumers, like, like business
consumers are sort of, they know what Stripe is. They're not freaked out if they get redirected
to Stripe when they're checking out on, you know, you know, buying a subscription or something. So,
um and i've i've talked to my pegasus customers and um there's a there's a handful of them that
like that they have like the fully bespoke ui that they can customize however they want um but most
of them are like no checkout's fine that makes sense and some of them actually the majority of
them actually prefer checkout just because then they can sort of be instantly up to date with
everything as it comes out to continue on stripe so um i had the for for a while that i think i
I still have this top Stripe Django tutorial, which I wrote on this site testdriven.io that
my friend Michael Herman does. And so they, the Stripe team of like five community people
emailed me saying, Hey, you need to update to the new thing. And there's all these emails
and I was like, you know, the amount you all have gotten paid to email me to hassle me
about this, you could have just done it. So I feel like there's sort of a Stripe is great,
it's like, y'all should just have the Django version of how to do this. You should be like,
you should have the express version, the rails version. Like it's in madness that you're relying
on the community to do these things. Cause they still, they have, I think they've got the flask
kind of sort of version, but it's like, it's like one, one day a month, pick one of your engineers
just to maintain, you know, the full, you know, integration and like the top four or five
frameworks. But I guess, you know, now that they're doing checkout, that kind of goes away.
And it does, I guess, as we said, like people are used to that flow because it used to be
scary to be redirected somewhere else, even to PayPal for a transaction.
But it's such a pain.
And yeah, it slows things down because every developer has to update their stuff.
And, you know, you don't want to get the security stuff wrong around tokens and stuff
for financial things.
Yeah.
Anyways.
Yeah.
I will say, like, the number of financial edge cases that I'm sure that they understand the way, like, the different points in the process where a transaction could fail or where an additional authentication step could happen.
Like, I think that web of, that network of, like, possible states that things could branch out to is just, like, terrifying to me.
too big like i think the the root source of the complexity of their api is that they're attempting
to design something that is like resilient to failures in in any of those different parts of
the process and and uh but it does feel weird and complicated if you're just like well i just want
to like give you a credit card number and like charge it you know yeah i don't want that complexity
so my my friend from quizlet who's a manager at stripe um i don't think this is prep i can say
um so there's still a rails monolith um still to this day um but they're which is kind of you know
to that question of like do monolith scale it's like well stripes um you know as well as shopify
but they're switching over to java because on top of everything else they're you know they're
basically like google in terms of size and they've had a big process around how do we upgrade and
and they're switching over things to java but it's still fundamentally just a rest api is what
the company is right so yeah so finally at this stage they're they're hitting a limit on what the
what the rails can do and also they've got so many engineers it's kind of like you need them to do
stuff right so like if you can shave some transactions off it's like i think there is
some truth to that right we've all worked on teams like it's really hard to it's some you know you
want people to be busy but it's also like it's better to be rebuilding the ship all the time
than just working on a side thing like there is that temptation but okay yes back when i was
learning there was a thing about scaling and the the sort of the tip the advice was this was like
first of all be able to scale it right so be able to go from one server to two to three to four to
five and then when you've got that down which like clearly have then start worrying about the cost
per server right so if you can trim off 10 cents here that doesn't matter at the beginning don't
bother trimming off 10 cents at the beginning because it's totally pointless but when you when
you've scaled out then that 10 cents obviously becomes a lot because you know you've you've
multiplied it so many times so first of all you know duplicate your setup at whatever cost and
then cut the cost per thing and striper at that stage now right there and have been for ages but
they're they're like yeah let's cut the cost here because that will make a massive difference to a
bottom line i would say anything anyway cory i wanted to i'll come swing back to javascript
and django and so you've got this rails thing right i'm not railing this um react thing and
that's one way and then how how would you how do you sort of think you'd write you're writing it
yourself how would you rig up the front end the the javascript to to django integration what would
you go for personally oh and if i'm running it for myself i would i would definitely like like
i i have a whole uh you know uh article series of articles uh that basically talks about my
opinions on this um although uh i think they're more general than that but i like i would want
to use modern javascript i would want to use react um where it made sense like where there
was going to be either a stateful or uh you know a complexly interactive user interface
and i would want to use django for all the boring stuff that um where there isn't so like you know
like your password reset form or your you know like your account settings page potentially or
something like that um and so i i like having a you know sort of like a like a quote normal django
project um and then a separate javascript like build pipeline that is just taking like you know
like it's like a standalone javascript project but then the output of that uh ends up in a bundle
file that's served like a normal django static file so inside static and then inside the static
roots type thing you get you collect static right yeah yeah yeah um and i i don't know like i've
i've been doing like that that was when i first just sat down to make place card me i was like
okay this is like i'm gonna do this like place card builder thing where it's like there's gonna
be like a lot of complex interaction and i want it to like be modern whenever so i was like okay
i use i use react for this that sounds good and then like just like figuring out how to
do react inside django was like not at all clear um and so i wrestled with it for a lot and then
and then sort of like arrived at this solution of like like once once i wrap my head around like
oh all this fancy complicated react build stuff at the end of the day it still just produces a
javascript file and that javascript file can run in a browser yeah and then you're like oh well i
know how to use drop script files in django uh and and so like once i had that sort of like
uh epiphany then then i realized like oh this is really straightforward and and
i basically use that architecture for every other project i've worked on to to date and it's
it's always worked really well for me um so i can like move super quick on the django stuff that's
that's really easy and there's you know there's forms and there's um views and templates obviously
and and all of that works well and then and then like reach for react whenever i need to do
something complicated and um and then i have that sort of access to all that that modern javascript
to me well i think you're um so americ augustin who's a longtime django contributor he also has
a series on this and i've the last couple years i've anyone who has questions on this i've referred
them to your series and to his um his is a little bit shorter but he more or less says similar things
it's like the static file yeah he says he says tell it where the folder is he says the same thing
yes i think his is maybe a little more of a choose your own adventure but he i think advocates for
the same approach because yeah as you say like and i i went through the exact same thing it's like
all the build complexity is just local it's what you ended up end up serving as a single file so
it's sort of not really jangle's fault that that all is complicated yeah exactly but it seems like
it is i think people what people want though is some sort of runs it's integration with run server
right so you just fire up run server and but no you've got to have your javascript build watcher
in a separate terminal so you need two tabs yeah one to watch the javascript and one to build
like i know that people do try to do fancy stuff to make javascript build things happen in the
world and like you know you have like we used to use a project like called django bower or
something where you like defined your bower dependencies in python and and like it it kind
of sounds nice at first but then you like hit something that doesn't work and then you're like
trying to troubleshoot this like crazy it's like someone else's implementation of a wrapper around
like calling a javascript and and like at the end of the day i found that a lot of those tools that
try to make specifically front-end development i guess uh easier in the django world like they
often um they work until they don't and then once they don't you're just kind of like in a really
tricky situation and it like learning the actual like how to use npm and webpack and whatever else
is like it's not that hard and then you're using the same tooling that the entire rest of the world
is using and then when you google something it's like you know like the answer is relevant to you
instead of like, you know,
not really being sure where in the stack
the thing is failing.
So I generally shy away from the type of thing
that would try to make React work and run server.
Right, amen.
There we go.
Well, I think that's where everyone gets to
at a certain point where you appreciate
what a third party package does.
But unless you really, really need it,
it's like, I'm going to end up rebuilding this anyways.
so maybe i'll just peek at the source code and see yeah i mean a lot of third-party packs is
good for ideas right oh yeah that's nice there was a there was a time where i was like thinking
that that pegasus should have no third-party dependencies and and like i would i would be
opinionated about about everything but but ultimately i i selectively picked picked a few
that seemed like obvious choices like all off um and a handful of others you don't want to build
that yourself no yeah yeah exactly but it's hard to know what where to drop that line you know it's
like is there a certain number of github stars where you're like okay this thing is probably
like acceptable or maybe you'd like just have to look at the source i don't know i think in the
jango world it's been going 10 years or more it's safe and you know anything less than that you've
got to be if jazz band is doing it it's probably okay that's that's a good metric i like that yeah
well there's there is um maybe i'll put in the show notes there on the jango forum there was
uh this discussion around kind of the top five or ten packages that people use because i feel like
there are a couple all off would be a probably the first one of the first ones i think of that
and rest framework you kind of need to use it and rest yeah and rest framework um but then it does
sort of fall off a little bit uh but it is an open question i guess so i know we're going over on
time i did want to ask one last question which is deployment if i could because you know partly
Carlton's been working on button.dev
Oh yeah I've heard you talking about that
You know I'm getting there if it wasn't for this
Crazy pandemic and my kids always being off school
With cold it turned out the kids this week
Had colds and we were like
Oh no they've got COVID
And we got them tested and they didn't it's like wow
What a weight off
So we're so close to getting vaccines you know
Another month another two months we'll all have vaccines
And it'll all be you know
Slightly different world but
It was like no we've gone this far without it
And then it was a mega stress but
you know bar all of those sorts of things is coming on nicely but yeah anyway deployment
yeah so just so just you personally we don't need we don't have time to get into the full
deployment but like what what do you like using for your personal stuff oh i i have a i have a
linode that i host like six projects on yeah it's amazing isn't it 20 bucks a month and it works
great and i love it um but uh but for for pegasus i i also like like i i include docker and and like
you know heroku and digital ocean and uh google cloud and all those so i've i've i've experienced
all of the things i i if i were to pick a number two i would go with heroku i i have had generally
like a very positive experience with, with integrating Pegasus with Heroku. Um, but yeah,
I just, I just, like, I, I got good at running servers in my Damagi days. Uh, so I guess all of
us are like old enough that like, you know, past probably didn't exist, uh, when we were first
deploying applications. And so got comfortable on, on, you know, sysadmitting and, and I feel
Like from a cost perspective, it's just like, it's so much nicer.
And when you're doing solo projects, cost actually matters more.
It's running 5, 6, 7, 8, 9, 10 projects and it's not really a problem.
And it's the same amount of money as it was when we were running one.
Yeah, but we're going to do the same thing on, you know, like Kubernetes or like, you know, DigitalOcean app platform or something.
It would be like hundreds of dollars a month, I'm sure.
Yeah, it's interesting that DigitalOcean really has a new app platform.
That's something I haven't played enough around with.
It seems like they're making a play at Heroku-like simplicity.
But I have got my own deployment system that works,
and I'm not a deployment engineer,
and I'm just going to stick with it unless I have a reason to play around.
I am going to use button.dev, though.
But aside from that, I'm not playing around with other stuff.
I'm excited to try button also.
Yeah, well, okay.
Well, it's coming, it's coming, it's coming.
Limitations are human power, but it's not far off now.
Well, if people go to the website, Carlton,
they can sign up on the list to be notified.
If you put your name in there, I'll email you quite soon with,
you know, hey, come on, early access, let me show you what it's like.
It works for me, and now I need to make it
so that I can wrap up components for other people.
It's that, you know, you're not going to have,
I don't want you running all my shell scripts.
I would say one last thing. You mentioned, Corey, about third-party projects. So I'm on version six of my books, I think. Every Django version, I update them. And I've just systematically taken out third-party stuff because it's just one more dependency and things change and there's problems. But AllAuth and Rust Framework are, I think, the only two I still have in.
That makes sense.
because they're but it's been a long process of you know even what and i guess django um
i use one for for environment variables i'm blanking on it django django or dot n one of those
one of those i forget i have an opinion i've written down something i think those are the
three because environment very that those are very and maybe django database url that's kind
of nice with her oh yeah yeah but i had a lot more the first the first couple versions were more
more more third party things and over time it's like uh we have crispy we have crispy forums which
carlton works on so i guess maybe maybe there's a half dozen but there's definitely less than there
were anyways well thank you for taking the time cory i know we've gone slightly over um we will
have links to uh your personal site to um sas pegasus modern javascript series place card me
um is there anything we didn't cover about your story or you know marketing that you want to get
i feel good thanks thanks for thanks for having me on this was fun and it was nice to meet you
both i feel like i know your voices but i i you know i had never uh didn't know what you looked
like i see you see your posts see you see you on twitter i'm like you know who's this guy so it's
nice to see you in the face yeah well and i i appreciate you writing those posts i know
i can understand you know both sides of thinking about whether you want to do it but it's definitely
helpful for those of us in a similar boat to share your your story so at least for the ones
you've already written i thank you for writing those yeah no no yeah you're welcome and thanks
for glad glad you're getting value and and i i have fun with it so it's i don't think i'll stop
great so we are at django chat.com chat django on twitter and we'll see everyone next time bye