The document discusses the growth and development of Last.fm, the world's largest social music platform. It describes how Last.fm started in 2004 and grew rapidly by being open with its data and involving users. As it grew from 20 to 40+ employees in 6 months, it emphasized radiating information across the company through simple tools like IRC chat logs. The excerpt shows developers coordinating fixes and improvements in real-time.
6. How does it work?
Listen
- to your own music
- to Last.fm radio
7. How does it work?
Listen
- to your own music
- to Last.fm radio
Share
-your taste
instead of files
- automatic, via
“scrobbling”
8. How does it work?
Listen
- to your own music
- to Last.fm radio
Share
-your taste
instead of files
- automatic, via
“scrobbling”
Discover
- via your friends
- via people with
similar taste
9. How does it work?
Listen
- to your own music
- to Last.fm radio
Share
-your taste
instead of files
- automatic, via
“scrobbling”
Discover
- via your friends
- via people with
similar taste
13. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
14. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
10 million artists
15. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
10 million artists
70 million tracks
16. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
10 million artists
70 million tracks
700k tracks streamable on Last.fm radio
17. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
10 million artists
70 million tracks
700k tracks streamable on Last.fm radio
17 million items tagged
18. 15 million tracks scrobbled / day
(175 scrobbles per second)
Over 6 billion tracks scrobbled since 2003
10 million artists
70 million tracks
700k tracks streamable on Last.fm radio
17 million items tagged
145k artist wikis
22. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
23. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
Google ads
24. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
Google ads
User subscriptions
25. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
Google ads
User subscriptions
Involve users in your web application’s story
26. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
Google ads
User subscriptions
Involve users in your web application’s story
Make growth a selfish aim for existing users
27. Early Growth Lessons
Don’t overextend – scale with your growth, not before
Make sure revenue sources scale with increased usage
Google ads
User subscriptions
Involve users in your web application’s story
Make growth a selfish aim for existing users
Be as open as you can afford
31. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
32. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
33. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
Together, provided “round trip” incentive for plugin developers
34. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
Together, provided “round trip” incentive for plugin developers
Winamp, iTunes, WMP, Amarok
35. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
Together, provided “round trip” incentive for plugin developers
Winamp, iTunes, WMP, Amarok
Foobar, QCD, mpd, XMMS, mpg321
36. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
Together, provided “round trip” incentive for plugin developers
Winamp, iTunes, WMP, Amarok
Foobar, QCD, mpd, XMMS, mpg321
Noatun, Quod Libet, Jinzora, Ampache
37. Openness and Growth
In 2004, we had a cool service, but needed data
Audioscrobbler Protocol 1.0
Webservices for accessing users’ music profile data
Together, provided “round trip” incentive for plugin developers
Winamp, iTunes, WMP, Amarok
Foobar, QCD, mpd, XMMS, mpg321
Noatun, Quod Libet, Jinzora, Ampache
(and dozens more)
41. Openness and Users
Involve non-technical users as well
Promote a community around your application
Talk to your users (bad news > no news)
42. Openness and Users
Involve non-technical users as well
Promote a community around your application
Talk to your users (bad news > no news)
More likely to tolerate growing pains…
55. process
product
Growing up
• 20 to 40+ employees in 6 months
• “people trump process”
• simple tools are effective tools
• radiate information across different
channels in the company
57. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
58. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
59. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
60. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
61. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
62. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
63. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
64. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
65. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
66. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
mokele: ? lookup track 11082618
67. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
mokele: ? lookup track 11082618
irccat: track.id(11082618) Zetan Spore ??? Subspace Distortion http://www.last.fm/music/Zetan+Spore/_/Subspace+Distortion (lastfm=t)
68. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
mokele: ? lookup track 11082618
irccat: track.id(11082618) Zetan Spore ??? Subspace Distortion http://www.last.fm/music/Zetan+Spore/_/Subspace+Distortion (lastfm=t)
pete_bug: jonty, can you please suspend PP campaign 3670?
69. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
mokele: ? lookup track 11082618
irccat: track.id(11082618) Zetan Spore ??? Subspace Distortion http://www.last.fm/music/Zetan+Spore/_/Subspace+Distortion (lastfm=t)
pete_bug: jonty, can you please suspend PP campaign 3670?
jonty: pete_bug, sure one sec.
70. Growing up
process excerpt from #last.fm irc channel
irccat: SVN commit by norman (23872) 'randomSplitter: splits data into train and test sets randomly' (changeset: https://admindev.last.fm/
trac/changeset/23872)
3:40 PM
irccat: *** jonty is refreshing webnodes now: 'Fix for group owners'
mischa: jonty: memcache key should be set to: java-playlist-10093 where 10093 ==userid.
irccat: Trac: ticket #1779 (http://support.last.fm/trac/ticket/1779) changed by julian, Comment: Fixed for the next release..
irccat: number of anon flash streams is 1440, number of registered flash streams is 764
felix: hey abc when did you put the adsense leaderboard on bottom cat pages live?
abc: friday
3:45 PM
mokele: ? lookup track 11082618
irccat: track.id(11082618) Zetan Spore ??? Subspace Distortion http://www.last.fm/music/Zetan+Spore/_/Subspace+Distortion (lastfm=t)
pete_bug: jonty, can you please suspend PP campaign 3670?
jonty: pete_bug, sure one sec.
irccat: Trac: ticket #1526 (http://support.last.fm/trac/ticket/1526) "group recommendations are slow" created by muz.
75. process
product
Growing up
• 15 million unique users a month
• plan for going global
• affiliations should enhance the user
experience
76. process
product
Growing up
• 15 million unique users a month
• plan for going global
• affiliations should enhance the user
experience
• harness critical mass
77. process
product
Growing up
• 15 million unique users a month
• plan for going global
• affiliations should enhance the user
experience
• harness critical mass
• embed your service in others
78. process
product
Growing up
• 15 million unique users a month
• plan for going global
• affiliations should enhance the user
experience
• harness critical mass
• embed your service in others
• make the transition from service to
platform
101. Attention and “Myware”
When you pay attention to something (or don’t), data is created
Myware: spying on yourself
102. Attention and “Myware”
When you pay attention to something (or don’t), data is created
Myware: spying on yourself
Attention economy alters traditional meaning of “active user”
103. Attention and “Myware”
When you pay attention to something (or don’t), data is created
Myware: spying on yourself
Attention economy alters traditional meaning of “active user”
Social web + attention aggregators = where the action is
108. Attention data
Monetizing attention
1 - Microchunk it - Reduce the content to its simplest form.
2 - Free it - Put it out there without walls around it or strings on it.
109. Attention data
Monetizing attention
1 - Microchunk it - Reduce the content to its simplest form.
2 - Free it - Put it out there without walls around it or strings on it.
3 - Syndicate it - Let anyone take it and run with it.
110. Attention data
Monetizing attention
1 - Microchunk it - Reduce the content to its simplest form.
2 - Free it - Put it out there without walls around it or strings on it.
3 - Syndicate it - Let anyone take it and run with it.
4 - Monetize it - Put the monetization and tracking systems into the
microchunk.
111. Attention data
Monetizing attention
1 - Microchunk it - Reduce the content to its simplest form.
2 - Free it - Put it out there without walls around it or strings on it.
3 - Syndicate it - Let anyone take it and run with it.
4 - Monetize it - Put the monetization and tracking systems into the
microchunk.
Fred Wilson, The Future of Media, November 2005
116. Attention data
Monetizing attention
Powerplay is sponsored airtime
Individualized targeting based on attention history
New attention metrics for reporting
No more CPMs - the ‘scrobble’ is our attention unit
122. Attention data
Censorship is not acceptable in a folksonomy
Attention data does not lie
Case study: tag cloud moderation
123. Attention data
Censorship is not acceptable in a folksonomy
Attention data does not lie
Weigh user tags by volume of attention user gives
to content
Case study: tag cloud moderation
124. Attention data
Censorship is not acceptable in a folksonomy
Attention data does not lie
Weigh user tags by volume of attention user gives
to content
Attention earns trust
Case study: tag cloud moderation
132. more
less
Future of Last.fm
• more growth
• more streamable music
• more ambient findability
• more personalization /
things you can do with your data