SlideShare uma empresa Scribd logo
1 de 160
Yahoo!
@ Nike
May 4, 2009




              Tom Hughes-Croucher
                     croucher@yahoo-inc.com
Overview



• Blueprint
• Site Explorer / BOSS
• Search Monkey
BLUEPRINT
    the mobile platform
The Blueprint for Today

• Welcome
• Blueprint Overview
• Blueprint Developer Tutorial
• Blueprint Design Language
• Further Discussion

                                 BLUEPRINT
We know it’s massive..
5


4

3

    2

    1
                         2010
    0
            2005

    Personal computers      Mobile phones




                                     * Source eTForecasts
?
Do your services work?
Yahoo!’s mobile mission:

to enable a mobile ecosystem
for billions of users
m.yahoo.com
m.yahoo.com
No 1 mobile destination

Maximum coverage..
but a poor experience
for high-end users.


Definitely Mobile 1.0
Seems familiar?
We’ve moved on..
I want my
Mobile 2.0
Rich UI
Rich UI
Rich UI
Rich UI
Lightweight
XML markup
language.
                      <placard layout=”simple” class=”link”>
Based on X-Forms.       <layout-items>
                          <image resource=”email.gif” />
                          <block class=”title”>Add Email</block>

Purely declarative,     </layout-items>
                        <load event=”activate” resource=”mail.bp” />

no new scripting      </placard>


language necessary.
Lightweight
                      <placard layout=”simple” class=”link”>

XML markup              <layout-items>
                          <image resource=”email.gif” />

language.                 <block class=”title”>Add Email</block>
                        </layout-items>
                        <load event=”activate” resource=”mail.bp” />
                      </placard>
Based on X-Forms.
Purely declarative,
no new scripting
language necessary.
Not a single device
Cool. What else?
It looks great
It looks great
Itʼs powerful
location-based services

mapping controls

device optimization

image & video controls
Itʼs powerful
location-based services

mapping controls

device optimization

image & video controls
It delivers
It delivers
It delivers
BLUEPRINT    the mobile platform



 Yahoo! Blueprint Apps      3rd Party Blueprint Apps



         Blueprint language specification


Infrastructure      Runtimes                SDK
    Gallery          Yahoo! Go         Developer Tools
  Monetization      Mobile Apps          Reference
   Analytics        Mobile Sites          Tutorials
BP is the platform


        Blueprint Language
BP is the platform
                             •   XML
                             •   XForms
                             •   UED Patterns
                             •   Device Services

        Blueprint Language
BP is the platform
                                    •   XML
                                    •   XForms
                                    •   UED Patterns
                                    •   Device Services

              Blueprint Language




HTML   J2ME    S60        WinMob           iPhone         (Android)




              Blueprint Renderers
BP is the platform
                                    •   XML
                                    •   XForms
                                    •   UED Patterns
                                    •   Device Services

              Blueprint Language




                                    Native


HTML   J2ME    S60        WinMob             iPhone       (Android)




              Blueprint Renderers
Blueprint widgets
     GO
integrated into the client
included in the Gallery
can be added to Carousel
reach millions of users
Blueprint widgets
      GO
integrated into the client
included in the Gallery
can be added to Carousel
reach millions of users

available today
Blueprint apps            new

Java, Windows Mobile
& Symbian devices

standalone application
freely distribute
runs on 100s of devices
Blueprint apps             new

Java, Windows Mobile
& Symbian devices

standalone application
freely distribute
runs on 100s of devices

developer preview now
commercial release later
Blueprint sites             new

xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
Blueprint sites             new

xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
Blueprint sites             new

xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
Blueprint sites             new

xHTML & HTML browsers
your site
your domain
on your infrastructure
supports 1000s of devices
developer preview now
commercial release soon
BLUEPRINT
    the mobile platform
BLUEPRINT
             the mobile platform




not another mobile OS
BLUEPRINTthe mobile platform




not another mobile OS
not a platform for games
BLUEPRINTthe mobile platform




not another mobile OS
not a platform for games
not proprietary
BLUEPRINTthe mobile platform




not another mobile OS
not a platform for games
not proprietary
just return Blueprint XML
BLUEPRINT
    the mobile platform
BLUEPRINT
                 the mobile platform



 An open mobile platform that
makes development easy and is
 the best way to create mobile
       internet services.
BLUEPRINT
    Developer Experience
          Quick Tutorial
I want to build stuff. Today.

• Platform Overview

• Blueprint Language Concept

• Steps to (Widget-) Success

                                BLUEPRINT
BLUEPRINT   the mobile platform




 Yahoo! Blueprint Apps      3rd Party Blueprint Apps



         Blueprint language specification


Infrastructure      Runtimes                SDK
    Gallery          Yahoo! Go         Developer Tools
  Monetization      Mobile Apps          Reference
   Analytics        Mobile Sites          Tutorials
Blueprint Language: What’s that exactly?




                                           BLUEPRINT
Blueprint Language: What’s that exactly?


        XML mark-up language, based on X-Forms




                                                 BLUEPRINT
Blueprint Language: What’s that exactly?


        XML mark-up language, based on X-Forms




            No scripting or procedural code




                                                 BLUEPRINT
Blueprint Language: What’s that exactly?


        XML mark-up language, based on X-Forms




             No scripting or procedural code



      Provides rich mobile core features and services




                                                        BLUEPRINT
Blueprint Language: What’s that exactly?


        XML mark-up language, based on X-Forms




             No scripting or procedural code



      Provides rich mobile core features and services




                          EASY!



                                                        BLUEPRINT
Blueprint XML: Create a Page!


<page>
   <content>
       <module>
          <header layout=quot;simplequot;>
          <layout-items>
              <block class=quot;titlequot;>Greeting</block>
          </layout-items>
          </header>
          <block>Hello World!</block>
       </module>
   </content>
</page>




                                                      BLUEPRINT
Blueprint XML: Create a Map!

<map>
<center>
<latitude>37.3919</latitude>
<longitude>-122.0302</longitude>
</center>
   <map-zoom>6</map-zoom>
   <map-mode>map</map-mode>
   <map-showtraffic>false</map-showtraffic>
   <map-point>
   <location>
       <latitude>37.392916</latitude>
       <longitude>-122.033934</longitude>
       <street>810 Del Rey Ave</street>
       <city>Sunnyvale</city>
       <state>CA</state>
       <zip></zip>
   </location>
   </map-point>
</map>




                                              BLUEPRINT
Blueprint Control: Location
<location-chooser ref=quot;originquot;>
   <label>From:</label>
</location-chooser>

<location-chooser ref=quot;destinationquot;>
   <label>To:</label>
</location-chooser>




     Supports GPS
     or Cell ID:


                                       Find Me




   Does not have GPS or
   Cell ID Information




                                                 BLUEPRINT
Creating Blueprint Services: What do I need?




                                          BLUEPRINT
Creating Blueprint Services: What do I need?


                 Any web-server




                                          BLUEPRINT
Creating Blueprint Services: What do I need?


                  Any web-server




             Use any scripting language




                                          BLUEPRINT
Creating Blueprint Services: What do I need?


                   Any web-server




             Use any scripting language




           Use any existing publishing tools




                                               BLUEPRINT
Creating Blueprint Services: What do I need?


                   Any web-server




             Use any scripting language




           Use any existing publishing tools




                  Return Blueprint!


                                               BLUEPRINT
Building Mobile Widget
       Download the Blueprint SDK
1




                                    BLUEPRINT
Building Mobile Widget
               Download the Blueprint SDK
1




    Blueprint SDK includes
• Blueprint Documentation

