WEBVTT

NOTE
This file was generated by Descript 

00:00:05.039 --> 00:00:06.279
CJ: Welcome to build and learn.

00:00:06.289 --> 00:00:07.149
My name is CJ.

00:00:07.243 --> 00:00:09.693
Colin: And I'm Collin, and
we're back to catch up.

00:00:09.963 --> 00:00:10.883
How's it going, CJ?

00:00:11.293 --> 00:00:12.193
CJ: It's pretty good.

00:00:12.583 --> 00:00:17.643
We usually record sort of midday, and
for me this is a little bit later in

00:00:17.643 --> 00:00:22.753
the afternoon, so yeah, starting to
wind down for the evening, and since

00:00:22.753 --> 00:00:27.393
it's the middle of winter, it is pitch
black outside, which is very, a very

00:00:27.493 --> 00:00:29.243
common thing in New England apparently.

00:00:29.493 --> 00:00:32.703
Colin: Yeah, I love that my camera
is daytime, and yours is nighttime.

00:00:32.813 --> 00:00:37.173
CJ: Yeah, it looks like, yeah, you
look fresh faced and bushy tailed

00:00:37.173 --> 00:00:38.623
and ready to rock for the day.

00:00:38.623 --> 00:00:40.923
Colin: I do have two very large Elgato

00:00:41.123 --> 00:00:42.298
CJ: lights.

00:00:42.678 --> 00:00:43.008
Oh, okay.

00:00:43.008 --> 00:00:43.648
maybe that's it.

00:00:43.658 --> 00:00:44.698
You've got great lighting.

00:00:45.018 --> 00:00:45.328
Yeah.

00:00:45.468 --> 00:00:45.908
Colin: a little bit.

00:00:46.108 --> 00:00:49.058
CJ: Is that window that's
in view of your camera?

00:00:49.388 --> 00:00:50.728
That's an actual window, right?

00:00:51.158 --> 00:00:51.688
Colin: This thing?

00:00:51.738 --> 00:00:52.618
CJ: the one on the other side.

00:00:52.693 --> 00:00:53.393
Oh, I

00:00:53.558 --> 00:00:53.978
Colin: Oh, I see.

00:00:53.988 --> 00:00:55.658
yeah, there's a window this way.

00:00:55.713 --> 00:00:58.163
CJ: not like a fake, faux light thing.

00:00:58.163 --> 00:00:58.863
No, okay,

00:00:59.213 --> 00:01:02.143
Colin: Yeah, and this is not going
to translate well to podcasting, but

00:01:02.143 --> 00:01:05.303
these little things behind me are a
project that I haven't finished yet.

00:01:05.893 --> 00:01:07.393
we're going to make that door disappear.

00:01:07.593 --> 00:01:10.953
CJ: yeah, it looks like maybe some
sort of curtains or something, like

00:01:11.063 --> 00:01:13.603
Colin: they're actually like
sound absorbing, wood panels.

00:01:13.673 --> 00:01:15.453
So they're like walnut.

00:01:15.823 --> 00:01:18.073
Fronts with sound absorbing on the back.

00:01:18.603 --> 00:01:21.543
You, I think you see them in all
the desk setups and all the YouTube.

00:01:21.593 --> 00:01:25.323
the new YouTube thing these days,
but I'm also a sucker for them.

00:01:25.413 --> 00:01:27.463
It's very I don't know, Whiskey Room

00:01:27.663 --> 00:01:32.673
CJ: I don't know, whiskey room vibes.

00:01:32.673 --> 00:01:36.848
Yeah, and it's funny because

00:01:37.103 --> 00:01:37.483
Colin: Yeah.

00:01:37.613 --> 00:01:39.943
and it's funny because this room
when I'm on my work calls, people

00:01:39.943 --> 00:01:41.173
are like, what room are you in?

00:01:41.183 --> 00:01:42.933
Because there's actually
three doors behind me.

00:01:43.563 --> 00:01:46.493
And so everyone's we don't even
understand why this room could even be

00:01:46.493 --> 00:01:50.683
in your house that you have three doors
because one goes to an HVAC, one goes

00:01:50.683 --> 00:01:52.513
to a patio and one goes to the hallway.

00:01:52.853 --> 00:02:11.513
CJ: HVAC, one goes to a patio,
and one goes to the hallway.

00:02:11.803 --> 00:02:16.923
Roaring and so I put all these giant
blankets on the wall on the other side

00:02:16.923 --> 00:02:22.433
of the wall that are like absorbing
all of that roar And it helped a ton

00:02:22.593 --> 00:02:27.613
with just like sound quality But I
also fight with the piano which is like

00:02:27.613 --> 00:02:31.153
right above me So the kids will be like
doing their piano lesson mid meeting

00:02:31.293 --> 00:02:33.423
or whatever and yeah, it's interesting

00:02:33.913 --> 00:02:34.083
Colin: Yeah.

00:02:34.083 --> 00:02:36.353
People like moving blankets
because they're wool.

00:02:36.403 --> 00:02:36.413
CJ: I

00:02:36.488 --> 00:02:38.458
Colin: picked up like a
target weighted blanket.

00:02:38.458 --> 00:02:41.938
It's like a 50 pound blanket that I
have just pinned to this other wall.

00:02:42.568 --> 00:02:45.758
a lot, I mean it doesn't look pretty,
but it's cheaper than a lot of the

00:02:45.768 --> 00:02:47.668
sound treatment stuff out there.

00:02:47.693 --> 00:02:47.903
CJ: there.

00:02:48.473 --> 00:02:50.543
Yeah, mine are just giant moving blankets.

00:02:50.643 --> 00:02:54.223
They're just like two huge moving blankets
that are, yeah, tacked up on the wall.

00:02:54.738 --> 00:02:54.968
Colin: Yeah.

00:02:54.968 --> 00:02:58.728
Cause these things are cool behind me,
but they're like, I don't know, 300

00:02:58.738 --> 00:03:01.028
for two or two to four of them I think.

00:03:01.028 --> 00:03:02.728
And this blanket was like 20 bucks.

00:03:02.728 --> 00:03:06.008
So it's easy to spend
money in AV stuff for sure.

00:03:06.308 --> 00:03:10.728
CJ: West Boss,  did like a whole series
of videos about how he built out his

00:03:10.733 --> 00:03:15.828
office and got very technical about
how sound transfers between things

00:03:15.833 --> 00:03:19.338
and, buffering, like even the wires
in the walls and stuff like that.

00:03:19.338 --> 00:03:20.358
It's whoa, that's,

00:03:20.883 --> 00:03:23.173
Colin: We should get him on for a
show just on that because I think

00:03:23.173 --> 00:03:25.153
the three of us have done a lot

00:03:25.778 --> 00:03:29.488
CJ: Yeah, just trying to like
soundproof things is interesting.

00:03:29.688 --> 00:03:31.618
so I posted on Twitter the other day.

00:03:31.898 --> 00:03:36.978
one of my sons is in swim team
once, once or twice a week.

00:03:37.038 --> 00:03:41.128
And the other, my other son is at
home, didn't want to do swim team.

00:03:41.128 --> 00:03:42.498
And we were trying to
figure out like what.

00:03:42.988 --> 00:03:47.168
What kind of activity could we
do that would be interesting,

00:03:47.168 --> 00:03:49.858
engaging, and like enriching for him?

00:03:49.908 --> 00:03:55.188
And he loves telling people the news,
just like anything that he learns

00:03:55.188 --> 00:03:56.458
about that he finds interesting.

00:03:56.458 --> 00:03:59.538
He'll just, as soon as he learns it,
he has to run around and tell people.

00:03:59.538 --> 00:04:03.478
And so I wanted to start teaching him all
these different tools for journalism, and

00:04:03.478 --> 00:04:06.718
just like how to go and talk to people.

00:04:07.053 --> 00:04:10.583
on the internet through podcasting
or through video or through blogging.

00:04:10.623 --> 00:04:14.543
And so I put together this super
short little course on Google

00:04:14.543 --> 00:04:19.253
Classroom where there's all of these
little assignments for him to go

00:04:19.253 --> 00:04:21.313
through and build out a podcast.

00:04:21.513 --> 00:04:26.273
And so it's make a title and make a
cover art and come up with a description

00:04:26.273 --> 00:04:30.673
and come up with an audience and then
I followed along with, Descript's

00:04:30.833 --> 00:04:34.033
how to start a podcast flow, but
then I boiled it down to what would

00:04:34.033 --> 00:04:35.333
this mean for a fourth grader?

00:04:35.753 --> 00:04:39.613
And what is this what kind of
like stuff can we also do with AI?

00:04:39.623 --> 00:04:41.933
So really awesome tools out now.

00:04:41.943 --> 00:04:46.153
I don't know if you've seen, Google's
like music effects labs things.

00:04:46.183 --> 00:04:52.683
You can do text to music so you can
GPT generate a song basically that they

