WEBVTT

00:00:34.560 --> 00:00:38.080
Code. It can be beautiful.

00:00:39.560 --> 00:00:44.080
When I learned to program,
I saw that it was... pure.

00:00:45.160 --> 00:00:50.640
No ambiguities.
Nothing to interpret, nothing to convey.

00:00:50.720 --> 00:00:52.120
It just is.

00:00:53.120 --> 00:00:55.120
And for me, it's part of my DNA.

00:00:56.240 --> 00:00:59.640
In the binary world,
there are only ones and zeros.

00:01:00.880 --> 00:01:02.720
That's perfection.

00:01:03.880 --> 00:01:06.000
And then slowly, one command at a time,

00:01:06.000 --> 00:01:08.440
Something pure and... true that,

00:01:09.080 --> 00:01:10.440
didn't exist before.

00:01:10.560 --> 00:01:15.440
Something that never lies or
pretends to be something it isn't.

00:01:19.640 --> 00:01:20.880
A universe out of nothing.

00:01:30.720 --> 00:01:34.560
You take the ugly chaotic world we live in

00:01:34.560 --> 00:01:36.760
Andreas?

00:01:36.840 --> 00:01:37.720
You were going to show us
the latest updates.

00:01:40.360 --> 00:01:43.360
Anyone could have answered
their questions. In their sleep.

00:01:44.640 --> 00:01:46.080
No one is interested in my ideas.

00:01:46.160 --> 00:01:48.120
We are interested in your ideas.

00:01:48.200 --> 00:01:49.920
But we're also interested
in making a profit.

00:01:49.960 --> 00:01:51.680
Yeah, I know. Check this out.

00:01:51.760 --> 00:01:52.600
What is this?

00:01:52.680 --> 00:01:55.280
I've started constructing
a more immersive open-world experience.

00:01:55.360 --> 00:02:00.000
This can give our users something
to aspire to, to dream about, to create...

00:02:00.080 --> 00:02:03.200
Well, our users are
12 and 13 year old girls. Get it?

00:02:03.280 --> 00:02:08.120
All they have to do is play with dolls
and buy our * add-ons.

00:02:08.200 --> 00:02:10.760
Fame, fashion and friends, Andreas.

00:02:11.360 --> 00:02:12.640
Don't forget that.

00:02:12.720 --> 00:02:15.000
Sorry... This is Daniel.

00:02:15.080 --> 00:02:17.520
Daniel's going to be a consultant here.

00:02:17.600 --> 00:02:20.680
Daniel gets business. Listen to him, okay?

00:02:26.520 --> 00:02:28.080
I like what you said, it was nice.

00:02:28.160 --> 00:02:29.480
Yeah, but who cares?

00:02:29.560 --> 00:02:31.920
- He just wants to sell add-ons.
- Can I see?

00:02:37.720 --> 00:02:40.360
I just thought a tech start-up
would be different.

00:02:40.440 --> 00:02:44.120
That they would be interested
in some new ideas. Take some risks.

00:02:44.200 --> 00:02:47.840
This is awesome. How did you get the dolls
to react so quickly?

00:02:47.920 --> 00:02:51.600
I've built a new layer,
so now there's a feedback loop

00:02:51.680 --> 00:02:54.640
to anticipate what users want
before they want it.

00:02:55.400 --> 00:02:56.440
Okay.

00:02:56.520 --> 00:03:00.160
Yeah well, don't worry.
The boss hates it, so I'll just delete it.

00:03:00.840 --> 00:03:05.680
Why? It's brilliant. If Mattias doesn't
appreciate it, that's his problem.

00:03:07.640 --> 00:03:10.480
- Except that he's the boss.
- So? Then why are you still here?

00:03:10.560 --> 00:03:15.720
If you want to be creative, quit this damn
job, do your own thing. Be your own boss.

00:03:15.800 --> 00:03:21.080
People like me just don't run businesses.
We consult, advise, maybe are CTOs.

00:03:21.160 --> 00:03:23.320
Says who? I just did it.

00:03:23.400 --> 00:03:27.240
Started a tech company with only coders,
sold it for ten million.

00:03:30.800 --> 00:03:32.080
Just think about it.

00:04:05.960 --> 00:04:07.000
This is nice.

00:04:07.960 --> 00:04:09.240
What are you reading?

00:04:10.320 --> 00:04:15.000
The Gutenberg Galaxy.
Marshall McLuhan. What's it about?

00:04:16.880 --> 00:04:18.280
It's about...

00:04:18.360 --> 00:04:21.520
how technology made it possible
for knowledge to spread in new ways.

00:04:22.440 --> 00:04:25.360
You know before, there was no point in
learning to read as there were no books.

00:04:26.280 --> 00:04:27.480
That's true.

00:04:27.560 --> 00:04:30.440
But then a whole new wave
of information came along and so...

00:04:31.440 --> 00:04:33.920
Well, everyone can have access to it
if they wanted to.

00:04:34.000 --> 00:04:36.120
So access made people consume more?

00:04:36.200 --> 00:04:38.640
Exactly.
People like Mattias will never get it.

