An Extensible Framework for Creating Personal Web Archives of Content Behind Authentication Mat Kelly Director:Michele C. Weigle Committee:Michael L. Nelson.

Slides:



Advertisements
Similar presentations
Archive What I See Now Mat Kelly, Michael L. Nelson, Michele C. Weigle Old Dominion University Web Science and Digital.
Advertisements

Web Visualization Technology Horner APG Ver 1.0.
Selecting Preservation Strategies for Web Archives Stephan Strodl, Andreas Rauber Department of Software.
HTTP – HyperText Transfer Protocol
Chapter 9 Application Layer, HTTP Professor Rick Han University of Colorado at Boulder
2/9/2004 Web and HTTP February 9, /9/2004 Assignments Due – Reading and Warmup Work on Message of the Day.
Web Programming Language Dr. Ken Cosh Week 1 (Introduction)
1 Archive-It Training University of Maryland July 12, 2007.
Introduction to InfoSec – Recitation 10 Nir Krakowski (nirkrako at post.tau.ac.il) Itamar Gilad (itamargi at post.tau.ac.il)
INTRODUCTION TO WEB DATABASE PROGRAMMING
July 25, 2012 Arlington, Virginia Digital Preservation 2012warcreate.com WARCreate Create Wayback-Consumable WARC Files from Any Webpage Mat Kelly, Michele.
Chapter 1 Introduction to HTML, XHTML, and CSS
Computer Concepts 2014 Chapter 7 The Web and .
Basics of the HTTP Protocol and Apache Web Server Brandon Checketts.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Cross-Site Scripting Vulnerabilities Adam Doupé 11/24/2014.
1 Web Server Concepts Dr. Awad Khalil Computer Science Department AUC.
SUNY Polytechnic Institute CS 490 – Web Design, AJAX, jQuery Web Services A web service is a software system that supports interaction (requesting data,
Tool Academy: Web Archiving Nicholas Digital Cultural Heritage DC Meetup December 20, 2012 “cobwebbed screw driver” by Flickr user Colby.
ASP.NET + Ajax Jesper Tørresø ITNET2 F08. Ajax Ajax (Asynchronous JavaScript and XML) A group of interrelated web development techniques used for creating.
CSC 2720 Building Web Applications Getting and Setting HTTP Headers (With PHP Examples)
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
JavaScript, Fourth Edition Chapter 12 Updating Web Pages with AJAX.
Java Omar Rana University of South Asia. Course Overview JAVA  C/C++ and JAVA Comparison  OOP in JAVA  Exception Handling  Streams  Graphics User.
WWW, HTTP, GET, POST, Cookies Svetlin Nakov Telerik Corporation
 2001 Prentice Hall, Inc. All rights reserved. 1 Chapter 21 - Web Servers (IIS, PWS and Apache) Outline 21.1 Introduction 21.2 HTTP Request Types 21.3.
Indo-US Workshop, June23-25, 2003 Building Digital Libraries for Communities using Kepler Framework M. Zubair Old Dominion University.
Copyright 2012 & 2015 – Noah Mendelsohn Introduction to: The Architecture of the World Wide Web Noah Mendelsohn Tufts University
Dyalog’09. Overview of MildServer Morten Kromberg Dyalog’09 – Princeton, NJ.
Chapter 8 Cookies And Security JavaScript, Third Edition.
Web Engineering we define Web Engineering as follows: 1) Web Engineering is the application of systematic and proven approaches (concepts, methods, techniques,
Visualizing Digital Collections at Archive-It Michele C. Weigle, Michael L. Nelson Web Sciences and Digital Libraries (WS-DL) Lab Department of Computer.
World Wide Web (WWW) A Distributed Document- Based System Group E Ricky Tong (D-A0-1611) Eddy Leong (D-A0-1623) Dick Lei (D-A0-1658)
Proxy Lab Recitation I Monday Nov 20, 2006.
Archive What I See Now Mat Kelly, Michael L. Nelson, Michele C. Weigle Old Dominion University Web Science and Digital.
HTTP1 Hypertext Transfer Protocol (HTTP) After this lecture, you should be able to:  Know how Web Browsers and Web Servers communicate via HTTP Protocol.
Web Server Design Week 4 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/03/10.
Web Design (1) Terminology. Coding ‘languages’ (1) HTML - Hypertext Markup Language - describes the content of a web page CSS - Cascading Style Sheets.
Copyright © cs-tutorial.com. Overview Introduction Architecture Implementation Evaluation.
World Wide Web “WWW”, "Web" or "W3". World Wide Web “WWW”, "Web" or "W3"
Web Server Design Week 7 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/24/10.
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
 Previous lessons have focused on client-side scripts  Programs embedded in the page’s HTML code  Can also execute scripts on the server  Server-side.
Internet Applications (Cont’d) Basic Internet Applications – World Wide Web (WWW) Browser Architecture Static Documents Dynamic Documents Active Documents.
EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP) Ion Stoica Nov 20, 2001 (*)
Summer 2007 Florida Atlantic University Department of Computer Science & Engineering COP 4814 – Web Services Dr. Roy Levow Part 1 – Introducing Ajax.
RESTful Web Services What is RESTful?
Archive Facebook Matthew Kelly Old Dominion University.
Overview of Servlets and JSP
Advanced Website Training: June, 2010 Insert Images as Your Background Using Google Docs for Document Hosting Custom Contact Forms on Your Website.
COMP2322 Lab 2 HTTP Steven Lee Jan. 29, HTTP Hypertext Transfer Protocol Web’s application layer protocol Client/server model – Client (browser):
Whole Page Performance Leeann Bent and Geoffrey M. Voelker University of California, San Diego.
Troubleshooting web sites with web browsers LIR HEAnet User Group for Libraries DCU June 7 th 2016
REST API Design. Application API API = Application Programming Interface APIs expose functionality of an application or service that exists independently.
© Janice Regan, CMPT 128, Jan 2007 CMPT 371 Data Communications and Networking HTTP 0.
Fiddler and Your Website Robert Boedigheimer. About Me Web developer since 1995 Columnist for aspalliance.com Pluralsight Author 3 rd Degree Black Belt,
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
Archive Facebook Matthew Kelly Department of Computer Science Old Dominion University Norfolk, Virginia.
DOM, jQuery, AJAX, REST Using Kinvey as JS Back-End
Web Programming Language
HTTP – An overview.
Data Virtualization Tutorial… CORS and CIS
COMP2322 Lab 2 HTTP Steven Lee Feb. 8, 2017.
DCR ARB Presentation Team 5: Tour Conductor.
Introduction Web Environments
Web Caching? Web Caching:.
HTTP Protocol.
Web Server Design Week 5 Old Dominion University
Recitation on AdFisher
CSCI-351 Data communication and Networks
Presentation transcript:

An Extensible Framework for Creating Personal Web Archives of Content Behind Authentication Mat Kelly Director:Michele C. Weigle Committee:Michael L. Nelson Yaohang Li 8/3/2012MS Thesis - August 2012

Background Internet Archive crawls and preserves webpages creating web archives Only public sites are preserved 8/3/2012MS Thesis - August 20122

Problems A lot of content on web is not preserved – e.g., Social media content As more people document lives on social media, importance of preserving becomes greater Content not preserved = heritage lost 8/3/2012MS Thesis - August 20123

Problems: Unsuitability of Institutional Tools Overhead and learning curve is steep Institutional tools meant for larger scale 8/3/2012MS Thesis - August 20124

Problems: Complete Lack of Preservation 8/3/2012MS Thesis - August 20125

State of the Art in Personal Web Archiving Personal web archiving tools – Break when target sites’ hierarchy changes – Produce sub-optimal archives Some conventional web archiving practices not easily translatable to personal web archiving 8/3/2012MS Thesis - August 20126

Goals of Thesis Show social media content can be preserved – With output more optimal than current offerings Remedy the tools’ breaking problem – Remotely specify target sites’ hierarchies – Show spec is easily adaptable to tools Identify and consider solutions to domain- specific nuances Establish section commonality between social media websites 8/3/2012MS Thesis - August 20127