00:04:52.683 --> 00:04:54.943
can like use in his intros or whatever.

00:04:54.943 --> 00:04:59.663
So he's generated some intro
and outro music and, started

00:04:59.673 --> 00:05:00.673
doing some recording today.

00:05:00.673 --> 00:05:03.613
So it's been really cool to watch
him experiment with that and fun

00:05:03.613 --> 00:05:04.893
to just share what I've learned.

00:05:05.273 --> 00:05:07.983
Colin: Podcasting is such a good
thing for anyone to play with.

00:05:07.983 --> 00:05:10.063
Cause you gotta, you get
to just play with audio.

00:05:10.063 --> 00:05:11.713
You have to think about what
you're going to call it.

00:05:11.713 --> 00:05:15.733
You get to write a little bit, get
to do the description, the graphics.

00:05:16.103 --> 00:05:17.183
it's a pretty good project.

00:05:17.348 --> 00:05:17.608
CJ: project.

00:05:17.608 --> 00:05:18.448
Yeah, it's fun.

00:05:18.498 --> 00:05:22.538
once it's up and live, I'll plug it
in a future episode so you can go

00:05:22.588 --> 00:05:28.598
listen, yeah, I think it'll be about
gaming and Pokemon and stuff that he's

00:05:28.598 --> 00:05:30.058
interested in, so it should be good.

00:05:30.258 --> 00:05:31.268
Colin: I think that's the way

00:05:31.498 --> 00:05:38.264
CJ: all podcasts start.

00:05:38.264 --> 00:05:40.520
Tell

00:05:40.538 --> 00:05:42.568
Colin: this other tweet that you had.

00:05:42.628 --> 00:05:46.368
You were looking for, kinda like
non technical co founder type

00:05:46.786 --> 00:05:58.063
CJ: other tweet that you had.

00:05:58.263 --> 00:06:03.673
I found a website called something
like dev meets marketer or something

00:06:03.673 --> 00:06:07.933
like that, or dev meets sales, where
it's At the time it was like, okay,

00:06:07.933 --> 00:06:11.593
Cupid for founders where you're do
you know, founder dating almost?

00:06:11.593 --> 00:06:15.343
And like founder match, or
like Tinder for founders.

00:06:15.493 --> 00:06:19.783
And I was just curious, like how people
are finding co founders because oftentimes

00:06:19.783 --> 00:06:24.513
you hear from YC or you hear from venture
capitalists that they want to invest in

00:06:24.513 --> 00:06:26.433
companies where there's multiple founders.

00:06:26.533 --> 00:06:28.953
I'm like, how are people finding
who they're working with?

00:06:28.953 --> 00:06:31.703
so that was the first layer and the
second layer was like, it's the new

00:06:31.703 --> 00:06:35.353
year and I've got a million ideas and
things that I want to build and, In the

00:06:35.353 --> 00:06:39.313
past, a lot of stuff, I try to get it
off the ground by myself and I think it

00:06:39.313 --> 00:06:43.043
would work much better if there were,
someone by my side with complimentary

00:06:43.043 --> 00:06:47.303
skills, just like helping hack and
promote and, mostly just like marketing

00:06:47.303 --> 00:06:51.053
and sales and talking to customers and
validating different ideas and telling me

00:06:51.053 --> 00:06:54.243
like, that's stupid, don't go down that
path or Hey, that's like a good idea.

00:06:54.243 --> 00:06:59.023
Or just being a separate, set of
eyes and some, Yeah, I don't know.

00:06:59.033 --> 00:07:01.233
Some interesting things and
conversations fell out of it.

00:07:01.233 --> 00:07:05.243
But, one thing that interests
me about this process is that

00:07:05.243 --> 00:07:06.503
it is very much like dating.

00:07:06.503 --> 00:07:09.003
You can't just find someone
on the street and say Hey, we

00:07:09.003 --> 00:07:10.553
should be like co founders.

00:07:10.553 --> 00:07:14.053
Let's go co found something like
oftentimes at hackathons, right?

00:07:14.053 --> 00:07:17.653
You meet up just like random people and
you try to get something off the ground

00:07:17.653 --> 00:07:19.303
in the weekend for startup weekend.

00:07:19.333 --> 00:07:23.393
But, I think there's a lot of
like compatibility and personality

00:07:23.433 --> 00:07:25.653
type situations that go into this.

00:07:25.703 --> 00:07:26.043
I don't know.

00:07:26.373 --> 00:07:31.063
When you did CloudSnap, how many
co founders were part of that?

00:07:31.448 --> 00:07:35.368
Colin: there was just two of us to
start with and at the time I was the non

00:07:35.368 --> 00:07:42.148
technical but more technical than most co
founders so I kinda took on the CEO role.

00:07:42.148 --> 00:07:46.498
And then Chris took the CTO role cause he
was definitely more technical than I was.

00:07:47.028 --> 00:07:50.088
and that did mean I rarely wrote code.

00:07:50.088 --> 00:07:52.908
Like I was reviewing things and
doing a lot of prototyping more.

00:07:52.908 --> 00:07:56.338
I was more PM going out and talking
to customers, trying to make sure

00:07:56.338 --> 00:08:00.698
that we had something that people
would want to use and then know that

00:08:00.698 --> 00:08:03.358
when we build something, someone
actually would be there to use it.

00:08:03.898 --> 00:08:05.288
versus sometimes people.

00:08:05.493 --> 00:08:08.893
go off and build a thing for years
without ever showing it to anybody.

00:08:08.903 --> 00:08:10.203
and that, that can be really tricky.

00:08:10.603 --> 00:08:13.383
I think what you're talking about
is being a technical person looking

00:08:13.383 --> 00:08:17.153
for a non technical co founder is
really interesting because I think

00:08:17.153 --> 00:08:20.463
most people in tech have probably
had people come to them with ideas.

00:08:20.993 --> 00:08:23.053
And that, there's, that happens a lot.

00:08:23.123 --> 00:08:27.023
And it's really hard to go through
and figure out who's really serious

00:08:27.023 --> 00:08:30.073
about it, who's put their own skin in
the game, They're not going to have,

00:08:30.473 --> 00:08:33.533
I don't necessarily think they should
go and try to learn how to code and,

00:08:33.863 --> 00:08:37.833
had varying degrees success at that,
but they've at least figured out,

00:08:37.883 --> 00:08:39.153
they know what their strengths are.

00:08:39.153 --> 00:08:40.263
They know what they're lacking.

00:08:40.273 --> 00:08:41.613
They know what they bring to the table.

00:08:41.613 --> 00:08:44.203
And that might even be like,
I have customers ready to go.

00:08:44.203 --> 00:08:47.403
If you can help me build this type
of thing on the other side of it,

00:08:47.403 --> 00:08:50.793
it's okay, we know we can build
lots of things as technical folks.

00:08:51.213 --> 00:08:53.163
What are those gaps that
you're talking about?

00:08:53.633 --> 00:08:56.163
And even just like when you're building
something, you just don't have time

00:08:56.163 --> 00:08:57.863
to also go out and talk to customers.

00:08:58.063 --> 00:09:01.623
CJ: Yeah, and I'm not saying that,
technical co founders shouldn't

00:09:01.693 --> 00:09:03.343
talk to customers necessarily.

00:09:03.343 --> 00:09:05.883
I just think that, yeah, that's

00:09:06.108 --> 00:09:06.528
Colin: They need

00:09:06.543 --> 00:09:08.123
CJ: yeah, really bad at in the beginning.

00:09:08.123 --> 00:09:10.483
And, yeah, they absolutely need to.

00:09:10.483 --> 00:09:11.118
And.

00:09:11.318 --> 00:09:14.448
Going back to just like
being a creator in general.

00:09:14.478 --> 00:09:19.048
I think oftentimes we're, maybe I'm
speaking for myself that I'm like afraid

00:09:19.048 --> 00:09:23.598
to launch something or share it widely
because I'm not super comfortable with it.

00:09:23.708 --> 00:09:26.548
And maybe when you are working
with someone else, they can be

00:09:26.548 --> 00:09:27.678
like, Oh yeah, that's totally fine.

00:09:27.678 --> 00:09:31.518
Just like ship that and let's get some
eyeballs on it and start getting feedback.

00:09:31.528 --> 00:09:34.098
And maybe they're more comfortable
sharing it because it's not like

00:09:34.098 --> 00:09:35.898
their own creation, in a way.

00:09:35.928 --> 00:09:37.758
And so it gives them a little bit more

00:09:37.838 --> 00:09:39.658
Colin: Having that divide helps.

00:09:39.658 --> 00:09:42.668
It's like a lot of people don't like
to edit their own sounds and their

00:09:42.668 --> 00:09:44.148
own audio and podcasts and stuff.

00:09:44.598 --> 00:09:45.458
And it's it sounded great.

00:09:45.468 --> 00:09:46.918
And you're like, Oh, I can't do this.