00:04:40.120 --> 00:04:43.400
They just think they get it,
but we've grown up with technology.

00:04:43.480 --> 00:04:46.160
It's been a part of us since we
were kids, before we could even speak.

00:04:46.200 --> 00:04:50.040
We can't let them decide
what we should do with it.

00:04:52.040 --> 00:04:53.080
Check this out.

00:04:54.640 --> 00:04:58.760
This is a streaming system for free music.
This is exactly what you're talking about.

00:04:58.840 --> 00:05:01.200
A way to listen
to every song released,

00:05:01.280 --> 00:05:04.160
so that everyone in the world
can have access to all music.

00:05:06.240 --> 00:05:09.360
Nice. But you know
there's already Pirate Bay?

00:05:09.440 --> 00:05:12.760
Sure, but give me a step by step guide
on how to download a song from Pirate Bay.

00:05:12.840 --> 00:05:13.920
It's easy.

00:05:14.000 --> 00:05:15.520
You just go to the website...

00:05:15.600 --> 00:05:19.040
search for the torrent you want,
download it, open it in a client...

00:05:19.120 --> 00:05:22.600
There's different files, right? So first,
you have to go through them one by one,

00:05:22.640 --> 00:05:23.760
see which one you want...

00:05:23.840 --> 00:05:28.280
Yes. True. So then you sort out what
you don't want, it downloads...

00:05:28.320 --> 00:05:30.120
Then you have to decide which
folder it goes into, what to name it,

00:05:30.200 --> 00:05:32.920
how to list the songs
so they play in the right order,

00:05:33.000 --> 00:05:34.720
according to an artist or an album...

00:05:34.800 --> 00:05:37.800
and all of these you have to store
on your own hard drive.

00:05:46.240 --> 00:05:48.640
This is what I'm talking about.
All this enthusiasm,

00:05:48.720 --> 00:05:51.960
everything Pirate Bay built,
we're going to take to a whole new level.

00:05:53.680 --> 00:05:56.400
The world needs
freedom from record companies.

00:05:57.400 --> 00:05:59.200
and something way better than Pirate Bay.

00:05:59.280 --> 00:06:01.240
At first, it was just an idea...

00:06:01.320 --> 00:06:05.040
It's a beautiful thought, but won't work.
Investors will force you to compromise

00:06:05.080 --> 00:06:06.200
until it's no longer beautiful...

00:06:06.240 --> 00:06:09.720
Good thing I'm the investor then.
I'll put everything I earn into this.

00:06:10.680 --> 00:06:13.520
Every day... Every day
that we stand up to them,

00:06:13.600 --> 00:06:16.400
the authorities begin to understand
that we are unstoppable.

00:06:16.480 --> 00:06:17.800
Yes!

00:06:17.880 --> 00:06:20.920
You know what we're doing here?
We're writing history.

00:06:40.880 --> 00:06:42.640
- This is yours?
- Uhn uhn.

00:06:42.720 --> 00:06:44.440
Welcome to Spotify headquarters!

00:06:44.520 --> 00:06:47.720
This is where we'll build
the world's most beautiful music site.

00:06:48.360 --> 00:06:51.640
- And you want me?
- I want you to help me.

00:06:52.400 --> 00:06:55.840
I need you to help me build the kind of
company that can create brilliance.

00:06:57.120 --> 00:06:58.280
Okay.

00:06:59.960 --> 00:07:01.880
That's Martin. Martin!

00:07:03.800 --> 00:07:07.280
Don't worry, he... He looks like
one of them, but he's one of us.

00:07:07.360 --> 00:07:10.880
Andreas, nice to meet you!
My name is Martin Lorentzon.

00:07:10.960 --> 00:07:12.120
Andreas.

00:07:12.160 --> 00:07:13.440
I know your boss.

00:07:13.520 --> 00:07:16.680
He says you're incredibly good,
but annoying as hell.

00:07:16.760 --> 00:07:19.640
We need annoying as hell.
I want people who think in new ways,

00:07:19.720 --> 00:07:22.960
who understand that the whole new era
requires whole new approaches.

00:07:23.040 --> 00:07:24.480
Welcome aboard.

00:07:25.720 --> 00:07:26.920
Welcome aboard?

00:07:27.000 --> 00:07:29.280
You are our first employee, CTO.

00:07:29.360 --> 00:07:31.880
You'll own more of the company
than anyone except me and Martin.

00:07:32.720 --> 00:07:34.920
So how should we design it?
What do you need?

00:07:37.280 --> 00:07:39.800
Okay. The coders will sit in the middle.

00:07:39.880 --> 00:07:42.400
Everything flows from here,
all the ideas, all the creativity.

00:07:44.360 --> 00:07:49.880
We're going to need more ethernet cables,
and ceiling electrical outlets.

00:07:49.960 --> 00:07:54.800
And everyone on the team will be equal.
No hierarchy, no cliques and no titles.

00:07:54.880 --> 00:07:58.960
If two people think differently, then it
shouldn't matter who has the highest rank.

