SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
creating
portable
social networks
with
microformats
social networks
      pownce.com
      ma.gnolia.com
      edenbee.com
      upcoming.yahoo.com
      last.fm
      twitter.com
      flickr.com
Social network fatigue?
More important than that: freedom of movement; reducing friction when moving from service to
service.
This isn’t about giving up one network in favour of another.
Interoperability is the goal.
username &
    password
    antipattern
Suck email addresses out of address books by requesting webmail username and password on a
third-party site.
This teaches users how to be phished.
Insecure.
API+OAuth
   google contacts
   flickr

Safe and secure but complex to implement.
Does knowledge of someone’s email address really define a relationship anyway?
reuse
    simple
    existing
    microformats
Principles of microformats:
Reuse existing standards (vcard, icalendar)
Simple by design. Don’t boil the ocean. Hitting 80% of use cases with 20% effort (Pareto principle).
Only encode what people are already publishing.
Don’t try to change people’s current behaviour (it’s really hard).
What format are most people already publishing in? HTML!
HTML
    my details
    my contacts
    their details
Microformats are built into HTML rather than separate files
(out of sight is out of mind; invisible metadata rots).
HTML pages are RESTful. Can your website be your API?
Kind of... it’s read only rather than read/write.
But look at the data that’s already being published.
hCard
    my details


Identifying people.
hCard
      <span class=“vcard”>
      <a class=“fn nickname url”
      href=
      “http://example.com/adactio”>
      adactio
      </a>
      </span>
fn for formatted name, nickname for username, url for a web page that represents this person.
hCards do not need to be in-depth: there’s more to hCard than simply translating to vcard.
Don’t publish any more data than what you publish anyway.
There is semantic value in identifying a string of text as someone’s name.
There is no PERSON element in HTML. This is exactly what the CLASS element is for: adding your
own semantics.
hCard
      <h1 class=“vcard”>
      <a class=“fn url” rel=“me”
      href=
      “http://adactio.com/”>
      Jeremy Keith
      </a>
      </h1>
Profile page. This URL represents a person.
<h1 class=“vcard”>
                              XFN
      <a class=“fn url” rel=“me”
      href=
      “http://adactio.com/”>
      Jeremy Keith
      </a>
      </h1>
When linking to another URL representing the same person, use rel=”me”.
XFN is a proto-microformat (it didn’t follow The Process).
XFN
my contacts
<li class=“vcard”>
                                XFN
      <a rel=“contact”
      class=“fn nickname url”
      href=
      “http://example.com/username”>
      username
      </a>
      </li>
XFN provides a number of values, but all you really need is rel=”contact”.
For a dating site like I’m In Like With You, you could maybe use rel=”crush” or rel=”sweetheart”.
For a professional site like Linked In, you could maybe use rel=”acquaintance” or rel=”colleague”.
But for most purposes, rel=”contact” is enough.
Beware of asserting rel=”friend” programmatically.
<ul>
                                XFN
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      </ul>
      <a rel=“me next”
      href=“/contacts/2”>More...</a>
Pagination is a common pattern.
Use rel=”next” in combination with rel=”me”:
“This is another page representing this person.”
<ul>
                               XFN
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      <li><a rel=“contact”... </li>
      </ul>
      <a rel=“me prev”
      href=“/contacts”>...Back</a>
Likewise, use rel=”prev” in combination with rel=”me”.
REL values, like CLASS, can be space separated.
XFN
their details
<h1 class=“vcard”>
                                XFN
      <a class=“fn url” rel=“me”
      href=
      “http://suda.co.uk/”>
      Brian Suda
      </a>
      </h1>
Each one of your contacts has their own profile page, possibly linking off to another URL
representing that person.
hCard
    & XFN
         class
          & rel
That’s it! Sin é!
A few CLASS attributes and a few REL attributes and you’re good to go.

This isn’t a replacement for having a proper API: it’s a nice alternative for the simple stuff.
Allow access to data in as many formats as possible: XML, JSON, RSS, microformats.
parsing
 code.google.com
 /apis/socialgraph

Parsing can be tricky. Spidering is even trickier.
Luckily Google provide the Social Graph API. Google does all the hard work.
Spiders XFN and FOAF relationships (FOAF relationships are translated to XFN).
Spiders rel=”prev” and rel=”next”, also spiders rel=”me”.
matching
    fn
    nickname
    url
    email