00:09:47.478 --> 00:09:48.898
but what you're talking
about is very true.

00:09:48.898 --> 00:09:53.228
Like YC and Techstars and a lot of
these folks, they almost always look

00:09:53.228 --> 00:09:54.878
for people to have a co founder.

00:09:55.338 --> 00:09:58.598
Because their argument is, if you
can't even convince one person to

00:09:58.598 --> 00:10:02.408
come along on this journey, like,
why would we put money into it?

00:10:02.423 --> 00:10:02.573
CJ: it?

00:10:02.828 --> 00:10:07.018
Colin: but at the same time If you can
pull off everything and even better

00:10:07.018 --> 00:10:09.148
if you could do it without investment.

00:10:09.838 --> 00:10:13.028
I'm becoming more and more
of the don't go the VC route.

00:10:13.448 --> 00:10:17.328
more of the indie hacker bootstrapped
approach but, if you're going to be doing

00:10:17.328 --> 00:10:21.458
that then it does help to have someone
else who's, the other side of that coin.

00:10:21.898 --> 00:10:23.958
with the coworking space
it's a little bit different.

00:10:24.628 --> 00:10:29.318
But myself and the other owners are a
good, push and pull on, I get a little

00:10:29.318 --> 00:10:32.398
excited about something and then they
bring me back to earth, which can help.

00:10:32.538 --> 00:10:35.518
So we want to be pushing forward,
but it's always good to have a little

00:10:35.518 --> 00:10:39.388
bit of tension on that line so that
we don't just fly off into space.

00:10:39.738 --> 00:10:40.128
CJ: Yeah.

00:10:40.328 --> 00:10:44.713
The other thing that has been on my mind
too is just in general, that co-founder

00:10:44.713 --> 00:10:50.023
fit, like how do you find someone who has
a personality that gels well with yours,

00:10:50.053 --> 00:10:55.548
and where you almost kinda have to have
Side gig values aligned with a vision

00:10:55.548 --> 00:11:00.588
that's aligned for okay, we're going to
work on this with, nights and weekends

00:11:00.588 --> 00:11:03.718
with no payoff for, maybe even years.

00:11:03.768 --> 00:11:08.278
And then once it gets off the ground,
maybe we go full time or I don't

00:11:08.278 --> 00:11:08.978
know, like, you know what I mean?

00:11:08.978 --> 00:11:13.748
Like, and trying to  find someone who,
yeah, shares those values and also can get

00:11:13.748 --> 00:11:17.088
excited about the same things that you're
excited about is, yeah, it's interesting.

00:11:17.288 --> 00:11:17.538
Colin: Yeah.

00:11:17.538 --> 00:11:21.428
There's an episode that we can
link to from the Hammerstone.

00:11:21.858 --> 00:11:26.908
Dev podcast, and Hammerstone was a team of
Aaron Francis, who we've mentioned before.

00:11:27.398 --> 00:11:32.638
And, Colleen, I am blanking on her last
name right now, but they have chosen

00:11:32.638 --> 00:11:37.948
to separate and Colleen's going forward
with Hello Query and Aaron's focusing

00:11:37.948 --> 00:11:40.918
on the things that he was doing at
PlanetScale and some of his other stuff.

00:11:41.408 --> 00:11:43.668
And it's a really good conversation
because It's them having a good

00:11:43.678 --> 00:11:47.608
breakup on a podcast they finally
are starting to feel that like

00:11:47.608 --> 00:11:51.628
customer fit with their product,
but it's not the end of the journey.

00:11:51.628 --> 00:11:52.698
It's the very beginning.

00:11:52.728 --> 00:11:58.208
that little bit of product market fit
means there is going to be months, years

00:11:58.268 --> 00:12:02.608
of work to be done, nights, weekends,
whatever that looks like, especially

00:12:02.608 --> 00:12:04.248
with families and things like that.

00:12:04.768 --> 00:12:06.328
And Aaron just kind of like, I.

00:12:06.433 --> 00:12:07.593
Can't do that right now.

00:12:07.623 --> 00:12:09.653
And it's also very good
to be real about that.

00:12:09.653 --> 00:12:12.813
Cause sometimes co founders will take
their other co founders for a ride

00:12:12.823 --> 00:12:16.423
when they aren't being truthful about
how much time and space do you have in

00:12:16.423 --> 00:12:20.053
your life for these kinds of projects,
which is, it's good to be open about.

00:12:20.123 --> 00:12:20.243
CJ: about.

00:12:20.763 --> 00:12:24.893
There are a lot of really awkward
and uncomfortable conversations

00:12:24.893 --> 00:12:26.843
that happen at that early stage.

00:12:27.533 --> 00:12:33.173
Even After like a startup weekend
hackathon, I've had people like, pushing

00:12:33.173 --> 00:12:34.393
really hard in certain directions.

00:12:34.393 --> 00:12:37.153
I'm like, yo, we just
worked on this for 48 hours.

00:12:37.153 --> 00:12:38.073
I don't care.

00:12:38.293 --> 00:12:39.343
do what you want with it.

00:12:39.543 --> 00:12:39.963
Colin: Yeah.

00:12:40.223 --> 00:12:41.493
I start off weekend.

00:12:41.868 --> 00:12:42.848
Is an interesting one.

00:12:42.848 --> 00:12:45.328
I haven't seen those as much lately.

00:12:45.748 --> 00:12:49.278
I don't know if they've died off or
just gotten less popular, if you win,

00:12:49.278 --> 00:12:52.488
I've fallen into it where we won one
of the startup weekends and it was

00:12:52.488 --> 00:12:53.908
like, okay, we're going to try this.

00:12:53.908 --> 00:12:57.528
And we took a little bit of seed
money and we did not get very far.

00:12:57.728 --> 00:13:01.438
But it's hard because, those, that team
was put together on a weekend and they

00:13:01.438 --> 00:13:03.008
all happen to be in the same event.

00:13:03.278 --> 00:13:05.578
There was a little bit more
intent there, rather than

00:13:05.578 --> 00:13:06.978
meeting someone at a Starbucks.

00:13:07.718 --> 00:13:11.338
but there's a guy who reached out to us,
I think it was just through Twitter and

00:13:11.338 --> 00:13:14.108
the dev meetup, but he runs remotejobs.

00:13:14.108 --> 00:13:14.418
com.

00:13:14.998 --> 00:13:18.918
And He's the kind of person or he's
like the non technical co founder,

00:13:18.918 --> 00:13:20.238
but he's teaching himself how to code.

00:13:20.238 --> 00:13:23.548
and he's hacking and doing the, using
the templates that are out there,

00:13:23.548 --> 00:13:25.408
using the job boards and stuff.

00:13:25.408 --> 00:13:29.928
And he's built himself that
nomadic, remote, lifestyle that a

00:13:29.928 --> 00:13:31.248
lot of people like to talk about.

00:13:32.008 --> 00:13:33.748
and I think he's doing
that without co founders.

00:13:33.748 --> 00:13:36.198
So it really depends on
how much space you have.

00:13:36.703 --> 00:13:39.723
In your life and all of that
because, I could try to make the

00:13:39.723 --> 00:13:43.223
awkward segue here of what happens
when you take too much money

00:13:43.368 --> 00:13:44.258
CJ: and

00:13:44.273 --> 00:13:45.213
Colin: grow too big.

00:13:45.318 --> 00:13:46.330
CJ: there's really

00:13:46.363 --> 00:13:49.863
Colin: there's a really good Silicon
Valley, link that we'll put in the

00:13:49.863 --> 00:13:53.833
show notes too, but yeah, this week
has been a rough week for tech layoffs.

00:13:53.883 --> 00:13:57.768
I think especially for companies
that grew a lot in 2020, 2021.

00:13:57.818 --> 00:14:04.658
this week we've got, what, Twitch,
Google, Amazon, Unity, and then, we

00:14:04.658 --> 00:14:08.628
just actually had layoffs today at
Discord, which I can't talk too much

00:14:08.628 --> 00:14:14.318
about, but, by the time this comes out,
it'll be almost a month behind us now.

00:14:14.338 --> 00:14:18.105
rifts across the board, teams getting
smaller, all that kind of stuff.

00:14:18.155 --> 00:14:18.720
CJ: that kind of stuff.

00:14:18.990 --> 00:14:22.745
Yeah, I thought, the bleeding
was over and that teams did

00:14:22.745 --> 00:14:26.845
their reset in 2023 and that.

00:14:27.305 --> 00:14:31.015
we were going to go into 2024
with nice, healthy organizations,

00:14:31.025 --> 00:14:32.675
but totally not the case.

00:14:33.305 --> 00:14:36.905
And I don't know, yeah, I don't
know what the deal is or how

00:14:36.905 --> 00:14:38.005
long this is going to last.

00:14:38.015 --> 00:14:40.455
It's a huge bummer, for everyone.

00:14:40.505 --> 00:14:44.695
I guess the other, piece of this
too is that, like, how much is

