39
The Future is Here: It’s Just Not Evenly Distributed Martin Hamilton http://martinh.net @martin_hamilton Photo by Sarath Sreekumar via Flickr

The Future Is Here: It's Just Not Evenly Distributed

Embed Size (px)

Citation preview

Page 1: The Future Is Here: It's Just Not Evenly Distributed

The Future is Here:It’s Just Not Evenly Distributed

Martin Hamilton

http://martinh.net

@martin_hamilton

Photo by Sarath Sreekumar via Flickr

Page 2: The Future Is Here: It's Just Not Evenly Distributed
Page 3: The Future Is Here: It's Just Not Evenly Distributed

my.Lboro

• New site bringing together student info:

–Google Email, Calendar and Docs

–Learn (Moodle) VLE

–Library Services

–Newsfeeds and key links

• This talk: How it works :-)

Page 4: The Future Is Here: It's Just Not Evenly Distributed

App, or website?

Page 5: The Future Is Here: It's Just Not Evenly Distributed

But First…

Page 6: The Future Is Here: It's Just Not Evenly Distributed
Page 7: The Future Is Here: It's Just Not Evenly Distributed

Diagram credit: Andy Powell

Page 8: The Future Is Here: It's Just Not Evenly Distributed
Page 9: The Future Is Here: It's Just Not Evenly Distributed
Page 10: The Future Is Here: It's Just Not Evenly Distributed
Page 11: The Future Is Here: It's Just Not Evenly Distributed

About Me

Page 12: The Future Is Here: It's Just Not Evenly Distributed
Page 13: The Future Is Here: It's Just Not Evenly Distributed
Page 14: The Future Is Here: It's Just Not Evenly Distributed
Page 15: The Future Is Here: It's Just Not Evenly Distributed
Page 16: The Future Is Here: It's Just Not Evenly Distributed

Now Back to The Programme…

Page 17: The Future Is Here: It's Just Not Evenly Distributed

RSS/ATOM

• It’s all around you

<link href=“…” rel=“alternate”

type=“application/rss+xml” />

• But it might need a clean up

– Consider implications of embedded HTML

Page 18: The Future Is Here: It's Just Not Evenly Distributed
Page 19: The Future Is Here: It's Just Not Evenly Distributed

ATOM Sample with Namespaces

<item><title>Cake/Pie.</title><pubDate>Mon, 12 Dec 2011 00:37:46 +0000</pubDate><link>http://lsucs.org.uk/threads/cake-pie.5963/</link><guid>http://lsucs.org.uk/threads/cake-pie.5963/</guid><author>Lord_Infamy</author><dc:creator>Lord_Infamy</dc:creator><slash:comments>1</slash:comments></item>

Page 20: The Future Is Here: It's Just Not Evenly Distributed

Newsfeeds on my.Lboro

RSS aggregator written in Perl. Choses newsfeeds based on staff/student status

Page 21: The Future Is Here: It's Just Not Evenly Distributed

Google Docs:

DocumentsListAPI via Zend, with 2 Legged OAuth

Page 22: The Future Is Here: It's Just Not Evenly Distributed

Time for a REST

GET/feeds/documents/private/full?xoauth_requestor_id=f.j.bloggs-08%40student.lboro.ac.uk HTTP/1.1

Host: docs.google.com

Connection: close

User-Agent: Lboro.ac.uk-My-2.1 Zend_Framework_Gdata/1.11.1

Accept-encoding: identity

Authorization: Oauth realm=”X", oauth_consumer_key=”Y",

oauth_nonce=”Z", oauth_signature_method="HMAC-SHA1",

oauth_timestamp="1323821672", oauth_version="1.0",

oauth_signature="4hfRnByN%2F2DZya8t797CQqPmCTg%3D”

Page 23: The Future Is Here: It's Just Not Evenly Distributed

'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,'version' => '1.0’, 'signatureMethod' => 'HMAC-SHA1','consumerKey' => ‘XXX’, 'consumerSecret' => ‘YYY’

);

$config = new Zend_Oauth_Consumer($options);$token = new Zend_Oauth_Token_Access();$httpClient = $token->getHttpClient($options);$client = new Zend_Gdata_Docs($httpClient);

$feed = $client->getDocumentListFeed('https://docs.google.com/feeds/documents/private/full?xoauth_requestor_id=' . urlencode($email_address));

foreach ($feed->entries as $entry) {$title = $entry->title; $href = $link->getHref();print "<li><a target='_gdocs' href='$href'>$title</a></li>\n";

}

Page 24: The Future Is Here: It's Just Not Evenly Distributed

