← Back to Show Notes

Transcript: Self-Hosted Open Source - Michael Kennedy

Will Vincent

This episode is sponsored by Mailtrap, an email delivery platform that developers love.

Try for free at mailtrap.io.

Hi, welcome to another episode of Django Chat, a podcast on the Django Web Framework.

I'm Will Vincent, joined by Carlton Gibson.

Hello, Carlton.

Hello, Will.

Will Vincent

And we're very pleased to welcome back Michael Kennedy from TalkPython.

Welcome, Michael.

Hello, hello.

Michael Kennedy

It's amazing to be here on your show.

Thank you guys.

Michael Kennedy

Good to see you.

Carlton Gibson

Thank you for coming on.

Will Vincent

You are one of the original inspirations for this podcast.

I was, I think, a guest on yours, and we were just talking off air.

That was over five years ago.

So it's uh time flies.

Carlton Gibson

I can't believe it's been five years.

Will Vincent

It's just meant.

I know.

I know.

But in fact, I said talk python.

You you have this whole constellation of things now as well, right?

You have Python Bytes, you have your training courses.

I feel like I'm missing something.

Is that the full suite of things?

That's pretty much it.

Michael Kennedy

Yeah.

A tiny bit of conference speaking and stuff, a little bit of YouTube, but primarily talk python, Python Bytes, and the courses around it.

Carlton Gibson

So you mentioned conference week.

I saw you flashing by on the news this week or last week about some keynote somewhere exotic.

Michael Kennedy

Yes.

Yes, I had a wonderful time.

I got to go to uh give one of the keynotes at uh PyCon Philippines this year, which was very excellent.

I think I'm over jet lag, and then we had daylight savings, and so you know, that's that's that means

Carlton Gibson

does that mean the kids are get up earlier or later?

I can't remember.

Michael Kennedy

They are forced to get up earlier than they want.

Right, okay.

Will Vincent

We lose an we lose an hour, yeah.

Michael Kennedy

But it's glorious.

It's glorious.

I live in the Pacific Northwest in the US, and it is like we have two seasons, we have summer and rain, and also that comes with darkness.

It'll be dark at like 4:30 in the winter and rainy and and the sun was out till past seven last night.

Um I feel like summer's already here, even though it's not.

So no regrets.

Carlton Gibson

Yeah, it makes a big difference.

Michael Kennedy

I'm I'm I'm on team daylight savings.

Let's go.

Carlton Gibson

So, how did you go in the Philippines?

Tell us about your keynote.

Carlton Gibson

What was the what did you talk about down there?

Michael Kennedy

The keynote was super fun.

Uh uh it was called The State of Python in 2024.

Carlton Gibson

Oh, that's good.

Because I wanted to ask you about that.

Like, what are your hot takes, Michael?

Go on, give

Michael Kennedy

us your hot takes.

What are my hot takes?

Well, it's you know, I think it's it's interesting to consider that in the Python space, it's so distributed, the directions, and it's it's like brownie in motion almost.

Like stuff is just moving around, and like whatever channels it takes, and where traction uh gets for various projects, that's where the future goes, right?

Even amongst the core devs, there's a bunch of them working on things.

So if I went to a keynote or you went to a keynote on at Apple, Tim Cook, you know, Tim Apple would come out and he would tell you this is what we're doing with our new stuff, and this is what the team has been doing.

You go to Microsoft Build or Google IO, there are people who come out and say, Here's the direction we've decided for you and us as a community.

Hope you like it.

There's none of that in Python, right?

But partly because who's gonna speak for the 10 different web frameworks and the 1,000 different data science things and all that kind of stuff, right?

So I tried to put that together.

I tried to say, like, all right, where has Python been last year?

Where what's important, and where is it it going in the future?

So fun fun stuff.

Carlton Gibson

Okay, so my I mean, one question one not question, one problem I have.

You know, I'm quite involved, but I'm very involved in Django, and I don't know anything that's going on over there.

And all of a sudden I'm like, oh wow, there's this brand new thing that how do you keep up?

How does how does one keep us kind of overview of what's going on in the different areas?

Michael Kennedy

I have a bit of a cheat card in that regard.

Carlton Gibson

Yeah, well, you got Python bytes.

Michael Kennedy

Yeah, I got Python bytes, right?

I got talk python and I got python bytes with talk python.

I can I can dive into deep topics.

Like one of the big things is you know the whole astral UV stuff.

Yes.

That's going out, right?

And so I'm talking to Charlie Marsh in three hours or something about UV, right?

So I get to ask all those questions and kind of figure that stuff out.

But then Python Bytes, it's like six, seven, eight topics that you've found every week, and you're gonna not just get to you have to find another six for next week.

And so it just keeps you kind of on top of always searching.

Carlton Gibson

But for the for the for the rest of us, we should just listen to your podcasts, right?

That's yeah, it's

Michael Kennedy

how we keep up.

Take it on coast.

Take it on, yeah.

Michael Kennedy

Yeah, exactly.

Will Vincent

So do you we talked about this last time.

I mean, when you're so involved in talking about and producing things around Python, uh do you you still get to code a little bit, right?

Because you had recently well, we're gonna we're gonna talk about infrastructure and deployment, but like in terms of actual Python Python, do you still get to keep your hands dirty?

Michael Kennedy

Yeah, it seems like I I would just be busy talking, right?

But there's a ton of infrastructure uh and stuff going on.

Um there's kind of a whole DevOps side, but you know, the the talk Python training stuff is it's it's basically its own SaaS, right?

Evolving over time in lots of ways.

I just noticed um I was doing some stuff in GitHub.

I'm I'm trying something different.

I'm always busy, you know.

I I talked about all these different projects, and then I have people working on the courses, and I've got you wouldn't believe how much email, and it's always just stuff pulling me away.

And so I have like big ideas for stuff that I would like to add, and it's always like, well, maybe next week.

So I'm I was working on something I'm calling platform week, where turn off the email, turn off all I have no meetings, who knows?

Maybe even I'll go stay by the beach or something.

I'm just kind of more alone.

I haven't decided, but just sit down, come up with a plan.

Like if I had 40 hours to just write code and and sort of tackle the bigger problems that I've been thinking that I should, what what would I do?

So I was working on that and I realized just for the courses I'm on, issue 1690 or something like that.

It's mostly me, but also a little bit, uh a little bit of stuff is in there around, say, like our mobile apps where I worked with another developer and things like that.

But that's a lot of code.

Carlton Gibson

Yeah.

And what's what is it now that it keeps you excited?

Like when you're you're you're coding when you're talking actually just focusing on the code side.

What what are the exciting bits that you you like?

Oh, yeah, I like doing that, or I like this.

Michael Kennedy

Yeah, there's just always stuff to learn.

There's always stuff to get better at.

You think, okay, I've really got this web stuff nailed, and then HTMX comes out, and you're like, oh I gotta be ever this changes everything, right?

I know you both are big fans of that.

And yeah, um, you know, like, okay, I I got HTMX nailed, I got I got the the web stuff nailed.

Oh, maybe we could deploy it in a whole way better way.

This whole thing I've been doing, uh, you know, is I could I could completely change that as well.

And it's it's never ending.

I I think the fun thing is, is it's every time you kind of go through that process, it's better.

Like Python is better, the web frameworks are better, the infrastructure and tools like databases and web servers, all the way to the host, like the whole spectrum is just like, oh, this is even cooler than last time I dove into this aspect of it.

And so it's it's worth getting out

three times.

Carlton Gibson

Yeah, the the excitement is like last few years it's been like, oh wow, we've got you know new layout things on the front end, we've got you know CSS finally catching up with where we wanted it to be, and you know, and then on the back end all the async thing stuff has come through, and it's it's always fresh.

Michael Kennedy

Yeah, absolutely.

I just just yesterday I talked about Mountaineer, the web framework, and a few weeks before that was fast UI, not fast API, but fast UI from Samuel Colvin and team.

And those are those are both super interesting projects.

So it's like Python deeply integrated with the React in interesting ways.

I don't do a ton of React, but you know, like when you write a function in your web app in Python in Mountaineer, it automatically creates like an API connection for you and it generates a TypeScript, type safe like front-end thing to call that and keeps them in sync.

There's just a lot of a lot of neat stuff out there, right?

Will Vincent

Well it's good to have that attitude, right?

Because I think you can also, after a decade plus, get in the you can fall into the trap of thinking this is just reinventing what I already know, which is a little true, but it's also you know generally better, which is why people are taking the time to reinvent the same things.