00:14:44.725 --> 00:14:47.365
AI, impacting these jobs, right?

00:14:47.415 --> 00:14:51.515
I also, outside of These sort
of like tech specific jobs.

00:14:51.545 --> 00:14:55.845
I also saw a bunch of people getting laid
off from like movie studios and animation

00:14:55.845 --> 00:14:59.395
studios where they're like, yeah, we're
not gonna need any animators anymore

00:14:59.395 --> 00:15:01.735
We're just gonna use like AI from now on.

00:15:02.415 --> 00:15:02.505
It's

00:15:02.535 --> 00:15:06.255
Colin: Yeah, this role this week
has been pretty content focused.

00:15:06.255 --> 00:15:09.235
So a lot of gaming industry, right?

00:15:09.235 --> 00:15:16.015
Unity Prime video, some Prime Studios
folks So a lot and I think my friend

00:15:16.015 --> 00:15:20.245
who runs a lot of things in the
tabletop RPG space Has shared that

00:15:20.245 --> 00:15:24.545
like it's flowed down where it's like
gaming's been hit Tabletop things like

00:15:24.545 --> 00:15:28.655
D& D are not as popular or selling
out as much as they were before.

00:15:29.065 --> 00:15:32.415
You know, there's groups like Critical
Role that are doing really well, but kind

00:15:32.415 --> 00:15:34.345
of gaming, which I think is interesting.

00:15:34.345 --> 00:15:37.885
I don't know if we just gorged ourselves
on content during the pandemic and

00:15:38.255 --> 00:15:41.495
everyone staffed up because of it,
thinking the good times were never

00:15:41.495 --> 00:15:43.085
going to end or what the deal is.

00:15:43.185 --> 00:15:45.935
and a lot of people are upset
that movies aren't doing well in

00:15:45.945 --> 00:15:47.495
the box office, but I don't know.

00:15:47.525 --> 00:15:49.405
I don't know if those
are related whatsoever.

00:15:49.405 --> 00:15:53.075
I think it's just been like I'm excited
to go see Dune, still in the theaters.

00:15:53.125 --> 00:15:58.315
CJ: it seems to like a lot more
people are creating content.

00:15:58.316 --> 00:15:59.716
we're making this podcast, right?

00:15:59.716 --> 00:16:02.366
And there's a ton of people who
are making TikTok videos and

00:16:02.366 --> 00:16:04.096
YouTube shorts and whatever.

00:16:04.126 --> 00:16:07.146
And maybe just the sheer
volume of entertainment.

00:16:07.346 --> 00:16:11.576
is getting to a point where, the big
studios aren't able to keep up as much.

00:16:11.576 --> 00:16:16.366
It's almost in the same way that
new, newspapers mostly lost all of

00:16:16.366 --> 00:16:21.356
the wind beneath their sails when,
blogging and articles became popular.

00:16:21.386 --> 00:16:21.826
I don't know.

00:16:22.046 --> 00:16:25.156
but, yeah, it's a huge bummer for
anyone who's losing their job,

00:16:25.716 --> 00:16:26.316
Colin: Definitely.

00:16:26.516 --> 00:16:30.276
Yeah, if you're looking for something,
we got, we'll put some links to some

00:16:30.276 --> 00:16:34.586
remote jobs and some tech job links in
the show notes, because I've had a lot of

00:16:34.616 --> 00:16:40.276
people coming to me asking, what jobs I
know about, somehow I've gotten that as

00:16:40.276 --> 00:16:43.946
like a reputation as the person to go to
when someone's ready for another job, but

00:16:44.146 --> 00:16:48.006
CJ: view you as a connector and
someone who knows about opportunity.

00:16:48.516 --> 00:16:48.806
Yep.

00:16:49.006 --> 00:16:49.206
Colin: For

00:16:49.406 --> 00:16:49.836
CJ: Yeah.

00:16:50.166 --> 00:16:54.706
so Yeah, similarly, or along the same
lines, we are hiring at Craftwork

00:16:54.716 --> 00:16:59.066
still, so we've got some super promising
candidates that we're talking to

00:16:59.066 --> 00:17:04.126
this week, but if you are interested
in writing TypeScript or Ruby and

00:17:04.126 --> 00:17:09.936
Rails and React Native and doing some
machine learning stuff, we are, yeah,

00:17:09.956 --> 00:17:13.156
we'll likely be hiring at some point
when you, when you hear this later,

00:17:13.356 --> 00:17:13.876
Colin: Very cool.

00:17:14.076 --> 00:17:15.156
What are you, building this

00:17:15.229 --> 00:17:15.935
CJ: this week?

00:17:16.135 --> 00:17:17.665
Gosh, it's been a really productive week.

00:17:17.675 --> 00:17:23.565
I was sick last week and so I felt
sluggish and unproductive and this

00:17:23.565 --> 00:17:26.335
week has been super productive
and I'm, yeah, it feels great.

00:17:26.475 --> 00:17:28.905
a lot of it has been API integrations.

00:17:29.455 --> 00:17:33.455
One of them is with this company called
Deputy, which is a platform that we

00:17:33.455 --> 00:17:35.605
use for scheduling and timesheets.

00:17:36.135 --> 00:17:39.935
it's how the crew clocks in and out
and the automations we're building is

00:17:39.935 --> 00:17:44.535
so that we can tell customers which
crew members are going to be coming to

00:17:44.535 --> 00:17:46.395
their house when the project happens.

00:17:46.405 --> 00:17:49.165
And we can also build out
like some calendaring and

00:17:49.165 --> 00:17:51.405
scheduling tools internally.

00:17:51.405 --> 00:17:52.575
So that's been super cool.

00:17:53.355 --> 00:17:59.255
we also use a tool called Post Hog,
which is for like product analytics.

00:17:59.255 --> 00:18:01.695
They actually have a
kitchen sink type situation.

00:18:02.205 --> 00:18:06.595
They do, yeah, product analytics,
they also do a B testing.

00:18:06.595 --> 00:18:10.655
They also do like feature flagging and
then they separately have almost like a

00:18:10.675 --> 00:18:14.575
business intelligence suite where they
have like data warehouse type situation.

00:18:14.575 --> 00:18:20.805
And, It's, yeah, so an interesting tool
and we've been using them for tracking,

00:18:21.385 --> 00:18:26.245
like front end marketing analytics
and, UTM params and things like that.

00:18:26.295 --> 00:18:31.535
And what we're doing now is piping back
different project and conversion type

00:18:31.535 --> 00:18:36.125
events back into post hogs so that we
can measure like the full pipeline and

00:18:36.135 --> 00:18:40.725
start to get some proper attribution
and figure out, which marketing channels

00:18:40.725 --> 00:18:41.995
are working and which aren't and.

00:18:42.045 --> 00:18:43.125
yeah, that's been pretty interesting.

00:18:43.455 --> 00:18:43.755
So

00:18:43.955 --> 00:18:44.445
Colin: Nice.

00:18:44.855 --> 00:18:49.405
Yeah, I like Posthog because they've got
all the data that you're, like, gonna want

00:18:49.435 --> 00:18:51.505
in one place so you can do feature flags,

00:18:51.735 --> 00:18:52.185
CJ: rather than

00:18:52.455 --> 00:18:55.085
Colin: trying to connect two things
together and say, show this to

00:18:55.085 --> 00:18:56.295
people who've done this thing.

00:18:56.530 --> 00:18:56.800
CJ: Yeah.

00:18:56.800 --> 00:18:58.870
It's been, pretty good product so far.

00:18:58.930 --> 00:19:01.270
Another thing that's been really
interesting as we're researching

00:19:01.270 --> 00:19:03.160
business intelligence tools is.

00:19:03.620 --> 00:19:08.360
How many have Jupyter Notebook style
interfaces now built into them?

00:19:08.770 --> 00:19:09.690
I think we looked at hex.

00:19:09.990 --> 00:19:16.520
tech and posthog and, Supa or
Meta, Metabase  and a few others

00:19:16.520 --> 00:19:19.470
where it's like, Oh, you can write
SQL queries and get back a table.

00:19:19.910 --> 00:19:23.440
Or you can write Python to
interact with that data that was

00:19:23.440 --> 00:19:24.990
just in like the previous cell.

00:19:25.370 --> 00:19:28.130
Very cool, interactive
business intelligence stuff.

00:19:28.140 --> 00:19:31.780
I haven't messed with business,
like BI suites since college.

00:19:31.830 --> 00:19:34.220
like Microsoft, BI or whatever.

00:19:34.820 --> 00:19:37.140
Colin: Those ones are interesting
because it's like, everyone needs

00:19:37.150 --> 00:19:40.870
one and when you get big enough, you
gotta go with the big enterprise one

00:19:40.870 --> 00:19:42.190
and there's a bunch of money involved.

00:19:42.280 --> 00:19:42.880
I remember.

00:19:43.080 --> 00:19:47.550
At Strava, I think we started out
using segments and they just quickly

