Stanford hci group UIST · 10 October 2007 Programming by a Sample: Rapidly Creating Web Applications with d.mix Björn Hartmann,

Slides:



Advertisements
Similar presentations
1 Actuate Corporation © 2010 THE BIRT COMPANY THE BIRT COMPANY THE BIRT COMPANY THE BIRT COMPANY THE BIRT COMPANY THE BIRT COMPANY THE BIRT COMPANY THE.
Advertisements

TEA/TUG + ALDOT(Mobile) = H(O+I) The TEA/TUG being hosted by ALDOT in Mobile causes Hurricanes to come to Alabama. The TEA/TUG being hosted by ALDOT in.
End User Mashup Programming Environments Oleg Beletski HUT, Telecommunications Software and Multimedia Laboratory
Project 1 Introduction to HTML.
Stanford hci group / stanford · 14 January 2008 Designing Interface Alternatives with Parallel Exploration and Runtime Tuning.
A problem in IMS Learning Design To promote interoperability, few services Local tool frameworks like LAMS have much richer tool environment –Easy provisioning.
ITEC810 Project By: P. M. Mathindri Nilushika Pathiraja 1.
1 ETT 429 Spring 2007 Microsoft Publisher II. 2 World Wide Web Terminology Internet Web pages Browsers Search Engines.
Making Mashups with Marmite Jeff Wong Jason I. Hong Carnegie Mellon University.
Chapter 1 Getting Started With Dreamweaver. Explore the Dreamweaver Workspace The Dreamweaver workspace is where you can find all the tools to create.
SQL Reporting Services Overview SSRS includes all the development and management pieces necessary to publish end user reports in  HTML  PDF 
WebQuilt and Mobile Devices: A Web Usability Testing and Analysis Tool for the Mobile Internet Tara Matthews Seattle University April 5, 2001 Faculty Mentor:
Creation of hybrid portlet application for file download using IBM Worklight and IBM Rational Application Developer v9 Gaurav Bhattacharjee Lakshmi Priya.
Web Content Management Systems. Lecture Contents Web Content Management Systems Non-technical users manage content Workflow management system Different.
EDUCATION YOU CAN TRUST ® SharePoint Designer 2010 Course Review Review provided by: DNS Computing Services, LLC
Web 2.0: Concepts and Applications 2 Publishing Online.
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
How the Web Works. WWW – part of the Internet (others: , FTP, Telnet) Loaded to a Server | Viewed in a Browser (Client) Client: Request & Render.
Proprietary & Confidential The Thread That Ties it All Together Voicethread and Discovery Education Jennifer Dorman denblogs.com/jendorman.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
Copyright © cs-tutorial.com. Introduction to Web Development In 1990 and 1991,Tim Berners-Lee created the World Wide Web at the European Laboratory for.
HTML5 Application Development Fundamentals
Server-side Scripting Powering the webs favourite services.
INTRODUCTION TO FRONTPAGE. TOPICS TO BE DISCUSSED……….  Introduction Introduction  Features Features  Starting Front Page Starting Front Page  Components.
PIZZA WEB PAGE May 28, FOR TODAY  Review Vocabulary Words (take out your worksheets!)  Pizza Web Page  Research more tags  Turn in your homework!
Build a Free Website1 Build A Website For Free 2 ND Edition By Mark Bell.
Exploring Web Page Design. What is a Web Page?  A web page is a multimedia file which can be stored on a web server.  It can include text, graphics,
XP New Perspectives on Browser and Basics Tutorial 1 1 Browser and Basics Tutorial 1.
Web Page Design I Basic Computer Terms “How the Internet & the World Wide Web (www) Works”
PUBLISHING ONLINE Chapter 2. Overview Blogs and wikis are two Web 2.0 tools that allow users to publish content online Blogs function as online journals.
Stanford hci groupoct 21, 2008 Björn Hartmann Loren Yu, Abel Allison, Yeonsoo Yang Scott R. Klemmer Design as Exploration Creating Interface Alternatives.
HPVIS and the "Architecture of Participation" Presented at First U.S. Conference on Characterizing Chemicals In Commerce: Using Data on High Production.
Web Mashups Presented By: Saket Goel Uni: sg2679.
ASP.NET.. ASP.NET Environment ASP.NET is Microsoft's programming framework that enables the development of Web applications and services. It is an easy.
Validating, Promoting, & Publishing Your Web Site Writing For the Web The Internet Writer’s Handbook 2/e.
INTRODUCTION TO HTML5 Using jQuery with HTML5. Introducing jQuery  Although it is not a part of any W3C or WHATWG specification, jQuery performs an important.
Nadir Saghar, Tony Pan, Ashish Sharma REST for Data Services.
AIP-2 Kickoff Workshop End-to-end use case: Discovery, access, and use with variations Doug Nebert GEOSS AIP-2 Kickoff September 2008.
Advanced PR Technology in Practice Bill Barnes Co-Founder & Executive Vice-President Enquiro Search Solutions, Inc.
2007. Software Engineering Laboratory, School of Computer Science S E Web-Harvest Web-Harvest: Open Source Web Data Extraction tool 이재정 Software Engineering.
Selenium and Selenium on Rails. Agenda  Overview of Selenium Simple Selenium Tests Selenium IDE  Overview of Selenium on Rails  Problems with Selenium.
Session: 1. © Aptech Ltd. 2Introduction to the Web / Session 1  Explain the evolution of HTML  Explain the page structure used by HTML  List the drawbacks.
1 Chapter 13 Programming Languages and Program Development Tools.
Solutions using Microsoft Content Management Server 2002 Connector for SharePoint Technologies Sue Corke Mark Harrison Microsoft UK.
Esri UC 2014 | Technical Workshop | Operations Dashboard for ArcGIS: Extending the Functionality Jay Chen Kylie Donia Tif Pun.
UNIT 2 UNIT 2 Module 3: HTML Lists Overview. List There are two common types of HTML lists Ordered list numbered Unordered list bullet points.
Configuring the Briefing Book Application in your Community Lindsay Thomas.
WikiPlus Basics Experience WikiPlus as a viewer and as a content editor.
Web Browsing *TAKE NOTES*. Millions of people browse the Web every day for research, shopping, job duties and entertainment. Installing a web browser.
Web Components Polymer. Agenda I want bootstrap : 3 Today.
Building Custom Controls with ASP.NET and the Microsoft ®.NET Framework Rames Gantanant Microsoft Regional Director, Thailand
Microsoft Office 2008 for Mac – Illustrated Unit D: Getting Started with Safari.
Mashups for the Nontechies: Yahoo! Pipes Jody Condit Fagan Digital Services Librarian James Madison University
What problems are we trying to solve? Hannes Tschofenig.
The Internet and the WWW IT-IDT-5.1. History of the Internet How did the Internet originate? Goal: To function if part of network were disabled Became.
Web Page Design The Basics. The Web Page A document (file) created using the HTML scripting language. A document (file) created using the HTML scripting.
HTML PROJECT #1 Project 1 Introduction to HTML. HTML Project 1: Introduction to HTML 2 Project Objectives 1.Describe the Internet and its associated key.
Distributed Control and Measurement via the Internet
Overview Blogs and wikis are two Web 2.0 tools that allow users to publish content online Blogs function as online journals Wikis are collections of searchable,
Web Concepts Lesson 2 ITBS2203 E-Commerce for IT.
Active Server Pages Computer Science 40S.
Programming by a Sample: Rapidly Creating Web Applications with d.mix
Project 1 Introduction to HTML.
PHP Training at GoLogica in Bangalore
UNIT 15 Webpage Creator.
denblogs.com/jendorman
Basic Web Page Creation
SharePoint Foundation 2010
Web AppBuilder for ArcGIS
AI Discovery Template IBM Cloud Architecture Center
Presentation transcript:

stanford hci group UIST · 10 October 2007 Programming by a Sample: Rapidly Creating Web Applications with d.mix Björn Hartmann, Leslie Wu Kevin Collins, Scott R. Klemmer

2 How would you share UIST highlights with colleagues back home?

3 How would you retrieve the same data programmatically? It’s easy to understand the sites, but not the services.

4

5 Web sites and their APIs are correlated… [flickr.com] …let’s leverage that fact! ≈

6 Give me the code for this!

7 To retrieve this image, use: flickr.photos.getInfo( user_id = photo_id= ‘ ’) To retrieve this image, use: flickr.photos.getInfo( user_id = photo_id= ‘ ’)

8 d.mix active wiki Source code generated by d.mix Rendered Page is executed in the active wiki

9 Scenario

10

11

12

13 d.mix users Lead UsersWeb DevelopersEnd Users Site owners or lead users define mappings between sites and services (once).

14 Lead UsersWeb DevelopersEnd Users Web developers create d.mix applications

15 Lead UsersWeb DevelopersEnd Users End-users run (and tailor) applications in the d.mix wiki.

16 d.mix Proxy Architecture Original Page Rewritten page with API annotations Proxy Server Site-to-Service Map (hosted on d.mix wiki)

17 Authoring the Site-to- Service Map …Without Help From the Site Owner 1Map URL to Page Type 2Identify visual elements in page to annotate (using XPath/CSS selectors) 3Extract arguments for service calls from page source 4Bind arguments to web service code snippet

18 Why Not Just Scrape? Scraping at design-time rather than at run-time minimizes brittleness Web service calls can be parameterized Scraping at run-time can lead to lock-out

19

