Transcript
Page 1: How to build desktop apps that help your web app succeed

How to build desktop apps that help your web app succeed

Matthew Ogle ([email protected]) FOWA Dublin, 6 March 2009

Page 2: How to build desktop apps that help your web app succeed

Wait, desktop?

Page 3: How to build desktop apps that help your web app succeed

Wait, desktop?

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

Page 4: How to build desktop apps that help your web app succeed

Wait, desktop?

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

How many of you use Gmail as a primary email client?

Page 5: How to build desktop apps that help your web app succeed

Desktop, really?

Page 6: How to build desktop apps that help your web app succeed

Desktop, really?

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

Page 7: How to build desktop apps that help your web app succeed

Desktop, really?

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

are cross-platform

Page 8: How to build desktop apps that help your web app succeed

Desktop, really?

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

are cross-platform

no install process

Page 9: How to build desktop apps that help your web app succeed

Desktop, really?

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

are cross-platform

no install process

available anywhere

Page 10: How to build desktop apps that help your web app succeed

Desktop, really?

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

are cross-platform

no install process

available anywhere

taste like cloud

Page 11: How to build desktop apps that help your web app succeed

Yes, desktop.

Page 12: How to build desktop apps that help your web app succeed

Yes, desktop.

It’s 2009, no desktop is an island

Page 13: How to build desktop apps that help your web app succeed

Yes, desktop.

It’s 2009, no desktop is an island

At Last.fm, our desktop strategy was key to our crazy growth

Page 14: How to build desktop apps that help your web app succeed

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

Page 15: How to build desktop apps that help your web app succeed

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

Page 16: How to build desktop apps that help your web app succeed

In the beginning…

Page 17: How to build desktop apps that help your web app succeed

In the beginning…

Last.fm began in 2002 as two separate projects

Page 18: How to build desktop apps that help your web app succeed

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

Page 19: How to build desktop apps that help your web app succeed

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

Page 20: How to build desktop apps that help your web app succeed

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

Page 21: How to build desktop apps that help your web app succeed

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

Page 22: How to build desktop apps that help your web app succeed

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

Page 23: How to build desktop apps that help your web app succeed

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

Page 24: How to build desktop apps that help your web app succeed

In the beginning…

Page 25: How to build desktop apps that help your web app succeed

In the beginning…

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

Page 26: How to build desktop apps that help your web app succeed

In the beginning…

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

Fig. 1-b

Page 27: How to build desktop apps that help your web app succeed

In the beginning…

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

Fig. 1-b

Page 28: How to build desktop apps that help your web app succeed

In the beginning…

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

Fig. 1-b

Page 29: How to build desktop apps that help your web app succeed

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

Page 30: How to build desktop apps that help your web app succeed

Last.fm in 2003

Page 31: How to build desktop apps that help your web app succeed

Audioscrobbler in 2003

Page 32: How to build desktop apps that help your web app succeed

Last.fm

Page 33: How to build desktop apps that help your web app succeed

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

Page 34: How to build desktop apps that help your web app succeed

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

Last.fm and Audioscrobbler gradually merged over 2004–2006

Page 35: How to build desktop apps that help your web app succeed

Last.fmCombining 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

Page 36: How to build desktop apps that help your web app succeed

Last.fmCombining 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

Page 37: How to build desktop apps that help your web app succeed

Last.fm

Page 38: How to build desktop apps that help your web app succeed

Last.fm

What’s in a scrobble?

Page 39: How to build desktop apps that help your web app succeed

Last.fm

What’s in a scrobble?

Made from very basic metadata: user nametrack nameartist nametimestamp

Page 40: How to build desktop apps that help your web app succeed
Page 41: How to build desktop apps that help your web app succeed

Last.fm

Page 42: How to build desktop apps that help your web app succeed

Last.fm

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

Page 43: How to build desktop apps that help your web app succeed

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

Page 44: How to build desktop apps that help your web app succeed

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

Page 45: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 46: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 47: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 48: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 49: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 50: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 51: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 52: How to build desktop apps that help your web app succeed

World o’ scrobbles

Emacs

Page 53: How to build desktop apps that help your web app succeed

World o’ scrobbles

Page 54: How to build desktop apps that help your web app succeed

World o’ scrobbles

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

Page 55: How to build desktop apps that help your web app succeed

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)

Page 56: How to build desktop apps that help your web app succeed

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?

Page 57: How to build desktop apps that help your web app succeed

Scrobbling and growth

Page 58: How to build desktop apps that help your web app succeed

Scrobbling and growth

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

Page 59: How to build desktop apps that help your web app succeed

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

Page 60: How to build desktop apps that help your web app succeed

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

Page 61: How to build desktop apps that help your web app succeed

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

Page 62: How to build desktop apps that help your web app succeed

Desktop growth fuel

Page 63: How to build desktop apps that help your web app succeed

Desktop growth fuel

Ambient page creation via desktop app

Page 64: How to build desktop apps that help your web app succeed

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

Page 65: How to build desktop apps that help your web app succeed

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 pages43 million track pages25+ million unique active users per month

Page 66: How to build desktop apps that help your web app succeed

Desktop growth fuel

Page 67: How to build desktop apps that help your web app succeed

Desktop growth fuel

Kept desktop app unobtrusive and simple during successive website updates

Page 68: How to build desktop apps that help your web app succeed