Yeah.

But that might be more where if you you know if you're three years getting really good at something and then you know a manager says we're switching and get up to speed, and you're like, ah I I have a feeling that's more where that that feeling comes from, or you're you know, the market changes and it's yeah, it can take a little time to feel like you're catching up, even though you've been deeply in one of those areas.

Michael Kennedy

It it can, and if you're if it's not your choice to go down that new path, it can be frustrating, right?

You're like, ah, we we were really good with just server rendered code.

What are we doing?

Like, why do we gotta change all this?

And honestly, I still think that that's that's true.

I think it's it's pretty amazing, which I guess is why HTMX is also really interesting.

It's not as bad in Python, though, right?

I mean, we could be in JavaScript, not knocking the language necessarily, but it just changes so fast.

The lifetime, you know, and and backwards compatibility seems to be something that people are like, uh, maybe if it's convenient, you know.

I just saw that they're working on alpha on a tailwind four.

I'm like, all that does is fill me with dread.

I'm just like, okay, what is not gonna work anymore that I don't quite realize?

I'm quite excited about

Michael Kennedy

10 classes are gonna break.

Carlton Gibson

Yeah, I'm quite excited about the Tailwind Fourth because um it looks like it's bringing it a step closer to CSS.

It looks like you know, using native layers rather than the Tailwind layers and things like that.

So it might be, you know, that might be nice to because it's not the case that you have to stick with your tailwind forever.

You you don't have to do everything in in JavaScript, right?

But you can work it back into your style sheet.

And if they go closer that way, I think it might take away a few of the um kind of religious criticisms of it.

Michael Kennedy

Excellent.

Well, it's it's looks exciting, so we'll see.

Will, are you a tailwind fan fan?

Do you do you believe in Tailwind?

Will Vincent

I have a redesign of my main site that is not publicly live yet, that's in Tailwind.

But I have to say I'm not a Tailwind expert.

So I I worked with designers, imagine that, who did an amazing job on this.

Michael Kennedy

I think we talked about that uh on Mastodon.

Uh yeah, maybe.

Will Vincent

Yes, that's right.

Yes, you were you were looking for um, yeah, I used uh YupGup, um who are great, who do a lot of work in the Django space.

So I highly recommend designers.

They're a lot cheaper than programmers, and it's um so yeah, so I've I mean I I definitely wouldn't say I'm super comfortable with tailwind, but I'm sort of really happy about that.

Yes.

I have enough to deal with with you're tailwind interested.

Tailwind curious.

Will Vincent

Yeah.

Yeah, curious.

To that point of just like I like I'm I'm pretty familiar with bootstrap.

I've used a lot of bootstrap, and there was a discussion of like, should we use bootstrap?

Should we use tailwind?

And it's like, well, I know that whatever it is, we'll probably have to change it in five years.

And Tailwind seems pretty established and a little easier for me to maintain once someone else does it, um, but I don't have to worry about architecting it.

I mean, because so that was the decision.

And you know, it's uh it's a little annoying to have to have a separate server running to uh uh you know have MPM going, but it's not the end of the world.

Like uh Yeah.

Yeah, that's true.

Michael Kennedy

It's not the end of the world, but you do have to figure out okay, well, there's these little scripts like watchers and stuff I've gotta write.

Yeah, yeah.

Will Vincent

And then deploying it like is you know, it was a day to like fully figure out like okay, like even just on Heroku, which is still like what I use, like it's like okay, wait, where's the thing for this?

I mean, that's the you know, we we we both work on courses.

Like, I'm like, how does anyone figure this out?

Like, why why does this take so long?

Why isn't there just like an answer?

Like, I will pay money for an answer.

Like, someone just like save me two hours for 10 bucks or 20 bucks.

Like, yeah.

Will Vincent

But I guess it's just the change is too much, and maybe it's not worth anyone's time.

But um, so anyways, so yeah, I I'm trying to fight the don't change things attitude on all this.

Oh, just just on that.

Carlton Gibson

I saw a thread this I saw a thread this week and it was from a frontender, and they were like, look, all I hear is front end's too complex, front end's gone off the complexity cliff, front end's crazy with its complexity.

But what were it?

They're like their their argument was well, we s were what were we supposed to do?

Just sit there and not look for the better solutions, not try the better things, not progress.

And at each step, their argument was that you know it made sense that we brought in Webpack.

It made sense that we switched to this, it made sense, and you know, they were just searching for a better solution, and it's all right, it's all right for us Python desktop, oh you JavaScript is you crazy with that kind of shit.

Will Vincent

I think well, I think it's two things, right?

It's the people pushing the envelope are large companies with big staff who have maybe needs that the rest of us don't have.

Um, so does a your average website need all these things?

Probably not.

Um, and at the same time, you know, selfishly, we all want to feel like we understand everything going on in our web app, but obviously as it matures, that becomes harder and harder to say with a straight face.

Michael Kennedy

Yeah, yeah.

It's probably true also of the big teams.

It's probably more true of the big teams that they don't not the people working on don't necessarily understand everything, all the moving parts, right?

Because you got teams specialized team members that deal with like hey, hey, how do we keep it in production?

Will Vincent

Right, right.

Well, um, well, maybe that's a segue to infrastructure because that's uh one of our big topics, and you have a number of notes to dive in.

I guess have you you've changed your infrastructure or you're thinking about it?

Where where does all this research come from?

Michael Kennedy

Oh no, this is all this is done.

This is is kind of the the the infrastructure equivalent of what I refer to as the platform week.

Like I'm just gonna take some time, focus on this problem, put everything down, suffer the backed up inbox later, and try to try to dig my way out and and and get a bunch of changes.

I think this was how is it what was really the impetus for this?

Will Vincent

Yeah, I was gonna ask how why do you why dive into this, right?

Like what where is that point where you say, you know, because you're you you have traffic, but you're not Google level, right?

Like how do you decide okay it's worth it's worth customizing things beyond just you know paying a platform as a service bill.

Michael Kennedy

Yeah, absolutely.

So just to I I don't know that I would say it's big and it's not totally small.

I'll just give people a sense.

Uh, we do through all the talk python things, we do around nine million Python-backed requests a month, and we do about 10 to 12 terabytes of traffic a month.

So it's a decent amount, but it's not, it's certainly not Google, like that's a minute on Google or especially YouTube or something, right?

But it's a it's a non-trivial amount of sort of traffic, right?

So for a while I had so let's take a step back.

So for a while, at least in the early days, I kind of had this what I think is not really the way anymore that a lot of uh people think about.

But I had this belief that the cloud was small commodity things, right?

The cloud is the cloud is uh best at giving you a bunch of small little things.

They're super cheap.

I can get a $10 thing here and it's uh 12, you know, $12 thing there if I want to optimize the CPU to be an Intel, whatever, and so on.

And I can piece my stuff together with that, right?

So I have a server for this, server for that, I got some backend servers, I got some failover.

So I got and I ended up with like eight servers sort of in that constellation of things.

And I thought, okay, this is great.

So I've got the main stuff, I've got failover servers.

If I need to do maintenance and say, like the kernel is patched, uh, and there's a security patch on the main one, I've got to reboot that server.

There's not too many interesting trics I can do besides just making it reboot.

And so what do you do?

So do you use some kind of load balancer to switch it over to the the cheaper backup one or you know something like that, right?

That was kind of how I was doing things.

And and it real I realized like I've got yeah, go ahead, go ahead, Carlton.

Carlton Gibson

I just wanted to bump in because like you said nine million requests a month, so I just quickly did the math.

There's about six thousand requests a minute or something, it's quite a lot, right?

So you can't just reboot your server because you you've lost six thousand requests.

Michael Kennedy

It's yeah, it's a lot.

Carlton Gibson

It's all right if you're like just running your blog and it's like oh one person maybe.

Michael Kennedy

Yeah.

Anyway, carry on.

Sorry.

Carlton Gibson

So you so how do you handle the fallover and how do you handle the low pancer you were saying?

Michael Kennedy

But yeah.

Um well, I was just sort of cycling between these servers and using, you know, sort of IP magic and stuff like that to, you know, sort of DevOpsy stuff.

But what I realized was one, I have all these servers to maintain, and I've got to patch them all, and it's just a bit of a hassle.

And then, I mean, you could make a platform as a service argument, that's that's certainly a thing.

And you could talk about Heroku, but there's advantages to not being a Heroku as well.

