WEBVTT

NOTE
This file was generated by Descript 

00:00:00.260 --> 00:00:02.120
Mike Bifulco: Hello and welcome
back to APIs you won't hate.

00:00:02.120 --> 00:00:06.129
My name is Mike Biko,  I'm sitting down
today for a discussion with a friend of

00:00:06.129 --> 00:00:09.929
mine from the internet who I've been lucky
enough to bump into once or twice in real

00:00:09.929 --> 00:00:11.999
life, who I'm super thrilled to talk with.

00:00:12.279 --> 00:00:15.579
Zeno Rocha: Today I'm sitting down with
Zeno Roche from Resend to talk about

00:00:15.879 --> 00:00:18.729
well resend and all the things that have
led up to it and, and what's to come

00:00:18.729 --> 00:00:22.720
there, and the developer features Yeah
level things that Resend has been up to.

00:00:23.000 --> 00:00:23.270
Zeno.

00:00:23.270 --> 00:00:24.470
Thanks a ton for joining me today.

00:00:24.475 --> 00:00:24.920
How are you doing?

00:00:25.475 --> 00:00:26.495
Thank you, Mike.

00:00:26.495 --> 00:00:28.715
Yeah, it's been, I'm so happy to be here.

00:00:28.835 --> 00:00:33.605
I'm, I'm really excited to be talking
about APIs and everything around that.

00:00:34.025 --> 00:00:37.565
I just love DAB tools in general,
so this is, this is exciting.

00:00:38.465 --> 00:00:39.905
Well, you're definitely
in good company here.

00:00:39.905 --> 00:00:42.065
I'm Mm-hmm to chat with
you about it as well.

00:00:42.325 --> 00:00:43.135
Why don't we start here?

00:00:43.135 --> 00:00:45.955
Why don't you tell me just a little bit
about yourself how you got to where you

00:00:45.955 --> 00:00:49.435
are and maybe your story leading up to
resend and we'll dive in from there.

00:00:49.670 --> 00:00:49.790
I.

00:00:50.260 --> 00:00:53.290
Yeah, so I'm originally from Brazil.

00:00:53.340 --> 00:00:59.250
Nowadays I live here in San Francisco
with my wife and my 2-year-old daughter.

00:01:00.030 --> 00:01:07.200
And I got into programming just like
most of the people in my CS class.

00:01:07.200 --> 00:01:10.680
We just love playing games on our
computer, so we're like, oh yeah, maybe

00:01:10.680 --> 00:01:13.050
that would be cool to, to do for work.

00:01:13.050 --> 00:01:16.020
And I got really into web development.

00:01:16.560 --> 00:01:17.670
Quite soon.

00:01:17.770 --> 00:01:22.210
I remember starting with flash
actually, so action script three

00:01:22.210 --> 00:01:29.020
was my first language and I created
all sorts of crazy things and we

00:01:29.020 --> 00:01:31.360
can even put one in the show notes.

00:01:31.700 --> 00:01:36.020
But it's this like particle thing where.

00:01:36.770 --> 00:01:41.300
This was back in, I gotta send you this
because I think you, you appreciate it.

00:01:41.750 --> 00:01:48.770
So back in 2010 or 2009, I guess
we, we built this thing and then

00:01:48.770 --> 00:01:53.250
we sent to Google just to see they
had like this HTML five gallery.

00:01:53.280 --> 00:01:55.800
So there's like a button on
the left where you can click

00:01:55.800 --> 00:01:57.270
and it generates the particles.

00:01:58.049 --> 00:02:00.299
And this was my first time.

00:02:01.320 --> 00:02:07.829
Using JavaScript to create the weird
things that I would, I would do in Flash.

00:02:08.430 --> 00:02:13.920
And I was ama like, and the source, you
can see everything on, on GitHub the

00:02:13.924 --> 00:02:20.640
source code is available and I was really
amazed at the power of this new thing

00:02:20.640 --> 00:02:23.190
that was coming up called HTML five.

00:02:23.850 --> 00:02:25.440
So I.

00:02:26.714 --> 00:02:31.184
quickly transitioned from Flash to
H ML five and my perspective when I

00:02:31.184 --> 00:02:36.374
started was okay, like it, and I always
had this thing like, oh, I wanna be

00:02:36.374 --> 00:02:38.325
the best at whatever I do, right?

00:02:38.744 --> 00:02:43.754
So I'm like, oh, to become the best
PHP programmer, it's gonna be so hard.

00:02:43.759 --> 00:02:45.314
Or the best Java programmer.

00:02:45.314 --> 00:02:48.614
It's gonna be so hard because like
there are people that are doing this

00:02:48.614 --> 00:02:53.444
for like 20 years already, but HL five
is this new thing that's coming up.

00:02:54.059 --> 00:02:58.709
Maybe if I run really hard, if
I like really dive into this

00:02:58.709 --> 00:03:02.700
thing, then maybe I can get to the
finish line in front of others.

00:03:02.700 --> 00:03:02.969
Right?

00:03:03.359 --> 00:03:05.159
Turns out there's no finish line.

00:03:05.159 --> 00:03:06.480
You're always learning.

00:03:06.540 --> 00:03:08.700
There's like all sorts of things.

00:03:08.700 --> 00:03:12.149
Like there's no such
like program is not a.

00:03:12.989 --> 00:03:14.489
Infinite game, right.

00:03:14.549 --> 00:03:16.049
Yeah, it is a infinite game.

00:03:16.049 --> 00:03:20.820
In fact it's not a, a finite game,
so you are always learning and always

00:03:20.820 --> 00:03:23.040
reinventing yourself as a programmer.

00:03:23.519 --> 00:03:27.149
But I've, yeah, I just always
enjoyed building stuff, man.

00:03:27.149 --> 00:03:27.209
Yeah.

00:03:27.899 --> 00:03:28.289
Mike Bifulco: Yeah.

00:03:28.379 --> 00:03:29.189
Oh, I love that.

00:03:29.429 --> 00:03:30.209
That's really funny.

00:03:30.209 --> 00:03:32.129
I I know you and I have never
talked about this before.

00:03:32.129 --> 00:03:35.159
I don't think I've mentioned it
podcast, but I've been building with

00:03:35.164 --> 00:03:37.139
JavaScript since around then, 2009.

00:03:38.069 --> 00:03:40.739
I had been playing with H Tm,
l and CSS for like, quite a

00:03:40.744 --> 00:03:41.819
long time leading up to that.

00:03:41.824 --> 00:03:41.924
I,

00:03:42.839 --> 00:03:46.739
Finished undergrad in 2009 and was
lucky to start a job at Microsoft.

00:03:46.739 --> 00:03:50.760
And literally the, the thing, the catalyst
that set off the rest of my career as

00:03:50.765 --> 00:03:54.089
like a front end developer was I was
in a room when someone walked in and

00:03:54.089 --> 00:03:56.159
asked, does anyone know what jQuery is?

00:03:56.909 --> 00:03:57.659
yeah, I've used that.

00:03:57.659 --> 00:03:58.200
And then I.

00:03:58.439 --> 00:04:02.369
Was fully, like, sucked into a
gigantic project rebuilding dell.com

00:04:02.369 --> 00:04:03.569
from like the third week of my

00:04:03.569 --> 00:04:03.989
job.

00:04:04.419 --> 00:04:04.719
and

00:04:05.199 --> 00:04:08.739
the from there, like, you
know, jQuery and mood tools and

00:04:08.949 --> 00:04:10.149
handlebars and all these things.

00:04:10.149 --> 00:04:12.339
And it's just like, it feels like
a, a mess of things since then.

00:04:12.339 --> 00:04:15.099
And you're absolutely right that
like, it ends, it doesn't get

00:04:15.294 --> 00:04:17.334
Zeno Rocha: Yeah, it doesn't get it.

00:04:17.454 --> 00:04:19.209
Mike Bifulco: and, more
bugs pop up each week.

00:04:19.593 --> 00:04:23.883
Zeno Rocha: no, and I think there's like,
when you mix that with open source, you

00:04:23.883 --> 00:04:26.403
get like a whole new beast too, right?

00:04:26.408 --> 00:04:29.403
Like as you start contributing,
you start building our own

00:04:29.403 --> 00:04:31.793
projects is just fascinating how.

00:04:33.998 --> 00:04:36.278
It's a, it's a different world, man.

00:04:36.278 --> 00:04:38.233
It, it's so, so unique.

00:04:39.128 --> 00:04:39.548
Mike Bifulco: Yeah.

00:04:39.638 --> 00:04:40.058
Yeah.

00:04:40.358 --> 00:04:43.668
A weird thing I, I feel like I've
started to see with a few decades of

00:04:44.658 --> 00:04:47.338
is that like familiar faces
pop up after a while too.

00:04:47.428 --> 00:04:50.548
You know, like you, you will bump
into the same people building

00:04:50.548 --> 00:04:51.898
interesting things over time.