• XML Schema definitions

• Templates to get started

• Mobile Widget Sample Code

• PHP helper class (blueprint.php)



                                            BLUEPRINT
Building Mobile Widget
                      Develop your Widget
2




     Widget Request                        HTTP Request

                           Yahoo! Server
     Widget Content                        Blueprint (XML)

                                                               Your
                                                             Web Server
                           Widget
                       Submission


                             Application
                              Package



                                                                 BLUEPRINT
Building Mobile Widget
                                     Develop your Widget
      2




                    Widget Request                        HTTP Request

                                          Yahoo! Server
                    Widget Content                        Blueprint (XML)

                                                                              Your
                                                                            Web Server
2. Create static/
dynamic pages
                                          Widget
    to return
                                      Submission                                2
    Blueprint


                                            Application
                                             Package



                                                                                BLUEPRINT
Building Mobile Widget
                                     Develop your Widget
      2




                    Widget Request                        HTTP Request

                                          Yahoo! Server
                    Widget Content                        Blueprint (XML)

                                                                              Your
                                                                            Web Server
2. Create static/
dynamic pages
                                          Widget
    to return
                                      Submission                                2
    Blueprint

3. Create your
                                            Application
  application
                                             Package
 package and
    submit

                                                   3

                                                                                BLUEPRINT
Building Mobile Widget
                                                 Data flow

       Mobile Phone                             Yahoo! Server                               Your Server

                        Request entry point
    User opens                                             HTTP request to Widget publisher
        Widget                                                URI specified in config.xml

                                                         Includes language and location headers


                                                                  Blueprint page returned

                                                       Includes Content-Type header; may include
                                                       cache-control headers; may include cookies
                                                                  for Widget publisher

                                                         (Cookies stored on Yahoo!
                      Widget content returned            server)

User requests
     new data          Request new content
                                                                    HTTP request …



                                                                                                    BLUEPRINT
Building Mobile Widget
                     Interfacing with Yahoo! Servers

Content Type for Blueprint Services:
Content-Type: application/x-ywidget+xml
Use only the UTF-8 character set.



Using Cookies:
Your server can set/retrieve cookies exactly as if you are serving HTML instead of Blueprint
markup.
The cookies are stored on Yahoo! servers


Cache Control:
Wherever possible, Blueprint pages are cached on the user’s device. To control caching, use
the following standard HTTP headers when serving pages: Cache-Control, ETag, and If-
None-Match. Only these headers affect caching


                                                                                    BLUEPRINT
Building Mobile Widget
                     Interfacing with Yahoo! Servers
Internationalization and Localization:
When Yahoo! Mobile application server sends a page request, the request may contain
several HTTP headers, including:


Accept-Language
RFC 4646/4647 language code
(Example: Accept-Language: en-US)


Geo-Country
ISO 3166 country or UN M.49 region code
(Example: Geo-Country: CA)


You can use the information in the headers to decide what content to return.



                                                                               BLUEPRINT
Building Mobile Widget
                           Package your Widget
3



Application Package is a zip file
  containing
• config.xml

    • Application metadata, including the URL for
      your web server

• gallery.xml

    • Information for the widget gallery

• Image Files

    • Includes icons and screen shots (for the
      gallery)


                                                    BLUEPRINT
Building Mobile Widget
                 Upload your mobile Widget
4


• http://mobile.yahoo.com/developers/test/upload
• Package the widget files into a zip archive
• Upload the .zip file




                                                   BLUEPRINT
Building Mobile Widget
                         Test your mobile Widget
5


1. Yahoo! Go Emulator: http://mobile.yahoo.com/go/tryit
    (Note: External links won’t work)




                      2. Browser http://devtest.m.yahoo.com
                      (Note: GPS and cell-ID won’t work on desktop browser)




                                                                         BLUEPRINT
Building Mobile Widget
                Publish your mobile Widget
6

• http://mobile.yahoo.com/developers/submit/upload
• Please test your widget before publishing
• It may take 1 week for the approval process




                                                     BLUEPRINT
Widgets Development Process Summary

           Download the Blueprint SDK
1



               Develop your Widget
2



               Package your Widget
3



            Upload your mobile Widget
4



             Test your mobile Widget
5



            Publish your mobile Widget
6


                                         BLUEPRINT
Get Numbers: Blueprint
Analytics




                         BLUEPRINT
Links & Support
                         Get the SDK

• Download the SDK
  http://mobile.yahoo.com/developers/download


                           Get Help!

• Yahoo! Tech Group
  http://tech.groups.yahoo.com/group/yhoomobiledevelopers
• Read the Blueprint Blog
  http://mobile.yahoo.net/developer/blog

                                                     BLUEPRINT
The Blueprint Design Language
Tomorrow’s Mobile User Experience
The Language is Evolving




                           BLUEPRINT
Web Sites            Applications

Document Centric          Task Centric
Content Syndication    Native Look & Feel
 Biased to Layout      Richer Experience



       Content
                        Connectivity Optional
    Link Navigation




   Browser            Native Functionality




                                                BLUEPRINT
Internet as a Platform


                                          Structured Experiences
                                             High Level Controls
        Stateless
                                                 MVC Patterns
    Streamed Pages                            Asynchronous Requests
                                                 XForms and XPath
                                                      oh my!




                      Maps                Embedded Web Content
Blueprint Renderer
Native Applications
                      Location Service    Image Transcoding
Yahoo! Services
                      Slideshows          Seamless Search Results
                      Video Transcoding   Voice Recognition
                      Authentication      Advanced Input Controls
Core Control
                      Photo Acquisition   Scaled Hosting
Language




                                                                      BLUEPRINT
On Demand Service Updates




                    Let’s retain the
                  benefits of streamed
                      experiences

                 Organically add features
                  Roll out new services
                Serve up seasonal content




                                   BLUEPRINT
Aggregated Services




            Let’s reuse services already
             implemented and tested
                     by Yahoo!

              ...or anyone serving up
                   Blueprint pages.




                                 BLUEPRINT
Aggregated Services




                      BLUEPRINT
Aggregated Services




            <onesearch/>




                           BLUEPRINT
Web Sites            Applications

Document Centric          Task Centric
Content Syndication    Native Look & Feel
 Biased to Layout      Richer Experience



       Content
                        Connectivity Optional
    Link Navigation




   Browser            Native Functionality




                                                BLUEPRINT
Web Sites                   Applications

Document Centric                 Task Centric
Content Syndication           Native Look & Feel
 Biased to Layout             Richer Experience
                      BLUEPRINT
       Content
                               Connectivity Optional
    Link Navigation




   Browser                   Native Functionality




                                                       BLUEPRINT
BLUEPRINT



Questions?
Site Explorer
Yahoo! Site Explorer / BOSS
Search Engine


• Maximum content
• More in-bound links
• Normative URLs
• Fresh-fresh-fresh
Number of pages
   crawled
Number of pages
   crawled        Inbound links
Number of pages
   crawled                       Inbound links




                  Detail level
Lost Inlinks
Lost Inlinks
6092 Inlinks Lost

       OR

36% Inlinks Lost
Detail level
Unauthenticated
Authenticated
B.O.S.S.
Build (your) Own Search Search
Site Explorer in BOSS


• Inlinks (v1/v2)
• Page Data (v1/v2)
• Ping (v1)
• Update Notification (v1)
Inlinks
Inlinks
Page Data
Ping / Update Notification




        Get on the Yahoo! Search
                 Radar!
Site Explorer



• https://siteexplorer.search.yahoo.com/
• http://developer.yahoo.com/search/siteexplorer/
• http://developer.yahoo.com/boss
Site Explorer
Questions?
Feeding the Monkey: the SearchMonkey
data layer, presentation applications, and
                   you
