Developer Chats: Joel Hooks

0:00

The year is 1982 and I'm in third grade and they had a lab with the TRS-80

0:06

computer and it was a big clunky thing. It was this programming language called

0:11

logo which actually still exists today. It's a derivative of this if you really

0:15

get into it. But at the time it was like you had a little what they called a

0:18

turtle

0:18

and the turtle would draw for you and you'd be like forward 60 right 90 forward

0:24

60

0:24

right 90 and you'd have a square and then we graph like our name and then when

0:28

you draw these pictures and it was fascinating. I was young and it was logo

0:34

is actually a wonderful language. It's kind of slept on these days but as a

0:37

like a learning language it's really fantastic and the tactile feedback of

0:43

telling this little turtle and then watching it do what you tell it to do was

0:46

awesome. Like it was one of the like first technical victories over the

0:49

computer that I ever had and it really stuck with me. I was like oh I like this

0:53

stuff. This is Joel. Joel is a full stack developer who founded egghead.io a

1:00

successful video course site for web developers and he also works as a

1:03

consultant over at badass.dev. In this conversation we picked Joel's brain on

1:09

building efficient video workflows. His preferred tech stack and what he likes

1:14

about working at an early stage startup after years of building his own

1:17

successful businesses. All right here we go. I've built my own video

1:25

infrastructure. It's something I've done in my life that I'm also done with.

1:30

Several times I built my own video player for the browser and that's a

1:33

miserable slog. I'm in the video business though so it's like oh I want

1:37

to do this which brings me like why we're here in this conversation because

1:41

no I don't do that anymore because there's somebody out there that can just

1:44

do that for me so thank you for that Mux. Can you share more about like maybe

1:50

that workload that that you've realized within Mux and how that kind of takes

1:54

it off your shoulders and some of the nightmare maybe that you

1:57

ran into before with that infrastructure approach. Delivering the actual videos

2:02

themselves do people across the globe because there's a lot of underserved

2:06

markets and when you're talking about that much bandwidth and you're

2:09

trying to do this so you know it used to be that we we do progressive video

2:13

which means you have three video files you know like the mp4 format or whatever

2:17

and they'd be in certain sizes and based on that that you'd switch videos

2:21

and then at some point we wanted to get into adaptive

2:24

streaming which means that you have a bunch of tiny pieces of videos that can

2:29

be switched to different bit rates. That really helped out that helped with

2:32

our global distribution but it's still really really difficult and

2:36

there's this wonderful human Christian Pillsbury who now actually works at Mux

2:40

and I was like Christian I just like I'm like people every single day I have

2:44

people in my inbox that aren't in San Francisco or the west coast of the

2:48

U.S. that they're having a miserable experience and how we do this and he's

2:51

like well it's you know it's like some sort of caching it's edge.

2:54

Reason AWS we have S3 buckets with videos in them and you know like you're

2:59

gonna have to learn all this stuff so I have to spend a week of my life

3:03

learning

3:03

about caching and configuration and configuring AWS and IAMs and how to

3:08

like set up my cache and like instead of working on my product I have to

3:12

like work on core infrastructure so when we started building our new platform

3:16

last year I was like I'm not doing that anymore if I can kind of avoid AWS

3:20

for our platform I'm going to do that. The other big thing was the player is

3:24

actually a big deal. Can you all use real player if you use that?

3:28

I'm fortunate or I always swore my music sounded better with real

3:33

player for some reason but yeah I don't wish that upon very many people.

3:39

Yeah it's like we went through flash and we went through real player and we

3:42

went

3:42

through you know WinApp was cool but like whatever like like the way we

3:46

have watched video on the internet has evolved a lot over the last

3:50

couple of decades but the player experience is is pretty difficult and it

3:55

was for a long time over the last 10 years anyway where you'd use a

4:00

a proprietary player right? Like building a robust media player that's both

4:04

like accessible works out expected and then it's something that you can