00:04:51.968 --> 00:04:55.058
Just kind of the way of the world and
the way your network tends to work.

00:04:55.058 --> 00:04:57.888
And burning bridges is one of
those things that I have been

00:04:57.888 --> 00:04:59.688
lucky not to do much in career.

00:04:59.688 --> 00:05:02.578
And if you're listening, don't
burn bridges because it can,

00:05:02.698 --> 00:05:03.808
it can get dirty, you know?

00:05:04.328 --> 00:05:05.738
Zeno Rocha: You talked
about MO Tools, right?

00:05:05.738 --> 00:05:09.068
Like who would've thought that
Guillermo, who was a contributor on

00:05:09.068 --> 00:05:11.888
MO Tools will now be the CEO of ell?

00:05:11.888 --> 00:05:12.128
Right?

00:05:12.128 --> 00:05:15.818
So that just goes to, to
show that yeah, it like.

00:05:16.598 --> 00:05:17.078
Yeah.

00:05:17.288 --> 00:05:18.698
It, it's a small world.

00:05:18.878 --> 00:05:20.348
This, this tech community.

00:05:20.898 --> 00:05:23.268
Mike Bifulco: Something I like to
ask my engineering friends is what

00:05:23.268 --> 00:05:25.818
is the oldest thing that you've
made that's still on the internet?

00:05:26.158 --> 00:05:26.698
Because you'll find

00:05:26.818 --> 00:05:29.488
a lot about what people were
doing, you know, way back when.

00:05:29.538 --> 00:05:30.883
That's, it's a fun project.

00:05:31.163 --> 00:05:35.003
And I would imagine your HTML five
demo here it probably goes back pretty

00:05:35.003 --> 00:05:37.943
far in terms of things that you've
made that still exist, at least.

00:05:38.693 --> 00:05:39.233
Zeno Rocha: yep.

00:05:39.283 --> 00:05:42.248
The my first open source
project that really popped up.

00:05:42.863 --> 00:05:44.808
Was something called jQuery Boilerplates.

00:05:44.963 --> 00:05:49.823
And I remember the story is actually
pretty wild because I built that

00:05:49.823 --> 00:05:54.453
project and then launched it and
then smashing Magazine picked it up

00:05:54.603 --> 00:05:59.283
and then it blew up and I was like,
just starting to learn about jQuery.

00:05:59.343 --> 00:06:04.143
And here I was thinking that I could
build a border plate for Jake Ray, but

00:06:04.143 --> 00:06:06.903
I got this PR from a very well known.

00:06:07.953 --> 00:06:10.083
No Js person.

00:06:10.563 --> 00:06:16.173
That was basically like deleting all
my code and saying, oh, the title

00:06:16.178 --> 00:06:19.503
of the PR was something along the
lines of like, delete everything.

00:06:19.508 --> 00:06:21.693
That's the only way that
you can build this up again.

00:06:22.443 --> 00:06:26.943
And the the, the gif was like,
actually like deleting everything.

00:06:26.943 --> 00:06:32.373
So I, I remember feeling so sad and so
disappointed that I, that I've created

00:06:32.373 --> 00:06:34.023
something that maybe wasn't good for this.

00:06:34.788 --> 00:06:36.378
The guru there.

00:06:36.828 --> 00:06:39.918
And then reaching out to people that
I knew were doing interesting things

00:06:39.918 --> 00:06:45.438
like adios money and alongside with
him, we like recreated that project.

00:06:45.438 --> 00:06:48.688
And then it got much better
and, and much bigger later.

00:06:48.688 --> 00:06:54.308
But just goes to show that how
yeah, how interesting the community

00:06:54.308 --> 00:06:56.518
can be sometimes but also.

00:06:57.193 --> 00:07:00.553
How much you've learned from
from it, which is the most

00:07:00.553 --> 00:07:01.783
interesting piece for me.

00:07:02.653 --> 00:07:03.223
Mike Bifulco: certainly.

00:07:03.973 --> 00:07:05.168
how did you get from there to

00:07:07.408 --> 00:07:10.438
Zeno Rocha: Man, I've done
all sorts of crazy things.

00:07:10.468 --> 00:07:16.938
I've done a lot of I built a theme called
Dracula, which I think by now is like

00:07:16.938 --> 00:07:19.458
one of the most popular themes for VS.

00:07:19.458 --> 00:07:21.648
Code in, in, in terminals.

00:07:21.648 --> 00:07:23.058
In, in, in everything.

00:07:23.478 --> 00:07:27.258
I think it has like 6 million
downloads on, on VS code right now.

00:07:27.858 --> 00:07:29.628
That was a very big part of.

00:07:30.228 --> 00:07:35.928
My love for, for building dev
tools and building open source.

00:07:35.978 --> 00:07:38.438
I've done this project
called Clipboard js.

00:07:38.748 --> 00:07:42.258
Back in the day, the only way to do
copy to clipboard was using flash.

00:07:42.468 --> 00:07:45.468
So then when this was released
in JavaScript, I was so excited.

00:07:46.053 --> 00:07:46.173
I.

00:07:46.173 --> 00:07:49.923
And I think the PU too has
like 30,000 GitHub stars.

00:07:50.463 --> 00:07:54.753
So I've done like all
sorts of side projects.

00:07:54.753 --> 00:07:57.033
I've always loved the
idea of side projects.

00:07:57.033 --> 00:07:57.963
That's another thing.

00:07:58.443 --> 00:08:03.543
Just I, I've always felt that
with your nine to five job,

00:08:03.903 --> 00:08:05.613
there's always a ceiling to.

00:08:06.018 --> 00:08:08.958
What I would be able to learn,
and maybe that's because the, that

00:08:08.958 --> 00:08:10.878
company just uses one language, right?

00:08:11.178 --> 00:08:14.328
Or they use one particular
technology stack.

00:08:14.718 --> 00:08:19.788
So side projects, they always have
been this outlet for creativity.

00:08:20.478 --> 00:08:25.908
And I've done, I, I did a little
bit of product management.

00:08:25.908 --> 00:08:31.028
I, I did a little bit of, of
a vp role in other places.

00:08:31.028 --> 00:08:35.078
I was a CPO at another company,
but I've, I've never really.

00:08:37.493 --> 00:08:40.613
I've never really stopped
loving JavaScript and open

00:08:40.613 --> 00:08:41.993
source and programming.

00:08:42.908 --> 00:08:43.448
Sure.

00:08:43.538 --> 00:08:43.988
Yeah.

00:08:44.018 --> 00:08:44.468
Okay.

00:08:45.058 --> 00:08:46.768
Dracula by the way, is everywhere.

00:08:46.798 --> 00:08:47.788
I feel like I bump into it in

00:08:47.863 --> 00:08:48.928
Mm-Hmm I expect half

00:08:48.928 --> 00:08:49.378
the time.

00:08:49.478 --> 00:08:49.958
And that's one

00:08:49.958 --> 00:08:50.948
of things that like

00:08:50.998 --> 00:08:53.368
Gets your name out into the open,
like a lot of good side projects,

00:08:53.398 --> 00:08:54.778
like people start to recognize you and

00:08:55.198 --> 00:08:58.228
a known quantity to people
who've never truly actually you.

00:08:58.628 --> 00:08:59.228
Mike Bifulco: But that ends up

00:08:59.558 --> 00:09:01.268
helpful tool in the long term as well.

00:09:01.608 --> 00:09:03.138
Then jump forward to React

00:09:03.463 --> 00:09:03.883
Zeno Rocha: mm-Hmm.

00:09:04.303 --> 00:09:05.988
Mm-Hmm Yeah.

00:09:05.988 --> 00:09:10.668
So one of my frustrations is that
like, through all these years, like

00:09:10.668 --> 00:09:16.008
I've used all sorts of APIs for
email, sending postmark, mail, guns,

00:09:16.008 --> 00:09:18.638
SendGrid mandrill, you name it, right?

00:09:19.358 --> 00:09:24.338
And I've always felt like these products
were not built for me as an engineer.

00:09:24.518 --> 00:09:27.968
Maybe they're really nice
for product managers or, or.

00:09:28.493 --> 00:09:33.743
Product marketers, but as an engineer
who is like building a forget password

00:09:33.748 --> 00:09:35.693
flow, I wish there was something better.

00:09:36.473 --> 00:09:41.393
And I felt that frustration
multiple times throughout my career.

00:09:41.393 --> 00:09:44.453
Like sometimes dealing with
like really big customers like

00:09:44.843 --> 00:09:48.083
McDonald's, having emails going
to span, I'm like, oh my gosh.

00:09:48.083 --> 00:09:49.553
Like how do we fix this problem?

00:09:50.003 --> 00:09:55.673
And just me integrating
a side project so we.

00:09:56.648 --> 00:10:00.488
We just like try to come up with
this idea of like, okay, what

00:10:00.488 --> 00:10:01.868
if email sending was better?