Um and then what I realized is, well, if you got to take the database server down as one of those things, they're all going down anyway.

You know, there's there's there's probably 10 seconds of downtime per month that's unavoidable unless I get into a more complicated database cluster with replication.

And now it's like, okay, I am not Google, I'm not YouTube.

It doesn't justify that level of uptime.

I'm willing to take 10 seconds of downtime a month.

Very rarely, like more if I screw up something.

But, you know, which does happen, but not that often.

But anyway, I'm like, there's kind of the single point of failure anyway.

And I've all these servers, and then that was one half.

And the other half was, and I think this is where a lot of interesting stuff is gonna happen in the conversation.

Here is there's actually a ton of open source similar things to what you might use, right?

So let me just give you one example MailChimp.

MailChimp used to be a cool little startup.

You could get your mail over there and you could sign up people and you could make a community, and it was amazing.

And then it grew and it grew.

And then it was bought by a financial company that just wanted to turn the screws on on folks, from what I can tell.

I'm sure there's people who don't just want to turn the crew screws, so no offense.

But it's it's got a slightly different business model, and it doesn't have that.

Like, like I'm supporting the small, the small person anymore, right?

And my bill is just going up like $100 every two months.

Like, hey, we've guess what?

Your bill is now a hundred dollars more sometimes because there's more subscribers, sometimes just because, well, we've added a new feature that you're not using, so it's a hundred dollars more again, you know?

It was up to like I don't remember, something like six six hundred dollars a month or something.

I was like, all right, this is getting out of control.

Like and so I realized there's like a couple of really cool options for just self-hosting something, an open source version of this.

All right, well, they've got these eight servers.

Where do I put this self-hosted thing?

Well, I'm sure not gonna put it like right next to anything else that has access to my database.

That because I I'm not in control of that code.

How much do I really trust it?

You know, I trust it, but there's trust it and there's putting it on inside the room with you, you know.

Like that that animal looks friendly.

Oh, it turns out it's really aggressive at night.

I can't believe it's in my house.

Michael Kennedy

Like, what have I done, right?

Like that kind of thing.

So I'm like, all right, well, I need to set up something to kind of manage that, right?

Like, all right, well, maybe I need to set up another server, or maybe I should just this is ridiculous, and I should start using something like Docker or containers or something.

So, like, that's one half of the the story.

And the other one is I was interviewing or reading different people talking about like this cloud commodity, a bunch of small things.

Maybe that's not the right way.

Like, for example, I got a chance to uh have uh Mark Rasenovich, the CTO of Azure on TalkPython.

We sat down and we were talking, and he's like, oh yeah, we're we're moving towards more consult more big servers rather than a bunch of small commodity servers.

And they have they have some that are up to ridiculous levels.

Like single servers you can go get that are you know 1700 core machines with many terabytes of RAM.

And they every every time they put out a new one, they have a different adjective for it.

So it started out with Godzilla, then super Godzilla, and now the one that they have uh that's really big is like mega super Godzilla beast or something like that, right?

But they're they're running out of ways to describe like how ridiculous it is.

Um so so that in the David Heineminer Hansen stuff, like leaving the cloud.

I don't know if people have been watching that, but like similar thing, we're gonna get like a couple really big servers, and we're just gonna use modern software to sort of DevOps our way through this better than and so I kind of went down that path because I'm I'm like, all right, well, I want to take advantage of not just Python, but all these cool open source things for both running your code, for for extending services, for getting away from unfair SaaS to having not just unfair SaaS, but you know, your your GDPR

statement has here is this other service we're sending in your data to at a very high price, we pay for the privilege of doing so.

And then here is their GDPR statement and their cookie statement, and they're this and they're that, and it just it makes operating an online property a little bit of a pain, a little bit fraught with that kind of stuff.

Not to mention blocking, right?

Like if it's some kind of API endpoint that uses their domain.javaScript thing, and maybe that's blocked as tracking, right?

Uh, so there's just all these challenges of integrating with other people's stuff.

So there's a lot of advantage to running things yourself, but then you don't want to let the wild animal like into your house.

What do you do?

Yeah, okay, good.

Carlton Gibson

So I want to so one thing I want to pick up on before we perhaps um switch over to the container side of it, is just on um hosting your own email list.

Is the big scary beast that they always wave at you is deliverability.

It's is getting your your email delivered.

And if you self-host, how do you handle those deliverability issues?

Michael Kennedy

How do you Yeah, that's certainly uh a concern, right?

So I there I people should disentangle two things.

There's running your own mail server, and then there is running the database that holds the list of people on your mailing list.

And so, for example, one of the things that I chose, uh, there's a ton of them uh you could choose, but I chose something called Lispmonk, which is free, self-hosted, sort of Docker first type of.

I don't even think this one has a hey, you can pay us money.

Um listmonk.app.

Yeah, so when you go there, it says, well, how do you use the thing?

It right there, it says, okay, what you do is you literally uh use this, uh say create a Docker compose YAML file that has uh listmonk latest, and it also has um you set up Postgres.

I think it think it is Postgres.

There's basically two um two servers that you gotta run there.

Yeah, uh the the use of post uh Postgres thing and then just the web app, which I think that's written in Go.

Yeah, I'm pretty sure it's written in Go, but it doesn't matter because you don't have to think about it.

So you just go there and it says here here use this is how you plug it into your infrastructure, right?

As as part of uh your system.

So back to your question, Carlton.

Um that plugs into what people are probably already using to deliver mail.

So it has it like a drop-down for are you using Amazon SES, are you using SendGrid?

Are you using Mailgun, which you've already got your DKIM and PK, whatever stuff set up, and you because because you're already sending a ton of mail out of that, right?

Yeah, right.

Okay.

Will Vincent

Right.

Because that's the thing, is that when you like running a platform as a service, you have your transactional emails already, you know, someone signs up, reset password, that kind of thing through let's say SendGrid, and then you can separately have your database that holds your newsletter, which you also send through the same what's what is it?

SES, what's what are they even called?

There, there's some acronym for

Carlton Gibson

SES is the Amazon one, right?

Simple pools, yeah.

Michael Kennedy

Simple email service, but I

there's something.

Michael Kennedy

Yeah, I'm sure there's an alternative and uh an opposite of transactional email service, but yeah.

Yeah.

So they send it, they s they send the emails.

Michael Kennedy

Yeah, the email sender.

Yeah, so Carlton, I'm not hosting my own mail thing.

That seems fraught.

And also it's not just yeah, exactly.

Michael Kennedy

And my reputation is a hundred percent at SendGrid.

So as long as I'm well behaved.

Maybe it's 99.9 or something now, but

Will Vincent

I gotta put on my old man hat.

Like 2010, when I was at a company called Quizlet, we had millions of users, and we had to do all the, I guess primarily transactional stuff that we sent a couple a couple marketing in quotes emails.

And it was just like just stored in like a PHP app.

And you know, it's basically impossible then, and it's worse now, to just send a million emails or two million emails unless you have this built-up reputation, right?

Because at Gmail Yahoo, like it's it's undoable.

And I think Mailgun actually had just come out of Y Combinator at the time.

But like, yeah, so like you can send them, but they're no one's gonna get them.

Michael Kennedy

No, they're not going anywhere.

It's it's

Will Vincent

it's a nice nice little gated garden there.

But but yeah, that's for anyone who's thinking I'll just self-host it all, like that it's not gonna go through because there are these guardians around reputation.

And if you get a certain number of spam, yeah.

This is actually this is what I tell like my non-technical friends.

I'm like, if you're someone's sending you email, just flag it as spam and they will stop.

Like they will hard stop.

Because unsubscribe is just kind of like a option, it's like please unsubscribe me.

There's no force there, but it you hit spam, their you know, their credit score gets dinged essentially, and they will automatically pull it.

Yeah.

Michael Kennedy

Yeah, so I actually set up uh uh a thing that will listen to it'll set up a webhook that'll listen to unsubscribe events across different things.

And so sorry, and and well that's obvious, but spam requests and bounce requests and and those types of things that are not typically sending back responses.

And through Syngrid, they'll tell you, hey, somebody, somebody uh marks you a spam or something like that, at least on the major platforms, Google and Microsoft and stuff.

And so you can then unsubscribe them so you don't keep sending it and keep adding to your bad score.

And so that's right, that's some of the interesting things that you can do.

Uh it took a little bit of Python code to make it happen, but

Will Vincent

it seems like that should be built into one of these services, right?

