Developer Chats: Streamlined video dev solutions and Uscreen's tech stack

0:00

Nick: If you looked

0:00

at Uscreen two, three

0:01

years ago, we were

0:02

more of a OTT provider.

0:05

And now we are more of

0:06

a membership platform.

0:07

Which means besides the video

0:09

features, that's going from

0:11

creators to the audience,

0:13

so like one-to-many, we

0:15

will add more and more

0:16

many-to-many functionalities.

0:18

Which means the users can

0:21

also now send the videos to

0:23

creators and to other users

0:25

in the membership community.

0:27

We have a guy who's

0:27

doing guitar lessons.

0:29

And he was bugging us

0:30

for like three years.

0:31

Something like, "Guys, my

0:33

audience needs to record

0:34

a video and send it to

0:35

me and ask my opinion,

0:37

like, 'How I'm doing?'".

0:39

As we learn more, it's like

0:41

super common use case where

0:43

people want to get the

0:44

feedback in the video format.

0:46

It was extremely cool to see

0:48

how we can use short vertical

0:50

format videos with Mux,

0:52

because we already have Mux

0:54

as the core component of our

0:57

video catalogs for creators.

0:59

And now we can use

0:59

the same API to build

1:02

functionality for end users.

1:04

Considering that we have

1:05

mobile apps, it's super

1:06

easy for us to manage the

1:09

workflow of end user and

1:10

uploading the content so

1:11

users can just quickly get

1:13

their phone, record the

1:14

video and just hit send.

1:19

Matt: Selfishly, like, one

1:20

of the things that I think we

1:21

do really well at Mux is, you

1:24

know, that fast experience

1:25

around, "I've got a video,

1:27

I upload it, and now it's

1:28

ready as quickly as possible".

1:30

Is that a critical part of

1:31

this component, is how quickly

1:33

people are able to like, get

1:34

a video, upload it, and then

1:35

kind of see it in the feed?

1:37

Or is, is async kind of fine?

1:39

They're like, how does that

1:40

play into the experience?

1:41

Nick: The fun part, the

1:42

fun part, we want to do

1:45

it in the background right

1:45

now, it's actual time, in

1:50

synchronously, in the format,

1:51

like from uploading and

1:53

transcoding, to actual video

1:55

from Mux back to your screen.

1:57

So there's like, right

1:59

now, no hidden magic.

2:00

It's just like built

2:00

in the simplest,

2:02

dumbest way possible.

2:04

And we are iterating

2:06

on top of that.

2:07

It's just, it was, like,

2:08

probably one of the best ways

2:10

to just do the test, right?

2:13

Just to build it as

2:14

scrappy as possible.

2:15

And the scrappiest version

2:16

already really fast.

2:18

Where people are actually

2:19

enjoying using it.

2:21

Matt: I promise we

2:21

didn't, we didn't pay

2:23

Nick to say any of this.

2:24

Nick: So,

2:28

this is the new community tab.

2:30

This is something in

2:31

between the Facebook

2:32

group, with channels and,

2:34

and something more robust

2:36

as like Slack, right?

2:38

The fun part is like

2:39

before we could only

2:41

allow you to add images.

2:44

And now you have this

2:45

video editor, right there,

2:48

that actually allow you

2:49

to send a nice video

2:52

to the community group.

2:53

And not only creator can

2:55

answer, other end users can

2:56

participate in discussion.

2:59

And as I said, it's the

2:59

first version you see, it's

3:00

like, it's just doing the

3:02

work right now, but we all

3:04

read how Instagram faked

3:06

it, the, the speed of the

3:08

app in the early days.

3:09

So we'll do the same thing.

3:10

So it will be in

3:10

the background.

3:11

It's all working

3:12

pretty smooth.

3:13

Considering that we already

3:15

had the experience with

3:16

Mux API, this feature was

3:17

extremely fast to build.

3:19

Our goal here for UGC content

3:22

is to have short video

3:23

sessions from end users.

3:25

We don't want them to

3:26

upload like one-hour movies.

3:28

And right now we have a

3:29

limit of 60 seconds there.

3:31

And we getting a lot of

3:33

video usage already from

3:34

those smaller vertical

3:35

videos, especially in active

3:37

communities, because it turns

3:38

out that people who upload

3:40