00:10:01.868 --> 00:10:06.038
Because it really feels like
email sending as a whole industry

00:10:06.368 --> 00:10:09.218
got stuck in 1995 or something.

00:10:09.218 --> 00:10:13.478
Like, to do a, a rounded corner
is extremely difficult still.

00:10:13.788 --> 00:10:17.628
So we're like, no, like may
like this, this whole idea of

00:10:17.628 --> 00:10:20.178
my email not rendering the same.

00:10:21.033 --> 00:10:26.043
On Outlook and Gmail and Yahoo
Mayo and superhuman like that.

00:10:26.043 --> 00:10:32.673
Just for me, like in 2023 that didn't,
like, my brain wouldn't process that idea.

00:10:32.673 --> 00:10:34.143
I'm like, we gotta fix this.

00:10:34.623 --> 00:10:41.163
So we started building like an API
for sending emails, but then as we

00:10:41.163 --> 00:10:45.753
were building, we're like, oh, the
API is super cool, but there's this

00:10:45.753 --> 00:10:50.103
problem right before sending an email,
which is the actual email template.

00:10:50.508 --> 00:10:55.818
Like putting together that HTML and
people don't wanna use tables they

00:10:55.818 --> 00:10:58.698
don't like it is just like so outdated.

00:10:59.158 --> 00:11:00.448
But what are they using now?

00:11:00.508 --> 00:11:01.798
They're using React.

00:11:01.798 --> 00:11:04.258
They're using XJS, they're using Tailwind.

00:11:04.918 --> 00:11:09.178
So we came up with this idea of
a project called React email, or

00:11:09.178 --> 00:11:14.008
you could use that modern stack to
create your emails so you can have.

00:11:14.878 --> 00:11:19.118
Type definition using type script and JSX.

00:11:19.118 --> 00:11:22.748
So no more like, hey,
empty space, comma, right?

00:11:22.748 --> 00:11:24.068
Like that type of stuff.

00:11:24.488 --> 00:11:30.848
And that was super helpful and we
released React email in December, 2022.

00:11:31.298 --> 00:11:34.898
And then in January, 2023
is when we announced recent.

00:11:36.308 --> 00:11:37.448
Mike Bifulco: Pretty incredible.

00:11:37.778 --> 00:11:42.338
I think there's, there's a lot of pain
you've probably lived through in building

00:11:42.343 --> 00:11:46.388
React email, but in case someone listening
to the show has never tried to send

00:11:46.388 --> 00:11:50.208
an email that looks good before it is
one of the fundamentally hard problems

00:11:50.208 --> 00:11:51.558
of building things for the internet.

00:11:51.878 --> 00:11:55.718
Zeno Rocha: Email is formatted in HTML
and CSS and on some level plain text.

00:11:56.048 --> 00:12:00.168
But it is really hard to get email
clients to look to be compatible, right?

00:12:00.168 --> 00:12:04.018
You, you may Yeah there's a long period
of time where a lot of web developers

00:12:04.018 --> 00:12:07.738
spent their time making it so that
things looked the same in Safari and

00:12:07.738 --> 00:12:09.838
Firefox and Chrome at the same time.

00:12:09.843 --> 00:12:12.088
Mike Bifulco: Like browser compatibility
was a big thing for a long time.

00:12:12.458 --> 00:12:15.288
And before that, you know, Netscape
and all the other things that existed

00:12:15.608 --> 00:12:18.848
this whole time since the internet was
born, email compatibility has been an

00:12:18.848 --> 00:12:22.538
issue because essentially every email
provider has different rules for what.

00:12:22.898 --> 00:12:25.478
Things they support out of H TM
L and a lot of that is like, they

00:12:25.478 --> 00:12:28.358
try not to do things that will
break your experience with email.

00:12:28.748 --> 00:12:31.688
You know, for example, I don't know if
you think back far enough, you probably

00:12:31.688 --> 00:12:34.538
don't want an email with a Marques
scrolling across it or like blinking

00:12:34.538 --> 00:12:36.068
images or dynamic stuff loading.

00:12:36.073 --> 00:12:37.838
So it's just a different problem to solve.

00:12:38.118 --> 00:12:41.143
And, and I have tried to send good
looking emails in the days long

00:12:41.143 --> 00:12:45.473
before React email existed and
essentially every time gave up.

00:12:45.548 --> 00:12:49.248
It was just like, good enough and
you know, move forward from there.

00:12:49.498 --> 00:12:51.928
And this is something that your
team attacked head on, right?

00:12:51.928 --> 00:12:55.188
And, and I feel like that's a really
interesting inroads to then the API,

00:12:55.193 --> 00:12:59.228
which becomes interesting too and was a
really good hook to get people interested.

00:12:59.448 --> 00:13:03.888
So, so you launched React to email and
then, I mean, it was, I guess I just a

00:13:03.888 --> 00:13:06.008
matter of weeks before resend launched.

00:13:06.578 --> 00:13:06.758
Zeno Rocha: Yep.

00:13:07.688 --> 00:13:08.768
Mike Bifulco: let's talk
a little bit about that.

00:13:08.768 --> 00:13:09.368
So what, what is the

00:13:09.758 --> 00:13:10.208
Resend?

00:13:10.778 --> 00:13:11.318
Zeno Rocha: Yeah.

00:13:11.438 --> 00:13:17.003
And just one anecdote for for folks to
think about, like, if you are launching

00:13:17.003 --> 00:13:22.218
an API, if you're launching an open source
project, like whatever it is, it's really

00:13:22.218 --> 00:13:24.588
important to think about the storytelling.

00:13:24.933 --> 00:13:30.723
And that's something that I try to
spend a lot of time because that's

00:13:30.728 --> 00:13:32.403
what's gonna resonate with folks or not.

00:13:32.463 --> 00:13:32.793
Right?

00:13:32.913 --> 00:13:40.653
And we, we are very much intentional
about let's give before we ask.

00:13:40.863 --> 00:13:45.993
And the way we gave was through React
Team know this open source project.

00:13:46.383 --> 00:13:49.773
That's the first step of the
journey of sending an email, right?

00:13:49.773 --> 00:13:50.283
You get.

00:13:50.928 --> 00:13:54.168
This beautiful Figma
file from the designer.

00:13:54.168 --> 00:13:58.698
And when you start implementing, you're
like, wow, this is so much different

00:13:58.698 --> 00:14:00.138
than what I'm used to in the web.

00:14:00.618 --> 00:14:05.208
So we wanted to fill that gap
and the answer was react email.

00:14:05.748 --> 00:14:08.868
But after the email was done,
I need a way to send it.

00:14:09.648 --> 00:14:15.858
And again, thinking about
primarily that no JS stack, how

00:14:15.858 --> 00:14:18.468
does that fit into that world?

00:14:18.978 --> 00:14:24.938
And from a DX perspective I feel
like no one was really giving

00:14:24.938 --> 00:14:26.888
the love that email deserved.

00:14:26.888 --> 00:14:33.878
So like this thing is so crucial for
the web, but no one is investing time to

00:14:33.878 --> 00:14:40.028
build a, a proper API or to have a open
API spec to have a postman collection.

00:14:40.028 --> 00:14:44.168
Like everything that surrounds, like
building and distributing an API.

00:14:44.858 --> 00:14:47.258
So that's where recent came up about like.

00:14:48.323 --> 00:14:51.323
Once you have the email,
you need a way to send it.

00:14:51.863 --> 00:14:57.203
And it's more than sending, because the
moment you send, now you have to worry

00:14:57.208 --> 00:14:59.783
about was the email delivered or not?

00:14:59.843 --> 00:15:02.663
Did it bounce, was it marked as spam?

00:15:03.173 --> 00:15:03.773
Where is it?

00:15:03.773 --> 00:15:05.333
Is it on the primary box?

00:15:05.333 --> 00:15:07.163
Is it on the, the spam folder?

00:15:08.183 --> 00:15:12.303
So there's this whole observability
on top of email that is.

00:15:13.503 --> 00:15:14.493
Taken for granted.

00:15:15.103 --> 00:15:17.953
So that's why we were like,
no, we gotta build a dashboard.

00:15:17.953 --> 00:15:20.623
We gotta build the stripe of email.

00:15:20.653 --> 00:15:22.393
We gotta build the of email.

00:15:22.513 --> 00:15:24.733
And that was the whole
exercise from day one.

00:15:25.243 --> 00:15:26.233
How can we do that?

00:15:26.503 --> 00:15:30.733
So it's gonna require amazing
docs, it's gonna require a

00:15:30.733 --> 00:15:32.323
lot of attention to detail.

00:15:33.073 --> 00:15:35.533
It's gonna require speed.

00:15:35.923 --> 00:15:39.463
Like you can't just navigate on that
dashboard and it's extremely slow, like.

00:15:40.033 --> 00:15:41.323
Other competitors are.

00:15:41.803 --> 00:15:46.933
So we were just like trying to
tick those boxes to really make