Michael Kennedy

It's built into this listmonk thing, but it somehow doesn't come back from Sendgrid correctly.

I I don't know.

And I'm like, it's m it matters enough that I'm gonna just take an hour, write a little API that just listens to this email doesn't like you for some reason.

Unsubscribing.

Will Vincent

No, and is this primarily this is for like marketing emails as opposed to transactional?

Michael Kennedy

Yeah, exactly, yeah.

Will Vincent

So the transactional you already had through I forget which one you said.

Like that was all Sangra.

This is right, right.

Because the marketing ones, that's where MailChimp and Convert Kit and all of them come in.

And yeah, like they we're actually um there's a Django hosted one um button down.

Yeah, button down.

You have to pay for it.

Michael Kennedy

But certainly I can send it button down as well.

Yeah.

That looks cool.

Will Vincent

We're gonna have Justin Duke on um a little bit later to talk about it.

Awesome.

But yeah, that that that seems to be the progression, right?

It's like, hey, we're indie, and then all of a sudden Intuit owns you.

Yeah, exactly.

Will Vincent

They and it's like free for the first couple of thousand, and then it's like, wait, how much is my bill?

Yeah.

Michael Kennedy

Yeah.

Sorry.

Will Vincent

But anyways, yes.

Carlton Gibson

It it's always struck me that email providers are quite expensive.

You know, you you look at them and it's always like, okay, it's only 30 bucks, but it scales up and it's like, oh wow, actually it gets it gets expensive.

Will Vincent

But the transactional ones aren't that expensive.

No, no, no.

The pen marketing ones.

Yeah, yeah, yeah.

Marketing ones, it's like a hundred X like markup.

And it's like you're still just sending an email.

Like, and uh my issue is like I want like a base version.

Like, I don't want to do a drip thing, like I just want to send email.

And I'll have like personally, I'll happily pay someone not to just do that.

And you know, so we're gonna have to talk to uh Justin from Button Down and these other solutions, you know, because I'm not at a scale, but there seems to be no in between, uh, you know, broadly speaking, right?

It's really, I guess, designed for larger companies and the marketing departments.

Once they get hooked in, like they're not writing an API endpoint, they're not looking at this, they're just like just throw money at it and move on.

Michael Kennedy

Yeah, absolutely.

And there's uh I don't know, I I guess I guess that's just the space, but there's that whole area is just I I kind of feel like they're just overcharging.

You know, you look at places like HubSpot and MailChamp, and they're like, you know what?

It seems totally reasonable that it's a thousand dollars a month to have a few landing pages.

You know what?

I'm not really sure that that's true.

Oh, by the way, you can pay that in 12 months you know, yearly chunks as well.

So it's like, wow, okay.

Right.

I didn't know.

Thanks for that.

Michael Kennedy

Well, there's no alone.

I need a loan to get like marketing software.

Will Vincent

Right.

I mean, there's a company here in Boston that just IPO'd that's um Django based or was originally um Clavio with a K that I believe also does like like if you look at a lot of like e-commerce companies, they handle mark you know, marketing emails essentially.

And um I know there's is it still around?

There's a company called Drip that was doing drip emails.

Yeah, drip's just

Will Vincent

that kind of thing.

Yeah but like Clavio is like that, but like ten billion dollars or whatever it is.

So like huge companies.

Um but yeah, that I guess there just isn't a market for like solo or smaller places, right?

They don't really care, right?

And it's like, well, you can go open source if you can, otherwise, we'll just we'll take your money.

Yeah, anyways, button-down shout-out.

We'll talk to Justin about it.

I think he's trying to tackle that challenge, but the space in general doesn't focus on that.

This episode is sponsored by Mailtrap, an email delivery platform that developers love, an email sending solution with industry-best analytics, SMTP, an email API, STKs for major programming languages, and 24-7 human support.

Try for free at mailtrap.io.

Carlton Gibson

So, Michael, you decided you were going to stick everything all on one but one big box.

What kind of box did you get?

And where did you get it?

And is it a physical thing?

You have to drive to the colo and change the hard disk at two o'clock in the morning, or is it is it?

Michael Kennedy

I I think, you know, I mentioned the the DHAs were leaving the cloud, and those guys went and spent half a million dollars on servers.

Like that's not you're also not you're also not 37 signals, probably, for the general people listening who would consider.

But it's totally reasonable to say I'm gonna go to somewhere like DigitalOcean or Linode or somewhere.

You know, one of the things that has struck me as like interesting, but you often get uh sort of too deep into the machine, and then you're stuck, is just go to AWS and look at the the console of services that are there.

You know, it's like you gotta zoom in just to see what they are anymore.

There's so many sort of thing, right?

Like, what is going on here?

And you know, it's it's totally reasonable that all right, this this database thing is like starts at $20 a month.

Okay, that's fine.

And we got this functionless, and then oh, we're gonna need caching for this thing, then over there, and then all of a sudden, your code doesn't run in general places, it only runs in this one particular cloud.

And the aggregate of this, because you now started doing too many SES transactions transactions reads and writes, so now that's expensive, but you got nowhere to go or whatever, right?

Bandwidth is high, um then you're kind of stuck.

And it it's I think it can be frustrating.

Also can kind of take you away from just the simple Python solutions.

Like, then how do you even test that kind of stuff locally end-to-end?

You know, it's like, well, I don't have all these.

I know there's containers you can set up, but like at that point, you're running a different set of complicated infrastructure just to write code.

So to answer your question, Carlton, just I got like a $60 server over at DigitalOcean and just put everything on that.

Right.

There's some really interesting things.

Carlton Gibson

But you get a lot of you get a lot of stuff for a $60 server, right?

Michael Kennedy

You do, yeah.

It's uh eight gigs, four CPUs.

Um what's really interesting is the bandwidth.

So if you did 10, let me just do the quick math.

If you did 10 terabytes of traffic on the the CPU, the EC2 is actually not as expensive as it used to be, but if you did 10 terabytes of traffic um on Amazon, it's $921 a month, right?

It's uh nine cents a gigabyte, right?

Which doesn't sound that bad, but then you multiply it by big numbers and it goes up.

Digital Ocean, you get most of that for free.

It's like bandwidth is like 50 bucks a month.

I was like, oh, that's interesting.

Carlton Gibson

You can that's

quite a big difference, no?

Michael Kennedy

That's uh it's not a non-trivial difference, and you know it scales linearly with how much traffic.

So as you get bigger, it's just it's it's different.

Will Vincent

Why is why is that?

Is that Digital Ocean trying to compete with AWS in one of the few ways they can, or what?

Michael Kennedy

Every machine that you get, every basic tier of a machine that you get at DigitalOcean, I think LinOn is this way too, but since the my acquisition, I don't really know anymore.

You get one terabyte of included bandwidth with each little machine you get.

And if you get big one big machine, I think I get six or eight terabytes of credit for outbound traffic.

Whereas on Amazon, it's like, well, it's just nine cents a terabyte or gigabytes, not so bad, right?

But then it adds up.

Carlton Gibson

So I think there is a a quite generous starting thing for I mean, most most small sites wouldn't pay anything for bandwidth on.

Yeah, yeah, yeah.

Michael Kennedy

And even if you were a small site, like it also it it just doesn't matter, right?

But if you start shipping bigger things like uh MP3s and videos, yeah,

Carlton Gibson

videos, videos.

As soon as you're hosting videos, you're like, ow.

Michael Kennedy

Yeah, yeah, yeah.

Will Vincent

Well, and you yeah, you so you don't use like, I don't know if it's still the case.

For a long time, Vimeo had like uh unlimited for like $99 a month or something.

Is that a sigh there?

Talk to me about hosting videos.

Michael Kennedy

Hosting videos.

So yeah, I I had some stuff going on with Vimeo for a while, paid for their business tier where you could white label, re-host it.

And it was it was actually a really good deal for a while, and it it solved a problem because video delivery, CDNs, all that stuff is super, super hassle, right?

Um, you know, re-encoding stuff so it streams the right, you know, on Android it wants a different size and format than it does on iOS, than it does on yeah, it's a nightmare.

So they handled it.

I was happy to pay them, and then they changed their policy.

Like, oh, if you have too much bandwidth, then you're gonna start paying.

There was a famous example, I can't remember the exact details because it's been so long, but there was this is somebody who was not going through the business plan.

They just put like as if you were on YouTube, they put up a video and it went viral.

It was a creator type, not somebody trying to create a platform or anything.