<entry><id>https://docs.google.com/feeds/documents/private/full/spreadsheet%3A0AtfqxZt971TSdFFvQlRTZ3ZpRkVyYkZERnVxclZMMXc</id><published>2010-05-25T14:53:42.396Z</published><updated>2010-05-25T15:02:10.470Z</updated><category scheme='http://schemas.google.com/g/2005/labels'term='http://schemas.google.com/g/2005/labels#viewed'label='viewed'/><category scheme='http://schemas.google.com/g/2005#kind'term='http://schemas.google.com/docs/2007#spreadsheet'label='spreadsheet'/><title type='text'>Single Sign-On target services</title><content type='text/html’ src='https://docs.google.com/feeds/download/spreadsheets/Export?key=0AtfqxZt971TSdFFvQlRTZ3ZpRkVyYkZERnVxclZMMXc&amp;[email protected]'/><link rel='alternate' type='text/html'href='https://docs.google.com/a/student.lboro.ac.uk/spreadsheet/ccc?key=0AtfqxZt971TSdFFvQlRTZ3VpRkVyYkZERnVxclZMMXc&amp;hl=en_US'/><link rel='http://schemas.google.com/spreadsheets/2006#worksheetsfeed’ type='application/atom+xml’ href='https://spreadsheets.google.com/feeds/worksheets/0AtfqxZt971TSdFFvQlRTZ3ZpRkVyYkZERnVxclZMMXc/private/full'/>

Page 25: The Future Is Here: It's Just Not Evenly Distributed

<linkrel='edit-media' type='text/html'href='https://docs.google.com/feeds/media/private/full/spreadsheet%3A0AtfqxZt971TSdFFvQlRTZ3ZpRkVyYkZERnVxclZMMXc/[email protected]'/><author><name>f.j.bloggs-08</name><email>[email protected]</email>

</author><gd:resourceId>spreadsheet:0AtfqxZt971TSdFFvQlRTZ3VpRkVyYkZERnVxclZMMXc

</gd:resourceId><gd:lastModifiedBy><name>f.j.bloggs-08</name><email>[email protected]</email>

</gd:lastModifiedBy><gd:lastViewed>2011-10-06T21:29:56.187Z</gd:lastViewed><gd:quotaBytesUsed>0</gd:quotaBytesUsed><docs:writersCanInvite value='true'/></entry>

Page 26: The Future Is Here: It's Just Not Evenly Distributed

Gmail:

Zend Librarywith2 Legged OAuth

Page 27: The Future Is Here: It's Just Not Evenly Distributed

Google Calendar:

ZendLibrary with2 Legged OAuth

Page 28: The Future Is Here: It's Just Not Evenly Distributed

Learn widget:

MySQL connectionto underlyingMoodle software

Exported view ofUnderlying StudentInformation System

Page 29: The Future Is Here: It's Just Not Evenly Distributed

Budget widget:• MS SQL (ODBC) connection• Card vendor Web Services API• Home grown Library API

Page 30: The Future Is Here: It's Just Not Evenly Distributed

Putting It Together

Page 31: The Future Is Here: It's Just Not Evenly Distributed
Page 32: The Future Is Here: It's Just Not Evenly Distributed

Putting It Together

Visiting http://my.lboro.ac.uk:

– Shibboleth prompts for SSO login if necessary

• SAML response includes LDAP attributes from Active Directory, e.g. student ID

– Populates skeleton HTML of page

• Starts AJAX callbacks going to render widgets

• Choice of staff/student content

– Appearance driven via CSS + jQuery

Page 33: The Future Is Here: It's Just Not Evenly Distributed

Traps for the Unwary

• Are you using UTF-8 everywhere?

• SimpleXMLElement barfs on malformed XML

• How much intermediate caching to do?

• Do you even have APIs??

• 2 Legged OAuth not well understood

• REST good, SOAP bad – but use JSON rather than XML if you can

• print_r() and Data::Dumper are your friends!

Page 34: The Future Is Here: It's Just Not Evenly Distributed

Closing Thoughts

Page 35: The Future Is Here: It's Just Not Evenly Distributed
Page 36: The Future Is Here: It's Just Not Evenly Distributed

CMIS / Google Calendar

Page 37: The Future Is Here: It's Just Not Evenly Distributed

Add mobileVersion here

Page 38: The Future Is Here: It's Just Not Evenly Distributed
Page 39: The Future Is Here: It's Just Not Evenly Distributed

The Future is Here:It’s Just Not Evenly Distributed

Martin Hamilton

http://martinh.net

@martin_hamilton

Photo by Sarath Sreekumar via Flickr