00:15:46.933 --> 00:15:48.343
something that people cared.

00:15:48.523 --> 00:15:53.593
And I feel like there's something when
you go to a, a website and like you

00:15:53.593 --> 00:15:57.253
understand if, if there are s STKs for
all the languages, you're like, oh, cool.

00:15:57.943 --> 00:16:02.463
Like you start gaining trust
from developers by, by putting

00:16:02.463 --> 00:16:03.753
those building blocks in place.

00:16:05.193 --> 00:16:06.693
Mike Bifulco: Yeah, the
storytelling telling angle of

00:16:06.693 --> 00:16:07.743
that is really interesting.

00:16:07.843 --> 00:16:08.893
Thank you for sharing, by the way.

00:16:08.893 --> 00:16:09.943
I think it's really cool to hear

00:16:09.973 --> 00:16:10.693
firsthand

00:16:12.253 --> 00:16:16.023
I interact with a lot of people who
are on the journey of becoming a

00:16:16.023 --> 00:16:19.203
founder or building their first product
or building their, you know, maybe

00:16:19.203 --> 00:16:21.783
their 10th product, but they haven't
had something successful before.

00:16:22.143 --> 00:16:25.773
And often one of the discussions I have
with people that is hardest to convince

00:16:25.778 --> 00:16:30.063
people is that the story is as important
as the product may be more important

00:16:30.063 --> 00:16:31.713
than the product in your early days.

00:16:31.963 --> 00:16:34.813
And that even if you're building something
where the first releases are flawed.

00:16:35.148 --> 00:16:39.228
Hard to Your early adopters are the people
who love the product because they love you

00:16:39.228 --> 00:16:42.078
or they love your team, or they love the
brand and the story that you're telling.

00:16:42.418 --> 00:16:44.308
And that's a hard thing to get across.

00:16:44.308 --> 00:16:48.868
So how, how did you land on that as your
path for getting this out into the wild?

00:16:48.873 --> 00:16:49.408
Was this something

00:16:50.008 --> 00:16:50.968
you had gained along the way?

00:16:52.808 --> 00:16:57.808
Zeno Rocha: I think it's an exercise
of looking inwards and, and thinking,

00:16:57.838 --> 00:16:59.158
what are the things that I enjoy?

00:16:59.663 --> 00:17:08.363
When I go to a website and I see that
there's a typo or that the design is not

00:17:08.363 --> 00:17:15.143
as refined, and then I go to the docs
and it doesn't really click for me, like

00:17:15.148 --> 00:17:17.273
I can get to a quick start very easily.

00:17:17.888 --> 00:17:22.628
When I copy the code and I, I try to
run that code, it doesn't run because

00:17:22.628 --> 00:17:26.108
of some silly coma that's missing.

00:17:26.738 --> 00:17:31.298
And after I run it, like it takes a
long time from the moment I sign up

00:17:31.298 --> 00:17:35.528
and get the API key to the moment
I see the value of the product.

00:17:36.128 --> 00:17:40.838
Just getting to those conclusions
myself as a user and then trying to

00:17:40.838 --> 00:17:42.578
avoid that as much as possible, like.

00:17:43.163 --> 00:17:46.553
One thing in the email industry is
that when you sign up for all these

00:17:46.553 --> 00:17:51.023
other services, you got a first
request to access and they put you

00:17:51.028 --> 00:17:54.923
on this verification list for three
days, and then they tell you, oh yeah,

00:17:54.923 --> 00:18:00.203
now you're approved As a developer,
I hate that with my whole heart.

00:18:00.233 --> 00:18:06.083
Like that's so against everything
that I believe that level of friction.

00:18:06.413 --> 00:18:11.663
Like, I wanna be able to experience
the API in 30 seconds because that's

00:18:11.663 --> 00:18:17.123
the time I have on a Saturday afternoon
while my, my daughter is running around.

00:18:17.503 --> 00:18:23.173
And if I like that experience, then
maybe I'll bring it over at work Monday

00:18:23.173 --> 00:18:27.223
morning, I'll talk to my coworker and
say, guys, you gotta check out this API.

00:18:27.223 --> 00:18:28.483
Look how cool it is.

00:18:28.853 --> 00:18:31.523
So there's definitely, I.

00:18:32.933 --> 00:18:38.483
For me, my angle is I'm not building
a company, I'm not building a team.

00:18:38.903 --> 00:18:39.983
I'm building a brand.

00:18:40.943 --> 00:18:44.963
And to sustain that brand,
I need a stellar team.

00:18:45.773 --> 00:18:49.553
And to sustain that team, I need
a stellar company, a stellar

00:18:49.558 --> 00:18:52.373
machine, to be able to sustain that.

00:18:52.973 --> 00:18:53.543
So.

00:18:55.853 --> 00:18:58.433
Not, not many people think
like that because building a

00:18:58.433 --> 00:19:00.773
brand takes 10 years, right?

00:19:00.773 --> 00:19:01.943
Or 15 years.

00:19:02.093 --> 00:19:03.083
It's a long time.

00:19:03.523 --> 00:19:06.973
But I, I definitely spend a lot
of time thinking about this rather

00:19:06.973 --> 00:19:10.408
than, oh yeah, what's the next
feature we, we need to ship.

00:19:11.518 --> 00:19:14.458
Mike Bifulco: Yeah, you've just touched
on quite a few things that I think add

00:19:14.458 --> 00:19:17.908
up to a lot, and to your last point,
that building a brand takes a long time.

00:19:18.838 --> 00:19:21.058
The story you've told me so
far is you building a brand

00:19:21.058 --> 00:19:22.258
for a very long time, right?

00:19:22.258 --> 00:19:22.378
This

00:19:23.368 --> 00:19:27.298
HTML five demo and Boilerplate
and your Dracula theme.

00:19:27.298 --> 00:19:30.898
Like first things I heard
about React email was it was,

00:19:31.108 --> 00:19:32.008
oh, made by the guy who made

00:19:32.938 --> 00:19:35.698
oh, that immediately gives
it some, some cachet to

00:19:35.918 --> 00:19:36.338
Zeno Rocha: mm-Hmm

00:19:36.388 --> 00:19:39.238
Mike Bifulco: And your, you know, your
name is something that that grows in

00:19:39.238 --> 00:19:43.588
value because I've seen, you know, a Zeno
attached to a dozen interesting things.

00:19:44.423 --> 00:19:44.663
brand.

00:19:44.663 --> 00:19:47.123
You may not, you, I'm certain
you weren't this when you're

00:19:47.278 --> 00:19:49.108
Zeno Rocha: mm-Hmm mm-Hmm.

00:19:49.223 --> 00:19:50.048
Mike Bifulco: but like you

00:19:50.053 --> 00:19:52.523
you, you may not realize it in
the current moment, but you're

00:19:52.523 --> 00:19:53.993
building a brand towards the thing.

00:19:53.993 --> 00:19:57.273
Whenever you land on what the thing
is, people will trust you more.

00:19:57.273 --> 00:20:00.153
And part of that, the uncomfortable
thing for a lot of people is

00:20:00.158 --> 00:20:01.923
sharing your work early and often.

00:20:01.928 --> 00:20:05.623
Side projects, no matter how embarrassing
you might feel, they are shows that

00:20:05.623 --> 00:20:08.993
you're working on, on interesting
things and feeds forward in ways

00:20:08.993 --> 00:20:10.493
that are very unexpected For sure.

00:20:11.303 --> 00:20:11.593
Zeno Rocha: Yeah.

00:20:12.183 --> 00:20:16.393
It's funny how I think there's a
shift in the way people consume.

00:20:17.158 --> 00:20:18.718
Things in the world, right?

00:20:18.718 --> 00:20:24.698
Like there used to be a time where you
are buying a product and you have no

00:20:24.698 --> 00:20:27.188
idea who the founder of that product is.

00:20:27.188 --> 00:20:31.448
There's still a lot of cases like that,
obviously, like maybe that's 90% of that

00:20:31.478 --> 00:20:36.908
the case, but then there's this whole
subset of companies that we love using.

00:20:37.508 --> 00:20:41.618
Because we also know the founder I'm
sure I know, love it or hate him.

00:20:41.618 --> 00:20:45.368
Like there are many people that bought
Teslas because, you know, they had a, an

00:20:45.368 --> 00:20:48.728
association with Elon Musk four years ago.

00:20:49.208 --> 00:20:53.438
Like a lot of people love for sell
because they see Guillermo very involved.

00:20:53.648 --> 00:20:57.188
So there's, there's these things
that play out and I definitely

00:20:57.188 --> 00:21:00.488
feel like the personal branch.

00:21:01.943 --> 00:21:07.193
That like I, I, I'm always thinking how
does my personal brand follows recent

00:21:07.313 --> 00:21:09.653
and how does one support the other?

00:21:09.983 --> 00:21:12.713
If you, there's some silly
things like, oh, you go to the

00:21:12.713 --> 00:21:14.753
website of that person, right?