And um they got a letter from Vimeo saying you're gonna need to pay us like a thousand dollars a month for the bandwidth that your viral video is costing us.

And then I what?

I just put like you're a video.

We posted a popular video.

Michael Kennedy

It wasn't popular at first, it became popular.

And yeah, they they they had some changes in policy that just really kind of put the quash on that.

I don't remember the exact details, but around that time, it feels like it was five or six years ago, that it was it just things changed there and it it didn't make any sense anymore.

Kind of like MailChamp.

Like it was cool for a while that you could do stuff there, um, but it things change.

Will Vincent

Well, what what is I think it's this is also Boston based.

There was another like more expensive better Vimeo.

What is that one called?

Will Vincent

There was there was like one other one, right?

Michael Kennedy

Something like that.

Will Vincent

Yes, the Wix is the building.

It was like that.

Michael Kennedy

Yeah, something like that.

I can't remember.

Will Vincent

But its pricing was even from the start, it was like kind of outrageous.

I think, yes, probably back five, six years ago when I was looking at this.

It was still, it was like, I was like, who who can afford this?

It's like big companies, I guess.

Big companies with marketing departments that just want to pay money and have it solved.

But yeah, I guess it had all this analytics and everything.

Michael Kennedy

And yeah.

Yeah.

Michael Kennedy

It's awesome for the right group, um, but not for the wrong group, I guess.

Will Vincent

So what are you doing today?

Yeah, you're no, you're right.

Will Vincent

It is Wix.

You were correct.

Yeah.

Okay.

They're still around.

Um I guess I was thinking about Weebly.

All these weird names.

Michael Kennedy

Something that's like Wix, though, for building web apps.

It's like a Squarespace competitor.

I don't know.

Michael Kennedy

Remember exactly what that is.

So basically, I real like through this whole process, I realized, oh my gosh, there are an amazing set of open source projects that sometimes you can pay small amounts of money to, or if it makes sense, you could also self-host it, right?

This list mug example I gave you, you have to self-host it.

But another one that's really, really interesting is the web analytics, you know, Google Analytics Alternatives sort of thing.

Probably the best known one would be Plausible at plausible.io.

You guys know that one?

Yeah, yeah.

Michael Kennedy

Yeah.

So those those folks are based, I think, in the EU and are much more concerned about GDPR.

And I think what you guys know?

Carlton, maybe you know, you live, they're in your neighborhood.

Uh, there was some ruling, either France or Germany, that basically said uh Google Analytics violates the GDPR to some effect.

And then another one, uh, which are those pairs that said Google Fonts violates the GDPR, right?

Right.

Which is even a little more subtle.

Carlton Gibson

But you like so the trick with, I mean, I know more about the Google Fonts fonts, it's something I've looked into and considered.

And I always, if I want to host a web font, I will always download the web font and host it locally because actually

Will Vincent

they don't let you do that anymore, Carlton.

Yeah, they do, they do.

No, no, no.

Carlton Gibson

You I was there yesterday downloading a font.

They've got downloads.

Will Vincent

Google, Google does.

Yes.

But but if you like, because I went through this with the design process, even all these fonts, I was like, we're talking to designers.

I was like, I'll pay a couple hundred dollars to download a font.

And it's like, nope, you can't anything that's not Google Fonts, basically, there, it's a SaaS font.

Michael Kennedy

Fonts as a service.

Will Vincent

It's yeah, and it's so expensive, right?

And I'm like, you know, like there's I forget the font that, you know, OpenAI's font that they're using is you know, I calculated the bill based on like obviously they're they're getting a discount, but it would be like tens and tens and tens of millions of dollars a month just for the font.

And yeah, anyway, so just side rant, like, yeah, just let me just download the thing.

And yeah, I guess Google lets you download them.

But all these other fonts, I was like, oh, I want a bougie font.

I love fonts.

And it's like, nope, that's yeah, like basically not possible for for the majority of yeah.

Okay.

Carlton Gibson

So it's anyway, so I I do is download them because um I don't want to for my, you know, even forget the EU regulation.

I don't want to put my use, people come to my website in good faith.

I don't want to then have tracking stuff embedded in there.

Michael Kennedy

I'm 100%

Carlton Gibson

you know, big big megacorp can form their shadow profile.

I'm just like, no, I'll download it and self-host it, and that's fine.

So the thing with the analytics is like which are the which are the ethical ones?

Which are the ones which don't do exactly that?

Michael Kennedy

I'm gonna leave some out for sure.

But so plausible.io is really interesting.

They've got a just analytics as a service, which I think probably makes sense for most people, right?

But it's buried deep down in there.

I mean it's not buried, but it's it's not front and center click here to self-host it, but you can self-host plausible as well.

The one that I'm using is something called Umami, which is more yeah, I've heard of that umami.is uh it has a a pricing version where you can just go get it your own for nine dollars a month.

Uh or you just go, it's got a GitHub 20,000 stars and fired up your your Docker Compose file and and off it goes.

And what's really especially interesting about analytics is I the so I I actually took Google Analytics off like four or five, three, four years ago and just turned it off because I'm like, it is not just a privacy violation to basically have it, but it is also kind of useless because so many apps, web browsers, pie holes, everything just block Google Analytics outright.

And so you're getting a really partial view of what your web traffic is doing.

But with anything self-hosted, you can put it on your domain and it just looks like part of your web app.

So, for example, for you mommy, I self-host it uh in a container on the same big server with all the other things.

I've got like 15 things running over there in there.

It's on the same domain, the same IP address.

So when browser look at it, go, yeah, that's fine.

That belongs to part of this web app, right?

Yeah, it's just uh and and you get near 100%, unless you turn off JavaScript, you're getting almost a hundred percent accurate view into what's happening in your world.

That's yeah, which is obviously much more.

That's a pretty that's a pretty unique thing.

Most things are not like that, but web analytics are are so subject to this privacy blockers, tracker blockers, ad blockers, which I'm not ranting against at all.

I I think that they're serving a very important role.

But you know, as a web site builder, you end up on the receiving end of you know other people misbehaving badly, so you're untrusted as well.

Kind of like the same email story, right?

You know, people have abused the system, we don't trust anyone anymore, unless you're Gmail.

Carlton Gibson

Back in the back in the day, you didn't have a web blocker, but then you had pop-up, so we have to have a pop-up blocker.

And I mean it's it's just warfare.

I'm not turning it off ever.

Will Vincent

I I'm surprised there isn't like a documentary on like you know the dominant web blockers, right?

Because the ownership structure is deliberately unclear.

And it seems seems like they're owned by like Google and Apple, like it, but it just isn't like for real.

Yeah.

You know, not to get too Joe Rogan on this, but um yeah.

That's right.

Yeah, the deep, the deep, the deep analytics.

The deep analytics.

Don't don't let deep.

Will Vincent

Yeah, yeah, yeah.

Like who would want to who would want to own it?

Who would want to own it and has a lot of money?

Like, uh,

Michael Kennedy

like, oh, we're gonna block everything except for our ads.

You know, something like that, right?

That's right.

Yep, yeah.

So I actually run um next DNS uh for my DNS, and that that stops everything.

That's beautiful.

Even my television has ad blocking built in.

My all your iPhone apps or Android apps built in ad blocking because though that network endpoint is unreachable.

Will Vincent

So if you so like Amazon Prime now for their videos that you just get a blank thing when it tries to put ads on there?

Michael Kennedy

Uh, you know, I haven't watched any Amazon videos since they put ads on there.

So yeah, so I think generally the stuff that's in the stream is is kind of come through the same source, but in most of it, you know, even if you go to if you go to a uh some mobile app and you hit a thing and it opens up an embedded browser, like the ads are gone.

Every now and then my daughter asks, like, Dad, could you put the ads back on on the network for a little bit?

I'm like, why do you want that?

She's like, well, if I watch this ad, then I'll get a credit in my game, and I can't watch the ads in my game because you're stopping like we're winning.

But uh Yeah,

Will Vincent

no, I I was thinking this because my kids, like for the longest time, you know, they've never seen ads on a screen, and now one of these things or something they want to watch, and they figured out that my kids like Legos, and so now it's like, hey, I want this Lego.

Okay, what does it cost?

What?

Carlton Gibson

Like $300.

Yeah, it's oh my god.

Will Vincent

You know, like so it's but it was, you know, in a way it was this it was is this golden time of kids not seeing ads, like you know, because growing up, like the radio that like you just bombarded with it, right?

