Developer Chats: Joel Hooks
The year is 1982 and I'm in third grade and they had a lab with the TRS-80
computer and it was a big clunky thing. It was this programming language called
logo which actually still exists today. It's a derivative of this if you really
get into it. But at the time it was like you had a little what they called a
turtle
and the turtle would draw for you and you'd be like forward 60 right 90 forward
60
right 90 and you'd have a square and then we graph like our name and then when
you draw these pictures and it was fascinating. I was young and it was logo
is actually a wonderful language. It's kind of slept on these days but as a
like a learning language it's really fantastic and the tactile feedback of
telling this little turtle and then watching it do what you tell it to do was
awesome. Like it was one of the like first technical victories over the
computer that I ever had and it really stuck with me. I was like oh I like this
stuff. This is Joel. Joel is a full stack developer who founded egghead.io a
successful video course site for web developers and he also works as a
consultant over at badass.dev. In this conversation we picked Joel's brain on
building efficient video workflows. His preferred tech stack and what he likes
about working at an early stage startup after years of building his own
successful businesses. All right here we go. I've built my own video
infrastructure. It's something I've done in my life that I'm also done with.
Several times I built my own video player for the browser and that's a
miserable slog. I'm in the video business though so it's like oh I want
to do this which brings me like why we're here in this conversation because
no I don't do that anymore because there's somebody out there that can just
do that for me so thank you for that Mux. Can you share more about like maybe
that workload that that you've realized within Mux and how that kind of takes
it off your shoulders and some of the nightmare maybe that you
ran into before with that infrastructure approach. Delivering the actual videos
themselves do people across the globe because there's a lot of underserved
markets and when you're talking about that much bandwidth and you're
trying to do this so you know it used to be that we we do progressive video
which means you have three video files you know like the mp4 format or whatever
and they'd be in certain sizes and based on that that you'd switch videos
and then at some point we wanted to get into adaptive
streaming which means that you have a bunch of tiny pieces of videos that can
be switched to different bit rates. That really helped out that helped with
our global distribution but it's still really really difficult and
there's this wonderful human Christian Pillsbury who now actually works at Mux
and I was like Christian I just like I'm like people every single day I have
people in my inbox that aren't in San Francisco or the west coast of the
U.S. that they're having a miserable experience and how we do this and he's
like well it's you know it's like some sort of caching it's edge.
Reason AWS we have S3 buckets with videos in them and you know like you're
gonna have to learn all this stuff so I have to spend a week of my life
learning
about caching and configuration and configuring AWS and IAMs and how to
like set up my cache and like instead of working on my product I have to
like work on core infrastructure so when we started building our new platform
last year I was like I'm not doing that anymore if I can kind of avoid AWS
for our platform I'm going to do that. The other big thing was the player is
actually a big deal. Can you all use real player if you use that?
I'm fortunate or I always swore my music sounded better with real
player for some reason but yeah I don't wish that upon very many people.
Yeah it's like we went through flash and we went through real player and we
went
through you know WinApp was cool but like whatever like like the way we
have watched video on the internet has evolved a lot over the last
couple of decades but the player experience is is pretty difficult and it
was for a long time over the last 10 years anyway where you'd use a
a proprietary player right? Like building a robust media player that's both
like accessible works out expected and then it's something that you can
you can actually like build and grow. It's a it's a real challenge and
everybody benchmarks you against to what Google has done with YouTube.
Recently and Mux's player in particular has seen like leaps and bounds of
improvement with media Chrome and media Chrome is the underlying framework
that's built on web components and it's an open source project and then Mux
player is basically the commercial version that works if you're a Mux
customer but like media Chrome itself is like the first time I looked at
web components we're like oh I can see why you would actually want to use a
web component every now and then and then it's like also one of the like
three github repositories that I actually subscribe to because I've spent so
much
time building a player I want I've watched the evolution
and watch the team and you know like watch Christian and and huff the other
folks in there just like really like get into the weeds I don't even have to
think about the player anymore and having gone through like the last four
years having built three iterations of of a player
yeah it's a marked life improvement for me quality of life
plus plus. All right so I want to switch gears towards a specific project
that you've been working on as far as I understand this was for a specific
course that another developer creator was working on
and your solution was to try to like basically simplify again like there's
a lot of different moving parts here you have the tools like ingest at your
disposal and mux at your disposal maybe you could just walk through it a
little bit what the scenario was like why this stack I'm going to be in the
right fit for you for this project. So the ingest stuff is pretty new this
year we so we've had egghead IO and it was a
rails app so it's a server full app and over the last year and a half or so I
decided for new projects I didn't want to use the rails
API's it was kind of a mistake we use next JS
I wanted to embrace serverless and everything lives in a mono repo it's
actually skill recordings forward slash products
on github so we use visible source I don't call it open source because
there is no support implied or given so if you want to check it out you can
check it out but like we're not trying to like build an open source product
that people can actually use more more just keeping it open because it makes
things easier part of that was like all right
every product is going to get its own database we use planet scale love
planet scale every product gets its own mux instance
and like all of those like everyone gets its notion
account everyone you know like it's this we we consolidate some things like the
versatile account is all one stack and there's a couple other
aspects where we use shared infrastructure but every one of these products
looks the exact same but gets its own slice of the infrastructure so we are
servicing clients at the end of the day that are the instructors of these
courses and you know just to make it
not as bad so it's not we're not quite too nice yet but like how do we
how do we make it not as bad to where they can actually
self-service and don't need like api tokens and and logins to various
services and all that fun stuff to make it happen
media processing workflows are really a pain in the butt like it is not
super easy to you know like mux makes it pretty easy there's a url you can go
to the web interface and and you can actually upload stuff
but really it's like the best thing you can do is pitch a url so it's like you
need to get that the raw media file someplace and then i also
want that in a backup so if i ever have to rebuild like
something happens to mux and i have to rebuild all our video infrastructure
and use AWS that would make me sad but i need to be able to do that right like
so you have to upload files access those files
and then wait for them to process so send it to to a service provider like
mux well it gets transcoded for for streaming
we want transcripts we want subtitles we want to like send it through open AI
to get weird llm suggestions that that might produce for us
sometimes they're good it's good at like tagging and stuff so like we get all
that done all through that process if you do
not say like here is where this is at is that this is doing this right now
it's 70 complete 80 percent send notification do you like to be
emailed do you want a slack message do you want to be hit up on discord do you
want an sms message managing that asynchronous
workflows where like and i've i've been saying lately like distributed systems
are easy and has an asterisk on it because they're super difficult but
like it's actually now it's now it is actually easy i can just make that
happen i can have an idea oh man wouldn't that be cool if that
also notified us over here done right like it's not uh
like i have to go in and change it or refigure it out i know exactly where to
go in the app what to change how to add that step
air handling is is kind of built into the whole thing and then it just
looks like typescript at the end of the day
speaking of ingest you actually have a new role over there was that
a part of just being super stoked about the product or what was what was really
the motivation behind that right now is a very early company
but even at this early stage they have like a really good product that
fills a gap in my my tech stack that was really difficult and something i've
always wanted i love event-driven architectures
and distributed systems it's not a hat i was able to wear i would have to like
staff up and have expertise and kafka and AWS and
salary or whatever like alternative solutions you might choose
and i wasn't able to do it i was never able to get it to a point where it would
be actually reliable and i could run it and ingest let me do that and i was
like i love this so much it was a kind of a joke
tweet i love this product so much that i'm
considering their open dev rail position and then
fairly hit me up and the twitter dms with the with the old eyeball emojis
and it just kind of escalated from there and you know it's like i wasn't
looking
and i wasn't thinking about it i get to sit down and and think about
education from a different side from you know like an early stage
startup position which is that's building something that's like truly
useful and interesting well it's cool to me and probably the biggest difference
is the code and configuration it's all serverless but it's
in our app so we use next-js and all of this configuration
is in our github it's in our git repository and it's committed
and we we get to own that i get to see how the
sausage is made now and and what they're doing is incredibly complex
and you know like as i described it's like this infrastructure where you need
a team of incredibly smart people to manage that you know like building a
product in early is really quite fascinating and
and uh it's gonna it's an accelerator for me because i can
you know like be in an experience that kind of uh deep technical product
growth that i i just you know i wasn't i wasn't getting in in the businesses
that i operate for one last question for you do you remember
like a moment or you not only realize you were interested in the stuff but you
were like this might be like harder than it looks
no actually i don't i've never found the technology to be
i mean it's it's challenging daunting i don't know what i don't know and you
have to dig in and you don't know the answer but to me that's always been the
most fascinating aspect of it and the maybe even the most joyful
aspect of it is the the just the the puzzle it's like a big
Rubik's cube and having to deal with the human
aspect of technology has always been like way more of a struggle for me like
i've i've i love to sink into impossible technical tasks
and rise superior to the machine and curse it
with my dominance when i'm i'm finished with whatever it is i was trying to do
it really boils down to like that's the joy of it it is hard i'm not saying
that this technical stuff isn't hard but like that's
you know like it's like looking up at Everest and and get into the top like
that's like uh if you lose a couple fingers along the way that's just
part of the cost. Joel where can we find you on the internet?
so i spent a lot of time on x and i i actually play around with tiktok a
little bit i haven't posted a lot you think there's a synthesizer that sits
over my shoulder over here so i make screeching noise and bad
generative arts and put that on tiktok a little bit
and then i i blog on joehooks.com infrequently
and badass.dev is kind of my my current personal project that i
love quite a bit. Sweet well thanks for taking some time to
chat with us yeah my pleasure