What is SearchMonkey?
         an open platform for using structured data to build more useful
                           and relevant search results



Before                                    After
Enhanced Result




                   Key/value Pairs
   Image   Links
                    or abstract
Infobar



          Summary   Blob
How to get data to
SearchMonkey?        Humans see:
                     • name
                     • picture of a person
                     • current job
                     • industry, …

                     Computers see:
                     an undifferentiated
                     blob of HTML

                     Can we make
                     computers
                     smarter?
Artificial intelligence is hard.
Plus…
How does it Work?
How does it Work?




Acme.com’s DB
How does it Work?




Acme.com’s Site




Acme.com’s DB
How does it Work?
                      site owners/publishers share structured data with Yahoo!
1




    Acme.com’s Site




    Acme.com’s DB
How does it Work?
                       site owners/publishers share structured data with Yahoo!
1




              RDF/Microformat Markup


    Acme.com’s Site

                        Index




    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1




              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed



    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1




              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed



    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1




                       Page Extraction

              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed



    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1




                       Page Extraction

              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed


                      Web Services
    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1

                       site owners & third-party developers build SearchMonkey apps
2




                       Page Extraction

              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed


                      Web Services
    Acme.com’s DB
How does it Work?
                             site owners/publishers share structured data with Yahoo!
1

                       site owners & third-party developers build SearchMonkey apps
2

               consumers customize their search experience with Enhanced Results or Infobars
3



                       Page Extraction

              RDF/Microformat Markup


    Acme.com’s Site

                             Index



              DataRSS feed


                      Web Services
    Acme.com’s DB
Data Sources: RDF and Microformats
   Name        Cached   Open    Mode               Notes
Yahoo! Index    yes     yes    Passive     Old-School Y! Index data
RDFa, eRDF      yes     yes    Passive   Vocab + markup decoupled
Microformats    yes     yes    Passive    Vocab + markup coupled
DataRSS feed    yes      no     Active        Atom + metadata
    XSLT         no      no     Active      Good for prototyping
 Web Service     no      no     Active      Brings in remote data
Approach #1: Embedded RDF
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML+RDFa 1.0//EN”
       quot;http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtdquot;>
<html xmlns=http://www.w3.org/1999/xhtml
    xmlns:dc=http://purl.org/dc/elements/1.1/
    xmlns:foaf=http://xmlns.com/foaf/0.1/
                                                    •Cached data
    lang=quot;enquot; xml:lang=quot;enquot;>
<head>
                                                          •allows Enhanced Results
 <title>The Amazing Home Page of Joe Smith</title>
</head>
                                                          •but not for dynamic data
<body>
 <h1 property=quot;dc:titlequot;>Joe's Home Page</h1>

                                                    • Reuse existing markup
 <div rel=quot;foaf:makerquot;>
  <h2 property=quot;foaf:namequot;>Joe Smith</h2>
  <div rel=quot;foaf:depictionquot;
                                                      • but requires site redesign
      resource=quot;http://joesmith.org/images/jsmith.pngquot;>
    <img src=quot;/images/jsmith.pngquot;
                                                    • Open approach
           alt=quot;Smiling headshot of Joequot; />
    <p property=quot;dc:rightsquot;>Creative Commons
                                                          • everyone can use
       Attribution 3.0 Unported</p>
  </div>
                                                    • Passive, crawled by Y!
 </div>
…

                                                      • less bureaucracy to set up
Approach #2: Embedded
Microformats
<div id=quot;hcard-Joe-Smithquot; class=quot;vcardquot;>
  <span class=quot;fnquot;>Joe Smith</span>
  <div class=quot;adrquot;>
     <div class=quot;street-addressquot;>123 Murphy Avenue</div>
     <span class=quot;localityquot;>Sunnyvale</span>,
                                                • Cached data
     <span class=quot;regionquot;>California</span>
     <span class=quot;postal-codequot;>94086</span>
                                                    • allows Enhanced Results
  </div>
                                                    • but not for dynamic data
  <div class=quot;telquot;>(408) 555-1234</div>
</div>…
                                                • Reuse existing markup
                                                  • but requires site redesign
                                                • Open approach
                                                    • everyone can use
                                                • Passive, crawled by Y!
                                                  • less bureaucracy to set up
Data Sources: DataRSS Feed
    Name        Cached   Open   Mode               Notes
 Yahoo! Index    yes     yes    Passive    Old-School Y! Index data
 RDFa, eRDF      yes     yes    Passive   Vocab + markup decoupled
 Microformats    yes     yes    Passive    Vocab + markup coupled
DataRSS feed     yes      no    Active       Atom + metadata
    XSLT          no      no    Active      Good for prototyping
 Web Service      no      no    Active    Brings in remote data
Approach #3: DataRSS Feed
<?profile http://search.yahoo.com/searchmonkey-profile ?>
<feed xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot;
xsi:schemaLocation=quot;http://www.w3.org/2005/Atom ../xsd/datarss.xsdquot;
xmlns:dc=quot;http://purl.org/dc/terms/” xmlns=quot;http://www.w3.org/2005/Atomquot;
                                                 • Cached data
xmlns:commerce=quot;http://search.yahoo.com/searchmonkey/commerce/quot;
xmlns:y=quot;http://search.yahoo.com/datarss/quot;>
                                                     • allows Enhanced Results
<id>http://local.yahoo.com/datarss/</id>
<author><name>Peter Mika (pmika@yahoo-inc.com)</name></author>
                                                     • but not for dynamic data
<title>Example data feed for Local</title>
<updated>2008-07-16T04:05:06+07:00</updated>
                                                 • Generate feed from DB
<entry>
                                                   • and maintain afterwards
 <title>Parcel 104</title>
 <id>http://local.yahoo.com/info-21583016-parcel-104-santa-clara</id>
                                                 • Closed approach
 <updated>2008-07-16T04:05:06+07:00</updated>
 <content type=quot;application/xmlquot;>
                                                     • only Yahoo! gets data
 <y:adjunct version=quot;1.0quot; name=quot;com.yahoo.local”>
   <y:item rel=quot;dc:subjectquot;>
                                                 • Actively provide a feed
     <y:type typeof=quot;vcard:VCard commerce:Restaurant”>
      <y:meta property=quot;commerce:hoursOfOperationquot;>
                                                   • coord w/Yahoo! to set up
         Breakfast daily, Lunch Mon.-Fri., Dinner Mon.-Sat.
Building with Structured Data

 • Structured data -> easy app building
   –Relies on RDF, microformats, DataRSS
     •That was the hard part
 • PHP in a typical app
   –Mostly simple assignments, Data::get()
   –Possibly strings, XML, math
Data Sources: XSLT
   Name        Cached   Open   Mode               Notes
Yahoo! Index    yes     yes    Passive    Old-School Y! Index data
RDFa, eRDF      yes     yes    Passive   Vocab + markup decoupled
Microformats    yes     yes    Passive    Vocab + markup coupled
DataRSS feed    yes      no    Active        Atom + metadata
   XSLT         no       no    Active     Good for prototyping