00:19:47.550 --> 00:19:50.870
got too big for segment you still
got to put that data somewhere.

00:19:51.370 --> 00:19:52.930
It doesn't get stored in segment.

00:19:52.930 --> 00:19:55.980
And so they were using something
called Snowplow, which they self

00:19:55.980 --> 00:20:00.040
hosted and it's like an open
source, BI tool in that vein of like

00:20:00.240 --> 00:20:01.950
customer events and things like that.

00:20:02.421 --> 00:20:03.781
All sorts these days.

00:20:03.881 --> 00:20:04.521
CJ: totally.

00:20:04.571 --> 00:20:04.801
Yeah.

00:20:04.801 --> 00:20:09.181
And it's do you want a data warehouse or
do you want a visualization thing that

00:20:09.181 --> 00:20:14.751
will just let you build dashboards and
charts for your existing data sources?

00:20:14.751 --> 00:20:18.551
Or do you want, yeah, these notebook
tools where you can have data scientists

00:20:18.551 --> 00:20:19.701
write all these different queries.

00:20:19.701 --> 00:20:22.771
And yeah, it's definitely
been a learning curve there.

00:20:22.941 --> 00:20:23.342
Yeah,

00:20:23.500 --> 00:20:26.410
Colin: Yeah, sending emails every
fifth time someone does something,

00:20:26.410 --> 00:20:29.240
stuff like that, where it's oh, I
don't want to keep track of that.

00:20:29.450 --> 00:20:29.890
CJ: yeah.

00:20:29.940 --> 00:20:32.930
yeah, it looks like you're working
on some, some more Docs stuff.

00:20:33.610 --> 00:20:35.760
Colin: Yeah, so I'm stuck in DocsLand.

00:20:35.820 --> 00:20:39.810
mostly about things I can't
talk about yet, but I can talk

00:20:40.270 --> 00:20:41.380
about what I'm trying to do.

00:20:41.450 --> 00:20:44.440
we have a thing in, we
have our docs in a repo.

00:20:44.640 --> 00:20:45.700
And that's all public.

00:20:45.700 --> 00:20:47.990
So anyone can contribute
to our docs today.

00:20:48.190 --> 00:20:52.080
And we have another thing that's in
another repo and I have docs in there.

00:20:52.200 --> 00:20:58.110
And so I want to basically hydrate our
public docs with those other docs and

00:20:58.110 --> 00:21:02.280
make sure that everything plays nicely
and that we don't have like drift between.

00:21:02.480 --> 00:21:07.150
The two, so if you think of it as
like an SDK type thing, how do we have

00:21:07.150 --> 00:21:10.930
versions of that, docs of that, but
then we have the API docs, so very

00:21:10.930 --> 00:21:15.310
similar to when you were at Stripe,
you guys had the Stripe SDKs, the API.

00:21:15.915 --> 00:21:18.545
Has versions, all that kind
of stuff changes over time.

00:21:18.545 --> 00:21:21.995
So in the discord docs, we don't
actually really have a good

00:21:22.005 --> 00:21:24.315
versioning system in the docs itself.

00:21:24.745 --> 00:21:26.185
It's more look at the table.

00:21:26.345 --> 00:21:27.515
What version are you on?

00:21:27.715 --> 00:21:29.145
That is what applies to you.

00:21:29.155 --> 00:21:32.295
So we aren't going to have versions
anytime soon, but I'm just trying to

00:21:32.295 --> 00:21:36.415
think through, like, how do we not
end up copy and pasting documentation?

00:21:36.425 --> 00:21:37.505
How do we not have drift?

00:21:37.505 --> 00:21:40.155
How do we not make it,
manually corruptible?

00:21:40.165 --> 00:21:41.785
So that's what I'm working on.

00:21:41.965 --> 00:21:41.985
CJ: on.

00:21:42.155 --> 00:21:42.675
Nice.

00:21:43.305 --> 00:21:47.945
Yeah, we've been talking a lot
internally about generating OpenAPI

00:21:48.055 --> 00:21:53.565
specs so that we can consume it from
our React Native app and our Next.

00:21:53.565 --> 00:21:55.355
js frontends.

00:21:55.355 --> 00:22:00.685
And I've been surprised that the
tooling isn't really there in Rails.

00:22:00.955 --> 00:22:05.215
There's Oh, or like to, it's not there
to like automatically do it for you.

00:22:05.255 --> 00:22:08.675
I expected you could just drop in
a gem and say I'm using JBuilder.

00:22:08.705 --> 00:22:11.425
And then it would just figure out
all the different types and be able

00:22:11.425 --> 00:22:12.805
to build the whole spec for you.

00:22:12.805 --> 00:22:14.355
But it's not that easy.

00:22:14.405 --> 00:22:20.245
The state of the art, as far as I can
tell, is you have to write tests in

00:22:20.275 --> 00:22:26.495
our spec that then will map to, the
open API specs that can be generated.

00:22:26.955 --> 00:22:30.045
But in order for those to get spit
out, you actually have to write the

00:22:30.045 --> 00:22:32.955
tests and we should have the tests.

00:22:33.135 --> 00:22:38.235
And I'm not discounting that in any
way, but it feels like a painful

00:22:38.235 --> 00:22:42.445
way to keep them in sync is to
have to constantly write tests.

00:22:42.775 --> 00:22:47.175
Colin: Do you then have to annotate the
tests or do you annotate the source,

00:22:47.275 --> 00:22:51.565
the main source code for things like
descriptions and labels and categories?

00:22:51.595 --> 00:22:55.255
Because that's the thing, we have
an OpenAPI spec today, but we

00:22:55.255 --> 00:22:59.955
haven't finished, I think it's
called tags and descriptors, right?

00:23:00.005 --> 00:23:04.855
we use one of the tools to generate,
CLI, but because there's no categories

00:23:04.855 --> 00:23:07.775
and everything, it's here's all the
functions you could possibly call.

00:23:08.245 --> 00:23:10.645
And so we're going to be adding tags,
we're going to be adding descriptions

00:23:10.655 --> 00:23:12.735
so that, that CLI is more useful.

00:23:12.785 --> 00:23:15.755
especially when you have, start to
have endpoints that look the same or

00:23:15.755 --> 00:23:17.415
get called at a different context.

00:23:17.462 --> 00:23:18.597
CJ: in different contexts.

00:23:18.597 --> 00:23:22.095
Yeah, so within, I'm pretty sure
you write it within the test.

00:23:22.295 --> 00:23:23.575
but I'm not, yeah, not sure.

00:23:23.575 --> 00:23:27.195
Colin: That would make sense because
then like where the spec is generated

00:23:27.205 --> 00:23:29.015
from all comes from one place.

00:23:29.605 --> 00:23:29.905
CJ: Yeah.

00:23:29.955 --> 00:23:34.055
So the default when X is using our
spec, we're using many tests, so

00:23:34.055 --> 00:23:37.595
there's going to be some differences
there, but like when you say, okay,

00:23:37.855 --> 00:23:41.935
describe blah, it blah, or like it gets.

00:23:42.370 --> 00:23:46.630
thing, then I think like the test
description can be used as like the

00:23:46.630 --> 00:23:48.460
body of the whatever you're describing.

00:23:48.470 --> 00:23:53.360
But yeah, I'm, I know there's some sort
of, yeah, some sort of DSL that's in

00:23:53.360 --> 00:23:55.860
there that's like really tightly coupled.

00:23:55.860 --> 00:24:00.640
And if you want it to, generate good
public facing documentation, I think

00:24:00.640 --> 00:24:01.960
it'll be challenging to maintain.

00:24:02.340 --> 00:24:04.920
Colin: then you have to flag each of
those if they're public or private.

00:24:05.120 --> 00:24:07.730
You have to flag them if they're
going to be in certain versions.

00:24:07.780 --> 00:24:10.330
there's a lot that goes around this.

00:24:10.990 --> 00:24:11.320
CJ: Yep.

00:24:11.320 --> 00:24:15.750
Colin: if you want to have examples, if
you want to have examples that can be run.

00:24:15.950 --> 00:24:20.070
I guess the test itself could be the
example, but it's not always that clean.

00:24:20.070 --> 00:24:22.160
Yeah,

00:24:22.480 --> 00:24:28.805
CJ: you generate the spec, then you
can use the R Swag  UI and R swag.

00:24:28.805 --> 00:24:29.525
API.

00:24:30.165 --> 00:24:35.545
Gems and those can just take in the spec
and then they can make it so that you can,

00:24:35.555 --> 00:24:39.815
make test calls or whatever directly from
the UI, like Postman or something, but,

00:24:40.285 --> 00:24:43.955
Colin: Yeah, ReadMe has a bunch of
really good, Libraries for this in

00:24:44.135 --> 00:24:50.155
JavaScript, but they have an OAS to
snippet, which will take the, spec and