Desktop growth fuel

Kept desktop app unobtrusive and simple during successive website updates

Only a few major additions since 2006

Page 69: How to build desktop apps that help your web app succeed

Desktop growth fuel

Kept desktop app unobtrusive and simple during successive website updates

Only a few major additions since 2006

iTunes bootstrapping

Page 70: How to build desktop apps that help your web app succeed

Desktop growth fuel

Kept desktop app unobtrusive and simple during successive website updates

Only a few major additions since 2006

iTunes bootstrapping

Audio fingerprinting

Page 71: How to build desktop apps that help your web app succeed

Enough about music

Page 72: How to build desktop apps that help your web app succeed

Enough about music

We’re pretty lucky to be running a music service

Page 73: How to build desktop apps that help your web app succeed

Enough about music

We’re pretty lucky to be running a music service

Are the concepts behind scrobbling useful for anything else?

Page 74: How to build desktop apps that help your web app succeed

Scrobbles = attention data

Page 75: How to build desktop apps that help your web app succeed

Scrobbles = attention dataAttention 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/

Page 76: How to build desktop apps that help your web app succeed

Scrobbles = attention dataAttention 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

Page 77: How to build desktop apps that help your web app succeed

Attention data

Page 78: How to build desktop apps that help your web app succeed

Attention dataTons of these interactions are happening every minute on the desktop

Page 79: How to build desktop apps that help your web app succeed

Attention dataTons of these interactions are happening every minute on the desktop

downloading / browsing photos from a camera

Page 80: How to build desktop apps that help your web app succeed

Attention dataTons of these interactions are happening every minute on the desktop

downloading / browsing photos from a camera

chatting to friends on IM

Page 81: How to build desktop apps that help your web app succeed

Attention dataTons 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

Page 82: How to build desktop apps that help your web app succeed

Attention dataTons 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

Page 83: How to build desktop apps that help your web app succeed

Attention dataTons 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)

Page 84: How to build desktop apps that help your web app succeed

Working with attention

Page 85: How to build desktop apps that help your web app succeed

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

Page 86: How to build desktop apps that help your web app succeed

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

In doing so, you ideally give it...

Page 87: How to build desktop apps that help your web app succeed

Working with attentionYour 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)

Page 88: How to build desktop apps that help your web app succeed

Working with attentionYour 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)

Page 89: How to build desktop apps that help your web app succeed

More desktop principles

Page 90: How to build desktop apps that help your web app succeed

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

Page 91: How to build desktop apps that help your web app succeed

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

Don’t force users to change habits; use desktop to give them an on-ramp

Page 92: How to build desktop apps that help your web app succeed

More desktop principlesExpose 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)

Page 93: How to build desktop apps that help your web app succeed

More desktop principlesExpose 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)

Page 94: How to build desktop apps that help your web app succeed

So what about...

Page 95: How to build desktop apps that help your web app succeed

The Future?

Page 96: How to build desktop apps that help your web app succeed

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

Page 97: How to build desktop apps that help your web app succeed

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!”

Page 98: How to build desktop apps that help your web app succeed

Utopian desktop futures

Page 99: How to build desktop apps that help your web app succeed

Utopian desktop futuresAIR

Page 100: How to build desktop apps that help your web app succeed

Utopian desktop futuresAIR

Prism

Page 101: How to build desktop apps that help your web app succeed

Utopian desktop futuresAIR

Prism

Google Gears

Page 102: How to build desktop apps that help your web app succeed

Utopian desktop futuresAIR

Prism

Google Gears

Songbird

Page 103: How to build desktop apps that help your web app succeed

Utopian desktop futuresAIR

Prism

Google Gears

Songbird

These let us web developers build desktop apps, potentially for the first time, ZOMG

Page 104: How to build desktop apps that help your web app succeed

Utopian desktop futures

Page 105: How to build desktop apps that help your web app succeed

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

Page 106: How to build desktop apps that help your web app succeed

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

…cause I’m not going to talk about them.

Page 107: How to build desktop apps that help your web app succeed

Utopian desktop futuresAll 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.)

Page 108: How to build desktop apps that help your web app succeed

An alternate visionfrom the Last.fm labs

Page 109: How to build desktop apps that help your web app succeed

Turn it inside out

Page 110: How to build desktop apps that help your web app succeed

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

Page 111: How to build desktop apps that help your web app succeed

Turn it inside outInstead 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?

Page 112: How to build desktop apps that help your web app succeed

Turn it inside outInstead 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?

Page 113: How to build desktop apps that help your web app succeed

Introducing Boffin

Page 114: How to build desktop apps that help your web app succeed

Introducing Boffin

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

Page 115: How to build desktop apps that help your web app succeed

Introducing Boffin

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

[Demo]

Page 116: How to build desktop apps that help your web app succeed

Introducing Boffin

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

[Demo]

Download Mac, Windows, or source:http://is.gd/lDLG

Page 117: How to build desktop apps that help your web app succeed

Parting tips

Page 118: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Page 119: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

Page 120: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

Amplify user attention

Page 121: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

Amplify user attention

Create on-ramps to your web experience

Page 122: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

Amplify user attention

Create on-ramps to your web experience

Be wary of uptopian futures that involve platform lock-in

Page 123: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

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

Page 124: How to build desktop apps that help your web app succeed

Parting tipsMake it selfish

Make it open

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