Web Service      no      no    Active      Brings in remote data
Approach #4: Extract with
XSLT
<?xml version=quot;1.0quot;?>
<xsl:stylesheet xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0quot;>
<xsl:template match=quot;/quot;>
  <adjunctcontainer>
    <adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;>
                                                  • Generally not cached
       <item rel=quot;rel:Photo”
           resource=quot;{//div[@class='hresume']//div[@class='image']/img/@src}quot;/>
                                                      • too slow, infobar only
       <item rel=quot;rel:Cardquot;>
          <meta property=quot;vcard:fnquot;>
                                                      • but good for dynamic data
            <xsl:value-of select=quot;//div[@class='hresume']//span[contains(@class,'fn')]quot;/>
         </meta>
                                                  • Scrape page with XSLT
         <meta property=quot;vcard:titlequot;>
            <xsl:value-of select=quot;//div[@class='hresume']//ul[@class='current']/liquot;/>
                                                    • operates on cleaned up
         </meta>
      </item>
                                                    version of the DOM
     </adjunct>
</adjunctcontainer>
                                                    • watch out for template
</xsl:template>
                                                    changes
</xsl:stylesheet>

                                                  • Easy to prototype
Prototyping with XSLT

• What if I don’t have structured data?
  –I don’t own the site
  –I do own the site, but I want to prototype first
• Build an XSLT custom data service first
  –Write some XSLT to extract the data and
   transform it into DataRSS
Creating an Infobar

 • Infobar advantages
   –Annotate someone else’s site
   –Use links and images from other domains
     •Mash up info from multiple sites
     •Affiliate / coupon links? Hmmm…
   –Can act on *, all websites
Data Sources: Web Services
   Name        Cached   Open   Mode               Notes
Yahoo! Index    yes     yes    Passive    Old-School Y! Index data
RDFa, eRDF      yes     yes    Passive   Vocab + markup decoupled
Microformats    yes     yes    Passive    Vocab + markup coupled
DataRSS feed    yes      no    Active        Atom + metadata
   XSLT          no      no    Active      Good for prototyping
Web Service     no       no    Active    Brings in remote data
Approach #5: Call a Web
Service
<?xml version=quot;1.0quot;?>
<xsl:stylesheet xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
            xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0”
            xmlns:h=http://www.w3.org/1999/xhtml
                                              • Generally not cached
            xmlns:y=quot;urn:yahoo:srch”
            xsi:schemaLocation=quot;urn:yahoo:srch
                                                • too slow, infobar only
            http://api.search.yahoo.com/SiteExplorerService/V1/PageDataResponse.xsdquot;>
<xsl:template match=quot;/quot;>
                                                • but good for dynamic data
  <adjunctcontainer xmlns:my=quot;http://example.com/ns/1.0quot;>
     <adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;>
                                              • Call a Remote Web
        <meta property=quot;my:link1quot;>
           <xsl:value-of select=quot;//y:Result[1]/y:Urlquot;/>
                                              Service
        </meta>
        <meta property=quot;my:result1quot;>
                                                • allows SearchMonkey apps
           <xsl:value-of select=quot;//y:Result[1]/y:Titlequot;/>
        </meta>
                                                to glue together
     </adjunct>
  </adjunctcontainer>
                                                • can handle OpenSearch
</xsl:template>
</xsl:stylesheet>
                                                XML natively
Ever-present Monkeys
Ever-present Monkeys
Ever-present Monkeys
Ever-present Monkeys

  http://ysearchblog.com/2009/03/12/embed-
 videos-games-and-docs-with-searchmonkey/


• Videos
• Games
• Documents
• More soon
Resources

• Main:
  –http://developer.yahoo.com/searchmonkey
• Lists and Forums:
  –searchmonkey-developers@yahoogroups.com
  –http://suggestions.yahoo.com/searchmonkey
• RDF and Microformats:
Next Steps

1. Identify content to use in SearchMonkey
2. Weigh the strengths and drawbacks of each
  method for providing data:
  – RDF
  – Microformats
  – DataRSS feed
SearchMonkey
Questions?
Tom
Hughes-Croucher
croucher@yahoo-inc.com
@sh1mmer

Mais conteúdo relacionado

Semelhante a Yahoo! Blueprint Overview

Flutter App Development- Why Should You Choose It .
Flutter App Development- Why Should You Choose It .Flutter App Development- Why Should You Choose It .
Flutter App Development- Why Should You Choose It .Techugo
 
Mobile app development with Flutter: The Need for Speed!
Mobile app development with Flutter: The Need for Speed!Mobile app development with Flutter: The Need for Speed!
Mobile app development with Flutter: The Need for Speed!Ogundiran Al-ameen
 
Quick Yahoo! Blueprint Tutorial
Quick Yahoo! Blueprint TutorialQuick Yahoo! Blueprint Tutorial
Quick Yahoo! Blueprint TutorialBlueprint Blog
 
Whats new in flutter.pptx
Whats new in flutter.pptxWhats new in flutter.pptx
Whats new in flutter.pptxAhmed Fathy
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
 
Cross platform-mobile-applications
Cross platform-mobile-applicationsCross platform-mobile-applications
Cross platform-mobile-applicationsmailalamin
 
Complete guide to flutter app development
Complete guide to flutter app developmentComplete guide to flutter app development
Complete guide to flutter app developmentConcetto Labs
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with FlutterAwok
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184Mahmoud Samir Fayed
 
Application Building The Glowe Way
Application Building The Glowe WayApplication Building The Glowe Way
Application Building The Glowe WayDavy Loots
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
 
DSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSCIIITLucknow
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
Code, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayCode, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayAlex Baitov
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do ThatNathan Smith
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)Chris Pitt
 

Semelhante a Yahoo! Blueprint Overview (20)

Flutter App Development- Why Should You Choose It .
Flutter App Development- Why Should You Choose It .Flutter App Development- Why Should You Choose It .
Flutter App Development- Why Should You Choose It .
 
Mobile app development with Flutter: The Need for Speed!
Mobile app development with Flutter: The Need for Speed!Mobile app development with Flutter: The Need for Speed!
Mobile app development with Flutter: The Need for Speed!
 
Flutter study jam 2019
Flutter study jam 2019Flutter study jam 2019
Flutter study jam 2019
 
Quick Yahoo! Blueprint Tutorial
Quick Yahoo! Blueprint TutorialQuick Yahoo! Blueprint Tutorial
Quick Yahoo! Blueprint Tutorial
 
Whats new in flutter.pptx
Whats new in flutter.pptxWhats new in flutter.pptx
Whats new in flutter.pptx
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 
Cross platform-mobile-applications
Cross platform-mobile-applicationsCross platform-mobile-applications
Cross platform-mobile-applications
 
Getting started with PhoneGap
Getting started with PhoneGapGetting started with PhoneGap
Getting started with PhoneGap
 
Complete guide to flutter app development
Complete guide to flutter app developmentComplete guide to flutter app development
Complete guide to flutter app development
 
Rhodes vs Phonegap
Rhodes vs PhonegapRhodes vs Phonegap
Rhodes vs Phonegap
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184
 
How does flutter cuts app development cost?
How does flutter cuts app development cost?How does flutter cuts app development cost?
How does flutter cuts app development cost?
 
Application Building The Glowe Way
Application Building The Glowe WayApplication Building The Glowe Way
Application Building The Glowe Way
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212
 
DSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSC IIITL Flutter Workshop
DSC IIITL Flutter Workshop
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Code, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayCode, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers way
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)
 

Mais de Tom Croucher

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Tom Croucher
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile webTom Croucher
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfTom Croucher
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Tom Croucher
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaTom Croucher
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti codeTom Croucher
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthTom Croucher
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupTom Croucher
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...Tom Croucher
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010Tom Croucher
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming Tom Croucher
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 

Mais de Tom Croucher (20)

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @Media
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
 
Sf perf
Sf perfSf perf
Sf perf
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