00:24:50.155 --> 00:24:51.715
turn it into a code snippet for you.

00:24:51.855 --> 00:24:52.383
CJ: a code snippet

00:24:52.385 --> 00:24:55.165
Colin: Like a curl, you can say curl,
Python, whatever you want it to be.

00:24:55.635 --> 00:24:58.535
and then there's another one that
will actually let you like run it.

00:24:58.965 --> 00:25:04.275
So that you can do the playground style
type stuff and inject your tokens into it

00:25:04.475 --> 00:25:23.711
CJ: type stuff and inject
your tokens into it.

00:25:24.151 --> 00:25:27.591
Now that we're on the outside, it's
oh, that's actually like super helpful.

00:25:28.101 --> 00:25:28.481
Colin: Yeah.

00:25:28.971 --> 00:25:31.171
I'll send you some things cause
I've seen, I've been playing

00:25:31.171 --> 00:25:32.951
around in those tools as well.

00:25:32.951 --> 00:25:36.961
And there's one where you're like, when
you generate the whole JSON, it's pretty.

00:25:37.536 --> 00:25:38.106
CJ: alarming.

00:25:38.186 --> 00:25:38.486
Yeah.

00:25:38.501 --> 00:25:42.401
Colin: then there was one where
that'll convert it to YAML, but also

00:25:42.401 --> 00:25:45.151
put it in folders of each resource.

00:25:45.161 --> 00:25:45.421
So you

00:25:45.456 --> 00:25:46.056
CJ: So you can

00:25:46.141 --> 00:25:48.101
Colin: see it better
and you can go edit it.

00:25:48.591 --> 00:25:52.321
And then when you're ready, you can like
have it rebuilt back into the single file.

00:25:52.351 --> 00:25:56.441
Cause it's not fun to go
navigate that, by hand.

00:25:56.556 --> 00:25:56.886
CJ: right?

00:25:57.496 --> 00:25:58.201
If you look at the.

00:25:58.201 --> 00:26:02.231
the OpenAPI spec for the Stripe API,
which is publicly available, it's on

00:26:02.231 --> 00:26:04.801
GitHub, slash Stripe slash OpenAPI.

00:26:05.251 --> 00:26:06.781
it's insanely long.

00:26:06.851 --> 00:26:09.521
the YAML files are just monstrous.

00:26:10.001 --> 00:26:11.091
Colin: And yours is in YAML.

00:26:11.101 --> 00:26:12.711
I think ours is in Jason.

00:26:13.015 --> 00:26:13.361
CJ: JSON.

00:26:13.361 --> 00:26:18.341
Yeah, I think the repo might have
several versions, but the, again, because

00:26:18.341 --> 00:26:23.031
Stripe isn't built with Rails, it's
built with, a bunch of homegrown tools.

00:26:23.591 --> 00:26:28.891
The place where you describe what you
want the resource to look like is all

00:26:29.231 --> 00:26:33.631
in the same spot as, the actual API,
endpoints and resources are defined.

00:26:33.641 --> 00:26:37.791
And in that world, your documentation
and your implementation are in the

00:26:37.791 --> 00:26:39.361
same place, and it was very handy.

00:26:39.371 --> 00:26:40.501
It was super, super nice.

00:26:40.971 --> 00:26:44.691
yeah, I was expecting and hoping for
something similar in Rails, but No.

00:26:44.891 --> 00:26:45.461
Colin: Yeah.

00:26:45.551 --> 00:26:48.061
and there's some other
tools that will decorate.

00:26:48.671 --> 00:26:49.371
Open API.

00:26:49.371 --> 00:26:52.391
So once you generate it from
your code base, you can have

00:26:52.391 --> 00:26:53.961
another step that decorates it.

00:26:53.961 --> 00:26:58.771
So maybe, you convert those more
developer friendly descriptions

00:26:58.801 --> 00:27:04.841
into localized And, dev marketing,
strings and stuff like that.

00:27:05.041 --> 00:27:05.371
CJ: That's cool.

00:27:05.856 --> 00:27:06.156
Colin: Yeah.

00:27:06.401 --> 00:27:12.841
CJ: Yeah, I was half thinking maybe we
ought to just feed all of our models

00:27:12.981 --> 00:27:18.001
and all of our J builders and all of our
routes into Jet GBT and just be like,

00:27:18.001 --> 00:27:20.141
Hey, generate an open API spec for me.

00:27:20.661 --> 00:27:21.991
He's done this huge

00:27:22.011 --> 00:27:22.971
Colin: might be faster.

00:27:23.031 --> 00:27:23.701
You never know.

00:27:24.081 --> 00:27:26.921
CJ: Yeah, tricky to maintain
something like that.

00:27:26.941 --> 00:27:28.331
And I don't want it to fall out of sync.

00:27:28.401 --> 00:27:30.981
is the, are the docs that you're
working on, something that

00:27:30.981 --> 00:27:32.231
would have an API behind it?

00:27:32.241 --> 00:27:34.891
Or is it like more SDK docs?

00:27:34.941 --> 00:27:38.421
Colin: it's something completely new,
so it's not like an SDK for the API.

00:27:38.761 --> 00:27:39.331
It's different.

00:27:39.371 --> 00:27:43.901
But yeah, even now, like our own API
specs, some people are starting to use it.

00:27:43.901 --> 00:27:45.601
It's still very much developer preview.

00:27:45.601 --> 00:27:49.141
We tell people not to build anything
with it because it might change.

00:27:49.481 --> 00:27:54.471
especially around those like circular
references, the schema references

00:27:54.471 --> 00:27:55.781
or errors, stuff like that.

00:27:56.201 --> 00:28:00.941
and we're trying to make sure that
like our types match the types That you

00:28:00.941 --> 00:28:02.711
expect in this spec and things like that.

00:28:02.996 --> 00:28:04.896
there's some things
that can be many types.

00:28:04.926 --> 00:28:07.711
That's always fun or a
bunch of union types.

00:28:08.076 --> 00:28:08.346
CJ: Yep.

00:28:08.546 --> 00:28:09.156
Very tricky.

00:28:09.516 --> 00:28:09.546
Yep.

00:28:09.781 --> 00:28:10.981
Colin: We love some APIs though.

00:28:11.181 --> 00:28:12.151
CJ: yeah, exactly.

00:28:12.521 --> 00:28:16.631
So another thing we've been working
on a lot, craftwork is trying to get

00:28:16.631 --> 00:28:21.851
our memory bloat down a bit we're on
render and we're still very small,

00:28:21.861 --> 00:28:25.101
tiny startup, we've only been running
our rails out for about six months.

00:28:25.101 --> 00:28:30.461
And so we hope and expect that
maybe a four gig box on render

00:28:30.481 --> 00:28:34.071
should do just fine, but we
keep bumping against the memory.

00:28:34.691 --> 00:28:35.731
Like sealing there.

00:28:35.771 --> 00:28:40.061
And so the last couple weeks I've
spent just like learning a ton about

00:28:40.071 --> 00:28:45.551
how memory management works in Ruby
and Rails and just like keeping

00:28:45.551 --> 00:28:47.761
an eye on renders memory chart.

00:28:47.961 --> 00:28:48.601
And.

00:28:48.801 --> 00:28:52.901
One of the things that I learned
was that you can just call gc.

00:28:52.911 --> 00:28:53.421
start.

00:28:53.631 --> 00:28:56.271
There's like this gc
module that's available.

00:28:56.461 --> 00:28:58.611
and that will kick off
garbage collection for you.

00:28:59.131 --> 00:29:02.671
We had a couple of jobs where I was
like, Oh, at the end of this job,

00:29:02.681 --> 00:29:04.771
maybe I ought to just kick off gc.

00:29:04.781 --> 00:29:08.211
start because it's, uploading
a bunch of images and creating

00:29:08.211 --> 00:29:09.031
a whole bunch of stuff.

00:29:09.041 --> 00:29:10.681
But, so that was interesting.

00:29:10.881 --> 00:29:11.531
And then.

00:29:11.731 --> 00:29:15.801
Ruby comes, out of the box, Ruby
uses an allocator called malloc.

00:29:15.861 --> 00:29:18.291
It's like the default
allocator, I think, for C.

00:29:18.911 --> 00:29:22.291
But you can switch that to
different allocators, apparently.

00:29:22.291 --> 00:29:24.361
And one of them is jemalloc.

00:29:24.781 --> 00:29:28.211
Which, on render, you just
set an environment variable.

00:29:28.701 --> 00:29:34.531
That points at some SO thing and then it
starts back up and is better at memory.

00:29:35.191 --> 00:29:40.121
handles memory fragmentation better and,
yeah, just helps avoid bloat a little bit.

00:29:40.321 --> 00:29:43.686
I was also super excited
to upgrade to Ruby 3.

00:29:43.686 --> 00:29:48.661
3, which we did, and that actually
gave some like pretty noticeable, like

00:29:48.661 --> 00:29:50.321
speed improvements, which was cool.