Whereas most kids, you know, well, I guess you know, if you pay for a YouTube premium or get a family plan, um but anyways, yeah.

So when someone looked at that and was like, you would pay more to not see those ads.

Exactly.

Michael Kennedy

Probably.

Yeah, exactly.

So yeah, I think anyway, so back to the uh analytics, I think you know, there's all these different ways in which that that information either is somewhat ill gotten by sending it through a big tech or just just corrupted because it's so partial from you know the different levels of ad blocking.

So I think that that kind of self-hosting stuff is there.

Um I I want to give uh I'll give you guys a whole long, interesting list of things here in a second.

But I want to kind of just step back for a second and talk about like this eight little servers versus one big server.

And if you think about you could say, all right, well, the the big server is roughly every app has about the same RAM as it had before, right?

In a at least in a sense, right?

If they're all still using a decent amount.

But if you have a bunch of small servers and there's some spike in say one of your APIs, or there's a traffic spike in one like talk Python has like a big spike for some reason.

Python Bytes had one because some guy was trying to DDoS it the other day.

But it was fine.

Michael Kennedy

I didn't mind.

Anyway, if for whatever reason, good or bad, it has a spike and it's on this sort of commodity bunch of small pieces world, it quickly runs into the limit like well that server has one CPU or it has two CPUs or whatever it gets when you chose it.

And that's it.

But if you put them all together in some kind of like Docker cluster type of thing, those spikes almost never overlap.

Right.

The reason that the courses would spike the versus the reason that talkPython versus Python Bytes versus the APIs that run the mobile apps, whatever, there's no almost no correlation between the spikes of one and the other.

And so it can each one of those has almost all the compute available to scale out and do its thing.

So it's really interesting to think, you know, like I've got this little Yamami Docker thing running and this listmonk thing running and all the other apps and um web apps running and they might have these different spikes but they all have like higher headroom to do whatever they need to do for less.

Like I'm paying 40% of what I was for the eight servers the little baby eight servers than to get one bigger one and you get more compute out of it.

It's really interesting.

Carlton Gibson

Yeah no I like that I like that it's yeah love it.

Michael Kennedy

Yeah it's it's fun to think about but so all right so I I mentioned a couple of these things and and neither of them just before

Carlton Gibson

just before you got gone but just before you do that let me just jump in.

So you're running so you said 15 services on this on this box.

So I presume it isn't just some sort of long running screen session with you know shell it's 15 tabs open and uh how are you how are

Michael Kennedy

you managing Docker containers I believe maybe 17 with the different databases and stuff but yeah.

Carlton Gibson

Have you got some nice UI that you know helps you manage those or

Michael Kennedy

oh uh not really but I I it didn't come with one because you've got Docker and and compose and different things.

But I used Rich, you know the Python library by Will McHugan and Textual and did basically uh an in-memory join on the report that a bunch of Docker and Linux things return.

And it'll create a table and then with rich something that's really awesome is one you get color as I'm sure you know but what people maybe don't know is Rich has a context manager for live redrawing of content.

So you say with live here's a table and then you just start changing the table and it'll change the UI without even um without even flickering or anything just over SSH.

So that's basically that and are you all familiar with Btop no oh b top is magic.

So Btop um it's github.com slash oristokratos slash btop

Will Vincent

yeah a monitor of resources

Michael Kennedy

yeah but what's amazing as they don't have if you scroll down to the graphics section like maybe half the way down that page there it's you know this thing I described with rich this is not based on rich but it's like kind of that to the logical extreme it looks like a uh

Atari or Nintendo 64 game almost and just live updating of all these different panels here's all your CPU across all you know individual and total aggregate CPU here's your network traffic your processes um this is what your your disk and memory usage looks like all updating live with graphs and and stuff.

So like that's kind of the thing I've been using is just like look at the the server.

What's interesting is when you're running Docker containers all the processes in Docker all show up as separate processes in in the like the the process monitoring tools.

Right?

So you can actually see this part of my Docker container like this worker process for this service is using this much RAM and this much CPU and here's the graph over time and stuff like that.

Will Vincent

It would be super cool if just thinking about like your custom stack here it's almost like if some naive person came in and you just had these drop downs like oh I'm using MailChimp I'm using these different things and then it was like here's here's a recommended other you know I don't know you wouldn't monetize it in any way so what's the point?

But like as much as things are custom there is some degree of generality around all this which I mean you know Carlton I almost hesitate to ask you know you have spent quite a bit of time on a Django specific thing um button that was going to do some of this for um for Django I guess it's just hard to draw that line and get enough people in where it's like yeah I'll pay you know it's it's not as much as all these services but it's enough to someone put a wrapper on top of

it.

Carlton Gibson

Yeah no I think there's a market there.

Michael Kennedy

So how's your project coming Carlton

Carlton Gibson

yeah no it's going really well so I'm so I stopped following and I mean immediately in order to pay the bill pay the bills had to pick up a new um thing.

So I've been working on a project called Pards which is an app in the environmental and social governance space but I'm deploying that with button on exactly the the tooling that I want to use and it's all going great and it's it's super um and I think there is a market there.

It's just a question of um productizing so you you build an app and then you you want to productize it and it's it's sort of three times the the the the three times the time to productize something as it is to just build the app that works for you.

And it's that bit that is tricky because I'm already building one application for as a full-time job how am I going to then build another well I'll slowly tick away at it and I'll roll it out over time now.

But it for me it works it works well it's lovely I think there's a market there but it needs somebody to sit down and you know have the time and where do you get that time without the funding to to back it

Will Vincent

and then just raise money just get some friendly VCs

Carlton Gibson

no but as soon as you raise money then there isn't a market there anymore.

That's that's the rub that's so what have we talked about on this podcast?

We've talked about MailChump used to be cool and then they sold out and they then they became really expensive.

We talked talked about I don't know a Vimeo that did used to be good it was the best offer for hosting videos on the internet and then obviously they need to make more money to to to satisfy their um their investors and all of a sudden it's like priced out and it's corporate only and it's the same in this deployment world is like Heroka what happened to Heroka well it got bought out by you know the the big company there and then they they're like we can't do this free plan because it's it just doesn't satisfy and that's

Michael Kennedy

yeah yeah yeah yeah I I don't know how much their policy changed but like they they kind of got down the

same path.

Carlton Gibson

Yeah you can't have it both ways either it's a small bootstrap thing which you need to kind of grow organically or you take outside money and then that you can't you just can't serve the the the hobbyist developer or the small the the the small independent developer.

You're looking at corporate and there's no way around

Will Vincent

that'll be our first question to uh Justin of button

Carlton Gibson

well no but he's the but he's doing it that way right he's he's it's a small thing he hasn't

Will Vincent

a lot of intent and a lot of and at some point right like maybe you don't want to work on the same thing for forever right and so um I guess you know and tech is so weird because it's infinitely scalable whereas like a more real world example like what

is it like um the like oatmeal like to get from this like Bob's something or other it's this old guy on it.

And like Bob just yeah red mill right like you know he could have sold to megacorp he sold it to the uh employees so now it's employee owned like where I'm from in Vermont there's a number of companies that have done that but you know that means that Bob or whomever he could have made a lot more money right but um you know yeah and I guess it would be nice if there was some tech equivalent I I guess maybe there there are some a little

bit but more around like agencies.

I know like Torchbox is employee owned I guess it's really hard around products to do that in the tech space.

Michael Kennedy

Yeah and the stuff that has running costs right infrastructure bandwidth uh computes and

Will Vincent

if you raise any outside money then inevitably it's gonna yeah.

Carlton Gibson

No but it I think about outside as soon as you take the outside money you need the bigger revenues and you need the

Michael Kennedy

clock's ticking on your 10x and you better find a way to get it.

Will Vincent

But you I mean not to make this all about 37 signals but they famously took money from Jeff Bezos like way back in the day because I think they were facing some of these pressures and it allowed them to you know stick it out right like maybe there's you find a benevolent billionaire who'll buy 10% for uh some amount of money.

Michael Kennedy

You know I like I like database camp app I want it to exist.

I'll just make sure it doesn't go away.

Something like that.

Yeah, yeah.

Their whole leaving the cloud series that David Heineman Hansen wrote is is super, even if you disagree with them, it's super worth your time of looking through it it.

It's it's quite interesting.

So you guys are, I'm sure, familiar with awesome lists, right?

So one of the things I want to just give a shout out to is kind of like this whole thing we've been discussing, kind of that.