00:07:59.040 --> 00:08:01.960
Best idea wins, no matter what.

00:08:03.360 --> 00:08:05.040
So who's going to be on the team?

00:08:05.840 --> 00:08:08.960
You have to let me handpick them.
We can't use regular coders.

00:08:09.080 --> 00:08:12.400
To make the best site in the world,
we need the elite.

00:08:12.480 --> 00:08:14.640
People who would have
never joined a regular start-up.

00:08:17.320 --> 00:08:20.240
We need Gunnar Kreitz.
I met him at college, computer science.

00:08:20.320 --> 00:08:22.000
He's the best programmer in the world.

00:08:22.080 --> 00:08:23.920
And Fredrik Niemelä, a prodigy.

00:08:24.000 --> 00:08:26.720
The only one with a team
that could challenge Gunnar's.

00:08:26.800 --> 00:08:30.880
Jon Åslund,
Mattias Arrelid, Andreas Mattsson.

00:08:30.960 --> 00:08:32.840
We need a great designer, too...

00:08:33.680 --> 00:08:36.040
Rasmus Andersson would be perfect.

00:08:37.280 --> 00:08:40.400
We can create the
world's best coding team.

00:08:41.240 --> 00:08:43.840
Like the seven samurai, but coders.

00:08:46.120 --> 00:08:47.240
That looks nice!

00:08:47.320 --> 00:08:49.160
God, you look so handsome.

00:08:49.240 --> 00:08:52.200
Brilliant! Okay, shall we?

00:08:54.560 --> 00:08:58.320
There it is! The money shot! The best.

00:09:05.000 --> 00:09:08.280
Spotify is about one thing.

00:09:12.200 --> 00:09:13.800
Access.

00:09:13.880 --> 00:09:15.960
Access gives freedom.

00:09:16.040 --> 00:09:18.600
Access makes users
independent from the music industry...

00:09:18.680 --> 00:09:21.880
And speed. If there's one thing users hate

00:09:21.960 --> 00:09:24.400
about Pandora or Last FM, it's buffering.

00:09:24.480 --> 00:09:26.800
You don't use Google
because it's the best,

00:09:26.880 --> 00:09:28.840
it's because it's the fastest.

00:09:28.920 --> 00:09:32.920
If Spotify is
gonna succeed, speed is key.

00:09:33.000 --> 00:09:34.240
Don't forget that!

00:09:36.320 --> 00:09:38.600
- Okay, access and speed.
- Mhm. Let's do this!

00:09:38.680 --> 00:09:39.960
Yes!

00:09:47.720 --> 00:09:52.160
When you start programming,
you'll merely notice there's no shortcuts.

00:09:52.240 --> 00:09:54.920
You have to dare to get your hands dirty.

00:09:55.000 --> 00:09:56.600
A little code under your fingernails.

00:09:58.800 --> 00:10:02.280
A computer is like a child
who doesn't know anything yet.

00:10:02.360 --> 00:10:06.480
I have to teach them,
and that means everything.

00:10:08.040 --> 00:10:11.440
If my instructions are illogical,

00:10:11.520 --> 00:10:15.360
incomplete or inadequate,
you will get a bug.

00:10:15.360 --> 00:10:15.400
Okay. So, what are
his eyes saying right now?

00:10:18.280 --> 00:10:20.040
Here's my card, order whatever you want.

00:10:21.080 --> 00:10:22.800
Hi...

00:10:22.880 --> 00:10:24.840
He is... Um...

00:10:26.160 --> 00:10:27.920
Yeah...

00:10:27.920 --> 00:10:27.960
So...?

00:10:28.040 --> 00:10:31.240
Have you looked
at any congestion control algorithms?

00:10:32.360 --> 00:10:34.880
- No.
- No.

00:10:34.960 --> 00:10:38.440
And that has to be the worst
pick-up line in entire world.

00:10:39.440 --> 00:10:42.960
What...
What are you interested in? Beer?

00:10:43.800 --> 00:10:45.960
Medical science. I'm a student.

00:10:46.040 --> 00:10:47.560
I only work here on the weekends.

00:10:49.040 --> 00:10:52.120
So... tell me about cell biology.

00:10:52.960 --> 00:10:56.520
The cell is the most remarkable
of all organisms in biology.

00:10:56.520 --> 00:10:59.120
It's like a little factory that produces
whatever is needed to keep running,

00:10:59.200 --> 00:11:03.400
and it renews parts that need to be
replaced, but it kind of services itself.

00:11:05.680 --> 00:11:09.960
And if needed, the production
can be changed in an instant.

00:11:10.040 --> 00:11:13.720
All the recipes needed to produce
what the factory creates

00:11:13.800 --> 00:11:16.400
are sort of encoded in the cell's genome.

00:11:16.480 --> 00:11:19.160
And the cool thing about it all is that,

00:11:20.440 --> 00:11:24.880
Well, it doesn't need any...
blueprints, anything like that.

00:11:24.960 --> 00:11:28.560
It just regulates itself and it

00:11:28.560 --> 00:11:30.680
takes command of itself.