00:29:50.371 --> 00:29:55.631
And then, yeah, we, so we use, Sentry
for error tracking and alerting.

00:29:55.831 --> 00:29:57.671
Shout out if you want
to, sponsor the show.

00:29:57.871 --> 00:30:00.611
But the tools that Sentry
gives you for looking at memory

00:30:00.611 --> 00:30:02.541
management don't work on render.

00:30:02.621 --> 00:30:07.341
render is agreed to support the
agent that comes from Scout APM.

00:30:07.651 --> 00:30:13.041
And so we've been exploring and using
the free trial for Scout this week.

00:30:13.051 --> 00:30:14.561
And it is pretty cool.

00:30:14.611 --> 00:30:20.011
seeing all the different, background
jobs or controller actions and then how

00:30:20.011 --> 00:30:24.281
much they increase the memory ceiling,
Based on the methods that are called

00:30:24.281 --> 00:30:29.511
or whatever and you can see traces and
they give you a lot of details about

00:30:29.641 --> 00:30:33.741
here's how many allocations that were
made as part of this and here's your N

00:30:33.751 --> 00:30:37.681
plus one queries and here's like specific
methods that are taking a long time.

00:30:37.681 --> 00:30:42.101
so still learning a ton about Scout
APM, which, yeah, it's been pretty cool.

00:30:42.791 --> 00:30:45.521
to learn about, but yeah,
we still haven't, we still

00:30:45.521 --> 00:30:47.231
haven't completely solved it.

00:30:47.281 --> 00:30:47.651
But

00:30:47.851 --> 00:30:53.261
Colin: There's been like a whole new
discourse around the cost and time around

00:30:53.261 --> 00:31:00.981
using things like Vercel and Render and
Fly versus running on a box yourself,

00:31:00.981 --> 00:31:06.251
or I know that 37signals has moved all
their stuff off cloud, which It's probably

00:31:06.251 --> 00:31:07.901
just their own cloud somewhere else.

00:31:07.991 --> 00:31:09.241
It's just off public clouds.

00:31:09.241 --> 00:31:12.271
They're not running in
DHH's closet somewhere.

00:31:13.031 --> 00:31:14.161
but I don't know.

00:31:14.171 --> 00:31:19.511
I still, I mourn the Heroku
days of just slapping something

00:31:19.511 --> 00:31:20.501
up and getting it going.

00:31:20.501 --> 00:31:23.131
And I know render and fly and
things like that are making that

00:31:23.201 --> 00:31:24.801
easy again, but I don't know.

00:31:24.851 --> 00:31:26.551
There's a golden age of Heroku.

00:31:26.746 --> 00:31:27.086
CJ: Yeah.

00:31:27.286 --> 00:31:32.766
I think that over the last six months or
whatever I've learned a lot about Render.

00:31:33.246 --> 00:31:37.546
And it's almost to the point where
it feels like Heroku in that you just

00:31:37.546 --> 00:31:41.166
push and go, and there's like little
things you gotta fiddle with now and

00:31:41.166 --> 00:31:45.646
then, but, I, yeah, I still think it's
a little easier than using something

00:31:45.646 --> 00:31:49.176
like Docker or, AWS directly, but,

00:31:49.716 --> 00:31:53.106
Colin: having to do real DevOps and
having to go out and do all that

00:31:53.106 --> 00:31:57.746
stuff, like, when you are a small
team, there's Pros and cons to it.

00:31:57.986 --> 00:31:58.266
CJ: Yep.

00:31:58.616 --> 00:31:59.316
Absolutely.

00:31:59.646 --> 00:31:59.986
Yeah.

00:32:00.576 --> 00:32:00.876
Colin: yeah,

00:32:01.076 --> 00:32:01.366
CJ: Yeah.

00:32:01.536 --> 00:32:01.956
I don't know.

00:32:02.016 --> 00:32:02.566
it's fun.

00:32:02.576 --> 00:32:05.506
Memory management is interesting
and I'm glad that we don't

00:32:05.506 --> 00:32:07.256
have to think about it usually.

00:32:07.356 --> 00:32:12.796
But, I think Ruby and Rails definitely
make it easy to suck up all the memory.

00:32:12.856 --> 00:32:13.246
Colin: right

00:32:13.296 --> 00:32:13.516
CJ: it's all

00:32:13.546 --> 00:32:17.126
Colin: and usually throwing more money at
it works for a little while until you're

00:32:17.126 --> 00:32:18.836
like, okay We're spending too much money.

00:32:18.836 --> 00:32:20.096
Just throwing money at this thing.

00:32:20.156 --> 00:32:21.146
let's see what's going on.

00:32:21.661 --> 00:32:21.911
CJ: Yeah.

00:32:22.501 --> 00:32:25.821
And oftentimes there's Oh, you could
just do an includes here, or, Oh,

00:32:25.821 --> 00:32:30.881
you could just, exclude 95 percent
of all of the records that were

00:32:30.881 --> 00:32:34.221
returned because you're not actually
using them in any of these results.

00:32:34.271 --> 00:32:39.091
Or, Oh, you could cache these
into a dictionary, And then reuse

00:32:39.091 --> 00:32:42.121
the dictionary instead of hitting
the database a million times.

00:32:42.131 --> 00:32:44.981
yeah, lots of different little
things, little tips and tricks for

00:32:45.021 --> 00:32:46.801
performance that we've still got to do.

00:32:47.031 --> 00:32:47.411
So

00:32:47.946 --> 00:32:51.036
Colin: fine tuning This
conversation reminds me.

00:32:51.036 --> 00:32:53.776
I got some heroku emails
today from a project.

00:32:53.776 --> 00:32:54.656
We both worked on

00:32:55.073 --> 00:32:55.946
CJ: project we

00:32:55.991 --> 00:32:58.081
Colin: like, the build failed to release.

00:32:58.171 --> 00:32:59.751
I'm gonna have to go look at what that is

00:32:59.872 --> 00:33:02.193
CJ: have to go look

00:33:02.461 --> 00:33:06.341
Colin: Because I haven't touched
it in years, so we'll see.

00:33:06.835 --> 00:33:07.996
CJ: touched it

00:33:08.191 --> 00:33:10.791
Colin: We'll check in with Julie and
make sure her business is still running.

00:33:10.897 --> 00:33:18.441
CJ: I'll check in with Julie and make
sure her business is still running.

00:33:18.641 --> 00:33:23.421
I don't know, it's, part of me wants to
move them off and move them to render.

00:33:23.441 --> 00:33:26.691
I'm gonna wait, I think, a
little while until SolidCue has

00:33:26.691 --> 00:33:28.431
some time to, to bake a bit.

00:33:28.501 --> 00:33:31.581
I don't know if you've looked into it
too much, but I'm excited to not need

00:33:31.581 --> 00:33:36.711
to use Redis and just have you pay for
your web, you pay for your worker, you

00:33:36.711 --> 00:33:40.011
pay for your database, and that's it,
and you don't have, this extra little,

00:33:40.011 --> 00:33:41.051
Colin: throw things on the queue.

00:33:41.076 --> 00:33:41.815
CJ: the queue?

00:33:41.815 --> 00:33:42.555
Yeah, exactly.

00:33:42.556 --> 00:33:44.616
Little thing dangling
off on the side, but,

00:33:44.816 --> 00:33:47.706
Colin: Yeah, I think a lot of the
infrastructure stuff is why I haven't

00:33:47.706 --> 00:33:50.236
finished my Google Calendar Discord app.

00:33:50.616 --> 00:33:54.656
Because I'm getting into that point now of
needing to like subscribe and unsubscribe

00:33:54.656 --> 00:33:56.816
from events and get notifications.

00:33:57.016 --> 00:33:58.576
And I'm like, this will work for me.

00:33:58.716 --> 00:34:03.096
But the moment we have a hundred
people using it, or a thousand, that's

00:34:03.096 --> 00:34:06.896
a lot of notifications of meetings
and calendar events being moved

00:34:06.896 --> 00:34:08.370
around and all that kind of stuff.

00:34:08.695 --> 00:34:09.115
CJ: right?

00:34:09.415 --> 00:34:12.770
Yeah, going back to the, the deputy
integration that we're working on,

00:34:13.010 --> 00:34:16.850
A lot of that is calendaring and
schedules and whatever, and as people.

00:34:17.365 --> 00:34:20.425
a shift goes up, and then an
employee gets assigned to a shift.

00:34:20.905 --> 00:34:24.235
Then those shifts get published, and
keeping all that in sync, if people move

00:34:24.235 --> 00:34:27.435
around, or they, they're, they call in
sick, or they, have to take some PTO,

00:34:27.435 --> 00:34:30.105
or whatever, and all of those things
are shifting and changing, and trying to

00:34:30.105 --> 00:34:32.085
keep it all up to date is, I don't know.

00:34:32.155 --> 00:34:35.835
It's tricky, and that's one of the
things that's sucking up memory, is