00:21:15.023 --> 00:21:16.913
And then they have a
personal website live.

00:21:16.943 --> 00:21:19.433
That's the first thing do, do
they have or or they don't.

00:21:19.493 --> 00:21:24.263
And then you go, it's all of like
outdated blog posts and stuff like that.

00:21:24.263 --> 00:21:25.283
So you're like, oh, okay.

00:21:25.433 --> 00:21:28.073
Or it's extremely ugly
and it doesn't match.

00:21:28.698 --> 00:21:31.638
The values that so resend
is very polished, right?

00:21:31.638 --> 00:21:34.368
And then you go to my personal
website and it's super like me.

00:21:34.758 --> 00:21:35.508
It's just there.

00:21:35.778 --> 00:21:39.858
Like no, it needs to communicate
that because then it's a cohesive

00:21:39.858 --> 00:21:45.468
message that, hey, if you care
about details, this will be for you.

00:21:45.648 --> 00:21:47.028
If you don't, that's totally fine.

00:21:47.028 --> 00:21:50.118
There are all these other competitors
you can do, you can go and use.

00:21:50.418 --> 00:21:53.328
But if that's something that
you, that's important to you.

00:21:53.948 --> 00:21:57.758
Here's another person that
also cares just much as you do.

00:21:58.188 --> 00:21:58.248
Mike Bifulco: Yeah.

00:21:59.598 --> 00:21:59.898
Yeah.

00:21:59.958 --> 00:22:01.368
Yeah, that's good stuff.

00:22:01.968 --> 00:22:06.458
A thing that I think we don't often talk
about too, as, as founders of startups,

00:22:06.458 --> 00:22:09.908
is that like your story is also wildly
important to the people who are gonna cut

00:22:09.913 --> 00:22:13.328
you a check worth hundreds of thousands
of dollars or millions of dollars.

00:22:13.328 --> 00:22:15.158
They want to hear about you
and your success and know

00:22:15.158 --> 00:22:16.418
that you have a track history.

00:22:16.823 --> 00:22:20.223
And that you have relationships and,
you know that you're, you're reliable

00:22:20.223 --> 00:22:21.543
and stable and things like that too.

00:22:21.543 --> 00:22:22.783
And it adds up, right?

00:22:22.783 --> 00:22:26.368
We've, we've had, I've had investors
in, in our company mention blog

00:22:26.368 --> 00:22:27.718
posts of mine from years ago,

00:22:28.388 --> 00:22:28.678
Zeno Rocha: Well,

00:22:28.798 --> 00:22:29.368
Mike Bifulco: about, but it's like,

00:22:29.398 --> 00:22:29.998
oh I see who was

00:22:29.998 --> 00:22:31.048
thinking about this back then.

00:22:31.053 --> 00:22:32.518
It's like, yeah, okay, cool, cool.

00:22:32.518 --> 00:22:32.968
That's good.

00:22:32.968 --> 00:22:35.938
Like, I, you know, hope I didn't
put too many sarcastic jokes or dumb

00:22:35.938 --> 00:22:37.168
memes in that post but

00:22:37.508 --> 00:22:39.578
I've been, you know, doing it
for a long time since then.

00:22:39.578 --> 00:22:40.568
It really does add up.

00:22:41.068 --> 00:22:41.488
Zeno Rocha: Mm-Hmm.

00:22:42.033 --> 00:22:43.143
Yeah, no, it does.

00:22:43.848 --> 00:22:45.918
Mike Bifulco: I'm veering a little
bit from our traditional APIs.

00:22:45.918 --> 00:22:49.488
You only hate podcast because I think
I could talk forever to interesting

00:22:49.488 --> 00:22:52.608
founders about the interesting
things they're building, also at

00:22:52.613 --> 00:22:53.898
risk of a linch mob chasing me

00:22:53.903 --> 00:22:56.538
down if to you about open API before long.

00:22:57.068 --> 00:22:59.198
At some point we're gonna have
to talk more about being, being

00:22:59.248 --> 00:23:02.068
founders and being, you know, a
creator and all that other stuff.

00:23:02.818 --> 00:23:05.218
about the API side of resend.

00:23:05.248 --> 00:23:07.708
Like what, what is it like to
design an API first product?

00:23:09.838 --> 00:23:11.618
Zeno Rocha: Me And man, it's so unique.

00:23:12.173 --> 00:23:17.663
Especially because I think we, we
traditionally spend more time on

00:23:17.663 --> 00:23:24.323
the website, on, on the backend, on
the, on all these other interfaces.

00:23:24.503 --> 00:23:30.948
And then we don't think about the API
as this very unique interface with a

00:23:30.983 --> 00:23:37.073
very unique set of requirements such
as speed like how do you make it.

00:23:37.763 --> 00:23:40.373
So that the request is
as fast as it can be.

00:23:40.923 --> 00:23:44.853
There's a lot of principles that we
try to follow in terms of simplicity

00:23:45.633 --> 00:23:48.093
that we, we are very careful of.

00:23:48.193 --> 00:23:55.303
We sometimes go to other APIs and we
see like a lot of information and, and

00:23:55.303 --> 00:23:59.533
then it's hard to translate that to the
different use cases that users have.

00:23:59.953 --> 00:24:01.183
So for us, we're like.

00:24:01.843 --> 00:24:04.993
How can we make an API
to send just one email?

00:24:05.293 --> 00:24:07.933
Just the easiest interface possible.

00:24:08.503 --> 00:24:10.423
And then there are more
advanced use cases later.

00:24:10.423 --> 00:24:14.713
Like, oh, I wanna replace a
template variable with this content.

00:24:14.743 --> 00:24:16.273
Okay, let's not care about that right now.

00:24:16.303 --> 00:24:23.383
Oh, I wanna send 100 emails in one API
call versus 100 API calls for 100 emails.

00:24:23.683 --> 00:24:25.093
Okay, let's not care about that.

00:24:25.573 --> 00:24:29.593
So there's this tension
when you're building of.

00:24:30.388 --> 00:24:34.708
You gotta build fast and you've
gotta build high quality, right?

00:24:34.738 --> 00:24:38.308
And then what people tend to do is
just, they're like, oh, I can't have

00:24:38.308 --> 00:24:40.708
both, so I'm just gonna pick one.

00:24:41.398 --> 00:24:44.248
And if you pick just quality,
then it's gonna take two years

00:24:44.248 --> 00:24:45.508
for you to ship your API.

00:24:45.928 --> 00:24:51.598
If you just pick speed now, you are gonna
introduce tons of breaking changes in

00:24:51.598 --> 00:24:53.368
the first year that you launched, right?

00:24:53.698 --> 00:24:55.558
And we know how hard it is for.

00:24:56.068 --> 00:24:57.418
To, to migrate APIs.

00:24:57.418 --> 00:24:59.638
It's extremely difficult process.

00:25:00.718 --> 00:25:05.578
I feel like the answer is you
gotta do both, but then the way

00:25:05.578 --> 00:25:07.888
you do it is you gotta cut scope.

00:25:08.368 --> 00:25:13.138
So you gotta make your API as easy as
po Like maybe you're not gonna cover all

00:25:13.143 --> 00:25:20.968
use cases and that's fine, but you need
the, the, that minimum lovable product of

00:25:20.968 --> 00:25:25.228
an API is is not just the functionality
is everything surrounding it.

00:25:25.858 --> 00:25:29.948
And I feel like that's where most
people fall apart because they're

00:25:29.948 --> 00:25:31.448
like, oh yeah, the API is running.

00:25:31.448 --> 00:25:31.898
Here it is.

00:25:31.898 --> 00:25:32.978
Here's an endpoint.

00:25:33.068 --> 00:25:34.748
No, let me check your docs.

00:25:34.748 --> 00:25:39.788
Like, do you have all that surrounding
ecosystem that people need to get started?

00:25:40.278 --> 00:25:47.928
I very much believe that we're living in
a SDK first world, not an API first world.

00:25:48.618 --> 00:25:52.938
I think an API first world was
what we were living in 2015.

00:25:52.938 --> 00:25:52.998
I.

00:25:53.913 --> 00:26:00.573
In 2024, we are living in SDK First World
because that's how people consume APIs.

00:26:01.293 --> 00:26:08.254
Like if I want to use, let's say Firebase,
I haven't even started using, I, I,

00:26:08.259 --> 00:26:12.993
I didn't even sign up, but I already
know that, oh man, if I use their SDK,

00:26:12.998 --> 00:26:15.363
I'm sure they will handle offline.

00:26:16.353 --> 00:26:20.673
Sink, and I'm sure they'll have
something already, like if I'm using

00:26:20.673 --> 00:26:23.823
Stripe, I'm sure they'll have some
sort of like pagination built in.

00:26:24.183 --> 00:26:27.333
Like there's all these things
that you know, that you expect

00:26:27.433 --> 00:26:29.623
that it'll make your life easier.

