SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Mining Wikipedia for
  Awesome Data
      Neil Crosby
What’s this about then?

• There’s loads of groovy content on
  Wikipedia[citation needed].
• You are lazy.
• You want groovy content on your site.
Wikipedia has an API


• Who knew?
• http://en.wikipedia.org/w/api.php
API has lots of options
 Param        Values            What does it do?

 format      php, json,          Output format.
              TODO
redirects       0, 1         Redirect to good pages.

rvsection   0, 1, 2, 3, etc Page section to get data for.

 action     query, parse           API method.
Getting WikiText? Easy

• http://en.wikipedia.org/w/api.php?
  format=php&action=query&titles=one
  +flew+over+the+cuckoo’s
  +nest&rvprop=content&prop=revisions&re
  directs=1
Searching? Harder


• Wikipedia doesn’t have a good search
  engine.
Use Yahoo! BOSS

• http://boss.yahooapis.com/ysearch/web/v1/
  site:en.wikipedia.org+one+flew+over+the
  +cuckoo’s+nest?appid=yourBOSSiD
• First result: http://en.wikipedia.org/wiki/
  One_Flew_Over_the_Cuckoo's_Nest_(fil
  m)
Then get WikiText

• http://en.wikipedia.org/w/api.php?
  format=php&action=query&titles=
  One_Flew_Over_the_Cuckoo's_Nest_(fil
  m)&rvprop=content&prop=revisions&redir
  ects=1
The WikiText
'''''One Flew Over the Cuckoo's Nest''''' is a
[[1975 in film|1975]] [[comedy-drama]] film
[[film director|directed]] by [[Miloš
Forman]]. The film is an adaptation of the
1962 novel ''[[One Flew Over the Cuckoo's
Nest (novel)|One Flew Over the Cuckoo's
Nest]]'' by [[Ken Kesey]]. The movie was the
first to [[List of Big Five Academy Award
winners and nominees|win all five]]...
But I wanted HTML!


• WikiText is no good for dumping into a
  website.
Another API call

• http://en.wikipedia.org/w/api.php?
  action=parse&format=php&text=returned
  +wiki+text
• Text will be big - do as a POST.
Wiki HTML!
<p><i><b>One Flew Over the Cuckoo's
Nest</b></i> is a <a href=quot;/wiki/
1975_in_filmquot; title=quot;1975 in filmquot;>1975</a>
<a href=quot;/wiki/Comedy-dramaquot;
title=quot;Comedy-dramaquot;>comedy-drama</a>
film <a href=quot;/wiki/Film_directorquot; title=quot;Film
directorquot;>directed</a> by <a href=quot;/wiki/
Milo%C5%A1_Formanquot; title=quot;Miloš
Formanquot;>Miloš Forman</a>. The film is an...
Reducing the HTML

• DOMDocument->loadHTML()
• DOMXPath->query() to get wanted nodes.
• DOMDocument->saveHTML()
• str_replace() away HTML boilerplate.
The Cuckoo Problem

• “One Flew Over the Cuckoo’s Nest”
• A book?
• A film?
• Depends on context.
The Cuckoo Solution

• Give context:
 • “one flew over the cuckoo’s nest book”
 • “one flew over the cuckoo’s nest movie”
• Yahoo! BOSS gives relevant result. Yay.
There’s still a problem...

• Sometimes you can give too much context.
• “wii fit” gets expected result.
• “wii fit electronics” returns “WiiMote”.
• Oh dear.
When is too much?

• Who knows?
• Just because an article exists for the basic
  term doesn’t mean it’s the right article.
• I’ve not solved this yet.
It’s all too complicated

• So don’t do it all.
• Use a library.
• http://thecodetrain.co.uk/code/wikislurp
Runs as a web service


• http://yoursite.com/wikislurp/?params=blah
What are the params?
Param                      Meaning
secret             Your self-chosen appid.
query          What you’d like wiki info about.
context             A little bit of context.
section   Article section to retrieve. Zero indexed.
xpath          Specify the elements to return.
output             Serialised php or json.
What does it return?


• An array.
• Keys for “url”, “title” and “article”.
Why a webservice?

• You can’t abandon a function call in PHP.
• You can abandon a CURL call.
• If wikislurp takes too long, move on.
Kitten Break



There’s some code coming up, soz.

              http://www.flickr.com/photos/gsx-r750/1475603952/