Extent of the Unpreserved 8/3/2012MS Thesis - August 20128

Ways to Capture Missing Content: Supply crawler with auth credentials Unsuitable for institutional crawlers Other Personal Web Archiving problems remain 8/3/2012MS Thesis - August 20129

Ways to Capture Missing Content: “Save As” Desired Pages Miss metadata Doesn’t produce interoperable output 8/3/2012MS Thesis - August

– Lose look & feel – Difficult capturing all content desired – Frequently sub- optimal output format Ways to Capture Missing Content: Utilize Fetching Tools 8/3/2012MS Thesis - August

Tools Utilized In Thesis: Archive Facebook Firefox add-on Creates navigable “web archives” Outputs files w/ original file type Sequential Archiving 8/3/2012MS Thesis - August

Tools Utilized In Thesis: WARCreate Google Chrome extension Creates Wayback- Compatible Web ARChive (WARC) files Allows page manipulation prior to generating archive 8/3/2012MS Thesis - August

8/3/2012MS Thesis - August

Integration with Other Tools Wayback (WARC replay system) – Allows WARCreate output to be re-experienced – Provides content for Memento Memento – Allows temporal traversal of archived pages – Timegate serves as relay only to local wayback instance XAMPP (Client-Side Server Suite) – Overcome Javascript inadequacies – Provide foundation for replay system 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW WARC outputs

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW WARC outputs

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW WARC outputs Indexes

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August Crawls WWW Crawls WWW WARC outputs Indexes Publicly viewable Archive replay

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August WARC

Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August WARC

Indexes Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August WARC

Indexes Institutional vs. Personal Web Archiving 8/3/2012MS Thesis - August WARC

8/3/2012MS Thesis - August

Problems Specific to Personal Web Archiving Personalization/Authentication – Different users, facebook.com, different content Context – Different browsing tools, different site experience Output Format – Ad hoc approaches are often used that lose metadata, context, content, etc. 8/3/2012MS Thesis - August

Personalization/Authentication Two users, same URI, vastly different content One user, same URI, authentication vs. no authentication, different content – As shown in IA’s archive of FB 8/3/2012MS Thesis - August

Context Same URI+diff devices = diff content served Mobile vs. PC Firefox vs. Chrome 8/3/2012MS Thesis - August Your browser is too old and cannot render this content....features not supported by version of IE prior to 9...

Output Format 8/3/2012MS Thesis - August

Output Format 8/3/2012MS Thesis - August Saving only HTML is not enough Local references need manipulation Browser alone is insufficient replay system

Output Format 8/3/2012MS Thesis - August Misses HTTP headers Request & Response e.g., Auth If headers included, inputs for personalization can be viewed GET / HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/ Firefox/ Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep- alive Cookie: datr=KMo6T3jicPEdEl4pY2yFnr6F; lu=TgU4dhoSBG0ZmEnThtLeyqIA; c_user= ; fr=0KMqEWNPPgver2SIx.AWXf- 6Ww_7iQFPPP9sFtiiMPaV0; s=Aa4dL41H8UGZ-4Lf.BQGryl; xs=1%3Am7APtmN9-ev4Vg%3A0%3A ; act= %2F3%3A2; p=1; presence=EM EuserFA21B A2EstateFD sb2F0Et2F_5b_5dElm2FnullEuct2F BEtrFnullEt wF EatF EutF0EsndF1EnotF0CEchF Dp_5f1B F1CC HTTP/ OK Cache-Control: private, no-cache, no-store, must-revalidate Expires: Sat, 01 Jan :00:00 GMT P3P: CP="Facebook does not have a P3P policy. Learn why here: Pragma: no-cache X-Content-Type-Options: nosniff x-frame- options: DENY X-XSS-Protection: 1; mode=block Content-Encoding: gzip Content-Type: text/html; charset=utf-8 X-FB-Debug: uMXm8343NOn0OOIeDna2teVECApUiEqj6s7GTwNx+Ss= Date: Thu, 02 Aug :26:12 GMT Transfer-Encoding: chunked Connection: keep-alive REQUEST RESPONSE NOT CAPTURED BY BACKUP TOOLS/METHODS