So if people check out products.containerize.com, that is like an awesome list for you know, pick your self-hosted thing.

So you want to do blogging, here's here's the choices.

You want a forum, here's these are all open source, self-hostable, right?

Discourse, or do you want vanilla?

Do you want you know Node BB, or there's a marketplace?

They're all alternatives to you know Shopify, I guess, would be the marketplace equivalent, right?

And they've like this is the one that's voted most by by the users.

Um, you want chat like uh Slack?

Well, Rocket.chat is like the winning one, apparently, here.

But there's you know, what is that, 12 other options?

Um transactional email.

Is it win winning by GitHub stars or they have some other

Michael Kennedy

it gives this little like thumbs up?

And I think it's whoever runs this is like this is the one we've sort of given our stamp of approval to more out of them.

But yeah, that

Will Vincent

yeah, I know it's very cool.

Michael Kennedy

That's interesting, right?

But then you end up like, well, if I want to use any of these, like, well, what infrastructure do I run this on?

You know what I mean?

You've got you've got invoice.

You're back, yeah, you're back to that, right?

But I don't know.

Carlton Gibson

I mean, every one of these things has a massive learning curve to picking them up and taking them on, right?

It's not it's it's open source, it's self-hostable, but it's not free.

Michael Kennedy

No, it's not totally free, and I totally uh agree with that.

But what I would tell you is you will find a pretty common theme of here's a Docker Compose file.

Do you have a place that can run Docker Compose?

If you can do that, then you can probably self-host this pretty well, right?

You gotta have some kind of backup, but almost always it's Postgres.

So you just run a Postgres backup on the server you set up and and figure out how to restore that later, whatever that means for them.

You know, it's it's not as once you start down this path, you're like, oh, I've already got 10 of these things running here.

What's what's two more?

What's 11?

Yeah, what's eleven?

Michael Kennedy

You know, because it's Docker, like you know, you don't have to trust it as much.

You still got to trust it with your data, but it's not right in there with all of your other stuff on the inside of the firewall and and those kinds of things.

And so it's it's not as risky, but it's pretty interesting to go down this.

You know, one um um one thing, I guess, also two things here.

Uh one is um, have you heard of Elestio?

E-L-E-S-T-I-O, Elestio.

So these this is uh it's not that cheap, but it's it's kind of empowering.

It's just this company that you say, what is your provider?

It says hosted on DigitalOcean, AWS, Vulture, Hertzner, Linode, Scaleway, et cetera, et cetera, even on-prem.

And then you say, Well, which one, which open source project do I want?

So, do you want Click House?

Do you want uh OpenSearch, you know, whatever, Redis?

And they'll just set, they'll manage the backups, keep it running, keep it patched for you, almost like as a service on your own infrastructure for like a bit of a cloud premium.

But you just go in there and you type in you one of these crazy things, there's a really good chance that they have it right there.

I think it's pretty fascinating.

We'll have

Carlton Gibson

a link to that.

All of these things that cloud premium, it's like, well, what are you buying?

What are you trading off?

Because in my day, there was when I was a youngster, it was literally a sort of old guy who like had a beard.

Yeah, you gotta have a beard.

Carlton Gibson

No, no, but it was it was like, yeah, like it was a profile big

Will Vincent

beard and recumbent bike, you know.

Carlton Gibson

He he he had a full-time job, and he was like, you know, whatever time of day, he had a pay, like he was never like seeming seemingly never sleeps, but didn't do much, didn't speak much.

But literally, his job was to keep the the actual physical server going.

And so when the cloud came along and they were like, Well, you could get rid of that guy, and that guy didn't get got rid of because like he had you know, he was he was just part of the furniture, you wouldn't get rid of it.

Michael Kennedy

Yeah, we just kept the cloud

Carlton Gibson

going, but that cost just disappeared, and so okay, the cloud server was more expensive than running it your own, but it was a lot cheaper than hiring the system administrative.

Michael Kennedy

Absolutely, absolutely.

Carlton Gibson

And so you think, oh, well, you know, this service here that's gonna be an extra few pence per hour, but but hang on, what are you trading off?

Are you trading off it took you two days to work out how to deploy this versus clicking it in?

Michael Kennedy

Or do you need to hire somebody to manage all these things, or can you just like pay an extra hundred dollars a month?

Yeah, it's it's really interesting.

One uh Django one that's really worth um maybe you've already had these these folks on, but have you looked at post hog?

Carlton Gibson

Post hoc, no.

Will Vincent

No, I've heard I've heard of that.

No, we haven't we haven't talked about it.

Michael Kennedy

I think I'm pretty sure it's self-hosting.

Let me just double check.

Will Vincent

Single platform to analyze, test, observe, deployment feature.

Michael Kennedy

Post hog, what is the domain of the ending?

Post hog.com provides open source product analytics, session recording, feature flagging, a b testing, all of that as a service or self-hostable, and it's in Django.

Carlton Gibson

Oh, right.

Well, we'll go again, right?

Michael Kennedy

Doesn't that look interesting?

Carlton Gibson

I'd see I had now you bring it up.

I had seen it before.

Carlton Gibson

I didn't know it was built in Django.

So that's yeah.

Will Vincent

I mean, that's what isn't that kind of cool?

Like even the two, even the three of us, right?

Like who do podcasts on this, and it's like, oh, there's this thing with like 17,000 stars that we didn't really know about that a lot of other people knew about somehow, some way.

Michael Kennedy

Somehow, exactly.

How do we not?

Yes, almost 17,000 GitHub stars and and written, and it's a really cool looking app.

Single platform to analyze, test, observe, and deploy new features for your your web apps and and stuff.

So yeah, that looks that looks quite slick.

Let maybe let me give you all one more category of interesting before we we close it out.

Uh or we can keep going as much as you want, but before before we miss it.

And I know um Will that you're a fan of the Heroku style of things, right?

Will Vincent

Yes, I am.

Michael Kennedy

And then you end up at my go ahead.

Will Vincent

Yeah, I just say I put a preface with at my scale, it's I'm more than fine.

Michael Kennedy

And you know, I know there was a lot of drama around Heroku.

Uh I don't wanna I don't really want to give any hate.

Like they're they shouldn't be required to run the internet for free.

Yeah, you know, regardless if they're just run by one person in a closet.

Will Vincent

And no one else does either.

Yeah, exactly.

No one else really does either.

Michael Kennedy

Exactly, you know, like digital ocean.net free.

They have a four-dollar server, which I don't know, to me feels like free, but you know.

Uh it's not free, right?

It'll still covers it for like the the super, super indie little sites and just little small things and so on.

But uh as part of this whole deal, I came across Doku D-O-K-K-U.

Are you familiar with Doku?

Doku?

Yeah, I

Carlton Gibson

mean, this while I was wondering something like if you used some kind of UI, a bit like this, but you you don't, you do it with the terminal, but

Michael Kennedy

yeah, so Doku's pretty interesting.

It's kind of it's got this, you know, create your own, it's it builds itself as open source pass alternative to Heroku.

And you just kind of somewhere you create an app and then you create a proc file and you get pushed to some branch and that makes it go.

I talked about that on Python bytes, and people are like, oh, that's interesting.

And somebody wrote in, I can't remember the name of apologize, said that's cool, but have you seen Coolify C O O L I F a Y?

This is like uh one of the same things, but a little bit a little bit more full featured and a little bit better UI and a little bit more supported.

Self-hosting, alternative Heroku, Netlify, Versal.

I mean,

Will Vincent

that covers a lot of features there.

Michael Kennedy

Yeah, free, free SSL, automatic database backups, web hooks, automation, notifications, monitoring, all the all of that in just uh uh Docker compose up.

Will Vincent

Let me ask you as as an educator, like what do you tell people who are just want to like learn web development?

Right?

I mean, because like this is kind of the issue, is like at the same time that most software engineering jobs are around infrastructure, actually, probably around the web.

But getting started, like, I don't know, what do you say?

Someone comes to you is like, I don't know what Docker is.

I just have this, I'm so excited, I just learned Django and I want to host something, and it could be uh uh yeah.

What do you think?

Michael Kennedy

Well, let's put the data science folks off to one side because that's a whole different level.

Okay, yeah, right.

Because they don't even actually have a web app, but they need to somehow get it on the web, right?

Will Vincent

Turn this spreadsheet into a web app with CRUD and off and everything.

Exactly.

Michael Kennedy