4:10

you can actually like build and grow. It's a it's a real challenge and

4:15

everybody benchmarks you against to what Google has done with YouTube.

4:19

Recently and Mux's player in particular has seen like leaps and bounds of

4:24

improvement with media Chrome and media Chrome is the underlying framework

4:29

that's built on web components and it's an open source project and then Mux

4:32

player is basically the commercial version that works if you're a Mux

4:35

customer but like media Chrome itself is like the first time I looked at

4:39

web components we're like oh I can see why you would actually want to use a

4:43

web component every now and then and then it's like also one of the like

4:47

three github repositories that I actually subscribe to because I've spent so

4:51

much

4:51

time building a player I want I've watched the evolution

4:55

and watch the team and you know like watch Christian and and huff the other

4:59

folks in there just like really like get into the weeds I don't even have to

5:04

think about the player anymore and having gone through like the last four

5:07

years having built three iterations of of a player

5:11

yeah it's a marked life improvement for me quality of life

5:16

plus plus. All right so I want to switch gears towards a specific project

5:21

that you've been working on as far as I understand this was for a specific

5:25

course that another developer creator was working on

5:28

and your solution was to try to like basically simplify again like there's

5:33

a lot of different moving parts here you have the tools like ingest at your

5:38

disposal and mux at your disposal maybe you could just walk through it a

5:41

little bit what the scenario was like why this stack I'm going to be in the

5:46

right fit for you for this project. So the ingest stuff is pretty new this

5:49

year we so we've had egghead IO and it was a

5:54

rails app so it's a server full app and over the last year and a half or so I

6:00

decided for new projects I didn't want to use the rails

6:04

API's it was kind of a mistake we use next JS

6:08

I wanted to embrace serverless and everything lives in a mono repo it's

6:13

actually skill recordings forward slash products

6:16

on github so we use visible source I don't call it open source because

6:20

there is no support implied or given so if you want to check it out you can

6:24

check it out but like we're not trying to like build an open source product

6:28

that people can actually use more more just keeping it open because it makes

6:31

things easier part of that was like all right

6:34

every product is going to get its own database we use planet scale love

6:37

planet scale every product gets its own mux instance

6:42

and like all of those like everyone gets its notion

6:45

account everyone you know like it's this we we consolidate some things like the

6:49

versatile account is all one stack and there's a couple other

6:53

aspects where we use shared infrastructure but every one of these products

6:58

looks the exact same but gets its own slice of the infrastructure so we are

7:04

servicing clients at the end of the day that are the instructors of these

7:08

courses and you know just to make it

7:11

not as bad so it's not we're not quite too nice yet but like how do we

7:15

how do we make it not as bad to where they can actually

7:18

self-service and don't need like api tokens and and logins to various

7:22

services and all that fun stuff to make it happen

7:25

media processing workflows are really a pain in the butt like it is not

7:29

super easy to you know like mux makes it pretty easy there's a url you can go

7:32

to the web interface and and you can actually upload stuff

7:36

but really it's like the best thing you can do is pitch a url so it's like you

7:40

need to get that the raw media file someplace and then i also

7:44

want that in a backup so if i ever have to rebuild like

7:47

something happens to mux and i have to rebuild all our video infrastructure

7:51

and use AWS that would make me sad but i need to be able to do that right like

7:54

so you have to upload files access those files

7:59

and then wait for them to process so send it to to a service provider like

8:03

mux well it gets transcoded for for streaming

8:07

we want transcripts we want subtitles we want to like send it through open AI

8:12

to get weird llm suggestions that that might produce for us

8:18

sometimes they're good it's good at like tagging and stuff so like we get all

8:21

that done all through that process if you do

8:23

not say like here is where this is at is that this is doing this right now

8:28

it's 70 complete 80 percent send notification do you like to be

8:32

emailed do you want a slack message do you want to be hit up on discord do you

8:36

want an sms message managing that asynchronous