00:11:30.800 --> 00:11:48.640
It's fascinating really, how it all
just continues to work all on its own...

00:11:58.480 --> 00:11:59.520
That was beautiful.

00:12:01.000 --> 00:12:03.040
What would you say if
I asked you out sometime?

00:12:12.720 --> 00:12:14.000
It's done.

00:12:15.200 --> 00:12:16.200
Test it.

00:12:34.760 --> 00:12:36.280
Now, try something else.

00:12:43.840 --> 00:12:45.480
Yeah

00:12:45.560 --> 00:12:47.440
Unbelievable!

00:12:48.360 --> 00:12:52.240
With help from the whole team,
we've made a smoother, faster system.

00:12:52.320 --> 00:12:56.720
It's actually a lot faster now and we've
reduced the delay. So now the searches...

00:12:56.720 --> 00:12:58.040
It's still too slow.

00:13:01.600 --> 00:13:04.040
This is basically a masterpiece.

00:13:04.120 --> 00:13:05.520
Why should I care about that?

00:13:05.600 --> 00:13:08.400
500 milliseconds is too slow.

00:13:08.480 --> 00:13:12.400
Why would I bother clicking on a song
if I have to wait 500 milliseconds for it?

00:13:15.640 --> 00:13:17.920
- How long is acceptable?
- Zero!

00:13:22.840 --> 00:13:27.640
Zero? That's impossible
and Daniel knew it.

00:13:27.720 --> 00:13:31.040
The delay between
when you click on a link on the internet

00:13:31.120 --> 00:13:36.280
and when content is sent from a server,
is affected by several factors.

00:13:36.360 --> 00:13:40.040
Suddenly, it depends on the
amount of content but also on the

00:13:40.120 --> 00:13:45.440
type of internet connection, the workload
on the network not to mention distribution

00:13:47.280 --> 00:13:49.400
which is the distance
a cable has to carry data,

00:13:49.480 --> 00:13:53.880
I could streamline by adapting the
the structure and finding some shortcuts

00:13:54.440 --> 00:13:57.960
but really it's just the amount of content
that you have control over.

00:14:01.640 --> 00:14:07.000
Daniel! Look at this, only 12 month's
warranty and it's at 75,000.

00:14:07.080 --> 00:14:10.080
That's a colossal amount.

00:14:17.160 --> 00:14:18.600
- Andreas!
- Yes?

00:14:25.560 --> 00:14:29.440
Okay, here's the deal.
We can't afford to do this on servers.

00:14:33.640 --> 00:14:35.280
I built the entire system on servers.

00:14:35.360 --> 00:14:39.000
Okay, but we can't afford the amount of
servers we would need to scale up.

00:14:39.680 --> 00:14:42.280
You're going to have to
build this as a P2P network.

00:14:56.760 --> 00:14:59.880
So... Why am I totally speechless right now?

00:15:00.600 --> 00:15:04.360
Okay, to explain that, I need to get
a bit technical. Try to keep up now.

00:15:04.440 --> 00:15:06.960
If you wanted to build a
streaming service like Spotify in

00:15:07.040 --> 00:15:09.600
2006, you really only had two options.

00:15:09.680 --> 00:15:13.400
Number one, to use servers.
Okay, I'm server. This is me,

00:15:13.480 --> 00:15:15.960
here. I have access to a database.

00:15:16.040 --> 00:15:18.680
You can think of it as a big pile of CDs.

00:15:18.760 --> 00:15:24.280
My only job is basically to serve you the
songs from these CDs. This is you.

00:15:24.880 --> 00:15:28.320
When you ask me to,
I'll go and pick a CD out of the pile,

00:15:28.400 --> 00:15:32.000
I'll read the song you want from here,
send it to you, from beginning to the end,

00:15:32.040 --> 00:15:33.400
a little at a time

00:15:33.440 --> 00:15:37.280
just like how you usually listen
to music, it's lightening fast.

00:15:37.360 --> 00:15:39.040
The problem is that it's expensive.

00:15:39.120 --> 00:15:41.840
Servers are expensive to buy,
but they're mainly expensive to run.

00:15:41.920 --> 00:15:44.320
They use a lot of electricity,
and when they use it, they get

00:15:44.360 --> 00:15:48.800
hot, so you need more electricity to run
the fans that cool the servers. Okay.

00:15:48.880 --> 00:15:52.840
That's why Daniel asked me a moment ago
to use option number two,

00:15:52.920 --> 00:15:54.640
building a peer-to-peer network.

00:15:56.240 --> 00:15:57.480
I'll explain that, too.

00:15:58.600 --> 00:16:00.400
Okay, so peer-to-peer was the invention

00:16:00.480 --> 00:16:02.560
that laid the foundation
for all the services

00:16:02.640 --> 00:16:06.200
like Kazaa, Napster, Limewire
and of course Pirate Bay.

00:16:06.280 --> 00:16:09.640
Now we don't have a server anymore,
just a bunch of confused users out there

00:16:09.720 --> 00:16:13.240
who are somehow connected
to each other via the internet.