Specification and OOP Sites’ hierarchies resemble OOP concepts (polymorphism, inheritance) Sites’ sections can be represented as classes Classes converted to XML specification Personal Web Archiving tools utilize this specification to become adaptive 8/3/2012MS Thesis - August

Commonality of “Sections” Between Social Media Websites 8/3/2012MS Thesis - August Abstracted media type personal streamwallpostsmy tweets global streamnews feedstreamsfollowees’ tweets multimedia - photosphotos multimedia - videosvideos photo collectionalbums postsnotes friends circles

Example: Facebook Section Objects 8/3/2012MS Thesis - August SocialMediaWebsite facebook = new SocialMediaWebsite(homepage => " facebook->decorate([ new SocialMediaWebsiteSectionPersonalStream( name => "Wall", url => " preprocessor => new SocialMediaScrollPrepreprocessor( timeBetweenFirings => 0, maxFirings = 0, conditionBeforeSubsequentFirings = null ) ), new SocialMediaWebsiteSectionUserInfo( name => "Info", url => " ), new SocialMediaWebsiteSectionMultimediaCollection( name => "Photos", url => " proprocessor => new SocialMediaScrollPreprocessor( timeBetweenFirings => 0, maxFirings => 0, conditionBeforeSubsequentFirings = null ) ),...

Example: Facebook Section Objects 8/3/2012MS Thesis - August SocialMediaWebsite facebook = new SocialMediaWebsite(homepage => " facebook->decorate([ new SocialMediaWebsiteSectionPersonalStream( name => "Wall", url => " preprocessor => new SocialMediaScrollPrepreprocessor( timeBetweenFirings => 0, maxFirings = 0, conditionBeforeSubsequentFirings = null ) ), new SocialMediaWebsiteSectionUserInfo( name => "Info", url => " ), new SocialMediaWebsiteSectionMultimediaCollection( name => "Photos", url => " proprocessor => new SocialMediaScrollPreprocessor( timeBetweenFirings => 0, maxFirings => 0, conditionBeforeSubsequentFirings = null ) ),...

Example: Facebook Section Objects 8/3/2012MS Thesis - August SocialMediaWebsite facebook = new SocialMediaWebsite(homepage => " facebook->decorate([ new SocialMediaWebsiteSectionPersonalStream( name => "Wall", url => " preprocessor => new SocialMediaScrollPrepreprocessor( timeBetweenFirings => 0, maxFirings = 0, conditionBeforeSubsequentFirings = null ) ), new SocialMediaWebsiteSectionUserInfo( name => "Info", url => " ), new SocialMediaWebsiteSectionMultimediaCollection( name => "Photos", url => " proprocessor => new SocialMediaScrollPreprocessor( timeBetweenFirings => 0, maxFirings => 0, conditionBeforeSubsequentFirings = null ) ),...

Example: Hierarchical Similarities 8/3/2012MS Thesis - August SocialMediaWebsite facebook = new SocialMediaWebsite(homepage => " facebook->decorate([ new SocialMediaWebsiteSectionPersonalStream( name => "Wall", url => " preprocessor => new SocialMediaScrollPrepreprocessor( timeBetweenFirings => 0, maxFirings = 0, conditionBeforeSubsequentFirings = null ) ), new SocialMediaWebsiteSectionUserInfo( name => "Info", url => " ), new SocialMediaWebsiteSectionMultimediaCollection( name => "Photos", url => " proprocessor => new SocialMediaScrollPreprocessor( timeBetweenFirings => 0, maxFirings => 0, conditionBeforeSubsequentFirings = null ) ),...