8:40

workflows where like and i've i've been saying lately like distributed systems

8:44

are easy and has an asterisk on it because they're super difficult but

8:48

like it's actually now it's now it is actually easy i can just make that

8:51

happen i can have an idea oh man wouldn't that be cool if that

8:53

also notified us over here done right like it's not uh

8:58

like i have to go in and change it or refigure it out i know exactly where to

9:01

go in the app what to change how to add that step

9:05

air handling is is kind of built into the whole thing and then it just

9:09

looks like typescript at the end of the day

9:11

speaking of ingest you actually have a new role over there was that

9:15

a part of just being super stoked about the product or what was what was really

9:19

the motivation behind that right now is a very early company

9:24

but even at this early stage they have like a really good product that

9:28

fills a gap in my my tech stack that was really difficult and something i've

9:31

always wanted i love event-driven architectures

9:34

and distributed systems it's not a hat i was able to wear i would have to like

9:38

staff up and have expertise and kafka and AWS and

9:42

salary or whatever like alternative solutions you might choose

9:46

and i wasn't able to do it i was never able to get it to a point where it would

9:49

be actually reliable and i could run it and ingest let me do that and i was

9:52

like i love this so much it was a kind of a joke

9:54

tweet i love this product so much that i'm

9:56

considering their open dev rail position and then

9:59

fairly hit me up and the twitter dms with the with the old eyeball emojis

10:05

and it just kind of escalated from there and you know it's like i wasn't

10:08

looking

10:08

and i wasn't thinking about it i get to sit down and and think about

10:11

education from a different side from you know like an early stage

10:14

startup position which is that's building something that's like truly

10:18

useful and interesting well it's cool to me and probably the biggest difference

10:21

is the code and configuration it's all serverless but it's

10:25

in our app so we use next-js and all of this configuration

10:31

is in our github it's in our git repository and it's committed

10:35

and we we get to own that i get to see how the

10:38

sausage is made now and and what they're doing is incredibly complex

10:41

and you know like as i described it's like this infrastructure where you need

10:45

a team of incredibly smart people to manage that you know like building a

10:49

product in early is really quite fascinating and

10:51

and uh it's gonna it's an accelerator for me because i can

10:55

you know like be in an experience that kind of uh deep technical product

11:00

growth that i i just you know i wasn't i wasn't getting in in the businesses

11:04

that i operate for one last question for you do you remember

11:09

like a moment or you not only realize you were interested in the stuff but you

11:12

were like this might be like harder than it looks

11:16

no actually i don't i've never found the technology to be

11:21

i mean it's it's challenging daunting i don't know what i don't know and you

11:25

have to dig in and you don't know the answer but to me that's always been the

11:29

most fascinating aspect of it and the maybe even the most joyful

11:33

aspect of it is the the just the the puzzle it's like a big

11:38

Rubik's cube and having to deal with the human

11:40

aspect of technology has always been like way more of a struggle for me like

11:46

i've i've i love to sink into impossible technical tasks

11:50

and rise superior to the machine and curse it

11:54

with my dominance when i'm i'm finished with whatever it is i was trying to do

11:59

it really boils down to like that's the joy of it it is hard i'm not saying

12:02

that this technical stuff isn't hard but like that's

12:05

you know like it's like looking up at Everest and and get into the top like

12:08

that's like uh if you lose a couple fingers along the way that's just

12:12

part of the cost. Joel where can we find you on the internet?

12:16

so i spent a lot of time on x and i i actually play around with tiktok a

12:23

little bit i haven't posted a lot you think there's a synthesizer that sits

12:26

over my shoulder over here so i make screeching noise and bad

12:29

generative arts and put that on tiktok a little bit

12:32

and then i i blog on joehooks.com infrequently

12:37

and badass.dev is kind of my my current personal project that i

12:43

love quite a bit. Sweet well thanks for taking some time to

12:48

chat with us yeah my pleasure