How to call WikiSlurp

• http://yoursite.com/wikislurp/?
  secret=YOUR+SECRET&query=one+flew
  +over+the+cuckoo’s
  +nest&context=book&xpath=/html/body/
  p[position()<=3]&section=0&output=json
And from PHP?
$s = curl_init();
curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,
    CURLOPT_RETURNTRANSFER,1);
// wait 1 second, then abort
curl_setopt($s,CURLOPT_TIMEOUT,1);
$result = curl_exec($s);
curl_close( $s );
XPath?
    Query                 Gives You

      //p                   All <p>
                    All <p> directly under
 /html/body/p
                           <body>
/html/body/p[2]       2nd <p> directly...
  /html/body/
                   First three <p> directly...
p[position()<=3]
Oh noes, more XPath
          Query                     Gives You

                             All <p> with single class
/html/body/p[@class='fish']
                                      “fish”


       /html/body/
                              All <p> with any class
   p[contains(concat(quot;
                                  including “fish”
  quot;,@class,quot; quot;), quot; fish quot;)]
Phew.

Have another kitten.




                http://www.flickr.com/photos/evapro/305689596/
Future Features

• Do something intelligent with context.
• Convert to HTML without an extra API
  call.
• Return proper error codes if things go
  wrong.
Where is this used?


• TheTenWordReview.com
• IsNeilAnnoyedBy.com
Questions?
• I will blog about this talk at The Code Train.
• No, really - I will.
• Download the slurpy source code from
  http://thecodetrain.co.uk/code/wikislurp
• Slides? http://icanhaz.com/wikislurpslides
• I was and am http://NeilCrosby.com/vcard

Mais conteúdo relacionado

Mais de Neil Crosby

Yahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingYahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingNeil Crosby
 
Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Neil Crosby
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend TestingNeil Crosby
 
I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...Neil Crosby
 
TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...Neil Crosby
 
Starting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyStarting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyNeil Crosby
 
Multi-level vCards
Multi-level vCardsMulti-level vCards
Multi-level vCardsNeil Crosby
 

Mais de Neil Crosby (9)

Lagging Pipes
Lagging PipesLagging Pipes
Lagging Pipes
 
Yahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingYahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and Mashing
 
Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...
 
TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...
 
Starting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyStarting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search Monkey
 
Multi-level vCards
Multi-level vCardsMulti-level vCards
Multi-level vCards
 
Twitter Bots
Twitter BotsTwitter Bots
Twitter Bots
 