Spec Retrieval Process 1.Tool accesses root spec w/ URI parameter 2.Spec returns with reference to site- specific hierarchy spec 3.Tool fetches site spec 4.Updated site hierarchy returned 8/3/2012MS Thesis - August Root Spec Site Spec

Concrete Usage – Tool Adaptation Archive Facebook – Map current URIs to remotely fetched URIs – Perform pre-processing defined in FB spec WARCreate – Implement sequential/cohesive archiving 8/3/2012MS Thesis - August

Evaluation 1:Tool Adaptability 1.Setup synthetic social media website 2.Define site’s remote spec 3.Change AFB to preserve synthetic site 4.Change hierarchy of synthetic site 5.Show AFB breaking 6.Change synthetic site spec 7.Show AFB functionality restored 8/3/2012MS Thesis - August

Simple hierarchy for base case testing Requires Auth Utilizes CDN Can be manipulated Recursive Sections 8/3/2012MS Thesis - August Evaluation 1: Tool Adaptability Step 1: Synthetic Site Creation

8/3/2012MS Thesis - August Personal Stream 0 ? Photo Albums 0 ? <div class=\"album.*<a\shref=\"(.*)\" SocialMediaWebsiteSectionMultimediaCollection Photo Album Photo Album 0 ? <div class=\"album.*<a\shref=\"(album/[a-zA-Z0-9]+)\" SocialMediaWebsiteSectionMultimediaCollection Photo Photo Peer Stream 0 ? Evaluation 1: Tool Adaptability Step 2: Define Site Remove Spec