00:16:13.320 --> 00:16:16.200
All the internet-connected computers
on this network

00:16:16.280 --> 00:16:19.040
are each other's equals. They are peers.

00:16:19.640 --> 00:16:22.680
Okay. The problem is
that when we lost the server,

00:16:22.760 --> 00:16:25.240
we lost contact with the database.

00:16:25.320 --> 00:16:27.720
So the whole world's music
is no longer available.

00:16:27.800 --> 00:16:31.400
But the users have
a few different records each,

00:16:31.400 --> 00:16:33.920
and as long as they're willing
to share with each other,

00:16:33.960 --> 00:16:36.640
we have a nice little communist society
on the internet,

00:16:36.720 --> 00:16:40.040
but unlike communism,
this idea really works.

00:16:40.120 --> 00:16:44.760
Now, when you want to listen a specific
song, you first ask your neighbors,

00:16:44.840 --> 00:16:47.160
"Please, do any of you have the song?"

00:16:47.240 --> 00:16:51.080
Since there are billions of songs and only
a few neighbors, they'll probably say no.

00:16:51.160 --> 00:16:54.000
But they can ask their neighbors,
who ask their neighbors,

00:16:54.080 --> 00:16:58.160
until you finally find someone who has
the song and starts sending it to you.

00:16:59.080 --> 00:17:01.920
This way, Spotify doesn't have to buy
lots of expensive servers,

00:17:02.000 --> 00:17:08.560
but, there is a big disadvantage. See, it
takes an agonizingly long time.

00:17:08.640 --> 00:17:11.440
It's a cheap solution,
and definitely a bad one.

00:17:11.520 --> 00:17:13.640
Had Daniel been a real coder,
he'd have known that,

00:17:13.720 --> 00:17:16.360
and he'd have know that
he was asking me to do the impossible.

00:17:18.000 --> 00:17:19.880
He has a tendency to do that.

00:17:24.280 --> 00:17:25.280
I'll give it a try.

00:17:31.120 --> 00:17:34.120
What the hell is wrong
with your generation?

00:17:34.920 --> 00:17:36.560
Music can never be free.

00:17:36.640 --> 00:17:38.720
If I get another one
of these * pitches,

00:17:38.800 --> 00:17:42.680
I'm gonna make it my personal mission
to crush your little shitty company.

00:17:42.760 --> 00:17:43.960
You got that?

00:17:45.040 --> 00:17:47.880
I hope I've been
very, very, very clear with you.

00:17:54.640 --> 00:17:56.040
Just make it fast, Andreas.

00:18:02.520 --> 00:18:04.080
Did he really throw it on
the ground?

00:18:04.120 --> 00:18:05.320
Yeah.

00:18:06.320 --> 00:18:07.320
Why?

00:18:08.120 --> 00:18:11.000
He is... a little unstable right now.

00:18:14.320 --> 00:18:15.720
He wants it to be faster.

00:18:16.520 --> 00:18:19.840
I don't even know
if it's theoretically possible.

00:18:23.760 --> 00:18:25.880
The arteries sort of reshape themselves
to create the pressure

00:18:25.880 --> 00:18:28.480
that the circulatory system needs.

00:18:30.920 --> 00:18:34.400
So I don't know, but maybe you can
come up with something new?

00:18:48.080 --> 00:18:50.680
The battle between
the record companies and Pirate Bay

00:18:50.760 --> 00:18:52.440
has now entered a new stage.

00:18:52.520 --> 00:18:56.960
It was at five o'clock this morning,
the police led by prosecutor Pontén

00:18:57.040 --> 00:19:01.400
stormed the underground bunker
where Pirate Bay had its servers.

00:19:01.480 --> 00:19:04.720
Mr Sundin, what do you think
about the Pirate Bay raid?

00:19:04.800 --> 00:19:07.040
It's welcome but a little late.

00:19:07.120 --> 00:19:11.320
It's nice that the Swedish Government
has realized they're not freedom fighters,

00:19:11.400 --> 00:19:14.160
but ordinary criminals.

00:19:14.240 --> 00:19:16.520
So now, I hope they get the
punishment they deserve.

00:19:17.920 --> 00:19:20.720
We continue with more headlines.

00:19:20.800 --> 00:19:24.480
Hurricane Katrina has brought,
Louisiana to a complete standstill,

00:19:24.560 --> 00:19:27.600
Katrina rolled from the gulf
of Mexico and hit Louisiana at

00:19:27.680 --> 00:19:32.360
5am local time. It moves
about about 105 miles per hour,

00:19:32.440 --> 00:19:35.520
...Pirate Bay had everything in one place.

00:19:35.600 --> 00:19:37.080
- A lawsuit against Pirate Bay...
- Daniel...

00:19:37.120 --> 00:19:39.040
The record companies pushed for this.

00:19:39.760 --> 00:19:40.760
Yeah, and?

00:19:40.840 --> 00:19:43.760
People like Sundin won't stop
and now we have to negotiate with them.

00:19:44.560 --> 00:19:46.160
Yeah, we'll have to talk to them.