Yahoo! Blueprint Overview

  • 1. Yahoo! @ Nike May 4, 2009 Tom Hughes-Croucher croucher@yahoo-inc.com
  • 2. Overview • Blueprint • Site Explorer / BOSS • Search Monkey
  • 3. BLUEPRINT the mobile platform
  • 4. The Blueprint for Today • Welcome • Blueprint Overview • Blueprint Developer Tutorial • Blueprint Design Language • Further Discussion BLUEPRINT
  • 5.
  • 6. We know it’s massive..
  • 7.
  • 8. 5 4 3 2 1 2010 0 2005 Personal computers Mobile phones * Source eTForecasts
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. ?
  • 18. Yahoo!’s mobile mission: to enable a mobile ecosystem for billions of users
  • 20. m.yahoo.com No 1 mobile destination Maximum coverage.. but a poor experience for high-end users. Definitely Mobile 1.0
  • 22.
  • 24.
  • 30. Lightweight XML markup language. <placard layout=”simple” class=”link”> Based on X-Forms. <layout-items> <image resource=”email.gif” /> <block class=”title”>Add Email</block> Purely declarative, </layout-items> <load event=”activate” resource=”mail.bp” /> no new scripting </placard> language necessary.
  • 31. Lightweight <placard layout=”simple” class=”link”> XML markup <layout-items> <image resource=”email.gif” /> language. <block class=”title”>Add Email</block> </layout-items> <load event=”activate” resource=”mail.bp” /> </placard> Based on X-Forms. Purely declarative, no new scripting language necessary.
  • 32. Not a single device
  • 36. Itʼs powerful location-based services mapping controls device optimization image & video controls
  • 37. Itʼs powerful location-based services mapping controls device optimization image & video controls
  • 41. BLUEPRINT the mobile platform Yahoo! Blueprint Apps 3rd Party Blueprint Apps Blueprint language specification Infrastructure Runtimes SDK Gallery Yahoo! Go Developer Tools Monetization Mobile Apps Reference Analytics Mobile Sites Tutorials
  • 42. BP is the platform Blueprint Language
  • 43. BP is the platform • XML • XForms • UED Patterns • Device Services Blueprint Language
  • 44. BP is the platform • XML • XForms • UED Patterns • Device Services Blueprint Language HTML J2ME S60 WinMob iPhone (Android) Blueprint Renderers
  • 45. BP is the platform • XML • XForms • UED Patterns • Device Services Blueprint Language Native HTML J2ME S60 WinMob iPhone (Android) Blueprint Renderers
  • 46. Blueprint widgets GO integrated into the client included in the Gallery can be added to Carousel reach millions of users
  • 47. Blueprint widgets GO integrated into the client included in the Gallery can be added to Carousel reach millions of users available today
  • 48. Blueprint apps new Java, Windows Mobile & Symbian devices standalone application freely distribute runs on 100s of devices
  • 49. Blueprint apps new Java, Windows Mobile & Symbian devices standalone application freely distribute runs on 100s of devices developer preview now commercial release later
  • 50. Blueprint sites new xHTML & HTML browsers your site your domain on your infrastructure supports 1000s of devices
  • 51. Blueprint sites new xHTML & HTML browsers your site your domain on your infrastructure supports 1000s of devices developer preview now commercial release soon
  • 52. Blueprint sites new xHTML & HTML browsers your site your domain on your infrastructure supports 1000s of devices developer preview now commercial release soon
  • 53. Blueprint sites new xHTML & HTML browsers your site your domain on your infrastructure supports 1000s of devices developer preview now commercial release soon
  • 54. BLUEPRINT the mobile platform
  • 55. BLUEPRINT the mobile platform not another mobile OS
  • 56. BLUEPRINTthe mobile platform not another mobile OS not a platform for games
  • 57. BLUEPRINTthe mobile platform not another mobile OS not a platform for games not proprietary
  • 58. BLUEPRINTthe mobile platform not another mobile OS not a platform for games not proprietary just return Blueprint XML
  • 59. BLUEPRINT the mobile platform
  • 60. BLUEPRINT the mobile platform An open mobile platform that makes development easy and is the best way to create mobile internet services.
  • 61. BLUEPRINT Developer Experience Quick Tutorial
  • 62. I want to build stuff. Today. • Platform Overview • Blueprint Language Concept • Steps to (Widget-) Success BLUEPRINT
  • 63. BLUEPRINT the mobile platform Yahoo! Blueprint Apps 3rd Party Blueprint Apps Blueprint language specification Infrastructure Runtimes SDK Gallery Yahoo! Go Developer Tools Monetization Mobile Apps Reference Analytics Mobile Sites Tutorials
  • 64. Blueprint Language: What’s that exactly? BLUEPRINT
  • 65. Blueprint Language: What’s that exactly? XML mark-up language, based on X-Forms BLUEPRINT
  • 66. Blueprint Language: What’s that exactly? XML mark-up language, based on X-Forms No scripting or procedural code BLUEPRINT
  • 67. Blueprint Language: What’s that exactly? XML mark-up language, based on X-Forms No scripting or procedural code Provides rich mobile core features and services BLUEPRINT
  • 68. Blueprint Language: What’s that exactly? XML mark-up language, based on X-Forms No scripting or procedural code Provides rich mobile core features and services EASY! BLUEPRINT
  • 69. Blueprint XML: Create a Page! <page> <content> <module> <header layout=quot;simplequot;> <layout-items> <block class=quot;titlequot;>Greeting</block> </layout-items> </header> <block>Hello World!</block> </module> </content> </page> BLUEPRINT
  • 70. Blueprint XML: Create a Map! <map> <center> <latitude>37.3919</latitude> <longitude>-122.0302</longitude> </center> <map-zoom>6</map-zoom> <map-mode>map</map-mode> <map-showtraffic>false</map-showtraffic> <map-point> <location> <latitude>37.392916</latitude> <longitude>-122.033934</longitude> <street>810 Del Rey Ave</street> <city>Sunnyvale</city> <state>CA</state> <zip></zip> </location> </map-point> </map> BLUEPRINT
  • 71. Blueprint Control: Location <location-chooser ref=quot;originquot;> <label>From:</label> </location-chooser> <location-chooser ref=quot;destinationquot;> <label>To:</label> </location-chooser> Supports GPS or Cell ID: Find Me Does not have GPS or Cell ID Information BLUEPRINT
  • 72. Creating Blueprint Services: What do I need? BLUEPRINT
  • 73. Creating Blueprint Services: What do I need? Any web-server BLUEPRINT
  • 74. Creating Blueprint Services: What do I need? Any web-server Use any scripting language BLUEPRINT
  • 75. Creating Blueprint Services: What do I need? Any web-server Use any scripting language Use any existing publishing tools BLUEPRINT
  • 76. Creating Blueprint Services: What do I need? Any web-server Use any scripting language Use any existing publishing tools Return Blueprint! BLUEPRINT
  • 77. Building Mobile Widget Download the Blueprint SDK 1 BLUEPRINT
  • 78. Building Mobile Widget Download the Blueprint SDK 1 Blueprint SDK includes • Blueprint Documentation • XML Schema definitions • Templates to get started • Mobile Widget Sample Code • PHP helper class (blueprint.php) BLUEPRINT
  • 79. Building Mobile Widget Develop your Widget 2 Widget Request HTTP Request Yahoo! Server Widget Content Blueprint (XML) Your Web Server Widget Submission Application Package BLUEPRINT
  • 80. Building Mobile Widget Develop your Widget 2 Widget Request HTTP Request Yahoo! Server Widget Content Blueprint (XML) Your Web Server 2. Create static/ dynamic pages Widget to return Submission 2 Blueprint Application Package BLUEPRINT
  • 81. Building Mobile Widget Develop your Widget 2 Widget Request HTTP Request Yahoo! Server Widget Content Blueprint (XML) Your Web Server 2. Create static/ dynamic pages Widget to return Submission 2 Blueprint 3. Create your Application application Package package and submit 3 BLUEPRINT
  • 82. Building Mobile Widget Data flow Mobile Phone Yahoo! Server Your Server Request entry point User opens HTTP request to Widget publisher Widget URI specified in config.xml Includes language and location headers Blueprint page returned Includes Content-Type header; may include cache-control headers; may include cookies for Widget publisher (Cookies stored on Yahoo! Widget content returned server) User requests new data Request new content HTTP request … BLUEPRINT
  • 83. Building Mobile Widget Interfacing with Yahoo! Servers Content Type for Blueprint Services: Content-Type: application/x-ywidget+xml Use only the UTF-8 character set. Using Cookies: Your server can set/retrieve cookies exactly as if you are serving HTML instead of Blueprint markup. The cookies are stored on Yahoo! servers Cache Control: Wherever possible, Blueprint pages are cached on the user’s device. To control caching, use the following standard HTTP headers when serving pages: Cache-Control, ETag, and If- None-Match. Only these headers affect caching BLUEPRINT
  • 84. Building Mobile Widget Interfacing with Yahoo! Servers Internationalization and Localization: When Yahoo! Mobile application server sends a page request, the request may contain several HTTP headers, including: Accept-Language RFC 4646/4647 language code (Example: Accept-Language: en-US) Geo-Country ISO 3166 country or UN M.49 region code (Example: Geo-Country: CA) You can use the information in the headers to decide what content to return. BLUEPRINT
  • 85. Building Mobile Widget Package your Widget 3 Application Package is a zip file containing • config.xml • Application metadata, including the URL for your web server • gallery.xml • Information for the widget gallery • Image Files • Includes icons and screen shots (for the gallery) BLUEPRINT
  • 86. Building Mobile Widget Upload your mobile Widget 4 • http://mobile.yahoo.com/developers/test/upload • Package the widget files into a zip archive • Upload the .zip file BLUEPRINT
  • 87. Building Mobile Widget Test your mobile Widget 5 1. Yahoo! Go Emulator: http://mobile.yahoo.com/go/tryit (Note: External links won’t work) 2. Browser http://devtest.m.yahoo.com (Note: GPS and cell-ID won’t work on desktop browser) BLUEPRINT
  • 88. Building Mobile Widget Publish your mobile Widget 6 • http://mobile.yahoo.com/developers/submit/upload • Please test your widget before publishing • It may take 1 week for the approval process BLUEPRINT
  • 89. Widgets Development Process Summary Download the Blueprint SDK 1 Develop your Widget 2 Package your Widget 3 Upload your mobile Widget 4 Test your mobile Widget 5 Publish your mobile Widget 6 BLUEPRINT
  • 91. Links & Support Get the SDK • Download the SDK http://mobile.yahoo.com/developers/download Get Help! • Yahoo! Tech Group http://tech.groups.yahoo.com/group/yhoomobiledevelopers • Read the Blueprint Blog http://mobile.yahoo.net/developer/blog BLUEPRINT
  • 92. The Blueprint Design Language Tomorrow’s Mobile User Experience
  • 93. The Language is Evolving BLUEPRINT
  • 94. Web Sites Applications Document Centric Task Centric Content Syndication Native Look & Feel Biased to Layout Richer Experience Content Connectivity Optional Link Navigation Browser Native Functionality BLUEPRINT
  • 95. Internet as a Platform Structured Experiences High Level Controls Stateless MVC Patterns Streamed Pages Asynchronous Requests XForms and XPath oh my! Maps Embedded Web Content Blueprint Renderer Native Applications Location Service Image Transcoding Yahoo! Services Slideshows Seamless Search Results Video Transcoding Voice Recognition Authentication Advanced Input Controls Core Control Photo Acquisition Scaled Hosting Language BLUEPRINT
  • 96. On Demand Service Updates Let’s retain the benefits of streamed experiences Organically add features Roll out new services Serve up seasonal content BLUEPRINT
  • 97. Aggregated Services Let’s reuse services already implemented and tested by Yahoo! ...or anyone serving up Blueprint pages. BLUEPRINT
  • 98. Aggregated Services BLUEPRINT
  • 99. Aggregated Services <onesearch/> BLUEPRINT
  • 100. Web Sites Applications Document Centric Task Centric Content Syndication Native Look & Feel Biased to Layout Richer Experience Content Connectivity Optional Link Navigation Browser Native Functionality BLUEPRINT
  • 101. Web Sites Applications Document Centric Task Centric Content Syndication Native Look & Feel Biased to Layout Richer Experience BLUEPRINT Content Connectivity Optional Link Navigation Browser Native Functionality BLUEPRINT
  • 103. Site Explorer Yahoo! Site Explorer / BOSS
  • 104. Search Engine • Maximum content • More in-bound links • Normative URLs • Fresh-fresh-fresh
  • 105.
  • 106.
  • 107. Number of pages crawled
  • 108. Number of pages crawled Inbound links
  • 109. Number of pages crawled Inbound links Detail level
  • 112. 6092 Inlinks Lost OR 36% Inlinks Lost
  • 116. B.O.S.S. Build (your) Own Search Search
  • 117. Site Explorer in BOSS • Inlinks (v1/v2) • Page Data (v1/v2) • Ping (v1) • Update Notification (v1)
  • 121. Ping / Update Notification Get on the Yahoo! Search Radar!
  • 122. Site Explorer • https://siteexplorer.search.yahoo.com/ • http://developer.yahoo.com/search/siteexplorer/ • http://developer.yahoo.com/boss
  • 124. Feeding the Monkey: the SearchMonkey data layer, presentation applications, and you
  • 125. What is SearchMonkey? an open platform for using structured data to build more useful and relevant search results Before After
  • 126. Enhanced Result Key/value Pairs Image Links or abstract
  • 127. Infobar Summary Blob
  • 128. How to get data to SearchMonkey? Humans see: • name • picture of a person • current job • industry, … Computers see: an undifferentiated blob of HTML Can we make computers smarter?
  • 129. Artificial intelligence is hard. Plus…
  • 130. How does it Work?
  • 131. How does it Work? Acme.com’s DB
  • 132. How does it Work? Acme.com’s Site Acme.com’s DB
  • 133. How does it Work? site owners/publishers share structured data with Yahoo! 1 Acme.com’s Site Acme.com’s DB
  • 134. How does it Work? site owners/publishers share structured data with Yahoo! 1 RDF/Microformat Markup Acme.com’s Site Index Acme.com’s DB
  • 135. How does it Work? site owners/publishers share structured data with Yahoo! 1 RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Acme.com’s DB
  • 136. How does it Work? site owners/publishers share structured data with Yahoo! 1 RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Acme.com’s DB
  • 137. How does it Work? site owners/publishers share structured data with Yahoo! 1 Page Extraction RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Acme.com’s DB
  • 138. How does it Work? site owners/publishers share structured data with Yahoo! 1 Page Extraction RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Web Services Acme.com’s DB
  • 139. How does it Work? site owners/publishers share structured data with Yahoo! 1 site owners & third-party developers build SearchMonkey apps 2 Page Extraction RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Web Services Acme.com’s DB
  • 140. How does it Work? site owners/publishers share structured data with Yahoo! 1 site owners & third-party developers build SearchMonkey apps 2 consumers customize their search experience with Enhanced Results or Infobars 3 Page Extraction RDF/Microformat Markup Acme.com’s Site Index DataRSS feed Web Services Acme.com’s DB
  • 141. Data Sources: RDF and Microformats Name Cached Open Mode Notes Yahoo! Index yes yes Passive Old-School Y! Index data RDFa, eRDF yes yes Passive Vocab + markup decoupled Microformats yes yes Passive Vocab + markup coupled DataRSS feed yes no Active Atom + metadata XSLT no no Active Good for prototyping Web Service no no Active Brings in remote data
  • 142. Approach #1: Embedded RDF <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML+RDFa 1.0//EN” quot;http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtdquot;> <html xmlns=http://www.w3.org/1999/xhtml xmlns:dc=http://purl.org/dc/elements/1.1/ xmlns:foaf=http://xmlns.com/foaf/0.1/ •Cached data lang=quot;enquot; xml:lang=quot;enquot;> <head> •allows Enhanced Results <title>The Amazing Home Page of Joe Smith</title> </head> •but not for dynamic data <body> <h1 property=quot;dc:titlequot;>Joe's Home Page</h1> • Reuse existing markup <div rel=quot;foaf:makerquot;> <h2 property=quot;foaf:namequot;>Joe Smith</h2> <div rel=quot;foaf:depictionquot; • but requires site redesign resource=quot;http://joesmith.org/images/jsmith.pngquot;> <img src=quot;/images/jsmith.pngquot; • Open approach alt=quot;Smiling headshot of Joequot; /> <p property=quot;dc:rightsquot;>Creative Commons • everyone can use Attribution 3.0 Unported</p> </div> • Passive, crawled by Y! </div> … • less bureaucracy to set up
  • 143. Approach #2: Embedded Microformats <div id=quot;hcard-Joe-Smithquot; class=quot;vcardquot;> <span class=quot;fnquot;>Joe Smith</span> <div class=quot;adrquot;> <div class=quot;street-addressquot;>123 Murphy Avenue</div> <span class=quot;localityquot;>Sunnyvale</span>, • Cached data <span class=quot;regionquot;>California</span> <span class=quot;postal-codequot;>94086</span> • allows Enhanced Results </div> • but not for dynamic data <div class=quot;telquot;>(408) 555-1234</div> </div>… • Reuse existing markup • but requires site redesign • Open approach • everyone can use • Passive, crawled by Y! • less bureaucracy to set up
  • 144. Data Sources: DataRSS Feed Name Cached Open Mode Notes Yahoo! Index yes yes Passive Old-School Y! Index data RDFa, eRDF yes yes Passive Vocab + markup decoupled Microformats yes yes Passive Vocab + markup coupled DataRSS feed yes no Active Atom + metadata XSLT no no Active Good for prototyping Web Service no no Active Brings in remote data
  • 145. Approach #3: DataRSS Feed <?profile http://search.yahoo.com/searchmonkey-profile ?> <feed xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot; xsi:schemaLocation=quot;http://www.w3.org/2005/Atom ../xsd/datarss.xsdquot; xmlns:dc=quot;http://purl.org/dc/terms/” xmlns=quot;http://www.w3.org/2005/Atomquot; • Cached data xmlns:commerce=quot;http://search.yahoo.com/searchmonkey/commerce/quot; xmlns:y=quot;http://search.yahoo.com/datarss/quot;> • allows Enhanced Results <id>http://local.yahoo.com/datarss/</id> <author><name>Peter Mika (pmika@yahoo-inc.com)</name></author> • but not for dynamic data <title>Example data feed for Local</title> <updated>2008-07-16T04:05:06+07:00</updated> • Generate feed from DB <entry> • and maintain afterwards <title>Parcel 104</title> <id>http://local.yahoo.com/info-21583016-parcel-104-santa-clara</id> • Closed approach <updated>2008-07-16T04:05:06+07:00</updated> <content type=quot;application/xmlquot;> • only Yahoo! gets data <y:adjunct version=quot;1.0quot; name=quot;com.yahoo.local”> <y:item rel=quot;dc:subjectquot;> • Actively provide a feed <y:type typeof=quot;vcard:VCard commerce:Restaurant”> <y:meta property=quot;commerce:hoursOfOperationquot;> • coord w/Yahoo! to set up Breakfast daily, Lunch Mon.-Fri., Dinner Mon.-Sat.
  • 146. Building with Structured Data • Structured data -> easy app building –Relies on RDF, microformats, DataRSS •That was the hard part • PHP in a typical app –Mostly simple assignments, Data::get() –Possibly strings, XML, math
  • 147. Data Sources: XSLT Name Cached Open Mode Notes Yahoo! Index yes yes Passive Old-School Y! Index data RDFa, eRDF yes yes Passive Vocab + markup decoupled Microformats yes yes Passive Vocab + markup coupled DataRSS feed yes no Active Atom + metadata XSLT no no Active Good for prototyping Web Service no no Active Brings in remote data
  • 148. Approach #4: Extract with XSLT <?xml version=quot;1.0quot;?> <xsl:stylesheet xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0quot;> <xsl:template match=quot;/quot;> <adjunctcontainer> <adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;> • Generally not cached <item rel=quot;rel:Photo” resource=quot;{//div[@class='hresume']//div[@class='image']/img/@src}quot;/> • too slow, infobar only <item rel=quot;rel:Cardquot;> <meta property=quot;vcard:fnquot;> • but good for dynamic data <xsl:value-of select=quot;//div[@class='hresume']//span[contains(@class,'fn')]quot;/> </meta> • Scrape page with XSLT <meta property=quot;vcard:titlequot;> <xsl:value-of select=quot;//div[@class='hresume']//ul[@class='current']/liquot;/> • operates on cleaned up </meta> </item> version of the DOM </adjunct> </adjunctcontainer> • watch out for template </xsl:template> changes </xsl:stylesheet> • Easy to prototype
  • 149. Prototyping with XSLT • What if I don’t have structured data? –I don’t own the site –I do own the site, but I want to prototype first • Build an XSLT custom data service first –Write some XSLT to extract the data and transform it into DataRSS
  • 150. Creating an Infobar • Infobar advantages –Annotate someone else’s site –Use links and images from other domains •Mash up info from multiple sites •Affiliate / coupon links? Hmmm… –Can act on *, all websites
  • 151. Data Sources: Web Services Name Cached Open Mode Notes Yahoo! Index yes yes Passive Old-School Y! Index data RDFa, eRDF yes yes Passive Vocab + markup decoupled Microformats yes yes Passive Vocab + markup coupled DataRSS feed yes no Active Atom + metadata XSLT no no Active Good for prototyping Web Service no no Active Brings in remote data
  • 152. Approach #5: Call a Web Service <?xml version=quot;1.0quot;?> <xsl:stylesheet xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; version=quot;1.0” xmlns:h=http://www.w3.org/1999/xhtml • Generally not cached xmlns:y=quot;urn:yahoo:srch” xsi:schemaLocation=quot;urn:yahoo:srch • too slow, infobar only http://api.search.yahoo.com/SiteExplorerService/V1/PageDataResponse.xsdquot;> <xsl:template match=quot;/quot;> • but good for dynamic data <adjunctcontainer xmlns:my=quot;http://example.com/ns/1.0quot;> <adjunct id=quot;smid:{$smid}quot; version=quot;1.0quot;> • Call a Remote Web <meta property=quot;my:link1quot;> <xsl:value-of select=quot;//y:Result[1]/y:Urlquot;/> Service </meta> <meta property=quot;my:result1quot;> • allows SearchMonkey apps <xsl:value-of select=quot;//y:Result[1]/y:Titlequot;/> </meta> to glue together </adjunct> </adjunctcontainer> • can handle OpenSearch </xsl:template> </xsl:stylesheet> XML natively
  • 156. Ever-present Monkeys http://ysearchblog.com/2009/03/12/embed- videos-games-and-docs-with-searchmonkey/ • Videos • Games • Documents • More soon
  • 157. Resources • Main: –http://developer.yahoo.com/searchmonkey • Lists and Forums: –searchmonkey-developers@yahoogroups.com –http://suggestions.yahoo.com/searchmonkey • RDF and Microformats:
  • 158. Next Steps 1. Identify content to use in SearchMonkey 2. Weigh the strengths and drawbacks of each method for providing data: – RDF – Microformats – DataRSS feed