20 Page URL: flickr.com/ photos/ / /… Regular Expression: %r{flickr.com//?photos/ [^/]+/\d+/?&script}

21 Photo Title Image URL Tag Search

22 Photo Title Image URL Tag Search (doc/"#title_div") (doc/"div.photoImgDiv") (doc/"div.TagList")

23 flickr.photos.getInfo( photo_id = “ ”).title info = flickr.photos.getInfo( photo_id = “ ”) URL = “ info.farm-id + “.static.flickr.com/” + info.server-id + “/” + info.attributes[”id”] + “_” + info.secret + “.jpg” flickr.photos.search( tags = “yosemite...”) Extracted from page source: Within for all tags: tag=div.at("a.Plain ").inner_html Extracted from page source: Within for all tags: tag=div.at("a.Plain ").inner_html

24 Putting it all together… def self.annotate_photopage_tags(doc) (doc/"div").reject{…}.each do |div| tag = div.at("a.Plain").inner_html src = generate_tag_search_source (...) doc.at("body").inner_html += make_context_menu(div.at("a.Plain"), ["Images matching tag #{tag}"],[src]) end

25 Putting it all together… Extract tag name def self.annotate_photopage_tags(doc) (doc/"div").reject{…}.each do |div| tag = div.at("a.Plain").inner_html src = generate_tag_search_source (...) doc.at("body").inner_html += make_context_menu(div.at("a.Plain"), ["Images matching tag #{tag}"],[src]) end

26 def self.annotate_photopage_tags(doc) (doc/"div").reject{…}.each do |div| tag = div.at("a.Plain").inner_html src = generate_tag_search_source (...) doc.at("body").inner_html += make_context_menu(div.at("a.Plain"), ["Images matching tag #{tag}"],[src]) end Putting it all together… Instantiate Source Example

27 Putting it all together… Add annotation to original page def self.annotate_photopage_tags(doc) (doc/"div").reject{…}.each do |div| tag = div.at("a.Plain").inner_html src = generate_tag_search_source (...) doc.at("body").inner_html += make_context_menu(div.at("a.Plain"), ["Images matching tag #{tag}"],[src]) end

28 Dataflow Summary d.mix run time d.mix design time invokes Web service sends code to Web site adds annotation

29 Active Wiki Wiki editor provides syntax-highlighting for Ruby script Sandboxed execution runs script with limited capabilities Libraries facilitate invoking web services and manipulating results

30 Beyond the Desktop Browser

31 What we borrowed and what we wrote

32 Prototype Site-to- Service Library APISupported Actions Site-to- Service map code size Get images from a user’s photo stream, with or without meta data Get images from an image set Get images from individual photo pages Get images matching tags, global or per user, from tag clouds and photo pages Get images by global image id Get images from full-text search 355 lines Single web search result Web search result set 54 lines Retrieve a user’s videos Retrieve most recent videos Single search result Search result set 115 lines

33 First-use Lab Study (n=8) All participants had some programming experience, knew HTML Four had no experience with web APIs 75 minute sessions: Demonstration, warm-up, two design tasks

34

35

36 Lessons Learned How do I know what I can sample? ?

37 Lessons Learned How do I know what I can sample?

38 Sample from link to content Sample content directly Lessons Learned Offer multiple ways to sample information.

39 Limitations Proxying the logged-in web is challenging

40 Limitations Proxying the logged-in web is challenging

41 Limitations How can one sample APIs that provide interactive widgets intead of data?

42 Related Work Greasemonkey Chickenfoot [Bolin, UIST2005] Koala [Little, CHI2007] Yahoo! Pipes Open Kapow Marmite [Wong, CHI2007] IBM QEDWiki Intel MashMaker [Ennals, SIGMOD2007] Relations, Cards, and Search Templates [Dontcheva, UIST2007] Citrine [Stylos, UIST2004] WinCuts [Tan, CHI2004] Clip, connect, clone [Fujima, UIST2004] Hunter Gatherer [schraefel, WWW2002] Facades [Stuerzlinger, UIST2006] End-user Page Modification & Automation End-user PAGE Creation Deep Copy & paste Mica [Stylos, VL/HCC2006] Assieme [Hoffmann, UIST2007] Finding API Examples

43 Greasemonkey Chickenfoot [Bolin, UIST2005] Koala [Little, CHI2007] End-user Page Modification & Automation

44 Yahoo! Pipes Open Kapow Marmite [Wong, CHI2007] IBM QEDWiki Intel MashMaker [Ennals, SIGMOD2007] Relations, Cards, and Search Templates [Dontcheva, UIST2007] End-user AuTHORING TOOLS

45 Assieme [Hoffmann, UIST2007] Mica [Stylos, VL/HCC2006] API SEARCH TOOLS

46 Contributions Search for programming examples in the solution domain, not the code domain. d.mix instantiates this idea for web service APIs through a site-to-service map. Integration of page annotation and script hosting enables rapid experimentation.

47 Current Work Re:Mix Reformatting existing web applications for mobile device use Juxtapose Exploring design alternatives in parallel

48 Acknowledgments Funding NSF grant IIS SAP Stanford Graduate Fellowship Microsoft New Faculty Fellowship Intel (equipment donation) Help Wendy Ju, Leith Abdulla, Michel Krieger, whytheluckystiff Images morguefile.com

stanford hci group hci.stanford.edu /dmix