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


Published on

This is a talk for the Loughborough University Computer Society about the nitty gritty of my.Lboro, our new student portal site. It touches on cloud APIs, Zend and much, much more!

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

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

  1. 1. The Future is Here:It’s Just Not Evenly Distributed Martin Hamilton @martin_hamiltonPhoto by Sarath Sreekumar via Flickr
  2. 2. 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 :-)
  3. 3. App, or website?
  4. 4. But First…
  5. 5. Diagram credit: Andy Powell
  6. 6. About Me
  7. 7. Now Back to The Programme…
  8. 8. 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
  9. 9. ATOM Sample with Namespaces<item><title>Cake/Pie.</title><pubDate>Mon, 12 Dec 2011 00:37:46 +0000</pubDate><link></link><guid></guid><author>Lord_Infamy</author><dc:creator>Lord_Infamy</dc:creator><slash:comments>1</slash:comments></item>
  10. 10. Newsfeeds on my.LboroRSS aggregator written in Perl. Chosesnewsfeeds based on staff/student status
  11. 11. Google Docs:DocumentsListAPI via Zend,with 2 LeggedOAuth
  12. 12. Time for a RESTGET/feeds/documents/private/full? HTTP/1.1Host: closeUser-Agent: Zend_Framework_Gdata/1.11.1Accept-encoding: identityAuthorization: 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”
  13. 13. 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( . 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";}
  14. 14. <entry><id></id><published>2010-05-25T14:53:42.396Z</published><updated>2010-05-25T15:02:10.470Z</updated><category scheme=><category scheme=><title type=text>Single Sign-On target services</title><content type=text/html’src=;><link rel=alternate type=text/htmlhref=;hl=en_US/><link rel=’type=application/atom+xml’href=
  15. 15. <linkrel=edit-media type=text/htmlhref=><author> <name>f.j.bloggs-08</name> <email></email></author><gd:resourceId> spreadsheet:0AtfqxZt971TSdFFvQlRTZ3VpRkVyYkZERnVxclZMMXc</gd:resourceId><gd:lastModifiedBy> <name>f.j.bloggs-08</name> <email></email></gd:lastModifiedBy><gd:lastViewed>2011-10-06T21:29:56.187Z</gd:lastViewed><gd:quotaBytesUsed>0</gd:quotaBytesUsed><docs:writersCanInvite value=true/></entry>
  16. 16. Gmail:Zend Librarywith2 Legged OAuth
  17. 17. GoogleCalendar:ZendLibrary with2 LeggedOAuth
  18. 18. Learn widget:MySQL connectionto underlyingMoodle softwareExported view ofUnderlying StudentInformation System
  19. 19. Budget widget: • MS SQL (ODBC) connection • Card vendor Web Services API • Home grown Library API
  20. 20. Putting It Together
  21. 21. Putting It TogetherVisiting – 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
  22. 22. 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!
  23. 23. Closing Thoughts
  24. 24. CMIS / Google Calendar
  25. 25. Add mobileVersion here
  26. 26. The Future is Here:It’s Just Not Evenly Distributed Martin Hamilton @martin_hamiltonPhoto by Sarath Sreekumar via Flickr