You are on page 1of 125

How to build desktop apps that help your web app succeed

Matthew Ogle (matt@last.fm) FOWA Dublin, 6 March 2009

Wait, desktop?

Wait, desktop?
Web 2.0 has (arguably) eroded the importance of desktop apps

Wait, desktop?
Web 2.0 has (arguably) eroded the importance of desktop apps How many of you use Gmail as a primary email client?

Desktop, really?

Desktop, really?
It’s a good, familiar pitch. Web apps…

Desktop, really?
It’s a good, familiar pitch. Web apps… are cross-platform

Desktop, really?
It’s a good, familiar pitch. Web apps… are cross-platform no install process

Desktop, really?
It’s a good, familiar pitch. Web apps… are cross-platform no install process available anywhere

Desktop, really?
It’s a good, familiar pitch. Web apps… are cross-platform no install process available anywhere taste like cloud

Yes, desktop.

Yes, desktop.
It’s 2009, no desktop is an island

Yes, desktop.
It’s 2009, no desktop is an island At Last.fm, our desktop strategy was key to our crazy growth

Yes, desktop.
It’s 2009, no desktop is an island At Last.fm, our desktop strategy was key to our crazy growth Along the way, discovered some useful models for desktop-web interaction

Yes, desktop.
It’s 2009, no desktop is an island At Last.fm, our desktop strategy was key to our crazy growth Along the way, discovered some useful models for desktop-web interaction Hints that desktop might be even more important in future

In the beginning…

In the beginning…
Last.fm began in 2002 as two separate projects

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time

Fig. 1-a

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time

Fig. 1-a

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time 𝄞

Fig. 1-a

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time 𝄞

Fig. 1-a

In the beginning…
Last.fm began in 2002 as two separate projects : personal online radio that learns what you like and gets better over time 𝄞

Fig. 1-a

In the beginning…

In the beginning…
: desktop media player plugins that track (“scrobble”) what you listen to, build up detailed personal music profile

In the beginning…
: desktop media player plugins that track (“scrobble”) what you listen to, build up detailed personal music profile

Fig. 1-b

In the beginning…
: desktop media player plugins that track (“scrobble”) what you listen to, build up detailed personal music profile

Fig. 1-b

In the beginning…
: desktop media player plugins that track (“scrobble”) what you listen to, build up detailed personal music profile

Fig. 1-b

In the beginning…
: desktop media player plugins that track (“scrobble”) what you listen to, build up detailed personal music profile

om nom nom

Fig. 1-b

Last.fm in 2003

Audioscrobbler in 2003

Last.fm

Last.fm
Combining the two = ideal feedback loop for crowdsourced music recommendation

Last.fm
Combining the two = ideal feedback loop for crowdsourced music recommendation Last.fm and Audioscrobbler gradually merged over 2004–2006

Last.fm
Combining the two = ideal feedback loop for crowdsourced music recommendation Last.fm and Audioscrobbler gradually merged over 2004–2006 Online radio and music recommendation have become primary user-facing services of Last.fm

Last.fm
Combining the two = ideal feedback loop for crowdsourced music recommendation Last.fm and Audioscrobbler gradually merged over 2004–2006 Online radio and music recommendation have become primary user-facing services of Last.fm But the fuel comes from the desktop – via scrobbling

Last.fm

Last.fm
What’s in a scrobble?

Last.fm
What’s in a scrobble? Made from very basic metadata:
user name track name artist name timestamp

Last.fm

Last.fm
The API for sending this data to our servers has been public since our inception

Last.fm
The API for sending this data to our servers has been public since our inception Last.fm only added an official scrobbling app in mid-2006

Last.fm
The API for sending this data to our servers has been public since our inception Last.fm only added an official scrobbling app in mid-2006 More than 100 media players, devices, and platforms can scrobble, and we currently handle up to 800 / second at peak

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

World o’ scrobbles

Emacs

World o’ scrobbles

World o’ scrobbles
“My name’s Matt and I’ve just listened to ‘Edmonton’ by the Rural Alberta Advantage”…times 30 billion

World o’ scrobbles
“My name’s Matt and I’ve just listened to ‘Edmonton’ by the Rural Alberta Advantage”…times 30 billion (That’s a lot of music taste data)

World o’ scrobbles
“My name’s Matt and I’ve just listened to ‘Edmonton’ by the Rural Alberta Advantage”…times 30 billion (That’s a lot of music taste data) But why all this scrobbling, especially with desktop barriers-to-entry? And how did it drive growth?

Scrobbling and growth

Scrobbling and growth
Scrobbling helps the scrobbler first: their profile pages show off their awesome music taste in real-time

Scrobbling and growth
Scrobbling helps the scrobbler first: their profile pages show off their awesome music taste in real-time Scrobbling helps the network next: every time we don’t recognize an artist or track, we add it to our database

Desktop growth fuel
(among other things, this creates a page for it)

Desktop growth fuel
(among other things, this creates a page for it)

Desktop growth fuel

Desktop growth fuel
Ambient page creation via desktop app

Desktop growth fuel
Ambient page creation via desktop app Tons of incoming links to personal music profiles + long tail of pages built by scrobbles = great free Google juice

Desktop growth fuel
Ambient page creation via desktop app Tons of incoming links to personal music profiles + long tail of pages built by scrobbles = great free Google juice 12 million artist pages 43 million track pages 25+ million unique active users per month

Desktop growth fuel

Desktop growth fuel
Kept desktop app unobtrusive and simple during successive website updates

Desktop growth fuel
Kept desktop app unobtrusive and simple during successive website updates Only a few major additions since 2006

Desktop growth fuel
Kept desktop app unobtrusive and simple during successive website updates Only a few major additions since 2006 iTunes bootstrapping