Notas do Editor

  1. lots of interest in the markets, people doing widgets.. what&#x2019;s a widget? is blueprint for widgets?
  2. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  3. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  4. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  5. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  6. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  7. at the beginning, j2me tools from nokia or sun and you could make a text app WML / WAP browsers didn&#x2019;t really spark imagination but worked lowest common denominator or lots of work it&#x2019;s getting hard - developer mindshare
  8. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  9. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  10. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  11. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  12. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  13. so which platform do you pick? iphone? android? site builders, netbiscuits, Samsung/Nokia W3C Widgets, LG Flash Widgets, BONDI? 500m visitors per month aiming for 1bn mobile users
  14. i.e. can a consumer use them? which consumer? where? can they tell their friends? their dad?
  15. i.e. can a consumer use them? which consumer? where? can they tell their friends? their dad?
  16. i.e. can a consumer use them? which consumer? where? can they tell their friends? their dad?
  17. not one country, region, segment. framing the market as billions means it can&#x2019;t be one phone, one OS or even one technology.
  18. Web as the Platform Rich UI Lightweight Programming Model Software above a single device End of Release Cycle Data is the next Intel Inside Collective Intelligence
  19. Browsers, lots of them. Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone? and the iPhone.. the touch-screen daddy.
  20. Browsers, lots of them. Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone? and the iPhone.. the touch-screen daddy.
  21. Browsers, lots of them. Clients. For different UIs, Java, Windows, Symbian, and more.. sat nav anyone? and the iPhone.. the touch-screen daddy.
  22. XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC. XForms has the model in the head and references it from the page. Look at W3C site for more info. DON&#x2019;T HAVE TO LEARN OBJECTIVE-C
  23. XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC. XForms has the model in the head and references it from the page. Look at W3C site for more info. DON&#x2019;T HAVE TO LEARN OBJECTIVE-C
  24. XForms does AJAX without the J. It helps structure an app by separating data and presentation. MVC. XForms has the model in the head and references it from the page. Look at W3C site for more info. DON&#x2019;T HAVE TO LEARN OBJECTIVE-C
  25. Blueprint is the platform - software above a single device
  26. We have a placard for that.
  27. We have a placard for that.
  28. We have a placard for that.
  29. video transcoding cell tower database - growing rapidly maps inc. satellite, driving directions, points of interest and soon KML.
  30. video transcoding cell tower database - growing rapidly maps inc. satellite, driving directions, points of interest and soon KML.
  31. video transcoding cell tower database - growing rapidly maps inc. satellite, driving directions, points of interest and soon KML.
  32. Right now basic usage and device stats. We are integrating with IndexTools which is probably the best web analytics platform there is.
  33. Right now basic usage and device stats. We are integrating with IndexTools which is probably the best web analytics platform there is.
  34. Go is for Windows Mobile, Java, Blackberry & Symbian. Stated aim to support all platforms we can.
  35. All platforms we support for Go. Basically single widget version of Go.
  36. We transcode across may devices. In the future we will support branding.
  37. We transcode across may devices. In the future we will support branding.
  38. We transcode across may devices. In the future we will support branding.
  39. targeted at the mass market. mostly you want reach, distribution and users!
  40. targeted at the mass market. mostly you want reach, distribution and users!
  41. targeted at the mass market. mostly you want reach, distribution and users!
  42. targeted at the mass market. mostly you want reach, distribution and users!
  43. targeted at the mass market. mostly you want reach, distribution and users!
  44. targeted at the mass market. mostly you want reach, distribution and users!
  45. targeted at the mass market. mostly you want reach, distribution and users!
  46. targeted at the mass market. mostly you want reach, distribution and users!
  47. targeted at the mass market. mostly you want reach, distribution and users!
  48. targeted at the mass market. mostly you want reach, distribution and users!
  49. targeted at the mass market. mostly you want reach, distribution and users!
  50. targeted at the mass market. mostly you want reach, distribution and users!
  51. targeted at the mass market. mostly you want reach, distribution and users!
  52. targeted at the mass market. mostly you want reach, distribution and users!
  53. carriers, oneSearch, frontpage
  54. A SearchMonkey Enhanced result contains a great deal of structured data. It could have a picture, key/value pairs, deep links&#x2026; This kind of information goes far beyond what normal search results give you &#x2013; a title and an autoextracted summary. Where does this information come from?
  55. Likewise, an Infobar has a summary (what the user sees before the pane is expanded) and a &#x201C;blob&#x201D;, an area of free-form HTML.
  56. Here&#x2019;s a profile page for a colleague of mine on LinkedIn. When you and I glance at the page, we see all sorts of structured information. We see pictures, contact info, names, &#x2026; all sorts of items that have actual meaning. But spiders just see a blob of markup. The spider can extract some basic info, like a title (probably correct), a summary (could be good or not), and some other metadata. But for pulling structured information out of web pages, human beings beat computers hands down. So how to harvest structured data? One approach would be to make computers SMARTER, by improving their ability to do pattern recognition and natural language processing. DRAWBACKS: these sorts of AI-type features have proven to be pretty expensive and difficult to develop. I&#x2019;m not smart enough to do this, so I want you to do it for me. YOU know a lot more about YOUR site than we do. even with a &#x201C;dumb&#x201D; approach, indexing all these billions of webpages already takes many thousands of CPU cores, crunching away. Again, very expensive. finally, we all know what happens here. The computer begins scouring information from the entire world wide web, starts learning at a geometric rate, becomes self-aware, &#x2026;
  57. Computers become intelligent, begin to learn at a geometric rate, form SkyNet, and scour the Earth with nuclear fire. Shareholder value decreases. So we decided to go with the approach of -- keep our spider fairly dumb, and figure out different ways for people to provide us with structured data.
  58. In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn&#x2019;t use ALL these methods. From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on. Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index. SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page. We&#x2019;ll talk more about all these methods in the subsequent slides.
  59. In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn&#x2019;t use ALL these methods. From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on. Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index. SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page. We&#x2019;ll talk more about all these methods in the subsequent slides.
  60. In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn&#x2019;t use ALL these methods. From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on. Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index. SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page. We&#x2019;ll talk more about all these methods in the subsequent slides.
  61. In this scenario, we see all the different ways that you can feed SearchMonkey with data. A real SearchMonkey app probably wouldn&#x2019;t use ALL these methods. From your database / CMS, you generate web pages with HTML markup. Those web pages can contain microformats or RDF, special markup that provides semantic meaning about the data on your pages. Our crawler can extract this information, just as it does the title, the page content, the mime-type, and so on. Alternatively, from your database you can also provide us with a DataRSS feed (more on that later) that we consume and place into our index. SearchMonkey also has two ways to actively retrieve information. You can create a Page Extractor, which scrapes information from a web page. You can also call a web service to retrieve more information about a page. We&#x2019;ll talk more about all these methods in the subsequent slides.