SlideShare una empresa de Scribd logo
1 de 160
Descargar para leer sin conexión
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

Más contenido relacionado

Similar 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
 

Similar 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)
 

Más 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
 

Más 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

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 

Último (20)

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 

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 del 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.