video, like their median of

3:41

symbols below the video is

3:43

actually more than people who

3:45

just doing the text posts.

3:47

Matt: So you're seeing

3:48

people actually write

3:50

more copy on video content

3:52

that they're uploading,

3:53

right?

3:53

Nick: Yes.

3:53

Matt: Wow.

3:54

Nick: Yes.

3:54

They spend more time with

3:56

the video content and also on

3:58

average video content hits a

4:00

lot more likes and comments.

4:02

This is a shift for

4:03

us in our learnings.

4:04

If we can push people

4:07

to actively participate

4:08

in the community, they

4:09

will stay a lot longer

4:10

with the creator there.

4:12

And the video is actually

4:14

one of the best ways for

4:16

us to, to make it their own

4:18

space and to build the better

4:22

connection between creator

4:24

and the end user over time.

4:27

As I said, like, that's just

4:28

the first version that was

4:30

built in one feature cycle.

4:32

And we also do, we did

4:33

before six weeks cycles.

4:35

So you can count it as a

4:37

result of one engineer working

4:40

for four weeks on the feature.

4:43

Which is amazing.

4:44

And now there is 250 apps

4:47

in the app store that have

4:50

this and people using it.

4:53

Matt: How does the, how

4:54

does the backend of this,

4:55

this look, what's the

4:56

technology behind this thing?

4:57

I mean, Mux, obviously,

4:58

but like specific features

5:00

or like what, what's,

5:01

what's happening there?

5:02

Nick: So for our apps,

5:03

we're using Flutter.

5:04

Our backend is monolith

5:06

Ruby on Rails application.

5:08

And we're big fans of

5:11

simplification of technology,

5:12

simplification of the stack.

5:15

So probably the laziest

5:17

developers out there.

5:18

We're trying to

5:19

keep it this way.

5:19

Matt: Hallmark

5:19

of a

5:20

good

5:20

developer.

5:20

Laziness.

5:23

Nick: So we're trying

5:23

to keep it this way.

5:24

Right now, the app will

5:26

communicate with the server

5:27

to request the upload link.

5:29

We're uploading

5:30

directly to Mux.

5:31

The editing of the video

5:32

file, the duration is

5:33

done on the device.

5:35

And then we're just

5:36

sending it directly to Mux.

5:39

And once video uploading,

5:40

uploaded, like, and

5:41

transcoded, we're getting

5:42

webhook back to the system

5:44

and it's just delivered

5:45

through, I think it's

5:46

delivered through server sent

5:48

event to the device pack.

5:50

So device doesn't check

5:51

anything and boom, it's there.

5:53

We initially just WebSockets,

5:54

but then we realized

5:56

that if you need to build

5:57

something for Roku, good

5:59

luck using WebSockets.

6:03

We, we ended up with

6:04

simpler technology stack

6:06

and server sent events are

6:09

way more supported right

6:11

now with web, as well.

6:12

Like you don't need to do

6:13

like crazy workarounds.

6:15

So we ended up using that and,

6:17

yeah, that's super simple.

6:19

As I said,

6:20

Matt: Doesn't need to be

6:21

bi-directional anyway, right?

6:22

So that's, that's

6:22

a perfect use case.

6:23

Nick: Yes.

6:24

Yeah.

6:24

Matt: Any other, like,

6:25

features that you've, you've

6:27

been able to use in this, that

6:28

you've felt have been like big

6:30

unlocks?

6:31

Nick: One big feature that was

6:33

like unexpectedly well used

6:36

that's currently in the build

6:37

where we're doing beta tests

6:39

with it and a few customers.

6:41

It's auto-caption.

6:42

We actually were shocked how

6:44

important this feature is and

6:46

how it changing the behavior.

6:48

First of all, the dumbest

6:50

thing that you realize once

6:51

you start working on it, like

6:53

you can now watch videos in

6:54

the Metro without the sound.

6:56

And there's like simplest

6:57

use case there that you

6:59

never thinking about.

7:01

It's extremely also good

7:02

for educational content

7:04

is it's a huge win.

7:06

Also, it saves so

7:07

much time to creators.

7:09

It's fun story.

7:10

We, we have our CS team

7:13

and once, once we build up

7:15

the first version of the

7:16

feature, it, it meant to be

7:17