Utilize existing capture mechanisms Exploit guaranteed attributes (e.g., host) Make code general enough to be widely applicable to sections 8/3/2012MS Thesis - August getCurrentSiteSpec : function(step,urlIn,hostIn){ switch(step){ case 0: var xhr = new XMLHttpRequest(); var siteSpec = "", uriOut = ""; $.ajax({ url: urlIn, success: function(data){ var host = " //hostIn n/a here var parser = new DOMParser(); var socialMediaWebsites = $(data.childNodes[0]).children(); for(var i=0; i<socialMediaWebsites.length; i++){ var smw = socialMediaWebsites[i]; if($(smw).find("homepage").text().indexOf(host) != -1){ siteSpec = $(smw).find("specification").text(); getCurrentSiteSpec(1,siteSpec,host); } //fi } //rof }, error: function(){} }); //xaja break; case 1: $.ajax({ url: urlIn, success: function(data){ var ls = window.content.localStorage; ls.setItem("spec", (new XMLSerializer()).serializeToString(data)); archivefbBrowserOverlay.capture(ls.getItem("spec")); }, error : function(){} }; break; } Evaluation 1: Tool Adaptability Step 3: Change AFB to preserve synthetic site

Simulate simply through mod_rewrite Previously: Updated: Disavow previous reference altogether to ensure 404 8/3/2012MS Thesis - August RewriteRule ^myfeed$ index.php?section=personal [NC] RewriteRule ^personal$ index.php?section=personal [NC] Evaluation 1: Tool Adaptability Step 4: Change hierarchy of synthetic site

Run archiving procedure again, note failing of procedure or content not captured 8/3/2012MS Thesis - August Evaluation 1: Tool Adaptability Step 5: Show AFB breaking

Personal Stream ? … 8/3/2012MS Thesis - August Personal Stream ? … Evaluation 1: Tool Adaptability Step 6: Change synthetic site spec

Execute archiving procedure of tool w/o modifying code Show that result matches step 1 8/3/2012MS Thesis - August Evaluation 1: Tool Adaptability Step 7: Show AFB functionality restored

Evaluation 2: Preservation of Content Behind Authentication 1.Create tool (WARCreate) to store to WARC format 2.Setup easy-to-use Replay system (local wayback) 3.Execute Tool’s Archiving Procedure 4.Verify replayability in wayback 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: Facebook Data Dump Lose look & feel FB decides what is preserved Unreliable (requests not always answered) 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: “Save Webpage As” Metadata is Lost Archive is not Self-Contained Archive is not interoperable with Archive Replay Systems (e.g. wayback) 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: warc-tools No archive creation facility Relies on incomplete WARC spec (like WARCreate) Only command-line access: suitable for sysadmins and power users 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: wget &wget-warc No content manipulation Require CLI interaction – Issue for Ajax driven content (no JS support) wget-warc – Ext. of wget w/ WARC I/O No look & feel preservation 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: Archive Facebook Output is not compatible w/ Wayback Prone to breaking when FB hierarchy changed Limited to Firefox web browser Cannot escape browser sandbox for portable archives 8/3/2012MS Thesis - August

Existing Tools’ Shortcoming: WARCreate No built-in sequential archiving Relies on subset of WARC spec Limited to Chrome 8/3/2012MS Thesis - August

Shortcoming of Spec Relies on accessible URIs of sites’ sections – If base page content does not have a URI mapping, no reference exists to direct the browser Not comprehensive of Social Media sites Likely doesn’t account for some section types 8/3/2012MS Thesis - August

Future Work Expand spec website coverage Account for sites w/o clearly accessible URIs WARCreate to implement whole official WARC standard Other SocialMediaWebsitePreprocessor types Address perspective issues – Personalization/Auth, context, archive vs. backup 8/3/2012MS Thesis - August

Contributions 1.Highlight Personal Web Archiving difficulties – ways they can be addressed 2.Provide remote spec for PWA tools to use to be more robust to sites’ hierarchy changes 3.Create tool (WARCreate) – allows content behind auth to be preserved to standard format 4.Leverage client-side server to exec scripts in support of personal web preservation 5.Establish section commonality between social media websites 8/3/2012MS Thesis - August

Conclusions Personal web archiving has unique problems not exhibited in conventional web archiving Tools become more adaptive by utilizing proposed spec Browsers can be used as medium for preservation of personal web content With little work, server technologies can help to ease the task of personal web archiving 8/3/2012MS Thesis - August

WARCreate-Related Presentations Mat Kelly (Old Dominion University, Norfolk, VA), Michele C. Weigle (Old Dominion University, Norfolk, VA), Michael Nelson (Old Dominion University, Norfolk, VA). "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage," Digital Preservation 2012, Tools Demo Session: Web Archiving; 2012 Jul 25; Washington, DC. Mat Kelly (Old Dominion University, Norfolk, VA) and Michele C. Weigle (Old Dominion University, Norfolk, VA), "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage (demo)," In Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL). Washington, DC, June /3/2012MS Thesis - August ACM/IEEE Joint Conference on Digital Libraries JCDL ‘12 Digital Preservation 2012 Innovation Award by NDSA/Library of Congress For WARCreate For more information on: WARCreate: Archive Facebook:

Example:Facebook Section Objects 8/3/2012MS Thesis - August SocialMediaWebsite facebook = new SocialMediaWebsite(homepage => " facebook->decorate([ new SocialMediaWebsiteSectionPersonalStream( name => "Wall", url => " preprocessor => new SocialMediaScrollPrepreprocessor( timeBetweenFirings => 0, maxFirings = 0, conditionBeforeSubsequentFirings = null ) ), new SocialMediaWebsiteSectionUserInfo( name => "Info", url => " ), new SocialMediaWebsiteSectionMultimediaCollection( name => "Photos", url => " proprocessor => new SocialMediaScrollPreprocessor( timeBetweenFirings => 0, maxFirings => 0, conditionBeforeSubsequentFirings = null ) ),...

Example: Implicit Recursion 8/3/2012MS Thesis - August