If you are have one social network and you allow people to import relationships from other social
networks:
Try some fuzzy logic: a combination of nickname (username) and fn perhaps.
A matching url value is even better.
This won’t get 100% accuracy but 80% accuracy with 20% effort is good.
You won’t have access to email (often used a unique identifier). The other values should be enough.
what
    about...
               trust?
     walled gardens?
Trust: how can you believe these assertions? You can’t. But that’s true of everythin on the web.
It is not the job of formats to estabilish trust or authentication.
Protocol technologies like SSL and OpenID do that. Try mashing up OpenID with microformats.
Remember, microformats don’t make any more assertions than what’s already being published
(they just add extra semantic clarity).

Walled gardens. Everything I’ve shown applies to sites that publish this information publicly.
You can still publish hCard and XFN on walled gardens but parsing will require some kind of
authentication (maybe OpenID).
publishing
pownce.com
ma.gnolia.com
edenbee.com
upcoming.yahoo.com
last.fm
twitter.com
flickr.com
parsing
dopplr.com
getsatisfaction.com
the
    future...
             one form field?
“Give me one URL that represents you.”
Let the system take care of the rest, discovering contact details and spidering relationships.

What you can do:
Add hCard classes and XFN rel values if you are already publishing a social network.
Use Google’s Social Graph API to allow users to import existing relationships.
design
    challenges

Make the sign-up process hassle-free.
Avoid jargon: don’t mention microformats or hCard or XFN.
Don’t import automatically. Allow users to accept or reject relationships.
Should you notify users when someone they know joins your social network?
Should you allow users to subscribe to, rather than import from, a different social network?
thank you
   adactio.com
 microformats.org
 go raibh
maith agaibh

Más contenido relacionado

La actualidad más candente

Online Reputation Management presentation
Online Reputation Management presentationOnline Reputation Management presentation
Online Reputation Management presentationTabish Javed
 
Duplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For YouDuplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For YouDawn Anderson MSc DigM
 
London seo master - feb 2020
London seo master - feb 2020London seo master - feb 2020
London seo master - feb 2020Matt Williamson
 
Debugging rendering problems at scale
Debugging rendering problems at scaleDebugging rendering problems at scale
Debugging rendering problems at scaleGiacomo Zecchini
 
Just Enough HTML for Fatwire
Just Enough HTML for FatwireJust Enough HTML for Fatwire
Just Enough HTML for FatwireKenneth Quandt
 
Everything you wanted to know about crawling, but didn't know where to ask
Everything you wanted to know about crawling, but didn't know where to askEverything you wanted to know about crawling, but didn't know where to ask
Everything you wanted to know about crawling, but didn't know where to askBill Slawski
 
Understanding SEO
Understanding SEOUnderstanding SEO
Understanding SEOTim Huegdon
 
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016Branded3
 
RDFa: The Semantic Web's Missing Link
RDFa: The Semantic Web's Missing LinkRDFa: The Semantic Web's Missing Link
RDFa: The Semantic Web's Missing LinkMark Birbeck
 
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...Charly Wargnier
 
Technical SEO - Generational cruft in SEO - there is never a new site when th...
Technical SEO - Generational cruft in SEO - there is never a new site when th...Technical SEO - Generational cruft in SEO - there is never a new site when th...
Technical SEO - Generational cruft in SEO - there is never a new site when th...Dawn Anderson MSc DigM
 
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016Laura Hogan
 
Browser Changes That Will Impact SEO From 2019-2020
Browser Changes That Will Impact SEO From 2019-2020Browser Changes That Will Impact SEO From 2019-2020
Browser Changes That Will Impact SEO From 2019-2020Tom Anthony
 
So you think you know canonical tags - Sean Butcher Brighton SEO presentation
So you think you know canonical tags -  Sean Butcher Brighton SEO presentationSo you think you know canonical tags -  Sean Butcher Brighton SEO presentation
So you think you know canonical tags - Sean Butcher Brighton SEO presentationSean Butcher
 
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...Arianne Donoghue
 
