0:34:39 Yeah, I agree.
0:34:40 I think so.
0:34:41 And with Radiant, we're
actually, so because we can't.
0:34:44 Do this thing where it's like end
to end encrypted and because of
0:34:46 what, what our goals are, instead,
we're making it dead simple to
0:34:51 fully run the whole system yourself.
0:34:54 If you care about hosting yourself and you
want all the data and a big part, and to
0:34:58 be honest, that's a lot of what SST does.
0:35:00 SST helps you ship very complex software
multiple times in multiple environments.
0:35:05 and so, because Radiant is an SST
app, it is very easy to point it
0:35:09 at your own private infrastructure
and say, I'm just going to have
0:35:12 a self hosted version of this.
0:35:14 And it's, and we're making sure it's
like, As simple as it can be to do
0:35:18 that, and get as close to, like, using
the hosted version because there's
0:35:23 like some weird benefits of that.
0:35:24 Like, so this version that we're building
is going to be mostly built on Cloudflare.
0:35:28 If a lot of people end up self
hosting it, that's great because
0:35:31 Cloudflare is paying for the usage.
0:35:33 Like, The free tier is coming out
of each individual's deployment.
0:35:37 They're like self deploying
it into CloudFlare.
0:35:39 And that's like an interesting model
for, I don't think for radiant, it's
0:35:42 like particularly interesting, but
if you look at, um, there's another
0:35:45 project by, uh, Ben Vinegar, he
works at Sentry, called CounterScale.
0:35:50 So this is a classic, like Google
analytics type product, right?
0:35:54 It does like this web analytics,
the basics, and it's very early on.
0:35:57 But it's not a hosted project.
0:35:59 It's just something that deploys
into your own CloudFlare account.
0:36:01 So he can have a million users
using it for free without ever
0:36:05 really, you know, paying for that
because, you know, CloudFlare is
0:36:08 much more set up to offer that.
0:36:11 I'm very interested in that model.
0:36:12 Uh, cause I think for a lot
of infrastructure pieces
0:36:14 like that, it is a nice.
0:36:16 To have it alongside the
rest of your infrastructure.
0:36:18 I worked a lot in healthcare
environment, which has a lot
0:36:21 of compliance requirements.
0:36:23 And oftentimes I couldn't use the
tool I wanted to use because it
0:36:26 wasn't hostable in my own environment.
0:36:29 So, um, we're pretty excited about
like letting people do more of that.
0:36:33 I love that.
0:36:34 And I think this is like intuitively.
0:36:37 It should be easy to self host your
own software, like whether it's like
0:36:42 some company running it or whether
I just like take the software, put
0:36:46 it on my Raspberry Pi, put it on, on
Cloudflare or AWS, but in reality,
0:36:52 that's very much the exception.
0:36:54 I'd be curious whether you can share
a bit more of like the reasons that
0:36:57 you see why that's so hard and how
you're trying to make that easier.
0:37:01 Yeah, I think, uh, it's funny
because there's a weird alignment
0:37:05 if you think about this.
0:37:07 We are a small team.
0:37:08 If our system is really complicated
to run, that sucks for us.
0:37:12 If we can make our system really easy to
run and really low overhead and we care
0:37:15 about that more than everything, it kind
of starts to look like something that's
0:37:18 easy to self host by anyone, right?
0:37:21 So I think for us, like, a lot of times
we'll choose architectures that look
0:37:24 weird because they're like, Oh, that
looks like the fourth option on the list
0:37:28 of the ways they could have built it.
0:37:30 But it's because we really, really care
about, low operation overhead long term.
0:37:38 So even if it's like, you know, 20
percent harder to build up front, if
0:37:41 it results in like less babysitting on
our end, we'll like choose that option.
0:37:46 And it's because we're very committed
to continuing to be a really small team.
0:37:49 And so we'll, we'll end up picking
those options and those options happen
0:37:52 to align with like, what's, what's
simplest for, for the end end user,
0:37:57 if they're self hosting, I will say
like there is a version of doing
0:38:00 this, which we don't do, which is.
0:38:03 Building your stuff in the most,
like, neutral way possible, so it
0:38:06 can run in literally any environment.
0:38:09 I definitely get that, but you
do end up having to run a lot of
0:38:14 infrastructure on your own to, like,
get any complicated application working.
0:38:18 If you do it in a totally neutral way.
0:38:20 We kind of picked a middle ground where
it's like, we do rely a lot on, like,
0:38:24 in this example, like, we're going to be
using CloudFlare, we're going to be using
0:38:28 workers, we're going to be using their
queues, we're going to be using their
0:38:29 PubSub, all the CloudFlare native things.
0:38:32 So, yeah, if you want to go take
that and run it inside, like, just
0:38:37 a standard server you have, it's
going to be a little bit challenging.
0:38:40 And like, there are adapters and
stuff, and you can figure that out.
0:38:43 But we're starting with just making it
runnable in your own cloud environment.
0:38:49 So you can sign up for a
Cloudflare account and run it.
0:38:51 I know that doesn't like hit the
exact extreme of like being able
0:38:54 to fully run it yourself, but we
think it's like a nice middle ground
0:38:57 for a lot of companies, right?
0:38:58 Companies typically are already
using some form of this.
0:39:01 Getting this stuff deployed
into their own account.
0:39:03 I think it works well.
0:39:05 What's weird is you ask, like,
why isn't this more common?
0:39:08 I think it's actually common in this
weird way that people don't expect.
0:39:13 A lot of companies build
SaaS software, right?
0:39:16 They'll build like, I don't know, let's
say, let's take some random common
0:39:20 thing, like Auth as a service, right?
0:39:21 Like, I'm going to build Auth as
a service that people can use.
0:39:25 And they initially launched
that as like a hosted product.
0:39:28 And nobody uses it except for
people that have no money.
0:39:32 So they have like a lot of users, but
you know, these users don't pay a lot.
0:39:35 They start to try to move up, up market.
0:39:38 They end up with bigger
companies, you know, medium sized
0:39:40 companies, enterprise companies.
0:39:42 They'll all love the product, but
refuse to use a hosted service.
0:39:46 So then they're forced to figure
out how to make their stuff run
0:39:49 inside the customer's AWS accounts.
0:39:52 So if you do look at a lot of
these companies, they kind of
0:39:54 do have this hidden, like thing
that they eventually figured out.
0:39:57 I think companies should realize they're
going to end up in this place anyway.
0:40:00 Like it's very hard to build a big
business purely off of a hosted thing.
0:40:04 Like some people do it when you
really have like a large market,
0:40:08 but oftentimes you're forced to.
0:40:09 Bring yourself inside
someone else's environment.
0:40:11 So I think one way or another,
you're likely to hit that.
0:40:14 So it's good to plan for that upfront and
assume that you're going to run into that.
0:40:17 And we, because we're like, We're
more in the infrastructure space.
0:40:20 We kind of expected that from the
beginning, which is why we care a little
0:40:23 bit more about making all that possible.
0:40:26 So let's imagine I want to follow
this paradigm for Overtone.
0:40:32 And I do think that Cloudflare could
be a very interesting fit for that in
0:40:35 terms of the modern primitives that it
provides, so what would I need to do as
0:40:41 the application developer of Overtone
who buys into that vision and says
0:40:45 like, Hey, I don't want to operate like
the cloud thing for that, but I want
0:40:49 to empower every user to deploy their
own for the benefits that it provides.
0:40:54 What would I as the application
developer need to do to make that happen?
0:40:58 And then also follow up question.
0:41:00 What does someone who wants to deploy
that Which sort of additional stuff
0:41:04 do they need to deal with as opposed
to just using something like Spotify?
0:41:08 Yeah.
0:41:09 Yeah.
0:41:09 Cool.
0:41:09 So I think, I think the simplest way
to think about it is how hard is it you
0:41:13 for you to spin up a staging environment
for your own application, right?
0:41:17 You want to create an exact copy
of your environment, but you
0:41:20 know, just the staging version.
0:41:22 So this requires bringing up
all the same infrastructure.
0:41:24 It requires like, you know,
running your database migrations
0:41:27 to get the schemas running.
0:41:28 Um, requires a bunch of things.
0:41:29 And, you know, the obvious thing is
you should be using infrastructure
0:41:32 as code to help you do this.
0:41:33 You define all your infrastructure as
code so you can point it at different
0:41:36 environments and run entire copies of it.
0:41:39 That's like the bare minimum.
0:41:41 If you yourself can quickly create
another environment for yourself,
0:41:45 you've kind of solved the problem.
0:41:46 Now someone else can
follow those same steps.
0:41:49 Where they're just cloning
your project and running.
0:41:52 You might be using Terraform, you
might be using SST, whatever it is.
0:41:55 Uh, you can do a thing,
deploy with your credentials.
0:41:58 And the same thing ends
up in your account.
0:42:00 Where this is a little bit
challenging is updates.
0:42:03 So obviously, you know,
you have new versions.
0:42:05 People can clone and redeploy, whatever.
0:42:07 But there's sometimes
operationally challenging updates.
0:42:11 Like you might have like a schema change.
0:42:13 You might have, uh, like
data needs to be migrated.
0:42:16 So, ultimately, the thing to always
go back to is how do you make it
0:42:21 easy for your own team to do that?
0:42:23 Are there programmatic
ways of doing all this?
0:42:25 Or, like, if you need to do ad hoc
random stuff and that's part of your
0:42:29 workflow, it's going to be annoying
for your end user to self host because
0:42:32 then you need to, like, send them
the instructions, they need to do it,
0:42:34 they might, like, do it incorrectly.
0:42:36 So, if everything is tracked
in code and is automated and is
0:42:39 programmatic, It's good for your team.
0:42:41 That's good for the end user.
0:42:43 and for an end user, in terms of
what they should expect, if you are
0:42:46 using some version of the cloud, you
should hope that the thing you're self
0:42:51 hosting is taking advantage of as many
managed services as possible, right?
0:42:55 So I had this issue with PostHog.
0:42:57 So PostHog is an open
source analytics tool.
0:43:00 And when I was exploring it for
my healthcare thing, I was like,
0:43:02 okay, we'd have to self host it.
0:43:04 Let me go look at the
first self hosting steps.
0:43:07 Step one, set up Kubernetes.
0:43:09 Right, immediately there, I'm like, I
like, found a way to finally free myself
0:43:14 of Kubernetes for my main application.
0:43:16 I don't want to like go, have to
go manage a Kubernetes cluster
0:43:19 again, just for this thing.
0:43:21 So you should hope that, you
should pick tools that use
0:43:25 managed, versions of these things.
0:43:27 That's why, like, we typically focus
a little bit more on some of the
0:43:31 serverless stuff, because it's very easy.
0:43:33 If our app just runs as a Lambda
function inside of someone's
0:43:37 AWS account, or as a Cloudflare
worker, there's almost no overhead.
0:43:41 You're not like, you don't have
to like set up like Datadog
0:43:44 to like monitor the memory and
like scale this up, up and down.
0:43:47 It sucks to do that for like a small
tool that you're adding to your project.
0:43:52 So we try to make use of managed servers
as much as possible so that the end user
0:43:56 doesn't have as much operational overhead.
0:43:59 and again, some people
are willing to do that.
0:44:01 It's just, uh, it's obviously a
spectrum with all of these things.
0:44:04 I do think it's a double edged sword while
it like really takes away that operational
0:44:09 burden and operational overhead.
0:44:11 It's not just about, uh, deployment cycles
and like the update cycles of the app
0:44:17 that you're deploying, you potentially
also need to update a, like from database
0:44:22 version A to database version B of like
just a database server that's running or
0:44:26 like your analytics server or whatever.
0:44:28 So that certainly takes a lot more effort.
0:44:31 However, on a longer time horizon,
if you do rely on managed services,
0:44:36 they might just at some point send
out a notice and say like, Hey, next
0:44:40 quarter We're shutting down like
that plan that you're relying on.
0:44:44 So you're also in some regards
might be building on quicksand.
0:44:48 I think the, the larger a services
such as Cloudflare, I think the
0:44:53 chances that the rug is being pulled
underneath you are probably lower.
0:44:57 But it's always a double edged sword.
0:44:59 And so my preference typically is in
terms of the architecture that I'm using
0:45:05 is like to go as simple as possible.
0:45:07 This, for example, why I'm also very
drawn to SQLite and I love the, all
0:45:11 of the, the new tooling being built
around SQLite since SQLite that's, no
0:45:16 one's going to take that away from me.
0:45:17 It's just like a little file.
0:45:19 That I can put on a SD card or whatever.
0:45:22 And, uh, that's still gonna like similar
to that computer game from like the 1980s.
0:45:28 that's still gonna
work, in, in the future.
0:45:30 And I think that's a great way
to preserve data and you can
0:45:33 still do so much with that.
0:45:35 So I think that's sort of like
a third option, uh, instead of
0:45:39 going with like hosted or, Very
scary self hosted infrastructure.
0:45:44 If you make the self hosted
infrastructure just that simple to
0:45:48 rely on something like, like something
that's almost serverless by default,
0:45:53 like SQLite, I think that's a,
that's a very attractive idea for me.
0:45:57 Yeah, no, I agree.
0:45:58 And with everything I'm saying,
it's always like you have
0:46:01 to exercise your judgment.
0:46:02 I'm speaking from the things that
I typically have worked on and
0:46:05 I think this is where we landed.
0:46:06 but yeah, if I was working on something
that had different requirements,
0:46:09 like, yeah, having like the
simplest approach, uh, makes sense.
0:46:13 The only reason that we have to do
this is because we work on stuff
0:46:17 that is like one of our tools is.
0:46:20 Like, uh, like issues, like,
kind of like how Sentry offers,
0:46:23 like, issues that extracts.
0:46:24 So we need to process, like, a
large amount of logs, uh, because
0:46:28 some people have, like, you know,
like, billions of invocations a day.
0:46:31 So it's not the type of thing that we
can really simplify, like, we can't
0:46:34 just give you, like, a single container.
0:46:36 And this, because that's going
to get overloaded very quickly.
0:46:38 So the options for us are some
crazy Kubernetes thing, or we
0:46:42 just take advantage of AWS Kinesis
and all these things that are
0:46:45 built in that are lower overhead.
0:46:47 Um, but, you know, if those
weren't my requirements, I would
0:46:49 probably opt for something similar.
0:46:51 And yeah, at the day, it always just
comes down to like, have good judgment.
0:46:55 With whatever you're doing.
0:46:57 Yeah.
0:46:57 I think it's just as web developers, we're
just so like in, in our like dependency
0:47:04 fury in a way where like, we just like
npm install this, npm install that, and
0:47:09 we also not just package dependencies,
but we also like add infrastructure
0:47:14 dependencies left and right to something,
I think is a big contributor, contributor.
0:47:19 Why the long now aspect of local-first
software is so hard to achieve.
0:47:24 So I'm always, uh, trying as hard
as possible to avoid dependencies,
0:47:29 whether it's package dependencies
or whether it's like infrastructure
0:47:33 dependencies as much as possible.
0:47:35 But it's always a trade off
since they do sometimes can
0:47:38 really save you a lot of time.
0:47:39 Yeah.
0:47:40 Yeah.
0:47:40 I think for us, we kind of land
in this middle ground where
0:47:42 we'll commit to one thing.
0:47:44 But then we'll reject a
bunch of other things.
0:47:46 So, there's this phenomena happening
right now, where, uh, you have these large
0:47:51 cloud providers that offer these services.
0:47:53 The services aren't like, The
best, most wonderful things to use.
0:47:58 There's a bunch of companies that'll
like, make a copy of just that one
0:48:01 service, but do it like 10 times better.
0:48:04 It's often really compelling, and like
you, I can see why people are tempted
0:48:08 to adopt every single one of these, and
people end up with a stack where it's
0:48:11 like, It's my application and sitting on
top of like 10 different other vendors.
0:48:17 And these 10 vendors are also startups,
you know, like it's unclear if they're
0:48:21 going to be around for a while.
0:48:22 So for us, we like as tempting as it is.
0:48:25 And some of it has nice as some of these
offerings are like, we never use those.
0:48:28 We just stick to the most lowest level
primitives that we can be sure are
0:48:32 going to be around for a long time.
0:48:34 And we'll commit to those.
0:48:35 Like, we're going to accept
the fact that if something
0:48:37 happens to them, we're screwed.
0:48:39 More likely we're going
to die before they do.
0:48:40 So that makes sense, but like, you know,
we won't, we won't apply that everywhere.
0:48:44 So again, it just comes down to
like having the right judgment