web as a platform
DESCRIPTION
Web as a Platform presentation given by Evgeny Morozov at a Transitions Online training in Prague, May 09/2008TRANSCRIPT
Web as a Platform
May 09, 2008
by Evgeny Morozov
Why do we need Why do we need platforms?platforms?
THEY HELP US BUILD STUFF
They help us build stuffThey help us build stuff
Windows OS is a platformWindows OS is a platform
It helped to build this man's fortuneIt helped to build this man's fortune
But it also helped to build millions of software applications for
Windows
How do you become a Bill Gates (i.e. How do you become a Bill Gates (i.e. build a successful platform)?build a successful platform)?
IMPORTANT TAKE-AWAY!IMPORTANT TAKE-AWAY!
Caution: do you really want it?
Answer: Develop a good API
Do we need another API? :-)
Academic Programs InternationalAmerican Petroleum InstituteAustralian Property Institute
Australian Pharmaceuticals IndustriesAmerican Press Institute
Aerospace Products InternationalAnimal Protection Institute
Asia Paranormal InvestigatorsAttachment Parenting International
American Poster Institute
API crash-course
API, or Application Programming Interface, is a set of functions that one computer program makes available
to other programs so they can talk to it directly.
Programs talk to each other all the time ( programmers not so much;-)
How does one create software that draws?
Program: "I need to draw a line"Program: "I need to draw a line"
Windows: "To draw a line, use Function 1”Windows: "To draw a line, use Function 1”
COMMAND: "...if a program asks for Function COMMAND: "...if a program asks for Function 1, execute Activity 1”1, execute Activity 1”
Result: Photoshop
Program: I need to input & edit textProgram: I need to input & edit text
OS: “To delete, use Function 1, to start a new OS: “To delete, use Function 1, to start a new line use Function 2”line use Function 2”
COMMAND: “If program requests Function 1, COMMAND: “If program requests Function 1, execute Activity 1; if program requests execute Activity 1; if program requests
Function 2, execute Activity 2”Function 2, execute Activity 2”
Result: MS Office
+ millions of other commands
=Microsoft Vista (400 USD and 20 GB of space)
How Not to Become a Bill Gates
Build a poorly structured and undocumented platform
Internet was born in chaos, more a Internet was born in chaos, more a data dump than a platformdata dump than a platform
Internet before Web2.0 was great for displaying and viewing data, not for building data applications
Teaser: Web2.0 changed some of that
...but first
Crash course on “Data Crash course on “Data studies”studies”
1. Content2. Structure
3. Presentation
1. Content1. Content2. Structure2. Structure3. Presentation3. Presentation
Web data: 3 key features
:CONTENT::CONTENT:
Content
“Free for all” area that contains just the words (or numbers)
The words could be about:
* A story * Instruction * Definitions * Or what have you
text
:STRUCTURE::STRUCTURE:
II. Structure
This is the document type and the organization ofits elements. For example:
* Memo * Contract
* Newspaper article * Glossary
* Index
:PRESENTATION::PRESENTATION:
III. Presentation
This is where the information presented to the client is organized and formatted
Presentation would control elements such as font types and sizes, etc
Time for inappropriate analogy!
Is music data? Is music data?
Anatomy of a tune
1.1. Content (the actual sounds)Content (the actual sounds)2. Structure (length, volume)2. Structure (length, volume)
3. Presentation (tempo, mood)3. Presentation (tempo, mood)
Anatomy of a tuneAnatomy of a tune
Same tune; two methods
The intuitive wayThe intuitive way
The academic wayThe academic way
Web1.0: Era of HTML
With HTML your Content, Structure, andPresentation are all integrated.
In short, the HTML code
a) makes your page look like it doesb) contains the actual data displayed on the page
c) controls fonts, text size, etc
HTML PROVIDES FOR DISPLAY, HTML PROVIDES FOR DISPLAY, NOTNOT DOCUMENT DOCUMENT STRUCTURE, SEMANTICS, OR CONTENTSTRUCTURE, SEMANTICS, OR CONTENT
HTML=The Intuitive Way
You play the tune even though you have no idea about sheet music
Web2.0: Era of XML
Content, Structure, Presentation are separate
XML provides a standard approach for
*Describing information * Capturing information
* Processing information * Publishing information
XML allows you to describe the XML allows you to describe the abstract structure of your data using abstract structure of your data using
your own vocabularyyour own vocabulary
XML=The Academic Way
You know how to read musicYou know how to read music
Cooking Rhubarb CobblerEvgeny Morozov
May,09 2008Rhubarb Cobbler made with bananas as the main
sweetener. It was delicious. Basically it was2 1/2 cups diced rhubarb
2 tablespoons sugar2 fairly ripe bananas
1/4 teaspoon cinnamondash of nutmeg
Combine all and use as cobbler, pie, or crisp. Related recipes: Garden Quiche
What is “rhubarb”?
HTML<h1>Cooking Rhubarb Cobbler</h1>
<h2>Evgeny Morozov</h2><h3>May,09 2008</h3>
Rhubarb Cobbler made with bananas as the main sweetener. It was delicious. Basically it was
<table> <tr><td> 2 1/2 cups <td> diced rhubarb
<tr><td> 2 tablespoons <td> sugar <tr><td> 2 <td> fairly ripe bananas
<tr><td> 1/4 teaspoon <td> cinnamon <tr><td> dash of <td> nutmeg
</table>
Combine all and use as cobbler, pie, or crisp.
Related recipes: <a href="#GardenQuiche">Garden Quiche</a>
XML<recipe id="117" category="dessert">
<title>Rhubarb Cobbler</title> <author>Evgeny Morozov></author>
<date>May 09, 2008</date>
<description> Rhubarb Cobbler made with bananas as the main sweetener.
It was delicious. </description>
<ingredients> <item><amount>2 1/2 cups</amount><type>diced rhubarb</type></item>
<item><amount>2 tablespoons</amount><type>sugar</type></item> <item><amount>2</amount><type>fairly ripe bananas</type></item>
<item><amount>1/4 teaspoon</amount><type>cinnamon</type></item>
<item><amount>dash of</amount><type>nutmeg</type></item> </ingredients>
<preparation> Combine all and use as cobbler, pie, or crisp.
</preparation>
<related url="#GardenQuiche">Garden Quiche</related></recipe>
Building an APIBuilding an API
Super-cool cooking site: “How do I display Super-cool cooking site: “How do I display how many spoons of sugar to use to cook how many spoons of sugar to use to cook
Rhubarb Cobbler?”Rhubarb Cobbler?”
XML site: “Query for <amount> of the <type> XML site: “Query for <amount> of the <type> “sugar”“sugar”
HTML site: I beg your pardon? (eventually HTML site: I beg your pardon? (eventually crashes ;-)crashes ;-)
From rhubarb to YouTube
YouTube's API
Your blogYour blog: "I need to display all videos from your site : "I need to display all videos from your site tagged as "FUNNY" tagged as "FUNNY"
YouTubeYouTube: "Please access videos at : "Please access videos at youtube.com/tag/word, where "word" should be youtube.com/tag/word, where "word" should be replaced with "FUNNY" replaced with "FUNNY"
COMMAND:COMMAND: "...to display video tagged with a "...to display video tagged with a particular tag, the query should be of the form particular tag, the query should be of the form youtube.com/word/tag/"youtube.com/word/tag/"
AMAZON's API:
Online retailer: "I need to display price for all Amazon items I am selling”
Amazon: "Please ask for parameter PRICE to get price information"
COMMAND: "...if a third-party site asks for PRICE, display PRICE value"
Online retailer: "I need to display price for all Online retailer: "I need to display price for all Amazon items I am selling” Amazon items I am selling”
Amazon: "Please ask for parameter PRICE to Amazon: "Please ask for parameter PRICE to get price information" get price information"
COMMAND: "...if a third-party site asks for COMMAND: "...if a third-party site asks for PRICE, display PRICE value"PRICE, display PRICE value"
XML allows to EASILY move data between different platforms
XML allows to EASILY move XML allows to EASILY move data between different data between different
platformsplatforms
How do you play the guitar part on the piano?
Academic: “just look at the Academic: “just look at the sheets, stupid”sheets, stupid”
““Intuitive”: “this keyboard Intuitive”: “this keyboard looks...ummm...weird..”looks...ummm...weird..”
Web2.0 explained in one line
XML liberated data from its “carriers”
RSS: a way to distribute XML contentRSS: a way to distribute XML content
RSS is content neutral: it could deliver text,RSS is content neutral: it could deliver text, could be photos, could be videoscould be photos, could be videos
It's just a pipeline carrying content to the end-It's just a pipeline carrying content to the end-useruser
Push versus Pull
““Digital Footprints”Digital Footprints”
Why remix?
Most data sets are imperfect and incomplete; Most data sets are imperfect and incomplete; mixing it with other sets of data often helps make mixing it with other sets of data often helps make
a better/informed decisiona better/informed decision
Leg Room Information
+Flights
= Flights with more Leg Room!
Remixing the data was extremely Remixing the data was extremely difficult in the age of Web1.0difficult in the age of Web1.0
Remixing in the age of Web1.0
Remixing in the age of Web2.0
Spot the difference
WEB1.0
WEB1.0WEB1.0 WEB2.0
Web2.0: the Age of the Conductor
Yahoo Pipes: The Conductor
It's not oil, it's data!
A web mashup is a web page or application that combines data from two or more external online sources
Mash-ups: The Lego Model
3 Lego blocks
PicturesMapsText
Pictures
Pictures
Maps
Maps
Text (news)
Text (news?)
Mash-up Matrix (basic)
Pictures Text MapsPictures - Mash-up Mash-up
Text Mash-up - Mash-upMaps Mash-up Mash-up -
Pictures+Text
Pictures+Maps
Pictures+Maps
Maps+Text
Mash-up Matrix Advanced
Pictures News Maps Tags Weather Stock prices Wikipedia Biographies MusicPictures X ? ?
News XMaps XTags X
Weather XStock prices XWikipedia X
Biographies XMusic X
Programmable Web Mashup Matrix
#Most mash-ups are developed by third-parties
#Just let them know how to use your functions (=provide an API) or give out as much raw data as
possible (=provide XML feeds)
Good APIs
GOOGLE MAPS: 1412 mash-upsFLICKR: 336 mash-ups
YOUTUBE: 239 mash-ups
Source: Programmable Web, May 2008
Maps Mash-ups: case-study
Working with textual data can Working with textual data can often be EVEN more rewarding often be EVEN more rewarding
than working with mapsthan working with maps
COMMUNITY