Dynamic Rendering - is this really an SEO silver bullet? SMX WEST
Dynamic Rendering - is this really an SEO silver bullet? SMX WESTDynamic Rendering - is this really an SEO silver bullet? SMX WEST
Dynamic Rendering - is this really an SEO silver bullet? SMX WESTOnely
 
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009Best Wordpress Plug-Ins - SEMpdx Searchfest 2009
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009David Wallace
 

La actualidad más candente (20)

Online Reputation Management presentation
Online Reputation Management presentationOnline Reputation Management presentation
Online Reputation Management presentation
 
Facebook Coin
Facebook CoinFacebook Coin
Facebook Coin
 
Duplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For YouDuplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For You
 
London seo master - feb 2020
London seo master - feb 2020London seo master - feb 2020
London seo master - feb 2020
 
Scalable Link Building
Scalable Link BuildingScalable Link Building
Scalable Link Building
 
Debugging rendering problems at scale
Debugging rendering problems at scaleDebugging rendering problems at scale
Debugging rendering problems at scale
 
Just Enough HTML for Fatwire
Just Enough HTML for FatwireJust Enough HTML for Fatwire
Just Enough HTML for Fatwire
 
Everything you wanted to know about crawling, but didn't know where to ask
Everything you wanted to know about crawling, but didn't know where to askEverything you wanted to know about crawling, but didn't know where to ask
Everything you wanted to know about crawling, but didn't know where to ask
 
Understanding SEO
Understanding SEOUnderstanding SEO
Understanding SEO
 
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016
Stop best practicing, start doing - Stephen Kenwright at #SearchLeeds 2016
 
RDFa: The Semantic Web's Missing Link
RDFa: The Semantic Web's Missing LinkRDFa: The Semantic Web's Missing Link
RDFa: The Semantic Web's Missing Link
 
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
 
Technical SEO - Generational cruft in SEO - there is never a new site when th...
Technical SEO - Generational cruft in SEO - there is never a new site when th...Technical SEO - Generational cruft in SEO - there is never a new site when th...
Technical SEO - Generational cruft in SEO - there is never a new site when th...
 
Html5 accessibility
Html5 accessibilityHtml5 accessibility
Html5 accessibility
 
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016
Keywords Aren't Dead. Debunking SEO Myths. Brighton SEO 2016
 
Browser Changes That Will Impact SEO From 2019-2020
Browser Changes That Will Impact SEO From 2019-2020Browser Changes That Will Impact SEO From 2019-2020
Browser Changes That Will Impact SEO From 2019-2020
 
So you think you know canonical tags - Sean Butcher Brighton SEO presentation
So you think you know canonical tags -  Sean Butcher Brighton SEO presentationSo you think you know canonical tags -  Sean Butcher Brighton SEO presentation
So you think you know canonical tags - Sean Butcher Brighton SEO presentation
 
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...
Save Your Sanity (And Your Job!) With PPC Report Automation - Arianne Donoghu...
 
Dynamic Rendering - is this really an SEO silver bullet? SMX WEST
Dynamic Rendering - is this really an SEO silver bullet? SMX WESTDynamic Rendering - is this really an SEO silver bullet? SMX WEST
Dynamic Rendering - is this really an SEO silver bullet? SMX WEST
 
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009Best Wordpress Plug-Ins - SEMpdx Searchfest 2009
Best Wordpress Plug-Ins - SEMpdx Searchfest 2009
 

Destacado

Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
Ruby Day Kraków: Full Text Search with Ferret
Ruby Day Kraków: Full Text Search with FerretRuby Day Kraków: Full Text Search with Ferret
Ruby Day Kraków: Full Text Search with Ferretelliando dias
 
セミナ汗なし涙なしFacebookページ
セミナ汗なし涙なしFacebookページセミナ汗なし涙なしFacebookページ
セミナ汗なし涙なしFacebookページebina yohichi
 
Troubleshooting Deadlocks in SQL Server 2000
Troubleshooting Deadlocks in SQL Server 2000Troubleshooting Deadlocks in SQL Server 2000
Troubleshooting Deadlocks in SQL Server 2000elliando dias
 
Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日ebina yohichi
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to ScalaRiccardo Cardin
 
Developing a new Scala DSL for Apache Camel
Developing a new Scala DSL for Apache CamelDeveloping a new Scala DSL for Apache Camel
Developing a new Scala DSL for Apache Camelelliando dias
 