rolled out as the alpha test

7:19

only to a few customers,

7:21

but because of, oh, this is

7:23

probably my mess and internal

7:25

communication, CS teams

7:26

thought that they can actually

7:27

go and enable it to customers.

7:29

And we end up is, with like

7:31

more than 100 customers in

7:32

less than a week with this

7:34

feature running in production.

7:35

And I was like, hold

7:36

on, we didn't even

7:38

like build it well yet.

7:39

Like not, not like build

7:41

it well, but the flow.

7:42

From the user perspective

7:44

was not yet obvious, but

7:46

turns out we, like, we're

7:48

rolling out to a bunch of

7:49

people and everybody were so

7:51

upset when I turned it off.

7:54

They were like,

7:54

"What do you mean?

7:55

Like, we want to test".

7:57

I'm like, okay.

7:58

We didn't expect to get

8:00

so much feedback, positive

8:02

feedback and so much push

8:04

to like, to roll out as

8:06

fast as possible to people.

8:08

So that was pretty funny.

8:10

And the fun thing we're now

8:12

doing was, was the captions.

8:13

Cause we now have all

8:14

the videos with captions

8:17

automatically.

8:17

We're, we're working on

8:20

Nick: automatic descriptions

8:22

and titles based on

8:23

those captions files.

8:24

So also huge on log there for

8:27

potential simplification of

8:29

workflow for the creators.

8:31

Matt: So are you running,

8:32

like, are you like

8:33

getting the captions?

8:33

So webhook comes

8:35

back video ready.

8:36

Are you like taking that

8:37

captions file and then

8:38

running it through, like,

8:40

an LLM to get, you know,

8:42

descriptions and titles?

8:43

Oh man, that's so cool.

8:45

Nick: Yeah.

8:45

So we're, we're getting

8:46

titles, descriptions, and in

8:48

the future, we want to figure

8:49

out how to, to put it in the

8:51

right category as well and

8:54

do other stuff that's, well,

8:57

will fit the, the creator

9:00

use case plus, the way how

9:02

creator communicate based

9:04

on previous history of like

9:05

titles and descriptions and

9:06

their style of communication

9:07

with the audience.

9:08

So creators are by design

9:11

multi-SKU businesses.

9:13

They never run

9:13

just one business.

9:14

They have like

9:15

multiple businesses.

9:17

So our goal for them to

9:18

create the business that

9:19

actually recurring, not

9:20

like one, one time hustle.

9:23

Which most of creators

9:25

are doing, and that's

9:26

allowing them to just spend

9:29

as least time on it as

9:31

possible to have like as

9:32

many helpful automations.

9:34

Matt: Yeah.

9:35

Big transition for you

9:36

again, to, to enter

9:37

into the UGC space.

9:38

I feel like you're one of

9:40

the few proper experts in

9:41

building OTT platforms.

9:43

What would you call out as

9:44

your feedback or suggestions

9:47

or, you know, what would

9:49

you, what would you say

9:49

to somebody else who is

9:50

like entering the space?

9:52

Nick: I think it's.

9:53

It's also like a part of

9:55

a classic conversation of

9:56

build versus buy, right?

9:58

One particular

9:59

thing was video.

10:00

It's expensive until

10:02

you get volume.

10:03

Right?

10:04

And if you also need to spend

10:05

a bunch of time and resources

10:06

to build it from scratch,

10:08

it's borderline, not smart.

10:12

If, if you will take that.

10:15

So this is where I feel like

10:17

the, if you building MVP or

10:20

you trying to get it first

10:21

time, the more you can just.

10:24

skip in terms of the building

10:26

process, the better it is.

10:27

And for us, we just didn't

10:29

make that mistake because we

10:31

were working with Mux, so for

10:33

us, it was a no brainer move.

10:34

But I can see like someone

10:36

would be like, "Okay, I will

10:38

just encode 360p or 480p and

10:42

it would be enough for mobile

10:43

device and we'll store it

10:44

somewhere and then deliver

10:45

it" and then you're getting

10:47

into a nightmare of problems

10:50

that you would never expect to

10:52

have, especially when devices

10:54

are not, are always the same.

10:57

Like it's, it's, it's fun

10:59

for, to build for iOS.

11:00

Right?

11:00

But then there's a bunch