00:26:30.133 --> 00:26:34.543
So I don't think people start
from rest purely like they

00:26:34.543 --> 00:26:37.843
start from, I, I love no js.

00:26:37.933 --> 00:26:40.213
I needed a no JS dk, I love Ruby.

00:26:40.213 --> 00:26:41.293
I needed Ruby s dk.

00:26:41.683 --> 00:26:43.663
So we are very intentional about that too.

00:26:44.233 --> 00:26:49.603
Like starting day one with a lot of
coverage for, for different SDKs,

00:26:50.473 --> 00:26:52.483
but it's extremely hard to do that.

00:26:52.623 --> 00:26:55.893
There's a lot that we can dive
into that one particular subject,

00:26:56.523 --> 00:26:59.903
but I think, I feel like there's
a significant shift and you gotta

00:26:59.903 --> 00:27:03.293
think about everything in between.

00:27:03.293 --> 00:27:07.553
Not only like what's the
body and what's the response.

00:27:08.408 --> 00:27:08.768
Mike Bifulco: Yeah.

00:27:09.248 --> 00:27:09.638
Yeah.

00:27:09.908 --> 00:27:11.678
I like your point about SDK first.

00:27:11.928 --> 00:27:16.458
We, we are now trained to want to go,
you know, do the NPM install or the

00:27:16.768 --> 00:27:20.428
the PIP install or whatever, add the
gem for the thing rather than go, go.

00:27:20.563 --> 00:27:25.603
Through the API spec and send, you know,
curl requests to chase things down.

00:27:26.293 --> 00:27:29.113
You're, you mentioned the
trade off between building fast

00:27:29.113 --> 00:27:30.793
and high quality being scope.

00:27:31.133 --> 00:27:32.783
And I'm curious how you manage that.

00:27:32.783 --> 00:27:37.343
Do you do, do you have a gigantic backlog
of things and are you reprioritizing them

00:27:37.343 --> 00:27:40.433
or do you have a pretty good like, roadmap
ahead of you that you're building towards?

00:27:41.568 --> 00:27:44.658
Zeno Rocha: We have at, at all times.

00:27:44.658 --> 00:27:47.988
We are cutting scope even
like every single day.

00:27:48.418 --> 00:27:54.343
Because we are building a product
that it's not revolutionary, right?

00:27:54.343 --> 00:27:58.828
Like, it's not like e like sending
an email has been here forever.

00:27:58.828 --> 00:28:01.868
It's going to keep existing forever.

00:28:02.258 --> 00:28:02.918
So.

00:28:03.803 --> 00:28:05.543
Our differentiator is quality.

00:28:05.933 --> 00:28:09.593
And because of that, because we can't
just say like, oh no, we're gonna ship

00:28:09.593 --> 00:28:14.693
this thing, and it's half baked, eh, like
the, the good enough doesn't cut for us.

00:28:15.113 --> 00:28:20.453
So if that's the case, then at all
times we are re revisiting scope.

00:28:20.783 --> 00:28:24.233
We might come from a user interview
and then we learn all these

00:28:24.233 --> 00:28:25.763
things and we start implementing.

00:28:26.393 --> 00:28:31.523
Then we're like, oh, but we gotta ship
it fast, but we can't ship crappy stuff.

00:28:31.883 --> 00:28:35.363
So we're like, okay, we gotta remove
this feature, remove this other

00:28:35.368 --> 00:28:36.833
feature, remove this other feature.

00:28:37.373 --> 00:28:40.703
I feel like that's a very
interesting, like some people are

00:28:40.703 --> 00:28:44.723
afraid of cutting scope or they
feel like they can't push back.

00:28:45.083 --> 00:28:50.693
So it's important to foster that culture
of like, yeah, saying no, like, no, we're

00:28:50.693 --> 00:28:54.198
not gonna do this for this reason, and I.

00:28:55.133 --> 00:28:56.003
We can.

00:28:56.543 --> 00:28:58.013
Yeah, totally right.

00:28:58.193 --> 00:28:59.483
It's super hard, man.

00:28:59.633 --> 00:29:00.383
Super hard.

00:29:01.073 --> 00:29:04.103
Mike Bifulco: Yeah, this is, this
is where I should disclose that.

00:29:04.103 --> 00:29:07.103
A few weekends ago I spent a
few hours around at Resends

00:29:07.153 --> 00:29:08.438
features and before

00:29:08.498 --> 00:29:11.258
Zeno and started recording, I
told him I had a list of demands I

00:29:11.258 --> 00:29:11.918
was gonna send his

00:29:11.918 --> 00:29:12.278
way.

00:29:12.528 --> 00:29:15.048
So I'm, I'm now primed to hear no on

00:29:15.713 --> 00:29:17.808
honestly, that's, that's a good,
a good sign that you're building

00:29:17.808 --> 00:29:19.878
a product that has to it as well.

00:29:20.298 --> 00:29:21.768
I have so many questions
to follow on that.

00:29:21.768 --> 00:29:21.978
So it's

00:29:21.978 --> 00:29:22.398
Zeno Rocha: Mm-Hmm

00:29:22.698 --> 00:29:25.338
Mike Bifulco: to to hear user interviews
are a part of your process too.

00:29:25.578 --> 00:29:29.808
I think tools in particular, that
is a, a really tough thing to do

00:29:29.808 --> 00:29:33.953
because developer users are highly
critical wily, like developers know

00:29:33.953 --> 00:29:36.593
when they're being sold to and may
even shy away from that sort of thing.

00:29:36.863 --> 00:29:39.203
How do you find the right people
to do user interviews with?

00:29:40.683 --> 00:29:40.973
Zeno Rocha: Yeah.

00:29:42.803 --> 00:29:47.603
I feel like the, the doing a user
interview for a visual product

00:29:47.603 --> 00:29:51.323
is completely different than you
doing a using interview for an API.

00:29:51.353 --> 00:29:51.683
Right?

00:29:52.373 --> 00:29:57.833
We, we try to get a hold of the
people who are actually building

00:29:57.833 --> 00:30:00.023
this stuff as early as possible.

00:30:00.483 --> 00:30:01.023
So.

00:30:02.088 --> 00:30:06.048
Thankfully, because of all the work
that we do and the time that we spend

00:30:06.048 --> 00:30:11.118
on branding, thankfully we have a lot
of inbound and we can hear from folks

00:30:11.118 --> 00:30:17.028
like, there's a very popular open source
CMS that is now considering recent.

00:30:17.598 --> 00:30:23.868
So what I do is I, I first like,
let me go to their source code.

00:30:24.378 --> 00:30:26.748
Like this is a, an opportunity where.

00:30:27.283 --> 00:30:29.143
They, it's actually available.

00:30:29.143 --> 00:30:34.273
So I can take a look and then I can see
every single API call they make and I

00:30:34.273 --> 00:30:36.043
can see like, what are the parameters?

00:30:36.073 --> 00:30:38.263
How do they send those things?

00:30:38.263 --> 00:30:40.933
Like do they transform
the value before sending?

00:30:40.993 --> 00:30:47.233
What is the type of transformation can we
do the transformation on, on the SDK like.

00:30:48.178 --> 00:30:52.828
Silly example, like, oh, let's say you're
talking about sending attachments and I

00:30:52.828 --> 00:30:59.218
can send the whole string, or I can do
the base 64 conversion already built in.

00:30:59.278 --> 00:31:02.338
Like, so there are small
things that you can try to do.

00:31:02.518 --> 00:31:05.668
But yeah, we just try to get as
much information as possible.

00:31:05.668 --> 00:31:09.988
And of course, most times the code
is not open source, of course.

00:31:09.988 --> 00:31:13.228
And then when that's the
situation, we, we try to get it

00:31:13.228 --> 00:31:14.818
like, yeah, let's screen share.

00:31:14.878 --> 00:31:17.878
Like, whatever you can show me, please do.

00:31:17.878 --> 00:31:19.918
Because then we can make it better, right?

00:31:20.068 --> 00:31:25.858
Like we talk to a lot of our friends in
the beginning of recent, like, let me

00:31:25.863 --> 00:31:27.568
understand your email implementation.

00:31:27.658 --> 00:31:29.848
What are the, the ramifications here?

00:31:29.848 --> 00:31:31.348
Is there anything that we're missing?

00:31:31.828 --> 00:31:39.378
And cover the most important 20%
first and make that exceptional before

00:31:39.378 --> 00:31:41.538
getting to the, to the other 80.

00:31:42.273 --> 00:31:45.123
Mike Bifulco: Yeah, well right
there, that sounds like a super

00:31:45.123 --> 00:31:46.773
handy tool for cutting scope as well.

00:31:46.773 --> 00:31:50.343
If you can understand what the most
important things are to a solid, you

00:31:50.343 --> 00:31:53.643
know, group of people at, at least
gives you a target to build towards.

00:31:54.698 --> 00:31:58.443
the, the nice thing I always say to
folks about cutting scope is you can add