An Introduction to Scala
An Introduction to ScalaAn Introduction to Scala
An Introduction to ScalaBrent Lemons
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to ScalaRahul Jain
 
Make Recyclerview With Android Studio
Make Recyclerview With Android StudioMake Recyclerview With Android Studio
Make Recyclerview With Android StudioBayu Firmawan Paoh
 

Destacado (16)

Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
Ruby Day Kraków: Full Text Search with Ferret
Ruby Day Kraków: Full Text Search with FerretRuby Day Kraków: Full Text Search with Ferret
Ruby Day Kraków: Full Text Search with Ferret
 
セミナ汗なし涙なしFacebookページ
セミナ汗なし涙なしFacebookページセミナ汗なし涙なしFacebookページ
セミナ汗なし涙なしFacebookページ
 
Ranking Web Pages
Ranking Web PagesRanking Web Pages
Ranking Web Pages
 
Troubleshooting Deadlocks in SQL Server 2000
Troubleshooting Deadlocks in SQL Server 2000Troubleshooting Deadlocks in SQL Server 2000
Troubleshooting Deadlocks in SQL Server 2000
 
Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日
 
Scala syntax analysis
Scala syntax analysisScala syntax analysis
Scala syntax analysis
 
Scala Introduction
Scala IntroductionScala Introduction
Scala Introduction
 
Cassandra Nosql
Cassandra NosqlCassandra Nosql
Cassandra Nosql
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to Scala
 
Developing a new Scala DSL for Apache Camel
Developing a new Scala DSL for Apache CamelDeveloping a new Scala DSL for Apache Camel
Developing a new Scala DSL for Apache Camel
 
An Introduction to Scala
An Introduction to ScalaAn Introduction to Scala
An Introduction to Scala
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Scala basic
Scala basicScala basic
Scala basic
 
Basic Scala
Basic ScalaBasic Scala
Basic Scala
 
Make Recyclerview With Android Studio
Make Recyclerview With Android StudioMake Recyclerview With Android Studio
Make Recyclerview With Android Studio
 

Similar a creating portable social networks with microformats

Microformats HTML to API
Microformats HTML to APIMicroformats HTML to API
Microformats HTML to APIelliando dias
 
The Semantic Web An Introduction
The Semantic Web An IntroductionThe Semantic Web An Introduction
The Semantic Web An Introductionshaouy
 
The DiSo Project and the Open Web
The DiSo Project and the Open WebThe DiSo Project and the Open Web
The DiSo Project and the Open WebChris Messina
 
Consuming Linked Data by Humans
Consuming Linked Data by HumansConsuming Linked Data by Humans
Consuming Linked Data by HumansJuan Sequeda
 
An Overview on PROV-AQ: Provenance Access and Query
An Overview on PROV-AQ: Provenance Access and QueryAn Overview on PROV-AQ: Provenance Access and Query
An Overview on PROV-AQ: Provenance Access and QueryOlaf Hartig
 
Can your website be your API and real life
Can your website be your API and real lifeCan your website be your API and real life
Can your website be your API and real lifeGlenn Jones
 
Creating Linked Data 2/5 Semtech2011
Creating Linked Data 2/5 Semtech2011Creating Linked Data 2/5 Semtech2011
Creating Linked Data 2/5 Semtech2011Juan Sequeda
 
Web 2.0 Lessonplan Day1
Web 2.0 Lessonplan Day1Web 2.0 Lessonplan Day1
Web 2.0 Lessonplan Day1Jesse Thomas
 
Agile Descriptions
Agile DescriptionsAgile Descriptions
Agile DescriptionsTony Hammond
 
"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul
"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul
"RDFa - what, why and how?" by Mike Hewett and Shamod LacoulShamod Lacoul
 
Patterns of Semantic Integration
Patterns of Semantic IntegrationPatterns of Semantic Integration
Patterns of Semantic IntegrationOptum
 
Cena-DTA PHP Conference 2011 Slides
Cena-DTA PHP Conference 2011 SlidesCena-DTA PHP Conference 2011 Slides
Cena-DTA PHP Conference 2011 SlidesAsao Kamei
 
