Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Welcome to Syntax. Today,
0:02
CJ and I sat down
0:05
with Paul Koppelstone, the co-founder
0:07
of Superbase. We
0:09
dive deep into the tech that
0:11
powers Superbase. We talk all about
0:14
Paul's outlook on open source and
0:17
the origins of Superbase, including why
0:19
it's super and not super. So
0:22
without further ado, here's Paul. So
0:31
welcome to Syntax, Paul. If you want to
0:33
give us a quick introduction about maybe who
0:35
you are and what you do at Superbase,
0:37
and then we can get into some of
0:39
the things a little bit deeper about Superbase
0:41
as a product. Yeah,
0:45
thanks for inviting me. My name is
0:48
Paul Koppelstone. I'm the CEO and one
0:50
of the co-founders of Superbase. We are
0:52
basically a open source Firebase
0:54
alternative is how we position ourselves early on.
0:56
But you can think of us really as
0:59
a Postgres hosting company. Nice. Yeah.
1:02
And as a Postgres hosting
1:04
company, or even an alternative there, I've
1:07
always been impressed with
1:09
UI of Superbase, how it makes things feel
1:12
nice and easy for the
1:14
user to get up and running. It's not like you're
1:16
managing a database, right? So with
1:19
that said, here's a quick question for
1:21
my five-year-old. Why super and
1:23
not super? Yeah,
1:26
because it's very hard to
1:28
purchase the domain name Super.
1:31
That was literally it. Domain
1:34
driven naming. That's pretty
1:36
much how I do all my side projects. Yeah,
1:38
nice. Which turns out to be both, by the
1:40
way, a blessing and a curse.
1:43
The blessing is that it's very easy
1:45
to find mentions of Superbase
1:47
across the internet. And
1:50
people have started putting Super on everything.
1:53
The curse is that it doesn't feel
1:55
that enterprisey. It's
1:58
kind of like a bit of a meme, which is also. by
2:00
the way, where the name came from, like,
2:03
and to myself like to meme a lot. And
2:05
so, Super Bass obviously is
2:07
a Nicki Minaj song and we thought
2:09
it was funny that it was called
2:11
Super Bass and that
2:13
somehow stuck. Yeah, but here
2:16
we are. It's working. Yeah.
2:19
Yeah. I always thought, I always think of that there's
2:21
an MF Doom song where he says he's super in
2:23
it. And I always think about that when I hear
2:25
Super Bass. So do you want to maybe give a,
2:28
some background into, how did Super Bass
2:30
start? Even from like
2:32
technical foundations to, you know, why? Yeah.
2:36
So timeline first is
2:38
we started in January
2:40
2020. So really just
2:43
for four years old, four and a half years
2:45
old now, we went to YC
2:47
in that summer batch as well, and
2:49
have just kind of been building fully
2:51
remotely. So started during COVID and building
2:54
the company remotely. The sort of genesis
2:56
was that in my previous startup, I
2:58
was building using Postgres, but
3:00
one part of the tool was a chat
3:02
application and I was using Firebase. I actually
3:05
really love Firebase. I think the developer experience
3:07
is amazing, but we
3:09
hit some technical issues in terms
3:11
of like the performance around sending
3:14
the messages. And so
3:16
I looked at migrating it to Postgres
3:18
and I did it quite naively at
3:20
the start. Postgres has this listen notify
3:22
system where you can push messages out
3:25
of it. And I thought that was
3:27
good until I ran into
3:29
another technical limitation there on the
3:32
Postgres side. And so I had to build
3:34
a real time engine kind of
3:36
on top of Postgres. And I did that
3:38
with Phoenix Elixir, which
3:41
kind of was the right tool for the job. You
3:43
can connect lots of clients to it. It's good for
3:45
WebSockets. And we did it
3:48
by kind of listening to the
3:50
database replication stream, you know, and
3:52
then you convert those messages into,
3:54
yeah, literally JSON payloads, and you
3:56
can blast them out to the
3:58
WebSockets. So is it cool? technical
4:00
solution and I'm a big hack and use reader
4:02
and I put it on show hack news and
4:04
it got a lot of interest
4:07
at that point and so I Knew
4:10
I was going to do a dev tool startup
4:12
after my last startup And so that
4:14
seemed like the right time and I tapped my co-founder on
4:16
the shoulder and said this is what I want to do
4:18
I want to go to I see Should
4:22
we do it and yeah somehow convinced
4:24
him to leave his startup for to
4:26
help me build Superbase? Wow,
4:29
so how long after? Like, you
4:31
know first lines are written Did
4:33
you end up joining YC? Oh? Yeah,
4:37
so probably I think the hack and use
4:39
launch that I did that one was on
4:42
For just that real-time engine was maybe
4:44
in like September 2019 We
4:46
started the company in January 2020 and
4:49
then we sort of got accepted. Maybe I think
4:51
it was March or April of 2020
4:54
no and we didn't have
4:56
Wow pretty fast quite on But
4:59
we're both three-time founders. We
5:02
were shipping fast. We tried to
5:05
Check off all the things that why
5:07
see like like to like yeah. Yeah, that makes
5:09
sense So yeah, I like I like the fact
5:11
that super base is open source and
5:14
can be self-hosted Was that a decision you made early
5:16
on that you were gonna make this thing and keep
5:18
it open source? Yeah,
5:20
honestly, it wasn't even really a conversation
5:22
at the start I think just and
5:24
and I kind of philosophically love open
5:26
source I wouldn't want to work on
5:28
a dev tools if it was
5:31
closed source. That's kind of the truth. So
5:35
Yeah, that's that's about all the thinking that went into
5:37
it and then we try to support Like
5:40
our philosophy on open source I think is
5:42
a little bit unique in that
5:44
you know a lot of the tools that make
5:46
up the super base stack Are
5:49
all existing open source tools and that was
5:51
really important to us as well It felt
5:53
like open source is a lot of like,
5:56
you know, I'm gonna do some New
5:58
way of doing this and it's got that'd
6:00
be my own, but we actually like the model
6:02
where you can try to support the
6:05
tools that exist. They might not be perfect,
6:07
but we can help to try and make
6:09
them perfect is the idea. So that's kind
6:12
of our philosophy around open source,
6:14
one of the key philosophies. It's
6:17
one of the things that first drew me to Superbase. I've built
6:19
a few projects with it. And the simple
6:21
fact that it's built on top of Postgres, like I
6:23
know a lot of times when you're choosing a new
6:25
tech for a project, you worry about
6:27
like vendor lock-in or like, am I
6:29
going to have to keep using this if I don't like
6:31
it or something like that? But to me, it was super
6:34
cool to see that it's built on top of Postgres. I
6:36
can use everything I know about Postgres. And
6:39
if I really ever wanted to stop using Superbase, I
6:41
could, I could just literally take my database with me,
6:44
which was nice. Which has happened
6:46
in the past. We have like in
6:48
our docs, one of the core principles
6:50
is portability. You should be able to
6:52
take anything you build, just
6:55
basically PG dump and take it to
6:57
your favorite Postgres provider. And there might
6:59
be some things depending on how far
7:01
you lean into like some of the
7:03
tooling that we've got. But in theory,
7:05
like you can extract that. So we
7:07
try to make everything very composable. So
7:09
even though it's like a full back
7:11
end, you can just use the database
7:13
and stack other tools. Clerks very common.
7:15
You can use Superbase Auth or you
7:18
can use Clerk with Superbase. That's kind
7:20
of how we want it to be.
7:22
Do you have any stats on like how many people self-host to keep track
7:24
of that kind of thing? No, we
7:26
have no telemetry. Another thing that we think is
7:29
like if you want to self-host, that's
7:31
great. Anecdotally, I see a
7:34
lot of people do it. So we're
7:36
happy. And actually, yeah, some of the
7:38
larger customers do it as well. So
7:40
that's nice. But because I'm a developer
7:42
and I don't like tracking, then I
7:44
can't give you any stats. Same.
7:47
Yeah, that's awesome. I think it fits very well
7:49
into, you know, I don't want to talk too
7:52
much about Sentry because this isn't an ad for
7:54
Sentry. But if it's very well and with what
7:56
we're doing here at Sentry as well, you know,
7:58
open source tool. We
12:00
build our credibility around Postgres. We build
12:02
a lot of tooling for Postgres. We
12:04
build a lot of scalability into Postgres.
12:07
And we're having to do this, contributing
12:09
up, employing open source
12:11
maintainers, making sure that
12:13
the tool will go
12:16
beyond anything that they'll even see on
12:18
say AWS or on
12:21
one of the big three clouds. We wanna make
12:23
sure that we can really
12:25
fit that vision so that when we go
12:27
to enterprises, we've got 10 years
12:29
of credibility and scalability and logos
12:32
to prove it. So
12:35
looking at the docs, I see that there are
12:37
quite a few client libraries, not just
12:40
JavaScript. So I see things for like Flutter
12:42
and then in the recent GA announcement, you
12:44
announced the Swift client, but then
12:46
there are community packages for like Python and
12:48
C-sharp and Kotlin. So how do you decide
12:50
which client libraries are gonna be official versus
12:52
like keeping them more like community maintained? Yeah,
12:57
not easily. Yeah. So
13:00
we developed first our
13:02
JavaScript libraries and TypeScript libraries,
13:05
because that was the thing that was
13:07
really missing when we started was there
13:09
was no backend for the likes for
13:11
the jam stack. That's
13:14
how I'll identify. And so we really
13:16
focused in on that use case first.
13:18
So JavaScript was the natural thing. How
13:20
do you as
13:23
well, like this type of front end
13:25
developer, I would say is not so
13:27
familiar with the nuts and bolts of
13:29
Postgres. And so it's a really easy
13:31
win. We can just abstract
13:34
that away and make it incredibly easy for you
13:36
versus say maybe like a PHP
13:40
developer, popular now, probably
13:42
know a bit more of the nuts and bolts
13:45
setting up ORMs and things and they're gonna use
13:47
their Laravel and it might handle it for you.
13:49
So that was the use case
13:51
that we focused on. Then
13:53
over time, just of course, a lot of
13:56
people started piling in and requesting
13:58
all sorts. mobile became very popular
14:01
because of Firebase was very popular
14:03
and people wanted to migrate to
14:06
Superbase. And so they
14:08
wanted mobile. We ended up doing Flutter
14:11
first because it was kind of like a
14:13
new system and that actually
14:15
came from the community. This is like kind of
14:17
our hiring strategy. We had
14:20
this person contributing. They
14:22
did the open source Flutter libs.
14:24
It started getting popularity. And
14:27
so we just hired him to work
14:29
on the full time. And he's a dev role.
14:31
That's a good lesson. Yep. Yep.
14:34
You might say Tyler is a Japanese
14:36
dev role actually. So he is based
14:38
in Japan. Funny enough working at HubSpot
14:41
as a like just an engineer at
14:43
HubSpot, nothing to do at dev role.
14:45
It turns out he's also just very
14:47
good at this type of stuff.
14:49
So it was cool. We've
14:52
done a lot of that by the way, like people
14:54
who contribute to our community and they're
14:56
kind of too good to ignore that we're just going
14:59
to hire them. Yeah. Nice.
15:02
Yeah. So I think that's
15:04
kind of how it happens. Like we just
15:06
have people contributing and then eventually something becomes
15:09
popular enough that the community are kind of
15:11
shouting that, hey, can you make this official?
15:13
Then we pull the trigger. That's
15:16
probably a good strategy. Yeah. I
15:18
guess I should also mention for anyone else that's
15:20
listening that isn't familiar, you don't necessarily need a
15:22
client library though. I think that's one thing about
15:24
Superbase is you could connect directly to the database
15:26
and just use your preferred ORM or you could
15:29
just use your favorite REST
15:31
API client and talk to the REST API. So
15:34
it's important to note you don't need these client libraries, but it is
15:36
cool that you have that support as well. Yeah.
15:38
Thanks for shouting that out because like,
15:40
yeah, it's actually one thing that we
15:42
did too well at the start was
15:45
positioning like some of the Superbase tools,
15:47
the additional tools that at
15:49
the start, now we're having
15:52
to change the narrative that you don't actually have
15:54
to use all those tools. You can just use
15:56
the database and like I'm a
15:58
big fan of Drizzle, for example, becoming very
16:00
popular with Superbase.
16:02
But Prisma is popular, Keesley,
16:05
all of these, whatever you want, you
16:08
can plug your
16:10
Ruby and anything
16:12
you want on top of the Postgres database
16:14
and we're happy. That's where we want to
16:16
be. Yeah, and you could take
16:19
advantage of the Superbase platform itself.
16:21
I don't have to worry about
16:23
the client's outline. We've got a
16:25
ton of cool database stuff like
16:27
index advisors, security advisors, and scaling
16:30
out, rep replicas, just making sure that it
16:33
is easy on the database side.
16:35
The additional stuff is there if
16:37
you need to reach for it.
16:39
Great for prototyping and the Postgres
16:41
maxis, like myself, love the additional
16:43
tools. But yeah, if
16:46
they're not for you, then that's kind of fine.
16:49
You guys also have edge functions, right? Is
16:52
the idea with edge functions there
16:54
to kind of remove the need
16:56
for any kind of backend server
16:58
component to your app? Superbase completely
17:00
would become the backend of your
17:02
application. You can just use an
17:04
edge function when you need server
17:06
side functionality. Actually,
17:08
the reason... So we
17:12
started doing these things, launch weeks, I think they're
17:14
pretty popular now. And every single
17:16
launch week would say, yeah, guess
17:18
what? We're shipping people will
17:21
be like, functions. We'd be like,
17:23
no, no, we're not. And
17:25
then after like four launch weeks, people
17:27
will win the edge of each of
17:29
the functions. So we
17:31
had to scout around to find
17:33
an open source runtime for running
17:35
functions. And Dino, of course,
17:38
sort of made the cut. But actually,
17:41
the way I like to position
17:43
our functions is because they serve
17:45
a very important purpose with databases.
17:47
It's not to like, for
17:49
example, if you're using Next.js, I actually recommend
17:51
you just bake all of that sort of
17:53
routing logic in there. But where
17:55
it's useful on the database side, I
17:58
like to refer to them more as a
18:00
database. like background workers. So
18:03
as an example, we're becoming very popular for AI applications because
18:06
of PG vector. You can
18:08
store your embeddings in Postgres, do RAG, all these sort of things.
18:11
But creating the embeddings itself,
18:14
you wouldn't really want to do it inside the
18:16
database because it's a lot of compute and you
18:18
choose your compute size. So what you want to
18:20
do is maybe someone insert
18:22
some content and then you need to
18:24
shove out this workload to somewhere else,
18:27
like a background worker, and now we're
18:29
starting to bake a lot of this
18:31
embeddings, AI tooling into the edge functions
18:34
itself. So you can now insert a
18:36
million rows of content
18:38
and it will trigger out a million
18:40
of these workers, edge functions. They'll create
18:42
the embeddings and stuff them back into
18:44
the database. We call them database web
18:47
hooks. That's the way to offload
18:49
the compute. Gotcha.
18:52
I was going to just bring
18:54
up, now that you mentioned the
18:56
PG vector and
18:58
that technical bit, is that
19:00
nice because you're built on Postgres that you can
19:03
just utilize something like PG vector? And
19:05
likewise, was that a
19:07
tough technical challenge to implement it to
19:09
an existing product? Yeah,
19:12
actually, no. There's
19:14
another funny open source story that I just want
19:16
to touch on here. So the
19:18
way that PG vector came about was
19:20
because this guy came in, he emailed
19:23
me directly and he's like, I'm building
19:25
this, this is probably February 2023 or
19:27
something like that. He's
19:30
like, I'm building this tool and I need to
19:32
store embeddings and there's this extension
19:34
called PG vector and no one's using it,
19:36
like none of the Postgres hosts. Can you
19:39
please merge it? I've created a PR here
19:41
and I looked at the PR, it's just
19:43
very well structured and everything. And
19:46
I jumped on a call with him and I
19:48
said, what are you doing?
19:50
And he talked me through it and I said, okay, I'll
19:52
merge it as long as you create
19:55
like a chat with your
19:57
docs inside our docs.
20:00
which had actually not
20:03
been done before. And so we
20:05
called it Clippy. You can like search for
20:07
Superbase Clippy as a joke because we're really
20:09
worried that it would be so shit that
20:11
it would give the wrong answers and everything
20:13
like that. Clippy was, of course,
20:16
terrible like that. So anyway, the guy
20:18
the guy did it on a contract and like
20:21
it was so awesome that of course
20:23
we hired him and that's
20:25
the genesis of PG
20:27
Vector. So we were the first Postgres hosting
20:29
company to offer PG Vector and we've
20:32
been working on it now. Now it's
20:34
we're not the main creators. It's a guy
20:37
called Andrew came. But we support him along
20:39
with a few other companies that,
20:41
you know, we're really grateful for as well, because
20:43
the performance of PG Vector in
20:45
the past year has rapidly
20:48
increased, which is pretty cool to see. And
20:51
now the thing that you asked
20:53
like is also a really
20:56
interesting insight, like how hard was it
20:58
to offer this new product? And
21:00
this is like where I think
21:02
our product strategy is a little bit
21:04
unique. You can think of Postgres as
21:06
like a really common substrate. And we
21:09
think of almost everything like a Postgres
21:11
problem. And we have a couple of
21:13
other primitives that make Postgres really easy
21:15
to use. Auth, yeah, the
21:17
background workers, edge functions, storage
21:20
for file storage and, yeah,
21:23
like a few extensions that can trigger
21:25
things. But if you like, these
21:27
are what I call like this sort of first
21:30
order primitives that you need to build
21:32
almost anything. But then we can
21:34
mix and match all of these to
21:37
create these second order primitives. And
21:39
our first foray into like this
21:41
product was actually the vectors.
21:44
Like we've got a whole section of our
21:46
docs called Superbase Vector. But actually, it wasn't
21:48
really a new product. It literally was, hey,
21:50
turn on this extension and here's a bunch
21:53
of docs on how to use it. And
21:55
it turns out that Postgres is so extensible
21:58
that we could do this with several things.
22:00
and probably will eventually search. You
22:03
can use Postgres for searching, queues. You
22:05
can use it for workflows. They're more
22:07
solutions. Here's
22:10
how to use our primitives to achieve
22:12
a certain solution. That's
22:15
what I really liked the most about Postgres.
22:17
Its extensibility gives us that
22:19
option. We can just think of everything
22:22
as a Postgres problem. Definitely. Nice.
22:25
On that note about documentation though, Superbase
22:27
has some of the best documentation. Even
22:29
before you added the AI stuff. I'm
22:32
just curious, did you have a strategy with that
22:34
to make sure you had good docs? And
22:36
then also, it was cool to see Superbase
22:38
did the clippy thing, and now almost every docs you
22:40
go to have AI. Yeah. So
22:44
you can freeform search, and the docs will give
22:46
you an answer for it. So yeah, who worked
22:48
on that? What's your secret? It's super cool. Yeah.
22:51
Very much shared effort over
22:54
the years. I remember docs were extremely
22:56
important at the start. I remember I
22:58
spent a week, and my goal at
23:00
the start was you should be able
23:02
to consume from start to finish everything
23:04
in a couple of hours so that
23:06
you understand what you need
23:08
to. So the conciseness
23:10
was really important, and then we were
23:13
using DocuSource. Eventually, we kind of outgrew
23:15
it. We wanted to make it more
23:17
of a product, like docs as a
23:19
product. The guy, Greg, who
23:21
merged PG-Bekta, was really responsible for a
23:24
lot of that early. The
23:27
AI-type productizing. And then
23:29
we hired someone,
23:31
Karras, who has just focused really
23:33
on this, not only the development
23:36
of the docs, but the
23:38
information architecture of making it
23:40
really concise. And also, our
23:43
goal as docs as a
23:45
product is somehow to bleed docs into
23:48
the dashboard and the dashboard into the
23:50
docs. So you'll start
23:52
seeing the keys appearing and everything.
23:55
But that's kind of the goal. That's
23:57
super cool to see, though, because in the dashboard, at
23:59
least There's documentation, but it has
24:02
my endpoints, my keys in it as well, so
24:04
that's super cool to see. Yeah.
24:06
We have also, because you touched
24:08
on the RESTful interface
24:10
that you get free of charge, it auto-scarefolds
24:12
out of your database. So it's cool, it
24:14
just has an
24:17
open API spec and we
24:19
can literally generate an entire
24:21
documentation page for you. Here's
24:23
the endpoint that you can
24:26
click and here's the Superbase
24:29
JS query that you can run and
24:31
we can embed that everywhere. That
24:34
concept actually came from Airtable. I
24:37
really like Airtable as a tool. Actually,
24:40
I think a lot of their
24:43
DX, like imagine Airtable but it
24:45
was Postgres, then you
24:47
would have this killer product. Because
24:50
they have this auto-generated API as well, but
24:55
their docs would also auto-generate as you
24:57
change the schema. That
24:59
initial version of auto-generated docs
25:02
came from my use of Airtable. Nice.
25:06
Yeah. I suppose that helps keep everything
25:08
up to date. I would imagine once
25:10
your product continues to grow and grow
25:12
and grow, it's pretty
25:14
easy for docs to get out of sync.
25:16
Next thing you know, users are having issues.
25:18
Yeah. Man, it's a
25:20
big challenge with such a large project.
25:24
Kudos for executing on it so well.
25:26
I want to talk about the product again
25:28
in terms of the underlying tech behind it.
25:31
So when you first started it,
25:34
first today, let's
25:37
talk about first the UI tech. So what's
25:40
the UI built on and then how
25:42
has that changed over time? Is it
25:44
same initial code base or is it
25:47
evolved into different platforms or what's the
25:49
story there? So
25:52
yeah, I think what we
25:54
had at the start was a next
25:58
shares for our all. dashboard
26:01
and docuSaurus for our landing page and
26:03
docs. Then we moved
26:07
everything to Next.js and
26:09
we started using a mono
26:11
repo so we could do shared
26:13
components, moved out docs in. And
26:17
that was the goal. The goal
26:19
was to get this really
26:21
consistent feel so you can
26:23
almost feel like the whole
26:25
dashboard becomes one
26:28
key product. That's where Next.js and I think TurboRepo were
26:30
an early adopter there. Just
26:39
to make sure that we could get this
26:41
very consistent feel and UI kit. You
26:45
might see him on our Twitter. He shares
26:47
sometimes some of the design systems and things.
26:50
And he's phenomenal at coming up with some
26:53
great components and things. We've
26:55
also got this very Kaizen approach to
26:57
everything. Sometimes you'll see
26:59
that things are a bit inconsistent in
27:02
our dashboard because he's trying out some
27:04
new component or a pattern that we're
27:06
going to spread out throughout everything. And
27:08
it might just get tested in one
27:11
area. Or he's fixing my
27:13
poor design decision from 2020 probably
27:16
is the other thing that
27:18
he's doing. So yeah, we've leaned
27:20
really heavily into Next.js, which has
27:22
been great, of course. You
27:25
mentioned starting naively. So
27:27
that fits in well with that. I think that's the
27:29
best way to start, though, right? You just get going
27:31
and worry about it later. You
27:34
mentioned Kaizen as well. Do you want to
27:36
just give a quick couple
27:39
of seconds what that is and what it
27:41
applies here? Yeah, it comes from
27:43
the Toyota production system. Kaizen
27:45
means continuous improvement from the
27:48
CEO to the assembly line
27:50
worker is kind of the
27:52
term. So it doesn't matter
27:55
what you're doing,
27:57
everything is a process that can be
27:59
improved. And importantly,
28:01
incrementally improved is one of the things
28:04
that we put a lot of emphasis
28:06
on. Like if people come out
28:08
with big bang projects, we just say no, it's
28:10
got to be done like in a very small
28:12
way, chunk it down to a couple of weeks
28:14
at most and do increments everywhere.
28:17
So even like our branding and
28:19
you know, people like to rebrand
28:21
their website or something like that. We
28:23
haven't done that. We've just like evolved
28:25
the branding of the website. Yeah. Yeah.
28:29
Yeah. Like iOS does that too, right?
28:31
Like, yeah, little components change here or there. Next thing
28:33
you know, it's a very different
28:35
over time. Does that come from you, the
28:37
Kaizen philosophy or did that is that is
28:39
that something that you brought to the table?
28:42
Yeah, I think that one's kind of
28:44
one of my like, the core life
28:46
values actually, I think that everything should
28:48
be approached in this small
28:50
improvement type way. Oh,
28:52
that nice. So talking about
28:55
internals, we talked about the UI tech, it's built with Next.js.
28:57
Can you talk a bit about like the
28:59
open source super based stack? So you
29:01
mentioned the initial thing was kind
29:03
of like a plug in for Postgres. What
29:06
else is involved in that stack? Yeah,
29:10
the total stack is a
29:12
few servers. Each one of them
29:14
is open source. So Postgres, we don't run a
29:16
fork or anything like that. We
29:18
have a Postgres bundle. So our
29:21
bundle has a bunch of extensions.
29:23
That's all we do. The extensions, but that
29:25
same one that you see in our open
29:28
source is the one that you could self-host
29:30
and everything. So
29:32
that's the key component. And then like the
29:35
other components are, for example, as
29:37
one that you mentioned Postgres, which
29:40
is an auto generating API on
29:42
top of Postgres. And
29:45
what you're going to find as I go through
29:47
the tools is every single one is written in
29:49
a different language, unfortunately
29:51
for us. But usually
29:53
they're the right tool for the job
29:56
for a particular reason. So Postgres, actually
29:58
I had used it. this
30:00
stack in my previous startup,
30:03
which is why I was so confident on
30:05
it and it became the early stack. But
30:08
I had also written a blog post about
30:10
it and had reached out to the
30:13
maintainer to make sure everything was okay
30:15
to say in the blog post. So
30:17
I kind of knew him. And then when we were starting Superbase,
30:19
I reached out to him to say, is it all right if
30:22
we use it in Superbase and Promoter and
30:25
anything that we can help with? And
30:27
he said, we're looking for some sponsorship
30:29
and I need $200 a month or
30:31
something like this to keep
30:33
maintaining it. And I
30:36
said, what are you doing? And
30:38
he literally was not working
30:40
on anything. And I was like, well,
30:42
there's no way you can maintain this for $200. So
30:45
we just employed him immediately to
30:47
work on it full time. So
30:50
this is like the best reoccurring story here
30:53
is that you needed something so you
30:55
employed them. Well,
30:57
and it's just such a good common
30:59
good for the world. You know, like
31:02
so many people use Postgres and it's
31:04
so hard as an open source maintainer
31:06
to make money from
31:09
sponsorships. I mean, like $250 a month. The
31:12
poor guy, I mean, he lives in Peru,
31:15
but still for
31:17
the value that the world gets, it
31:19
just seemed completely unfair. So
31:22
anyway, we have
31:24
maintained, he has maintained that
31:27
for us, but for everyone else for
31:29
the past few years. But that's been
31:31
really helpful for the Superbase community too,
31:33
because we've had to patch a
31:36
lot of things that are important for
31:38
our customers as well. But
31:40
we try to make sure that nothing's
31:43
Superbase specific. He makes choices only for
31:45
the community. OAuth
31:47
actually came from Netlify. They
31:50
had an OAuth tool, which I
31:52
guess we didn't have OAuth when we
31:55
launched, which was kind of funny because your database
31:57
wasn't safe. But everyone was asking
31:59
for it. And our promise to the YC
32:01
community, because we got launched on Hacker News,
32:04
was that we'll build auth, but we'll do
32:06
it in a very Postgres native way. And
32:08
they're like, well, good luck. And we spent
32:10
all of our YC batch trying to figure
32:13
out how to do this. And we ended
32:15
up, yeah, finding GoTrue by
32:18
Netlify, integrating that with Postgres
32:20
row-level security, which was quite a bit
32:22
of work, but we ended up getting
32:24
there. And then the end, that one,
32:26
we actually had to fork, because, yeah,
32:29
it diverged so much that we couldn't upstream
32:31
some of the stuff. So,
32:34
yeah, storage, we have a storage
32:36
engine for large files. That
32:39
one as well, we had to create ourselves.
32:41
It just sits on top of S3. So
32:44
it's a very simple ingestion engine.
32:48
It can stream, it can do
32:50
transformations, things like that. But we
32:52
do integrate with image proxy and
32:54
support and upstream a lot of
32:57
tooling there to integrate with Postgres.
32:59
So doing things like distributed locking.
33:02
So that's been a lot of fun working
33:04
with the Evil Martians team on
33:06
that side. Yeah, oh, they're great, aren't they?
33:08
Yeah, I'm a huge fan of their blog
33:11
in general. And for
33:14
the S3 thing, for self-hosters, you
33:16
just give the
33:19
config a S3 bucket or a
33:21
location, and it Superbase does the
33:23
rest. Is that the scoop? Yeah,
33:26
so on that one, so
33:28
our self-hosting, if you want the entire stack,
33:30
is just a Docker compose. So you just
33:32
put Docker composer. And inside
33:34
the Docker compose, you put your
33:36
S3 access key and secret. And
33:39
so that will route it to
33:41
your bucket. You can
33:43
actually just, each one of the components,
33:45
because of the way we've designed it,
33:47
can also be self-hosted individually. So you
33:49
could take the storage engine, for example,
33:52
chuck it on fly and then use it
33:54
with Tigris or something like that or wherever
33:56
you want. I don't
33:58
see a lot of that, funnily enough. I thought there would be a lot more. How
36:00
do you make this into
36:02
a viable business so people aren't just taking
36:04
your code and running with it? Yeah, it's
36:07
actually one of the hardest things
36:09
of open source. What I've realized
36:11
is no matter how open
36:13
source you are, you can never be open
36:15
source enough for some people. So I
36:18
have this blog post in my brain, which
36:22
I've been meaning to post. And
36:24
there's several spectrums upon which
36:26
they'll judge you. So the first is like
36:28
your license, how open source
36:31
is your license. And so we actually
36:33
check all those boxes because we have
36:35
only MIT Postgres and Apache license. The
36:38
second is how self-hostable
36:40
you are. It's actually
36:43
unrelated to open source by the
36:45
technical definition, but people will judge
36:47
you by that. Then
36:50
the third is actually are you
36:52
a commercial entity? And
36:54
if you make money, people
36:56
just not think you're open source enough.
36:58
That's what I've come to realize. And
37:01
so it's tricky. Like I
37:03
just that third one, I think, is
37:05
unfair. And I just categorically remove them
37:07
from my brain now, if I'm talking
37:09
to those people. I know that we
37:12
can't satisfy them, which I think they
37:14
do such a disservice to the open
37:16
source community because, of course, then open
37:19
source maintainers feel bad asking for money.
37:22
And of course, then they stop maintaining
37:24
things, which I
37:26
wish that all the money in
37:28
the world poured back into open
37:31
source that would be the ideal
37:33
situation in society. Yeah, yeah,
37:35
we do a big open source donation
37:37
here where Chad from
37:39
Century wrote an app that scans
37:41
our repo. So even the syntax
37:44
repo and then donates an allocated
37:46
amount to all the projects on a
37:48
consistent basis. And it's like it was
37:51
so simple for him to set up. It's a small
37:53
allotment. We're getting so much benefit out of these projects.
37:56
Like it would be trivial for
37:58
many companies to set this up yet. They're
38:00
more satisfied with you know, just taking the
38:03
code and running really. Yeah. Yeah,
38:06
I think on the self
38:08
hosting side I Get
38:10
this question a lot like I do you hobble it
38:12
so that people have to use your cloud hosted to
38:14
this The answer is no not
38:16
at all Like we don't like
38:18
intentionally try to do anything but we have
38:21
a lot of work to do Even
38:23
on our platform, right and these people are kind
38:26
of paying for it. They're the ones who will
38:28
jump up and down rightfully Like
38:30
if things are not working, they're like, I'm
38:32
paying you $25 a month. Can
38:35
you fix this thing? Versus the
38:37
ones who are saying, you know, I'm paying you
38:39
nothing. Can you fix this thing? You
38:41
of course have to focus on
38:43
the person who's giving you money I
38:46
mean, that's just out of fairness to
38:48
them so we try like it's very
38:50
hard to balance these two because I
38:53
quite obviously I hope Demonstrate
38:55
to the world that we are open source
38:57
and focused on open source, but it doesn't
38:59
mean that we can spend all of our
39:01
time focusing on on Customers
39:04
who who wanted to self host is
39:07
just not the way that we can
39:09
operate a good business Maybe as we grow
39:11
and we make more revenue We will be able to
39:13
allocate a lot more of that revenue towards that. Yeah,
39:15
but we're not at that stage yet Yeah But
39:19
you know it you mentioned that there
39:21
you can never be open source enough and
39:23
that is true You could be as
39:26
open source as possible and there's still going to
39:28
be someone on the internet complaining No
39:31
matter what so, you know, I think
39:33
like you mentioned optimizing for the paid customers
39:36
is great giving the open source options Self-hosting
39:38
options. Those are all great. So it feels
39:40
very like I don't know it feels very
39:42
open and transparent So
39:44
it would be surprising that anybody
39:46
in turn of I can imagine someone's gonna leave
39:48
a comment on this like oh This is a
39:50
great ad for super bass. It's like, okay Somebody
39:52
did that with our pocket bass episode. We talked
39:55
about pocket bass for like 20 minutes Somebody's like
39:57
this is an ad and like it's not an ad.
39:59
What are you talking about? I mean, the
40:07
good thing is they don't have a hosted option.
40:11
They can check all of those boxes. They
40:15
truly are an open source product.
40:20
If they bring out a host option, I
40:25
think it's fair. It
40:28
keeps you focused on your community. At the
40:31
end of the day, we also want to
40:33
serve them. People jumping up
40:35
and down gets our attention. That's
40:39
the truth. We want to solve
40:41
all those problems. If we had infinite resources,
40:44
we really would. It does
40:46
serve a purpose when people complain out
40:49
loud. It's one of those things that
40:51
we learned to manage, especially
40:53
me personally. They
40:56
would make personal attacks and things say
40:58
that we're devious or whatever. There
41:01
was a kernel of truth in what they were
41:03
saying. As
41:06
you said, CJ, maybe you used it when in 2020, we
41:10
didn't have the dashboard open source yet. It's
41:13
literally because I was too afraid to open
41:15
source for security reasons. It
41:18
had billing code and things like that. I
41:21
think the way we turned it to Next.js and turned it into
41:23
a turbo repo was
41:27
actually quite an exercise to get it
41:29
into the open source. We
41:32
spent a good couple of months, but
41:34
largely because of a personal attack. Now,
41:37
I've become a lot better at, I
41:39
think as you said, Scott, you
41:42
just need to be clear, well, here's the contract that we
41:44
have with you. I
41:48
think that's a good commitment to you in the open source.
41:52
Not much more. We
41:54
just need to make sure it's very clear and we're
41:56
not trying to pull the wool
41:58
over anyone's eyes open source
42:00
we are. Yeah, it seems like
42:02
you know you guys have definitely popular popularize
42:05
the the whole launch week
42:07
thing. I think you were really even some of the
42:09
first ones that I saw do that if
42:11
not the first and it seems
42:13
like you guys just launch a lot. I
42:15
know that goes along with your incremental updates
42:17
but what is the the
42:19
future of super base look like like
42:21
what's the next step here because it's
42:24
a really well developed product.
42:26
It does a
42:28
lot of things like what
42:31
else can you even do here? You're asking
42:33
for me to reveal our next
42:35
launch week is that oh
42:38
no it does not have to be anything
42:41
non-public it can be anything yeah.
42:43
No actually like we haven't really
42:45
got into the bottom
42:48
of the laundry list on almost all of
42:50
the products so like Auth still has a
42:52
few like really key features, storage has a
42:55
lot of key features like each one the
42:58
way that launch weeks work actually is
43:00
kind of more internal at this stage
43:02
where we need to organize
43:04
the team. We're very asynchronous so we don't have
43:06
meetings or anything like that so we just say
43:08
well here's the date of the next launch week
43:11
tell us what your like big project you're going
43:13
to ship and they come and tell us
43:15
oh this is what we're going to ship. So
43:18
yeah I actually don't even know what is
43:20
in launch week I have some ideas of
43:23
some things that are kind of new and
43:25
exciting but you know the
43:27
the next stages are like
43:29
are really around scale and types of
43:31
data that people want to store people
43:34
want to store a lot of their
43:37
like people are storing logs
43:39
inside their Postgres database which is just not
43:41
a good idea they shouldn't be doing that
43:43
so we need to solve that but
43:46
we do want them to store their data with
43:48
us and their logs and all that sort of
43:50
data so like you know we've got enough problems
43:52
and as well people aren't
43:54
using branching well enough they're not using
43:56
the migrations well enough
44:00
We want better integrations with the one, the
44:02
ORMs, the drizzles,
44:04
and things like this. So
44:06
there's a ton of stuff for us
44:08
to still solve in the database space.
44:12
Speaking of branching and stuff like that, congrats on the
44:14
GA. I know it was like two months ago at
44:16
this point, but if you didn't know,
44:18
Superbase was in beta for like four years until
44:20
two months ago. Can you talk
44:22
about maybe some of those features? Because I didn't even
44:24
realize you all had branching now, so that's super cool.
44:27
And maybe what are some of the other recent
44:29
things that you launched that people should be excited
44:31
about? That's a good question. Now that we've got
44:33
to, let me see
44:35
what we did for GA week. I
44:39
will say, I'm also looking at a blog post
44:41
on Superbase. It's called Top 10 Launches from Superbase
44:43
GA Week. So that's definitely something to check out.
44:46
What is our top? I even wrote that
44:48
and I can't remember all that. Oh, yeah.
44:52
I love it. There's a bit of something for everyone,
44:54
yeah. Yeah, and I hadn't
44:57
used that one yet either. There's
44:59
so much new stuff that I need to explore in
45:01
Superbase, but the first one is Bootstrap. So you literally
45:03
have a CLI that'll create a new project. That's pretty
45:05
sweet. Yeah, that one's actually cool.
45:07
Like we're going to do a bunch
45:09
of these templates to like launch a
45:11
project very fast. So you can Bootstrap
45:13
with Next.js or Svelte
45:16
or whatever it is. Yeah,
45:18
as you said. Actually, yeah, these
45:20
ones were very cool. The Security,
45:22
Performance and Index Advisor. This one's
45:25
cool because I talked
45:27
about you can use anything with Superbase.
45:29
This is one of those tools that like really
45:32
fits into that category
45:35
in that like I
45:37
saw someone was like, when
45:39
we released our Index Advisor, it actually
45:42
gives you this hypothetical index. If you
45:44
add this index, it will
45:46
reduce the latency on your
45:48
query by 90% or
45:51
something like that. And so I
45:53
literally saw like one day after we released
45:55
it, someone said, oh yeah, I turned this
45:57
on and my query is 90%.
46:00
So it's like, in the media when, yeah. And
46:05
that's cool because security as well
46:07
on databases is
46:09
incredibly hard. And we
46:11
lean into low-level security, which can be a
46:13
bit niche. So, you know, we
46:15
want to build out a lot of this advisory stuff,
46:19
which you don't think about when you're, like, you don't
46:21
want to have to learn, if
46:23
you think about a development life cycle,
46:25
you want to get started really fast.
46:28
And then you want information exposed to you
46:30
only at certain points. You don't want to
46:32
have to be thinking about, is it secure,
46:34
is it fast? You just want to
46:36
be thinking, does it work? Then
46:38
after you get it working, you want to
46:40
think, oh, is it safe? Is
46:42
it secure? Is it fast? And that's
46:45
where the advisor is kind of the
46:47
right information at the right time. After
46:49
you've done prototyping, even on your local
46:51
machine, you can then go
46:53
to the advisor, have a scan
46:55
through, like, all the, the
46:58
recommendations and, like, enable this index or
47:00
do that. And so
47:02
it's kind of like a nice workflow
47:04
pattern where you focus on building and
47:06
then focus on the secondary steps. Yeah.
47:09
And that works, that tracks too with
47:11
what you were saying about, maybe even
47:13
initial, some of those first customers being
47:15
JAMstack or even primarily non-back-end developers, right?
47:17
Like, those people are the prime candidate
47:19
for somebody who's not going to write
47:22
an index when they should. And they're
47:24
going to see potentially slow queries because
47:26
of it. So having any kind of
47:28
advisor there is a great way to
47:30
not only, like, help them, but to,
47:32
like, educate them. You know, I
47:34
think that's kind of like a step most people have to go through
47:37
when they're learning about performing database
47:39
queries or any of that stuff. One
47:42
thing on the advisors, I think, like, credit
47:45
really goes to PlanetScale on this one because I
47:47
think they do a phenomenal job on
47:50
database performance and really exposing,
47:52
like, for a developer how
47:54
to make the queries
47:56
faster. So, yeah, I think, like, we
47:59
look up to them. in that respect
48:01
in terms of building a really good
48:03
product for performance. That's cool to
48:05
hear. We host on planet scale and have
48:07
used their branching, have used their indexing
48:10
features like that. It's cool to
48:12
hear. It
48:15
sounds to me like you could even take your Postgres database to Superbase and
48:17
all of a sudden get a bunch of really good info, even
48:20
if you're not using the rest of the product. Just all of a sudden
48:22
you have a bunch of insight into your database, which is pretty cool. One
48:25
last lighthearted question for you. The Superbase
48:27
account on X is really
48:31
good at posting memes and stuff
48:33
like that. You mentioned at the
48:35
start of the interview that you like memes. Do
48:37
you run that account or is it like you
48:40
have a Slack where people like workshop meme ideas?
48:44
That's my co-founder. Who's
48:46
funny enough is our CTO who spends
48:48
a lot of time on our Twitter.
48:52
We also have an internal memes channel,
48:54
which is great for hiring around. We
48:57
literally sometimes hire people because the
49:01
reason why they get ahead is because they're good
49:03
at memes on Twitter. I
49:07
think our strategy there, no one wants
49:09
to see a boring corporate Twitter account.
49:12
We actually had never used Twitter
49:14
before this really. I think we
49:16
had accounts but had never really
49:19
done developer marketing. But
49:21
the one thing that we did think is no
49:23
one just wants to read about Superbase, this product
49:25
that they've never heard of. They
49:28
just want to hear about shipping cool shit and
49:30
doing memes. We were already sending
49:32
memes to each other and he just started
49:34
posting them on Twitter. It's
49:37
worked very well for us. If
49:39
you can do it right, it works. Sometimes
49:41
for certain companies it'll come off as cringe, but Superbase
49:44
is doing it right for sure. I always have a
49:46
chuckle every morning. That's the other
49:48
funny thing. We realized that we
49:50
actually realized this by trying
49:53
to hire someone to do this for us
49:55
instead of Ant doing it. We
49:57
realized that actually it's very hard
49:59
to do. to find someone who can do it right.
50:01
And so now we're
50:03
like, well, and that's clearly the only thing
50:06
you should be focused on. And
50:10
other companies kind of just can't pull it
50:12
off. I see sometimes like our competitors have
50:14
clearly looked at our Twitter and they're like,
50:16
oh, let's do what they're doing. They've got
50:18
a lot of followers now. We
50:20
need to do that. And I look at what they've done
50:23
and it's just very cringe, just
50:25
really off the mark. You kind of get
50:27
memes or you don't, it seems. So yeah,
50:30
a lot of them, a lot of them don't,
50:33
but yeah, get a good
50:35
chief meme officer on your on your team
50:37
and you're good. Yeah. All
50:39
right. So now is the part of the
50:41
show where we talk about sick pics and shameless plugs.
50:43
Paul, do you have a sick pic for us today?
50:46
Yeah. So I just arrived in
50:49
the US two weeks ago and
50:51
I bought to
50:53
try it out the like an Apple
50:56
Vision Pro. So I've been
50:58
testing it because I fly a
51:00
lot. I travel a lot. So the idea is then I
51:02
can work on a plane, I work
51:04
in a hotel room. So I've
51:06
been trying it out. It's so far. I think
51:08
I'm still in the honeymoon phase of
51:11
this. I don't know whether it's going
51:13
to be a regular feature in my life, but
51:15
I'm very impressed with the
51:17
technical aspects of the
51:20
Vision Pro software. Yeah. So I
51:22
think it's a bit to be not many things
51:24
to download on it at this stage, but
51:26
yeah, for a usefulness as a
51:29
as a like monitor, second monitor
51:31
or multiple monitors has been good so
51:33
far. Yeah, I have one
51:36
too. I use mine a lot
51:38
like if I'm working outside, like I'm working
51:40
at a like a table outside.
51:42
I no longer am constrained to my little laptop. Blow
51:44
it up. There's an app
51:46
that if you don't have yet split
51:48
screen, it allows you to do multiple
51:51
monitors so you could have several monitors.
51:54
And so that that's a must have for me. I use that
51:56
one a lot. But I agree
51:58
there's not a ton ton to use right
52:00
now. experience is really pretty incredible, huh? Yeah,
52:03
yeah, it's crazy. Like I
52:05
actually, in
52:08
another startup life, worked on like kind
52:10
of Metaverse and AR, VR, and
52:13
now like went deep on a lot of
52:15
the things that could be solved. And
52:18
I thought, well, the technology, the hardware, it just
52:20
isn't going to be there until like 2026, 2028,
52:22
10 years ahead. And
52:27
what they've delivered now is kind of just
52:29
pulled four and five years. It's crazy. Yeah,
52:32
it's crazy. Yeah, it feels like the software
52:34
is what's lagging, which is the
52:37
crazy bit. Yeah. Yeah.
52:40
And shameless plugs, is there anything you would like to
52:42
plug? Yeah, I mean,
52:44
of course, like if if
52:47
people want to use Superbase, I would love them to
52:49
use it. But I guess the real plug, from
52:52
my point of view, goes to Postgres.
52:55
I think it's just such a good
52:57
tool. It's really becoming better
52:59
all the time. It's one of
53:01
the most unique open source communities
53:03
that I've ever seen. And I can see
53:05
it becoming kind of just
53:07
a staple to the world. So I
53:10
think it would be hard to plug Superbase
53:13
without just directly giving a lot
53:15
of the credit to Postgres itself.
53:18
Nice. Awesome. Well, Paul, it's been amazing
53:21
having you on. It's
53:23
really great to learn about internals,
53:25
tools, all that sort of stuff. And, man,
53:27
I can't wait to see where Superbase goes
53:29
from here. So thank you
53:31
so much. Thank you. Peace. Peace.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More