00:31:58.443 --> 00:32:01.743
things back later if you find they're
really necessary, but you'd also be

00:32:01.743 --> 00:32:03.513
surprised with, with what get away with.

00:32:04.323 --> 00:32:05.403
Zeno Rocha: Yep, that's true.

00:32:05.448 --> 00:32:08.428
Mike Bifulco: Your team recently
had a pretty large launch week.

00:32:08.478 --> 00:32:10.008
You, you had a week long event of

00:32:10.318 --> 00:32:10.738
Zeno Rocha: Mm-Hmm.

00:32:11.088 --> 00:32:12.498
Mike Bifulco: called
Forward, recent, forward.

00:32:12.578 --> 00:32:13.748
You wanna talk a little bit about that?

00:32:13.753 --> 00:32:14.588
What was that week all about?

00:32:14.643 --> 00:32:14.883
Zeno Rocha: Yeah.

00:32:14.973 --> 00:32:18.123
We, we try to do these
things every so often.

00:32:18.183 --> 00:32:19.983
I feel like releasing softer.

00:32:21.223 --> 00:32:27.128
It is not about this one peak moment that
happens every year or every two years.

00:32:27.128 --> 00:32:30.278
Like I, I see it as a.

00:32:33.218 --> 00:32:37.058
Almost like a heartbeat, you know,
like you are, you're monitoring, like

00:32:37.063 --> 00:32:39.098
you, you need the small releases.

00:32:39.248 --> 00:32:43.418
Those are your change log weekly, you
know, things that you're improving and

00:32:43.418 --> 00:32:45.158
then you, but you also need the big ones.

00:32:45.408 --> 00:32:49.398
If you're not, if you're just like, not
shipping consistently, then you're dead.

00:32:49.968 --> 00:32:52.068
You, you, you gotta need that combination.

00:32:52.068 --> 00:32:55.528
And I think developers
appreciate that as well.

00:32:55.828 --> 00:32:57.988
So we try to be very.

00:33:00.928 --> 00:33:05.458
Proactive about releasing things and
communicating even if there's more.

00:33:05.488 --> 00:33:09.808
But then from time to time we do an
event like that where like, okay, let's

00:33:09.808 --> 00:33:14.458
just ship a bunch of things in, in that
same week and really create momentum.

00:33:14.528 --> 00:33:18.458
That's something that's really important
for any product that you're doing.

00:33:18.828 --> 00:33:21.198
And the whole.

00:33:21.963 --> 00:33:25.803
Scope of that week was like,
how can we make the API better?

00:33:25.803 --> 00:33:33.303
Like I mentioned that example of sending
500 or 100 emails in one API request.

00:33:33.693 --> 00:33:36.663
That's something that we shipped during
that launch week because we heard

00:33:37.203 --> 00:33:41.913
from our users like, yeah, I wish I
didn't have to send those 100 requests.

00:33:41.913 --> 00:33:42.393
Just one.

00:33:42.393 --> 00:33:44.673
And then you do the queue on your end.

00:33:45.183 --> 00:33:45.903
We're like, oh, okay.

00:33:45.903 --> 00:33:46.113
Yeah.

00:33:46.113 --> 00:33:46.473
So.

00:33:47.193 --> 00:33:51.018
It's one piece left less of
infrastructure that you need to build.

00:33:51.598 --> 00:33:53.288
It's not easy to manage a queue.

00:33:53.508 --> 00:34:00.338
You gotta deal with that letter cues
and retries and, and it's, it's painful.

00:34:00.398 --> 00:34:01.718
So, okay, let's deal with that.

00:34:02.238 --> 00:34:07.998
But we also launched marketing emails,
which was something that we, I think by

00:34:07.998 --> 00:34:13.398
now listeners already understood that I
take a lot of inspiration from Stripe,

00:34:13.398 --> 00:34:15.708
for example, or, or, or other dev tools.

00:34:16.248 --> 00:34:20.688
And we're very much following that
Stripe trajectory of like, Hey, you have.

00:34:21.363 --> 00:34:24.573
The rest API for like payments.

00:34:24.633 --> 00:34:27.603
And then you have stripe elements.

00:34:27.633 --> 00:34:31.083
So those are like components that
you can embed in your app and then

00:34:31.088 --> 00:34:35.613
you have Stripe checkout where it's
like a whole standalone thing that

00:34:35.618 --> 00:34:37.443
you can just point to see, name to.

00:34:38.013 --> 00:34:39.228
We're very much following that.

00:34:40.953 --> 00:34:43.323
Idea of different abstraction layers.

00:34:43.773 --> 00:34:47.853
So this one abstraction layer that we
introduced now is just an editor, or

00:34:47.853 --> 00:34:51.633
what you see, what you got editor, that
you can send emails without needing

00:34:51.633 --> 00:34:54.183
to, you know, configure everything.

00:34:54.513 --> 00:34:54.933
Cool.

00:34:54.993 --> 00:34:56.583
So that's one piece that we're doing.

00:34:56.883 --> 00:34:58.794
And there are others, you
know I would love for you.

00:34:58.824 --> 00:35:01.884
Like no one wants to
build a unsubscribe page.

00:35:02.004 --> 00:35:04.764
It's the, the most boring
thing in the world.

00:35:04.944 --> 00:35:07.884
I am now looking into
like, how can we build.

00:35:08.424 --> 00:35:15.804
A radix or a shed cn ui, similar solution
to that, where you're just building

00:35:16.264 --> 00:35:19.744
the building blocks or the whole thing
depending on, on, on what you prefer.

00:35:20.254 --> 00:35:26.224
So I think that's a another way of looking
into this, like regardless of what we,

00:35:26.764 --> 00:35:28.479
we announced that week, like how do you.

00:35:29.104 --> 00:35:31.594
Think about our, the, the
different abstraction layers

00:35:31.594 --> 00:35:34.449
that your own API can empower.

00:35:35.839 --> 00:35:36.289
Mike Bifulco: Sure.

00:35:37.219 --> 00:35:39.889
And, and I think anyone listening to
this, right, if you're imagining the

00:35:39.889 --> 00:35:43.549
problem set, you can kind of envision
some things that might come from

00:35:43.554 --> 00:35:45.469
there and, and prioritizing that.

00:35:45.659 --> 00:35:48.839
Is a super interesting challenge,
but it's also about just knowing

00:35:48.839 --> 00:35:52.079
your product and listening to your,
your user base and hopefully figuring

00:35:52.079 --> 00:35:53.069
out what's important to them.

00:35:53.069 --> 00:35:56.789
And you know, marching towards more
productivity for your users probably means

00:35:56.789 --> 00:36:00.549
more value and more money transparently
for, for the business as well.

00:36:00.659 --> 00:36:03.749
Yeah, I, I will make sure there's
a link in the show notes to the

00:36:03.749 --> 00:36:05.219
launches from recent forward.

00:36:05.549 --> 00:36:07.199
I'd imagine that was a pretty hectic week.

00:36:07.229 --> 00:36:09.299
Was it an all hands on deck
situation for your team?

00:36:09.299 --> 00:36:09.659
How, how

00:36:09.664 --> 00:36:10.264
Zeno Rocha: Oh yeah,

00:36:10.289 --> 00:36:11.339
Mike Bifulco: We that

00:36:12.184 --> 00:36:12.424
Zeno Rocha: yeah.

00:36:12.424 --> 00:36:14.824
We're six people total.

00:36:14.924 --> 00:36:19.364
Not everybody knows how to
code or is coding full time.

00:36:19.964 --> 00:36:24.014
So that means like we have a very
small engineering team in practice.

00:36:24.014 --> 00:36:29.384
So we, we try to do what's
best with what we have.

00:36:29.504 --> 00:36:34.574
And I think there's something really
unique about having a small team as well.

00:36:34.574 --> 00:36:38.954
I think we were able to move very
fast in areas where maybe other

00:36:38.954 --> 00:36:40.304
companies wouldn't because of it.

00:36:40.304 --> 00:36:40.664
So.

00:36:41.579 --> 00:36:47.759
It's an interesting balance, but launch
weeks are, are these things that if

00:36:47.759 --> 00:36:53.639
you wanna do that, you gotta understand
the impact that this will cause because

00:36:53.639 --> 00:36:57.809
it's definitely a lot of stress, a lot
of attention that you get in return.

00:36:57.814 --> 00:37:03.719
But you are pushing the team
extremely hard for entire week and.

00:37:04.904 --> 00:37:07.364
You gotta know the consequences of that.

00:37:07.364 --> 00:37:12.224
Like people will be extremely tired on,
on the following week, they won't be as

00:37:12.224 --> 00:37:17.804
productive or like, there's all these
things that you need to take into account.

00:37:17.804 --> 00:37:21.434
So I try to be mindful
of those consequences.

00:37:21.434 --> 00:37:25.964
If I'm doing it, then, okay,
what are the, the trade offs

00:37:26.699 --> 00:37:27.209
Mike Bifulco: Sure.