Semantic Web: A web that is not the Web
Semantic Web: A web that is not the WebSemantic Web: A web that is not the Web
Semantic Web: A web that is not the WebBruce Esrig
 

Similar a creating portable social networks with microformats (20)

Microformats HTML to API
Microformats HTML to APIMicroformats HTML to API
Microformats HTML to API
 
The Semantic Web An Introduction
The Semantic Web An IntroductionThe Semantic Web An Introduction
The Semantic Web An Introduction
 
W3 C Specification For Interoperability And Accessibility For Ajax, Dhtml, Xm...
W3 C Specification For Interoperability And Accessibility For Ajax, Dhtml, Xm...W3 C Specification For Interoperability And Accessibility For Ajax, Dhtml, Xm...
W3 C Specification For Interoperability And Accessibility For Ajax, Dhtml, Xm...
 
The DiSo Project and the Open Web
The DiSo Project and the Open WebThe DiSo Project and the Open Web
The DiSo Project and the Open Web
 
Consuming Linked Data by Humans
Consuming Linked Data by HumansConsuming Linked Data by Humans
Consuming Linked Data by Humans
 
An Overview on PROV-AQ: Provenance Access and Query
An Overview on PROV-AQ: Provenance Access and QueryAn Overview on PROV-AQ: Provenance Access and Query
An Overview on PROV-AQ: Provenance Access and Query
 
Sweo talk
Sweo talkSweo talk
Sweo talk
 
Can your website be your API and real life
Can your website be your API and real lifeCan your website be your API and real life
Can your website be your API and real life
 
Creating Linked Data 2/5 Semtech2011
Creating Linked Data 2/5 Semtech2011Creating Linked Data 2/5 Semtech2011
Creating Linked Data 2/5 Semtech2011
 
Web 2.0 Lessonplan Day1
Web 2.0 Lessonplan Day1Web 2.0 Lessonplan Day1
Web 2.0 Lessonplan Day1
 
Why RDFa?
Why RDFa?Why RDFa?
Why RDFa?
 
Putting SOAP to REST
Putting SOAP to RESTPutting SOAP to REST
Putting SOAP to REST
 
Agile Descriptions
Agile DescriptionsAgile Descriptions
Agile Descriptions
 
"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul
"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul
"RDFa - what, why and how?" by Mike Hewett and Shamod Lacoul
 
Patterns of Semantic Integration
Patterns of Semantic IntegrationPatterns of Semantic Integration
Patterns of Semantic Integration
 
Cena-DTA PHP Conference 2011 Slides
Cena-DTA PHP Conference 2011 SlidesCena-DTA PHP Conference 2011 Slides
Cena-DTA PHP Conference 2011 Slides
 
Semantic Web: A web that is not the Web
Semantic Web: A web that is not the WebSemantic Web: A web that is not the Web
Semantic Web: A web that is not the Web
 
Html5
Html5Html5
Html5
 
Juggling
JugglingJuggling
Juggling
 
Web 3 0
Web 3 0Web 3 0
Web 3 0
 

Más de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 

Más de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 

Último

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 