00:19:46.240 --> 00:19:49.440
No! They're the bad guys here,
not Pirate Bay.

00:19:50.240 --> 00:19:52.960
We've all used that website
since we were kids.

00:19:53.040 --> 00:19:56.040
We know the people who created them,
we respect them.

00:19:56.120 --> 00:19:57.240
Yes.

00:20:00.160 --> 00:20:05.360
The people who create the technology that
you need, care about things like this.

00:20:05.440 --> 00:20:07.480
They care about who's gonna control it.

00:20:07.560 --> 00:20:10.440
I chose to come to Spotify
because I thought it was going to be free.

00:20:10.520 --> 00:20:13.400
Andreas, Spotify is a business.

00:20:14.680 --> 00:20:15.920
A business?

00:20:16.000 --> 00:20:20.080
I don't want to be part of a business that
compromises with record companies.

00:20:20.160 --> 00:20:25.280
If we make a deal with them, we do it
on our terms, not theirs. Or not at all.

00:20:38.880 --> 00:20:40.920
I think it was right at this moment,

00:20:41.000 --> 00:20:45.680
when I confronted Daniel, that the whole
dynamic at Spotify started to change.

00:20:45.760 --> 00:20:49.600
What did I tell you?
A company needs one leader.

00:20:49.680 --> 00:20:52.280
It's alright,
Andreas just needs to let it out.

00:20:53.920 --> 00:20:55.760
Hey, I met a friend from Gothenburg,

00:20:55.840 --> 00:20:58.840
who said he worked with a completely
insane coder, like you and Andreas.

00:20:58.920 --> 00:20:59.920
Who?

00:21:00.440 --> 00:21:02.320
Ludvig Strigeus.

00:21:12.840 --> 00:21:14.040
Maybe we can work on that.

00:21:14.120 --> 00:21:19.480
Or even working on this peer-search
might be something, an option that we...

00:21:28.280 --> 00:21:29.440
Hey, Ludvig.

00:21:30.960 --> 00:21:32.920
- Hi.
- Hey.

00:21:33.000 --> 00:21:35.360
I heard about what
you're up to, sounds pretty cool.

00:21:35.920 --> 00:21:38.960
Okay guys,
please welcome Ludvig to the team.

00:21:39.040 --> 00:21:42.400
He's just agreed to join Spotify
as a consultant.

00:21:42.480 --> 00:21:45.680
And we are very grateful
and happy about that!

00:21:45.760 --> 00:21:49.120
- Great!
- Welcome!

00:21:51.840 --> 00:21:53.360
This is interesting.

00:21:56.200 --> 00:21:58.120
Can we talk for a second?

00:22:06.480 --> 00:22:07.760
Ludvig Strigeus?

00:22:07.840 --> 00:22:11.480
Without saying anything,
not asking, consulting?

00:22:11.560 --> 00:22:13.040
If anything, you should be thanking me.

00:22:13.080 --> 00:22:15.840
No one knows
peer-to-peer better than Ludvig.

00:22:16.880 --> 00:22:21.640
Okay. Fine, but...
Is this because I expressed my opinion?

00:22:21.720 --> 00:22:27.520
No, Andreas. We just bought uTorrent from
Ludvig. We'll be able to use his code.

00:22:28.200 --> 00:22:31.200
Listen, he's still part of your team.
You're the CTO.

00:22:33.320 --> 00:22:34.720
Why didn't you ask me?

00:22:35.680 --> 00:22:39.840
The best idea wins, your policy, right?
He'll run the front end, you the back end.

00:22:55.680 --> 00:22:57.280
So we've built a hybrid system.

00:22:58.360 --> 00:22:59.600
Okay...

00:22:59.680 --> 00:23:02.200
Essentially, it's still peer-to-peer.

00:23:02.280 --> 00:23:05.200
It's convenient and easy to scale up.

00:23:05.280 --> 00:23:09.800
Ten percent of the time, only when needed,
we have the option to switch to a server,

00:23:09.880 --> 00:23:14.240
load the first few seconds from there and
switch back to P2P when it catches up.

00:23:19.560 --> 00:23:23.960
Even unexpected searches respond
and the system will keep improving.

00:23:34.720 --> 00:23:35.960
It's fantastic.

00:23:37.400 --> 00:23:40.280
This is the most sophisticated
music player ever built.

00:23:41.200 --> 00:23:44.720
It's smart, it's smooth, it's fast.

00:23:54.440 --> 00:23:59.040
Nah, it's too slow. On random
searches, there is a slight delay.

00:24:02.200 --> 00:24:04.720
Now we're at 250 milliseconds.

00:24:04.800 --> 00:24:09.760
The human ear perceives anything under 200
milliseconds as instantaneous.

00:24:09.840 --> 00:24:13.200
- That's 0.05 seconds...
- And that's not good enough.

00:24:13.280 --> 00:24:15.880
So this is because of the TCP/IP.

00:24:15.960 --> 00:24:20.880
I don't know if you know how it works,
but basically it's internet architecture.

00:24:20.960 --> 00:24:23.320
We have to wait for the ACK
from the client,