00:37:27.659 --> 00:37:28.649
Well, it sounds like you've, you've

00:37:28.839 --> 00:37:28.959
Zeno Rocha: I

00:37:29.069 --> 00:37:32.279
Mike Bifulco: not only a very exciting
team to be on with sort of high demands

00:37:32.284 --> 00:37:36.459
and a very at stake, interesting product,
but hopefully like a, a healthy place to

00:37:36.464 --> 00:37:39.729
work where people are excited to be there
and, you know, the challenges come and go,

00:37:39.734 --> 00:37:43.379
but like the reason to be there remains
that that's all extremely exciting.

00:37:43.379 --> 00:37:46.859
And I think that, building developer
tools is, like you said at the beginning

00:37:46.859 --> 00:37:48.539
of the show, like a, an endless game.

00:37:48.599 --> 00:37:51.449
You know, it's there will always
be additional things to build for.

00:37:51.449 --> 00:37:55.019
And I mean, even email lately
has had new regulations passed.

00:37:55.019 --> 00:37:55.859
I think I saw something

00:37:56.729 --> 00:37:58.829
a requirement for one click on subscribe,

00:37:59.249 --> 00:37:59.469
Zeno Rocha: Yep

00:37:59.699 --> 00:38:02.969
Mike Bifulco: as like a HTP header or
something like that, that send along.

00:38:03.309 --> 00:38:04.179
There will always be new problems

00:38:04.264 --> 00:38:04.684
Zeno Rocha: Mm-Hmm.

00:38:05.209 --> 00:38:08.119
Mike Bifulco: I I'm curious if you're
already thinking about the next

00:38:08.239 --> 00:38:10.309
sort of what, what's to come, right?

00:38:10.309 --> 00:38:12.869
Do you have like a series of
things you're excited for?

00:38:12.874 --> 00:38:14.039
What's, what are you
thinking about right now?

00:38:15.269 --> 00:38:17.399
Zeno Rocha: There are a lot
of directions that we can go

00:38:17.689 --> 00:38:21.439
in terms of recent being this.

00:38:22.804 --> 00:38:26.254
One stop shop for all of
your communication needs,

00:38:26.344 --> 00:38:27.424
and that's our vision.

00:38:27.614 --> 00:38:33.974
In the long term, we, we are
doing email, but we're not

00:38:33.974 --> 00:38:35.654
necessarily an email company.

00:38:35.924 --> 00:38:42.164
Maybe email will be the primary thing
that we do for the next 10 years,

00:38:42.524 --> 00:38:44.474
but we don't want to be just that.

00:38:44.634 --> 00:38:47.874
There's some interesting
changes in the market with.

00:38:48.639 --> 00:38:51.399
That affect different
communication tools, right?

00:38:51.399 --> 00:38:57.879
Like sending SMS is getting harder and
harder, and I think the, the magic and the

00:38:57.884 --> 00:39:05.749
beauty of Twilio that we knew from 2013
or 12 and 11 isn't really there today.

00:39:06.139 --> 00:39:10.609
So we could explore that path and
start creating APIs for sending

00:39:10.609 --> 00:39:14.619
SFS, sending push notifications,
sending all these other things.

00:39:15.849 --> 00:39:21.639
But we can also just double down on
what our users are telling us, which

00:39:21.729 --> 00:39:23.469
right now is like inbound emails.

00:39:23.499 --> 00:39:25.359
They want to be able to receive an email.

00:39:25.869 --> 00:39:28.179
Okay, let's, let's get that figured out.

00:39:28.179 --> 00:39:31.569
You know, and we have a lot
of challenges around scaling.

00:39:31.569 --> 00:39:37.119
We're sending dozens of millions of emails
every month, and we gotta be creative.

00:39:37.389 --> 00:39:42.129
And like, whenever I, I re like, I talk
to my co-founder, like, oh yeah, let's

00:39:42.129 --> 00:39:43.689
think about this new architecture.

00:39:44.319 --> 00:39:46.749
And then we have this discussion
of like, oh yeah, how long do

00:39:46.749 --> 00:39:48.279
you think this is gonna last?

00:39:48.639 --> 00:39:50.259
Like, oh yeah, maybe nine months.

00:39:50.529 --> 00:39:54.519
And then in three months we gotta revisit
the whole thing because now, like we got

00:39:54.519 --> 00:39:56.499
so much more load than we were expecting.

00:39:57.279 --> 00:39:59.289
So it's an endless game.

00:39:59.599 --> 00:40:02.329
But I I, there there's some
really interesting paths

00:40:02.329 --> 00:40:03.469
that we could take from here.

00:40:04.234 --> 00:40:04.594
Mike Bifulco: Yeah.

00:40:05.044 --> 00:40:07.414
you are speaking to my soul right now.

00:40:07.774 --> 00:40:08.434
Cutting scope.

00:40:08.434 --> 00:40:11.554
Staying simple being committed
to the endless game is a

00:40:11.554 --> 00:40:13.734
really, really noble pursuit.

00:40:13.794 --> 00:40:17.554
And, and I that brings you a lot of
success and that your users, your team

00:40:17.624 --> 00:40:20.599
are all, are, are happy with the story
you're telling along the way here.

00:40:21.119 --> 00:40:24.519
It has been super, super wonderful
to get to catch up with you Zeno.

00:40:24.519 --> 00:40:26.499
I, I hope that we get to do
this again in the future.

00:40:26.869 --> 00:40:29.869
You are, please consider yourself more
than welcome to come back and hang

00:40:29.869 --> 00:40:31.369
out anytime you have any launches or

00:40:31.704 --> 00:40:32.124
Zeno Rocha: Mm-Hmm

00:40:32.179 --> 00:40:34.399
Mike Bifulco: chat about, or if you
wanna rant to me about open API,

00:40:34.529 --> 00:40:34.949
Zeno Rocha: Mm-Hmm.

00:40:34.969 --> 00:40:36.019
Mike Bifulco: anytime th

00:40:36.049 --> 00:40:36.949
thanks much joining.

00:40:36.949 --> 00:40:38.839
Before we go for people
to find you online?

00:40:38.839 --> 00:40:40.069
And where do people find resend?

00:40:41.254 --> 00:40:46.294
Zeno Rocha: I definitely spent way
too much time on Twitter slash x.

00:40:46.554 --> 00:40:49.105
So I think that's the, the
best place you can find me.

00:40:49.374 --> 00:40:54.024
I am Zena Rocha there, so yeah,
feel free to to follow there.

00:40:54.024 --> 00:40:57.414
But I'm also on LinkedIn and,
and all these other places

00:40:57.444 --> 00:40:58.979
with that same username.

00:41:00.089 --> 00:41:00.539
Mike Bifulco: Perfect.

00:41:00.539 --> 00:41:02.519
We'll make sure that's
there and resend, of course,

00:41:03.059 --> 00:41:03.989
Zeno Rocha: Yes.

00:41:04.109 --> 00:41:07.509
Yeah, recent.com and recent at X too.

00:41:07.989 --> 00:41:08.739
Please check it out.

00:41:08.744 --> 00:41:12.429
I, I tried the API and then let
me know if it's good or not.

00:41:12.559 --> 00:41:18.224
I would love to hear the feedback of your
audience because they obviously care a lot

00:41:18.224 --> 00:41:22.214
about API design, which is something that
I also care, so I'll love your feedback.

00:41:22.994 --> 00:41:23.534
Mike Bifulco: Yeah.

00:41:23.594 --> 00:41:27.284
I would be remiss if I didn't also mention
on your behalf that one of my favorite

00:41:27.284 --> 00:41:31.004
things about Resend right now is that
the pricing tiers are extremely generous.

00:41:31.334 --> 00:41:34.214
Can get in and do a lot for free and
really get a good sense of the product.

00:41:34.494 --> 00:41:37.399
And that is, that is for sure a
differentiator and well worth.

00:41:37.399 --> 00:41:38.649
Going and giving the things a poke.

00:41:38.899 --> 00:41:43.039
And I hope our audience does so that you
can get lots of angry messages about HT

00:41:43.039 --> 00:41:45.529
TP headers or, whatever the case may be.

00:41:45.589 --> 00:41:47.809
We, we've, we've got a passionate
group and if you're out there,

00:41:47.809 --> 00:41:48.949
please do give it a shot.

00:41:48.949 --> 00:41:51.199
And, and chase down Gino
Zino with your feedback.

00:41:51.459 --> 00:41:52.479
Zino, thanks so much for joining.

00:41:52.479 --> 00:41:53.319
I really appreciate it, man.

00:41:53.379 --> 00:41:55.539
I hope a, a great afternoon
and we'll catch you soon.

00:41:56.284 --> 00:41:57.004
Zeno Rocha: Thank you, Mike.

00:41:57.004 --> 00:41:57.724
See everybody.

00:41:58.299 --> 00:41:58.719
Mike Bifulco: take care.