00:34:35.835 --> 00:34:39.755
okay, we're, making a bunch of API
calls, and creating a bunch of objects to

00:34:40.075 --> 00:34:43.550
build all these automations, but, yeah.

00:34:43.750 --> 00:34:44.540
Screencasting.

00:34:44.740 --> 00:34:47.280
Colin: Yeah, I guess the only thing
I'm really learning right now,

00:34:47.290 --> 00:34:52.880
other than wrangling GitHub repos,
is I've been going through Aaron

00:34:52.880 --> 00:34:55.160
Francis's screencasting course.

00:34:55.770 --> 00:34:59.900
So Aaron has like a unofficial
sponsored slot on this show today.

00:35:00.500 --> 00:35:03.540
And a few of the last episodes too,
but yeah, it's really well done.

00:35:03.550 --> 00:35:05.350
he makes amazing video content.

00:35:05.350 --> 00:35:09.670
So it's great to see like him
take that skill, turn it into a

00:35:09.670 --> 00:35:11.630
course showing us how to do that.

00:35:12.090 --> 00:35:15.000
because I really want to be able
to get good at creating more video.

00:35:15.020 --> 00:35:18.840
Like we just don't do video
content for our work right now.

00:35:19.270 --> 00:35:22.230
my colleague has done a few
videos, but it's not like our

00:35:22.230 --> 00:35:23.790
core muscle of pumping them out.

00:35:23.840 --> 00:35:25.380
I think we have editors and stuff too.

00:35:25.380 --> 00:35:27.840
So it's not that we have
to do all the work, but.

00:35:28.040 --> 00:35:32.150
Gonna practice with my own stuff, I've
got some ideas for projects I just

00:35:32.150 --> 00:35:36.060
want to build, but build them either
on stream or do some recordings,

00:35:36.130 --> 00:35:36.400
CJ: Yep.

00:35:36.600 --> 00:35:39.380
Yeah, the name of the game
is Make That Content, right?

00:35:39.580 --> 00:35:39.900
Colin: Yep,

00:35:40.505 --> 00:35:46.235
CJ: Is, what are the, the software
tools that he suggests in that course?

00:35:46.300 --> 00:35:50.890
Colin: I'm still in the pre tools
phase in the course, but I think he's

00:35:50.890 --> 00:35:52.820
doing Final Cut or something like that.

00:35:52.820 --> 00:35:56.350
I don't think it's like ScreenFlow,
which is what I'm most familiar with.

00:35:56.915 --> 00:35:57.405
CJ: Got it.

00:35:57.565 --> 00:35:57.885
Cool.

00:35:57.930 --> 00:35:59.470
Colin: So I'll check and

00:35:59.495 --> 00:35:59.735
CJ: and,

00:35:59.785 --> 00:36:04.475
Colin: we'll revisit this in the future in
a future episode, but I'm mostly excited

00:36:04.475 --> 00:36:10.405
to see his shortcuts because he does a
lot of like record, stop, record, stop,

00:36:10.495 --> 00:36:14.505
and how do you bring all those together
quickly and drop the ones you don't want.

00:36:14.705 --> 00:36:18.695
CJ: And am recording, like screen
recording directly from Descript.

00:36:18.895 --> 00:36:22.165
And, by recently I mean I've
only made 3 or 4 videos this way.

00:36:22.615 --> 00:36:27.875
But, my previous workflow was like,
record in ScreenFlow, do some editing

00:36:27.875 --> 00:36:32.750
in ScreenFlow, export, wait 20 minutes,
load it into Descript, wait 20 minutes

00:36:32.750 --> 00:36:37.445
for it to transcribe, and then do some
more editing, apply Studio Sound, do a

00:36:37.445 --> 00:36:39.335
bunch of stuff, export, wait 20 minutes.

00:36:39.625 --> 00:36:42.565
It was like, oh my gosh, all of
those, Advent of Code videos.

00:36:42.585 --> 00:36:46.255
It was like an hour a day of just
waiting on something to like export or

00:36:46.275 --> 00:36:51.285
import or transcribe or whatever, even
on an M1, Yeah, completely working on

00:36:51.285 --> 00:36:55.845
revamping my flow to make it as smooth
and short as possible so that it can

00:36:55.845 --> 00:37:00.295
be like, okay, record something real
quick, get it up, get it out, and, yeah,

00:37:00.395 --> 00:37:00.695
Colin: Yeah.

00:37:00.915 --> 00:37:02.435
we're doing that with this too, right?

00:37:02.445 --> 00:37:03.705
we're using a different tool.

00:37:03.705 --> 00:37:07.515
So this will be the first episode
that we're recording with Squadcast.

00:37:07.525 --> 00:37:09.465
So this will go straight into Descript.

00:37:09.465 --> 00:37:13.035
I'm curious to hear if it sounds
any different, but We were already

00:37:13.035 --> 00:37:16.795
paying for this one, so we got rid of
Zencaster, sorry Zencaster, we love you.

00:37:16.875 --> 00:37:17.025
CJ: you.

00:37:17.025 --> 00:37:18.615
Colin: but we're gonna see how this works.

00:37:18.655 --> 00:37:22.315
One last tool, cause I was doing the
same, we would export it from there, then

00:37:22.425 --> 00:37:27.055
share it in Dropbox back and forth to get
it into Descript, and Are you editing?

00:37:27.055 --> 00:37:27.765
Am I editing?

00:37:27.765 --> 00:37:30.925
It's just let's get this out
the window as fast as we can.

00:37:31.125 --> 00:37:32.525
CJ: Yeah, right now it's just fun, right?

00:37:32.525 --> 00:37:33.535
We're just doing this for fun.

00:37:33.545 --> 00:37:34.375
We don't have editors.

00:37:34.375 --> 00:37:35.075
We don't have anything.

00:37:35.075 --> 00:37:35.805
We're just hanging out.

00:37:35.865 --> 00:37:38.225
And, yeah, so the lower touch, the better.

00:37:38.265 --> 00:37:42.675
I think, one interesting thing for
screencasting that I started playing

00:37:42.675 --> 00:37:45.205
with was, I think it's called key caster.

00:37:45.775 --> 00:37:50.405
yeah, key caster, you can like
brew install this and it shows what

00:37:50.405 --> 00:37:52.165
you're typing, as you're typing it.

00:37:52.245 --> 00:37:52.875
And.

00:37:53.075 --> 00:37:57.125
The goal there is make a couple videos
about, keyboard shortcuts and things

00:37:57.125 --> 00:38:01.175
for, moving around and, switching between
windows and tabs and how do you edit

00:38:01.225 --> 00:38:03.235
text and then move between lines and,

00:38:03.855 --> 00:38:06.945
Colin: how do you see CJ's
Vim wizardry in action?

00:38:07.306 --> 00:38:10.585
CJ: That maybe, yeah, I haven't
done any Vim videos yet, but,

00:38:10.665 --> 00:38:11.555
Yeah, I think that'd be fun.

00:38:11.565 --> 00:38:12.915
It'd be super fun to just

00:38:12.925 --> 00:38:15.485
Colin: you're recommending that
everyone install their own keylogger.

00:38:15.685 --> 00:38:18.165
CJ: It is a keylogger and
there's, it's funny on the GitHub

00:38:18.195 --> 00:38:19.375
repo, it's all open source.

00:38:19.385 --> 00:38:22.985
So the, on the GitHub repo, they're
like this, you don't want to let people

00:38:22.995 --> 00:38:24.685
have your key access to your keyboard.

00:38:24.725 --> 00:38:29.495
Like you can, here's how you download this
thing and go make sure that it's safe or

00:38:29.495 --> 00:38:32.835
whatever, but yeah, it's going to become.

00:38:33.245 --> 00:38:36.415
Just an on screen keylogger
for my videos, we'll see.

00:38:36.710 --> 00:38:39.730
Colin: I think I will be adding that
to my personal computer, not my work

00:38:40.040 --> 00:38:40.445
CJ: computer.

00:38:40.445 --> 00:38:42.555
Yes, yeah, it's yeah, I don't know.

00:38:42.755 --> 00:38:44.165
Fun stuff, but.

00:38:44.385 --> 00:38:44.475
Absolutely.

00:38:44.675 --> 00:38:44.975
Yeah.

00:38:45.175 --> 00:38:45.805
Colin: Very cool.

00:38:45.805 --> 00:38:46.695
I think that'll do it.

00:38:46.705 --> 00:38:49.305
As always, you can head
over to buildandlearn.

00:38:49.335 --> 00:38:53.175
dev and we'll include links to
all the show notes and resources

00:38:53.175 --> 00:38:54.345
that we talked about today.

00:38:54.545 --> 00:38:56.525
CJ: Alright, that's all
for this episode, folks.

00:38:57.015 --> 00:38:57.565
See you next time.

00:38:57.765 --> 00:38:58.515
Colin: Bye friends.