00:24:23.400 --> 00:24:25.920
otherwise we get packet loss.
That's a hard red light.

00:24:25.920 --> 00:24:27.800
And it's your job to find a way around it.

00:24:27.840 --> 00:24:30.600
But that's how
the whole * internet works!

00:24:31.760 --> 00:24:33.960
You're asking for
something that's impossible!

00:24:36.200 --> 00:24:39.760
If we design a car,
we can make the engine bigger

00:24:39.840 --> 00:24:41.640
we can make the wheels spin faster,

00:24:41.720 --> 00:24:43.760
but we can't build a new road,

00:24:43.800 --> 00:24:46.200
just because you don't
understand the technology!

00:24:51.640 --> 00:24:53.200
Here's the thing Andreas,

00:24:56.240 --> 00:24:58.240
I gave you this opportunity.

00:24:59.560 --> 00:25:00.920
And I backed you up to.

00:25:03.000 --> 00:25:05.560
So either you build the player that I want

00:25:08.040 --> 00:25:09.600
or you can go.

00:26:07.720 --> 00:26:08.960
You doing okay?

00:26:12.160 --> 00:26:15.440
Daniel is the boss, Andreas.
Everyone knows that.

00:26:17.040 --> 00:26:18.080
The boss...

00:26:19.800 --> 00:26:20.880
Andreas...

00:26:23.840 --> 00:26:24.880
I know.

00:26:28.840 --> 00:26:30.200
When I was a kid...

00:26:31.760 --> 00:26:33.200
I was always the nerd.

00:26:34.880 --> 00:26:38.680
And... I tried, I...

00:26:40.320 --> 00:26:43.000
In school, I was too
much and I was too little,

00:26:43.080 --> 00:26:48.600
and I had to learn to accept that people
like me, we don't have friends.

00:26:52.080 --> 00:26:55.840
But I just you know, fantasized that...

00:26:55.920 --> 00:27:01.080
I would... I would find my gang.
That I'd find...

00:27:01.160 --> 00:27:02.520
my avengers.

00:27:03.480 --> 00:27:08.520
People who were on
the same wavelength as me.

00:27:11.720 --> 00:27:15.400
Yeah. Maybe I'm just too...

00:27:41.040 --> 00:27:42.480
Can I have that.

00:27:44.280 --> 00:27:45.360
Okay.

00:27:45.440 --> 00:27:48.920
We know that when our server
starts sending data to the client,

00:27:49.000 --> 00:27:53.240
it's kind of like when a car pulls up
to an intersection and gets a red light.

00:27:53.320 --> 00:27:58.360
But what do you do
when you see the light about to turn red?

00:28:02.720 --> 00:28:04.400
You accelerate.

00:28:04.480 --> 00:28:08.520
The idea is to slow down, but
everyone speeds up, that's what you do.

00:28:08.600 --> 00:28:11.400
- But we can't really...
- Yes, we can.

00:28:11.480 --> 00:28:12.680
We clone the TCP/IP,

00:28:12.760 --> 00:28:15.800
then we do our own implementation
of both flow and congestion control.

00:28:15.880 --> 00:28:20.160
A big * congestion window
and no slow start at all.

00:28:20.240 --> 00:28:21.160
That's right.

00:28:21.240 --> 00:28:24.400
Our only problem is that the timeout
is too strict for our purpose.

00:28:24.480 --> 00:28:27.920
It prevents us from sending data faster
than the network can actually handle.

00:28:28.000 --> 00:28:32.960
Yeah sure, we'd get some packet
loss, but nobody needs to know about that.

00:28:33.040 --> 00:28:35.400
Yeah, okay. But what does
that mean in plain language?

00:28:35.480 --> 00:28:38.440
Alright, here's the deal. The
internet is basically built to be perfect.

00:28:38.520 --> 00:28:39.760
No data should be lost.

00:28:39.840 --> 00:28:42.200
And for the vast majority of purposes,
that's absolutely fine.

00:28:42.240 --> 00:28:47.240
After all, the defense industry built it.
They have to stop at the red light.

00:28:47.320 --> 00:28:51.000
Because if they accidentally crash,
all the data is lost.

00:28:51.800 --> 00:28:55.200
But * that. * the Pentagon.

00:28:55.280 --> 00:28:59.120
We're Spotify, if we crash a little bit,
it doesn't matter.

00:28:59.200 --> 00:29:02.640
The tiny part of the song that gets lost,
no one will notice it even existed.

00:29:03.240 --> 00:29:05.120
It is simply not audible.

00:29:05.720 --> 00:29:09.360
We will build the first protocol
that breaks the rules.

00:29:09.440 --> 00:29:12.440
The world's first system
to be imperfect on purpose.

00:29:12.520 --> 00:29:15.480
When we see the red light,
we won't slow down.

00:29:15.560 --> 00:29:17.120
We will accelerate.

00:29:19.120 --> 00:29:24.160
Even if we lose a minuscule part of the
song, who cares?

00:29:28.520 --> 00:29:29.520
Let's do it!