Último

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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
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
 
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
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
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
 
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
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
[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
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
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
 

Último (20)

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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
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
 
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...
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
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
 
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
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
[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
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
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
 

Mining Wikipedia For Awesome Data

  • 1. Mining Wikipedia for Awesome Data Neil Crosby
  • 2. What’s this about then? • There’s loads of groovy content on Wikipedia[citation needed]. • You are lazy. • You want groovy content on your site.
  • 3. Wikipedia has an API • Who knew? • http://en.wikipedia.org/w/api.php
  • 4. API has lots of options Param Values What does it do? format php, json, Output format. TODO redirects 0, 1 Redirect to good pages. rvsection 0, 1, 2, 3, etc Page section to get data for. action query, parse API method.
  • 5. Getting WikiText? Easy • http://en.wikipedia.org/w/api.php? format=php&action=query&titles=one +flew+over+the+cuckoo’s +nest&rvprop=content&prop=revisions&re directs=1
  • 6. Searching? Harder • Wikipedia doesn’t have a good search engine.
  • 7. Use Yahoo! BOSS • http://boss.yahooapis.com/ysearch/web/v1/ site:en.wikipedia.org+one+flew+over+the +cuckoo’s+nest?appid=yourBOSSiD • First result: http://en.wikipedia.org/wiki/ One_Flew_Over_the_Cuckoo's_Nest_(fil m)
  • 8. Then get WikiText • http://en.wikipedia.org/w/api.php? format=php&action=query&titles= One_Flew_Over_the_Cuckoo's_Nest_(fil m)&rvprop=content&prop=revisions&redir ects=1
  • 9. The WikiText '''''One Flew Over the Cuckoo's Nest''''' is a [[1975 in film|1975]] [[comedy-drama]] film [[film director|directed]] by [[Miloš Forman]]. The film is an adaptation of the 1962 novel ''[[One Flew Over the Cuckoo's Nest (novel)|One Flew Over the Cuckoo's Nest]]'' by [[Ken Kesey]]. The movie was the first to [[List of Big Five Academy Award winners and nominees|win all five]]...
  • 10. But I wanted HTML! • WikiText is no good for dumping into a website.
  • 11. Another API call • http://en.wikipedia.org/w/api.php? action=parse&format=php&text=returned +wiki+text • Text will be big - do as a POST.
  • 12. Wiki HTML! <p><i><b>One Flew Over the Cuckoo's Nest</b></i> is a <a href=quot;/wiki/ 1975_in_filmquot; title=quot;1975 in filmquot;>1975</a> <a href=quot;/wiki/Comedy-dramaquot; title=quot;Comedy-dramaquot;>comedy-drama</a> film <a href=quot;/wiki/Film_directorquot; title=quot;Film directorquot;>directed</a> by <a href=quot;/wiki/ Milo%C5%A1_Formanquot; title=quot;Miloš Formanquot;>Miloš Forman</a>. The film is an...
  • 13. Reducing the HTML • DOMDocument->loadHTML() • DOMXPath->query() to get wanted nodes. • DOMDocument->saveHTML() • str_replace() away HTML boilerplate.
  • 14. The Cuckoo Problem • “One Flew Over the Cuckoo’s Nest” • A book? • A film? • Depends on context.
  • 15. The Cuckoo Solution • Give context: • “one flew over the cuckoo’s nest book” • “one flew over the cuckoo’s nest movie” • Yahoo! BOSS gives relevant result. Yay.
  • 16. There’s still a problem... • Sometimes you can give too much context. • “wii fit” gets expected result. • “wii fit electronics” returns “WiiMote”. • Oh dear.
  • 17. When is too much? • Who knows? • Just because an article exists for the basic term doesn’t mean it’s the right article. • I’ve not solved this yet.
  • 18. It’s all too complicated • So don’t do it all. • Use a library. • http://thecodetrain.co.uk/code/wikislurp
  • 19. Runs as a web service • http://yoursite.com/wikislurp/?params=blah
  • 20. What are the params? Param Meaning secret Your self-chosen appid. query What you’d like wiki info about. context A little bit of context. section Article section to retrieve. Zero indexed. xpath Specify the elements to return. output Serialised php or json.
  • 21. What does it return? • An array. • Keys for “url”, “title” and “article”.
  • 22. Why a webservice? • You can’t abandon a function call in PHP. • You can abandon a CURL call. • If wikislurp takes too long, move on.
  • 23. Kitten Break There’s some code coming up, soz. http://www.flickr.com/photos/gsx-r750/1475603952/
  • 24. How to call WikiSlurp • http://yoursite.com/wikislurp/? secret=YOUR+SECRET&query=one+flew +over+the+cuckoo’s +nest&context=book&xpath=/html/body/ p[position()<=3]&section=0&output=json
  • 25. And from PHP? $s = curl_init(); curl_setopt($s,CURLOPT_URL, $url); curl_setopt($s,CURLOPT_HEADER,false); curl_setopt($s, CURLOPT_RETURNTRANSFER,1); // wait 1 second, then abort curl_setopt($s,CURLOPT_TIMEOUT,1); $result = curl_exec($s); curl_close( $s );
  • 26. XPath? Query Gives You //p All <p> All <p> directly under /html/body/p <body> /html/body/p[2] 2nd <p> directly... /html/body/ First three <p> directly... p[position()<=3]
  • 27. Oh noes, more XPath Query Gives You All <p> with single class /html/body/p[@class='fish'] “fish” /html/body/ All <p> with any class p[contains(concat(quot; including “fish” quot;,@class,quot; quot;), quot; fish quot;)]
  • 28. Phew. Have another kitten. http://www.flickr.com/photos/evapro/305689596/
  • 29. Future Features • Do something intelligent with context. • Convert to HTML without an extra API call. • Return proper error codes if things go wrong.
  • 30. Where is this used? • TheTenWordReview.com • IsNeilAnnoyedBy.com
  • 31. Questions? • I will blog about this talk at The Code Train. • No, really - I will. • Download the slurpy source code from http://thecodetrain.co.uk/code/wikislurp • Slides? http://icanhaz.com/wikislurpslides • I was and am http://NeilCrosby.com/vcard