Último (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

creating portable social networks with microformats

  • 2. social networks pownce.com ma.gnolia.com edenbee.com upcoming.yahoo.com last.fm twitter.com flickr.com Social network fatigue? More important than that: freedom of movement; reducing friction when moving from service to service. This isn’t about giving up one network in favour of another. Interoperability is the goal.
  • 3. username & password antipattern Suck email addresses out of address books by requesting webmail username and password on a third-party site. This teaches users how to be phished. Insecure.
  • 4. API+OAuth google contacts flickr Safe and secure but complex to implement. Does knowledge of someone’s email address really define a relationship anyway?
  • 5. reuse simple existing microformats Principles of microformats: Reuse existing standards (vcard, icalendar) Simple by design. Don’t boil the ocean. Hitting 80% of use cases with 20% effort (Pareto principle). Only encode what people are already publishing. Don’t try to change people’s current behaviour (it’s really hard). What format are most people already publishing in? HTML!
  • 6. HTML my details my contacts their details Microformats are built into HTML rather than separate files (out of sight is out of mind; invisible metadata rots). HTML pages are RESTful. Can your website be your API? Kind of... it’s read only rather than read/write. But look at the data that’s already being published.
  • 7. hCard my details Identifying people.
  • 8. hCard <span class=“vcard”> <a class=“fn nickname url” href= “http://example.com/adactio”> adactio </a> </span> fn for formatted name, nickname for username, url for a web page that represents this person. hCards do not need to be in-depth: there’s more to hCard than simply translating to vcard. Don’t publish any more data than what you publish anyway. There is semantic value in identifying a string of text as someone’s name. There is no PERSON element in HTML. This is exactly what the CLASS element is for: adding your own semantics.
  • 9. hCard <h1 class=“vcard”> <a class=“fn url” rel=“me” href= “http://adactio.com/”> Jeremy Keith </a> </h1> Profile page. This URL represents a person.
  • 10. <h1 class=“vcard”> XFN <a class=“fn url” rel=“me” href= “http://adactio.com/”> Jeremy Keith </a> </h1> When linking to another URL representing the same person, use rel=”me”. XFN is a proto-microformat (it didn’t follow The Process).
  • 12. <li class=“vcard”> XFN <a rel=“contact” class=“fn nickname url” href= “http://example.com/username”> username </a> </li> XFN provides a number of values, but all you really need is rel=”contact”. For a dating site like I’m In Like With You, you could maybe use rel=”crush” or rel=”sweetheart”. For a professional site like Linked In, you could maybe use rel=”acquaintance” or rel=”colleague”. But for most purposes, rel=”contact” is enough. Beware of asserting rel=”friend” programmatically.
  • 13. <ul> XFN <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> </ul> <a rel=“me next” href=“/contacts/2”>More...</a> Pagination is a common pattern. Use rel=”next” in combination with rel=”me”: “This is another page representing this person.”
  • 14. <ul> XFN <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> <li><a rel=“contact”... </li> </ul> <a rel=“me prev” href=“/contacts”>...Back</a> Likewise, use rel=”prev” in combination with rel=”me”. REL values, like CLASS, can be space separated.
  • 16. <h1 class=“vcard”> XFN <a class=“fn url” rel=“me” href= “http://suda.co.uk/”> Brian Suda </a> </h1> Each one of your contacts has their own profile page, possibly linking off to another URL representing that person.
  • 17. hCard & XFN class & rel That’s it! Sin é! A few CLASS attributes and a few REL attributes and you’re good to go. This isn’t a replacement for having a proper API: it’s a nice alternative for the simple stuff. Allow access to data in as many formats as possible: XML, JSON, RSS, microformats.
  • 18. parsing code.google.com /apis/socialgraph Parsing can be tricky. Spidering is even trickier. Luckily Google provide the Social Graph API. Google does all the hard work. Spiders XFN and FOAF relationships (FOAF relationships are translated to XFN). Spiders rel=”prev” and rel=”next”, also spiders rel=”me”.
  • 19. matching fn nickname url email If you are have one social network and you allow people to import relationships from other social networks: Try some fuzzy logic: a combination of nickname (username) and fn perhaps. A matching url value is even better. This won’t get 100% accuracy but 80% accuracy with 20% effort is good. You won’t have access to email (often used a unique identifier). The other values should be enough.
  • 20. what about... trust? walled gardens? Trust: how can you believe these assertions? You can’t. But that’s true of everythin on the web. It is not the job of formats to estabilish trust or authentication. Protocol technologies like SSL and OpenID do that. Try mashing up OpenID with microformats. Remember, microformats don’t make any more assertions than what’s already being published (they just add extra semantic clarity). Walled gardens. Everything I’ve shown applies to sites that publish this information publicly. You can still publish hCard and XFN on walled gardens but parsing will require some kind of authentication (maybe OpenID).
  • 23. the future... one form field? “Give me one URL that represents you.” Let the system take care of the rest, discovering contact details and spidering relationships. What you can do: Add hCard classes and XFN rel values if you are already publishing a social network. Use Google’s Social Graph API to allow users to import existing relationships.
  • 24. design challenges Make the sign-up process hassle-free. Avoid jargon: don’t mention microformats or hCard or XFN. Don’t import automatically. Allow users to accept or reject relationships. Should you notify users when someone they know joins your social network? Should you allow users to subscribe to, rather than import from, a different social network?
  • 25. thank you adactio.com microformats.org go raibh maith agaibh