11:02

of other devices where

11:03

you hitting unexpected

11:05

problems and oh, what you

11:07

do with Chromecasting.

11:08

Now, if you just don't go

11:12

and try to solve all of

11:13

those issues right away,

11:15

I think it's a good win.

11:17

Make sense to buy initially,

11:19

even if you like end up

11:20

building your own, because

11:22

I don't know, you have some

11:23

really weird requirement,

11:25

which I feel like we have

11:27

a really weird requirement.

11:28

We have Roku, we have

11:29

Android TVs and for us, Mux

11:32

work out extremely well.

11:34

So how more weird than

11:35

that you need to be?

11:37

It's really hard to say.

11:40

But, this is where I feel

11:42

using APIs that already exist

11:45

there is a huge plus and,

11:47

and will, will save you not a

11:49

lot, not only a lot of time,

11:50

it will save you a lot of

11:52

money, especially with the

11:53

keep up because once your

11:56

real users will start using

11:57

it, you will uncover a lot

11:59

of problems with, with video

12:01

delivery and with different

12:06

per platform, unique issues

12:07

and challenges that's already

12:10

solved for you when you're

12:11

using Mux, for example.

12:13

And right now, like if, if

12:16

we coming to seven years ago,

12:19

that would be a fun flashback.

12:22

When we starting out,

12:23

we had our own Woza

12:24

server in Virginia.

12:26

That was the worst

12:27

time in my life.

12:28

Cause I barely slept because

12:32

I was so worried that

12:33

something will go wrong.

12:34

It was so bad that the

12:36

moment we switched to Mux,

12:38

I start to sleep well.

12:39

So if Oura Ring will will

12:42

be there back then, you will

12:43

probably see a meaningful

12:45

difference in my sleep

12:46

quality the moment we

12:48

switched to Mux, because,

12:50

yeah, it was a nightmare.

12:52

And and we had the background

12:54

in the web hosting, so

12:55

it was at least something

12:57

we knew how to do.

12:58

And for people who never

12:59

did it, unless you want, you

13:01

want really hard challenge

13:03

this that you will have a

13:05

poor ROI on you can do it,

13:08

but it will be just for fun.

13:12

There's way more interesting

13:13

ways to have fun than

13:16

building your own video

13:17

infrastructure from scratch

13:19

for UGC content when there's

13:21

something that exists.

13:23

And yet again, the problem

13:24

it's, it's, it's only

13:27

get cheaper with scale.

13:29

So if you will start building

13:30

it on your own, it will never

13:33

be on the price comparison

13:35

as good as you will just

13:37

start with Mux right there.

13:38

And I think that's

13:39

another thing that

13:40

people just forgetting.

13:41

Because, like, delivering

13:42

video is expensive.

13:43

The only way to make it less

13:45

expensive is just deliver

13:47

a hell of a lot of them

13:48

right away, which no one

13:51

can do from the day one.

13:53

Matt: We should, we should

13:54

see if we can pull up your

13:55

old sleep data, like if

13:56

you had an Apple watch back

13:57

then, that'd be, that's

13:58

perfect for like a, we should

13:59

put that on the website.

14:00

Nick's, Nick's sleep

14:02

cycles, pre-Mux,

14:03

post-Mux, type situation.

14:05

It's a dream to have an early

14:06

customer like y'all that

14:07

we've, I've been able to work

14:09

with for, you know, from the

14:11

very beginnings of the product

14:12

and scale and mature together

14:14

as businesses and watching,

14:15

watching y'all, y'all grow.

14:17

And I think this is the

14:18

coolest part about working

14:19

at Mux is being able to

14:20

watch somebody like you

14:21

build the things that matter

14:22

for, for your customers.

14:24

So selfishly, this has

14:26

been a, this has been

14:27

a dream conversation.

14:28

But yeah, thanks.

14:29

Thanks a lot, Nick.

14:31

Really, really appreciate

14:32

your time today.

14:33

Nick: And, and thanks for

14:34

Mux because without Mux,

14:37

we would not allow to focus

14:39

on, on what creators need.

14:42

We would focus on

14:43

infrastructure.

14:47

Matt: Yes.

14:47

And another tagline.

14:48

Nick: Back to the

14:49

days of Wowza and my

14:51

poor sleep quality.