Podchaser Logo
Home
788: Supabase: Open Source Firebase for Fullstack JS Apps

788: Supabase: Open Source Firebase for Fullstack JS Apps

Released Friday, 28th June 2024
Good episode? Give it some love!
788: Supabase: Open Source Firebase for Fullstack JS Apps

788: Supabase: Open Source Firebase for Fullstack JS Apps

788: Supabase: Open Source Firebase for Fullstack JS Apps

788: Supabase: Open Source Firebase for Fullstack JS Apps

Friday, 28th June 2024
Good episode? Give it some love!
Rate Episode

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.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features