Which is more of a but but for the folks like I have a web app, it does just what I want on my machine.

How do I make it on everyone's machine, right?

Right, so I think there's two paths as an educator you send people down.

One is just don't think about it.

This is what a connection string looks like to a managed database server.

You get pushed to Heroku or something, some platform as a service equivalent.

Job done.

That's kind of the I want to make it happen, and I don't really want to think about, worry about, or even hardly know about necessarily.

Like, what do I need to?

I just need it to just go.

And if I can get it here, these people will take care of it, right?

That's the minimum path, I think.

And that's probably the right path for a decent number of people.

Just like, I wanted to get it to go.

The other side, this isn't what I've ended up doing more, and I don't know, people are like, Michael, why are you doing this to me?

Is show them how to set it up on Linux.

If if you because if you know how to set it up on Linux, you can run it on VMs, you can run it on what do you got to do to do a Docker container?

You put run or copy in front of all the Linux commands.

You know what I mean?

Instead of saying CP, the the Docker file thing is copy.

Instead of uh you know apt install, you say run apt install, right?

Capital R U N is the front of that thing to make it a Docker command.

And so if you understand Linux, you understand Docker, and that opens up all the you know containers as a service, it opens up um Kubernetes if somebody else is running the cluster, like all it opens up that whole world, I think.

But there's a higher bar to say, like, okay, well, I'm a Windows person and I generally don't use the terminal, and you're making me work in Linux with no UI.

What has become of me, right?

There's that challenge.

So I think there's this bimodal, you want to send somebody people to one end or the other.

Carlton Gibson

I think there's a trade-off as well with the the past, is that it's kind of like a dead end, and that you I've described it in the past a cold set.

You go in and then it's great to begin with, and it's lovely and pretty, and there's flowers around it and that's bit of the end, but then you get to the end and you're like, oh, actually, I want to do something further, and you have to kind of go back all the way out out where you were to start again to get on to a more complex whereas if you go straight to a VM, it's slightly harder to get there to begin with, but you can grow an awful long way before you need to learn anything else at all.

Michael Kennedy

Um I 100% agree with that, yeah.

Carlton Gibson

The the the sort of example that comes to mind is with channels, which is the um you know um async add-on or web socket add-on for Django.

We the number one problem we have is people um having difficulty connecting to Redis because they've got a pass and they've they've got a Redis that they've spun up in the cloud somewhere, and it's not simple to connect because you you you're doing it over the network and it's got to be HTTPS and it's got to be this, that, and the other.

Whereas nobody in the history of Redis had a problem connecting to Redis on localhost, right?

It just never happened.

Michael Kennedy

And so like

Carlton Gibson

if you've got a VM, you can spin up Redis sitting next to it, and you're just you're off and you start, you never hit that set of problems until you're you know much bigger scale and you're like, Oh, I need a much bigger Redis.

Well, then okay, you can put Redis on a separate box, but by then you've you've kind of got the chops.

Whereas like people really struggling early on because they've gone the pass route, and then they needed something which wasn't delivered by the pass in its sort of cul-de-sac of first offer.

Michael Kennedy

Yeah, yeah.

Will Vincent

I think part of it too is it's enough to create a website and market it and do all those things, like in and of itself, and then to add in all this other bit.

It's kind of like it's rare to have the success and the knowledge and the time to do what you've done, Michael.

Yeah, whereas most people it's like on your own, put up a portfolio stuff and then go join a team and then you know have the time to focus on area.

It's pretty, it's very rare to do all the things you're doing at the scale that you're doing.

And I know you have some help, but like still it's usually most people are overwhelmed with

Michael Kennedy

no, I totally agree with you.

And look, when I started my stuff, I ran it on Pl uh Python Anywhere.

And I'm just said, here's my code, run it.

I don't want to think about it.

Will Vincent

Also bought by someone else.

Yes, I know Anaconda, Anaconda, I think.

Yeah, yeah, yeah.

Michael Kennedy

Uh then I slowly, slowly over time, kind of thinking like Carlton said, like, oh, it's just I need a little bit something different, right?

You know, I think it was something like we're gonna have our maintenance period.

Will it be down for four hours?

I'm like, four hours?

I'm not really psyched on that.

Maybe I should learn a little bit enough to control my my my maintenance window to be shorter than you know, four hours.

That's that's a long time and stuff like that, right?

Will Vincent

And I know I know we're coming up on time, but how how did you dip your toe in, right?

Because it does feel a little bit like a boom, like like were you able to do that gradually, or was it nope, I need

Michael Kennedy

to no super gradually it was.

How do I get

Will Vincent

it like moving services

and then keep the database there?

Michael Kennedy

Well, in the beginning, I just used SQLite because how much how how how read heavy is a podcast, right?

It's not that read heavy.

I mean, sorry, it's not a write heavy, it's it's it's read heavy, right?

And so that's actually pretty much fine for something that you update it a couple times a week, you know.

Carlton Gibson

And it's only one person updating it, right?

It's one

person updating it too.

Michael Kennedy

Yeah, exactly.

And so I started out with that, and like, all right, this is easy.

I can I can productionize this because I just let the file be there, basically, you know, run it on on Python anywhere, and like, all right, well, maybe we need to move it to our own server.

Okay, well, maybe we need a better database for analytics, like recording stuff that's happening and stuff like, you know, and it it grows, but it grows, you know, it's you look you look back and like, oh well, look at all this stuff.

It's like it's crazy.

Michael Kennedy

How why why do you choose this?

Well, it started like little little baby steps.

Uh, and you know, after you work with a while, it's like, well, that's not that's not for me, that's not that complicated.

But I know that it is for others, right?

Carlton Gibson

No, the best advice I ever had was from you know senior when I was a junior was like don't only put at the bits that you need as you need them.

So, you know, you know, don't worry about varnish caching and stuff.

You'll get to that if you need it.

Michael Kennedy

Like just to a scale that you care about that, yeah.

Then you can dedicate the time.

Carlton Gibson

Yeah.

Michael Kennedy

You should be so lucky as to have a problem where you need that, honestly.

Carlton Gibson

Yeah, exactly.

Exactly.

Will Vincent

Right.

Or as I sometimes I'll I like to tell people like when it's a problem, it will be overwhelmingly apparent.

Like you don't need to, you know.

Michael Kennedy

How will I know when a mine database needs to scale?

Will Vincent

Like, well, yeah

Michael Kennedy

when it becomes a

Will Vincent

premature optimization, like there's a quote on that.

Michael Kennedy

Like, yeah.

And and that's true in code, and that's true in like how you try to run your code.

Will Vincent

Um, well, we could keep going on and on, but we're a little bit over time.

We'll have links to all these things.

Um, I should we'll put a link to you.

Uh you have you mentioned HTMX, you have a relatively new Django HTMX course that folks should check out.

Um that seems I hope that's doing well for you.

Michael Kennedy

Yeah, yeah, it's doing well.

Worked with Christopher Trudeau on that, and it's it's going well.

Will Vincent

Yes, he's kind of he's like your Django person, right?

He does more.

Will Vincent

He's done a lot of stuff.

Yeah.

Will Vincent

Not to limit him to that, but I when I see TalkPython stuff that it does Django, I'm like, oh, that's Chris.

Michael Kennedy

Yeah, exactly.

Yeah.

Will Vincent

Um so thank you for coming on our podcast.

Of course, you have your podcast, Python Bytes, TalkPython.

We'll have links to everything, training around Django stuff if they need it.

And um this was really fun.

This I mean deployment is such is just an infinite topic, and I think for you to come in as pretty much a solo person at scale, that's a really interesting perspective as opposed to someone at a large company who came in late, you know, Kate didn't start from the beginning, and it's just like, well, here's my little piece of it, but everyone wants to know how did you how did you get there?

Michael Kennedy

It's yeah, it it's really interesting to think of I mean my takeaway is it's so easy and so uh affordable.

I I guess easy is not the right word.

So it's so accessible, right?

You know, for a hundred dollars a month or something, you end up with infrastructure that looks like world-class infrastructure, right?

It's it's ridiculous.

So uh it's it's all within reach.

And hopefully people got some cool resources as well.

Carlton Gibson

Thanks, thanks, Boy.

Will Vincent

So we are at DjangoChat.com and we'll see everyone next time.

Bye bye.

Bye.

Bye bye.

Will Vincent

This episode is sponsored by Mailtrap, an email delivery platform that developers love.

Try for free at mailtrap.io.