00:29:44.720 --> 00:29:46.400
This is a brand new protocol.

00:29:46.480 --> 00:29:49.280
Gunnar and Fredrik applied
for a patent this morning.

00:29:50.800 --> 00:29:55.080
Whatever happens from here, we've created
a nice little piece of computer history.

00:29:55.160 --> 00:29:57.400
A unique network
protocol that's never been seen before.

00:29:58.440 --> 00:30:02.640
The best-designed, most user-friendly,

00:30:02.720 --> 00:30:05.560
the most complete
music player that ever existed.

00:31:10.400 --> 00:31:12.600
It's goddamn perfect!

00:31:12.680 --> 00:31:14.920
Yes!

00:31:17.560 --> 00:31:18.560
Nice work.

00:31:32.280 --> 00:31:35.280
Shit, you guys should be proud! Wow.

00:31:36.280 --> 00:31:37.640
We got it!

00:31:54.720 --> 00:31:55.720
Daniel.

00:31:56.440 --> 00:31:58.920
We have this new functionality
that I think you'll want to see.

00:31:59.720 --> 00:32:00.600
On the left,

00:32:00.680 --> 00:32:04.320
the artist page as it was,
and on the right, as it is now.

00:32:04.320 --> 00:32:05.960
Our beta testers have given us user data

00:32:06.040 --> 00:32:08.640
that allows us to customize
the whole experience for them.

00:32:08.680 --> 00:32:13.040
It finally gives us a real edge
over the record companies.

00:32:13.120 --> 00:32:15.600
- I'm not giving this to them.
- No.

00:32:15.680 --> 00:32:20.200
- Why not? These offer the prospects for...
- We'd be playing into their hands.

00:32:20.280 --> 00:32:24.040
The whole point of Spotify was
to share power more equally in the market.

00:32:24.040 --> 00:32:26.920
OK, here's the deal. We'll have to pay
those record companies a one-off fee.

00:32:27.000 --> 00:32:30.160
So we need to discuss whether
we can keep Spotify free or not.

00:32:30.240 --> 00:32:33.440
What? You're not
suggesting a paywall are you?

00:32:33.520 --> 00:32:37.720
We're discussing whether we can keep
any part of Spotify free at all, yes.

00:32:37.800 --> 00:32:40.400
The music is already free,
it's already up on Pirate Bay, so...

00:32:40.480 --> 00:32:41.800
Okay, Andreas, can we talk...

00:32:41.880 --> 00:32:42.880
No, wait a minute.

00:32:42.880 --> 00:32:46.360
When we started this,
we agreed it had to be free.

00:32:46.440 --> 00:32:48.400
The younger generation
expects it to be free.

00:32:48.480 --> 00:32:50.720
Okay, you've started this
as a teenage dream, I get it.

00:32:50.800 --> 00:32:52.960
You want to do it your way, the easy way.

00:32:53.040 --> 00:32:55.360
But it's not a sustainable business model.

00:32:55.440 --> 00:32:57.760
That's why we're fumbling
around trying to find one now.

00:32:57.760 --> 00:33:03.680
We started this with an idea, a principle.
I don't know if you understand that.

00:33:03.760 --> 00:33:06.960
- Good luck getting the bank to understand.
- The bank? The bank?

00:33:07.040 --> 00:33:10.800
Why do you let the bank run your life?
Who cares what they think?

00:33:10.880 --> 00:33:12.600
Okay, listen to me.

00:33:12.680 --> 00:33:15.560
Either you accept that you have
to make major concessions and

00:33:15.560 --> 00:33:18.760
fast or we're done working together.

00:33:40.560 --> 00:33:44.000
Okay. Then I guess we're done.

00:33:45.560 --> 00:33:47.360
- Thank you for your time.
- Petra, what are you doing?

00:33:47.400 --> 00:33:50.080
It's been great,
but I can't work like this.

00:33:54.280 --> 00:33:55.400
Petra!

00:33:59.960 --> 00:34:01.200
Good.

00:34:02.360 --> 00:34:04.040
Daniel, we have the technology now.

00:34:04.880 --> 00:34:07.840
We've built something beautiful
that everyone would want to use.

00:34:07.920 --> 00:34:09.320
We're almost out of money.

00:34:10.120 --> 00:34:12.640
- We'll go bankrupt.
- No, not bankrupt.

00:34:12.720 --> 00:34:16.200
It's gonna be a bit tough, but if we
launch now, even without rights,

00:34:16.280 --> 00:34:18.600
we'll crush all the other
streaming services within weeks.

00:34:18.680 --> 00:34:21.240
While the record companies
are suing our * off.

00:34:21.320 --> 00:34:24.240
They need us. We will be too big to fail.

00:34:25.480 --> 00:34:27.200
I want Petra to come back.

00:34:29.360 --> 00:34:30.360
What?

00:34:31.440 --> 00:34:33.120
I want Petra to come back.

00:34:38.680 --> 00:34:44.280
This is the final call
to flight SA7062 to Singapore.

00:34:49.960 --> 00:34:52.080
That's not what really happened.