Desktop growth fuel
Kept desktop app unobtrusive and simple during successive website updates Only a few major additions since 2006 iTunes bootstrapping Audio fingerprinting

Enough about music

Enough about music
We’re pretty lucky to be running a music service

Enough about music
We’re pretty lucky to be running a music service Are the concepts behind scrobbling useful for anything else?

Scrobbles = attention data

Scrobbles = attention data
Attention data is a digital record that describes the time spent interacting with someone or something.
- Jim Meyer, http://www.usingattention.com/2006/08/19/ what-is-attention-data/

Scrobbles = attention data
Attention data is a digital record that describes the time spent interacting with someone or something.
- Jim Meyer, http://www.usingattention.com/2006/08/19/ what-is-attention-data/

Scrobbling doesn’t ask a user to change or develop new behaviours; it asks permission to record existing ones

Attention data

Attention data
Tons of these interactions are happening every minute on the desktop

Attention data
Tons of these interactions are happening every minute on the desktop downloading / browsing photos from a camera

Attention data
Tons of these interactions are happening every minute on the desktop downloading / browsing photos from a camera chatting to friends on IM

Attention data
Tons of these interactions are happening every minute on the desktop downloading / browsing photos from a camera chatting to friends on IM annotating a research paper

Attention data
Tons of these interactions are happening every minute on the desktop downloading / browsing photos from a camera chatting to friends on IM annotating a research paper watching videos

Attention data
Tons of these interactions are happening every minute on the desktop downloading / browsing photos from a camera chatting to friends on IM annotating a research paper watching videos (your desktop interaction here)

Working with attention

Working with attention
Your service should seek to amplify + add value to attention data

Working with attention
Your service should seek to amplify + add value to attention data In doing so, you ideally give it...

Working with attention
Your service should seek to amplify + add value to attention data In doing so, you ideally give it... more personal value (this comes first, don’t neglect it)

Working with attention
Your service should seek to amplify + add value to attention data In doing so, you ideally give it... more personal value (this comes first, don’t neglect it) network value (this is where your service can really shine)

More desktop principles

More desktop principles
Expose a good API from the start (good != elaborate)

More desktop principles
Expose a good API from the start (good != elaborate) Don’t force users to change habits; use desktop to give them an on-ramp

More desktop principles
Expose a good API from the start (good != elaborate) Don’t force users to change habits; use desktop to give them an on-ramp Works for more than just music or attention data (Tripit/Dopplr itinerary parsing, photo uploaders)

More desktop principles
Expose a good API from the start (good != elaborate) Don’t force users to change habits; use desktop to give them an on-ramp Works for more than just music or attention data (Tripit/Dopplr itinerary parsing, photo uploaders) Desktop + privacy balance = hard but essential (being open source and offering data export helps)

So what about...

The Future?

The Future?
Bernal Sphere, 1970s (Apologies to Matt Jones, Dopplr)

The Future?
Bernal Sphere, 1970s (Apologies to Matt Jones, Dopplr)

The thinking here seems to be: “People like planned garden communities, and space is the future, so let’s just put one in space! Yeah! That’s much better!”

Utopian desktop futures

Utopian desktop futures
AIR

Utopian desktop futures
AIR Prism

Utopian desktop futures
AIR Prism Google Gears

Utopian desktop futures
AIR Prism Google Gears Songbird

Utopian desktop futures
AIR Prism Google Gears Songbird These let us web developers build desktop apps, potentially for the first time, ZOMG

Utopian desktop futures

Utopian desktop futures
All these projects are interesting and exciting and you should look them up

Utopian desktop futures
All these projects are interesting and exciting and you should look them up …cause I’m not going to talk about them.

Utopian desktop futures
All these projects are interesting and exciting and you should look them up …cause I’m not going to talk about them. (I’m not yet convinced they significantly change the web OR the desktop. They just move it around a bit.)

An alternate vision
from the Last.fm labs

Turn it inside out

Turn it inside out
Instead of sending local content TO the web (the on-ramp) or putting the web inside a desktop experience (Songbird, AIR)...

Turn it inside out
Instead of sending local content TO the web (the on-ramp) or putting the web inside a desktop experience (Songbird, AIR)... ...why can’t the web make local content better? And leave it there?

Turn it inside out
Instead of sending local content TO the web (the on-ramp) or putting the web inside a desktop experience (Songbird, AIR)... ...why can’t the web make local content better? And leave it there? …using proven desktop conventions and programming languages?

Introducing Boffin

Introducing Boffin
Last.fm’s crowdsourced music intelligence meets your local music collection

Introducing Boffin
Last.fm’s crowdsourced music intelligence meets your local music collection [Demo]

Introducing Boffin
Last.fm’s crowdsourced music intelligence meets your local music collection [Demo] Download Mac, Windows, or source: http://is.gd/lDLG

Parting tips

Make it selfish

Parting tips

Make it selfish Make it open

Parting tips

Make it selfish Make it open

Parting tips

Amplify user attention

Make it selfish Make it open

Parting tips

Amplify user attention Create on-ramps to your web experience

Make it selfish Make it open

Parting tips

Amplify user attention Create on-ramps to your web experience Be wary of uptopian futures that involve platform lock-in

Make it selfish Make it open

Parting tips

Amplify user attention Create on-ramps to your web experience Be wary of uptopian futures that involve platform lock-in Befriend local desktop developers, trade notes, learn from each other

Make it selfish Make it open

Parting tips

Amplify user attention Create on-ramps to your web experience Be wary of uptopian futures that involve platform lock-in Befriend local desktop developers, trade notes, learn from each other Use your web smarts to make the desktop exciting again

Any questions?
See you online: www.last.fm/user/flaneur www.twitter.com/flaneur irc.audioscrobbler.com matt@last.fm