2nd Year PhD Student, CMU. Research: mashups and end-user programming (EUP) Creator of Marmite

Similar documents
Copyright 2014 Blue Net Corporation. All rights reserved

AJAX: From the Client-side with JavaScript, Back to the Server

XML Processing & Web Services. Husni Husni.trunojoyo.ac.id

User Interaction: jquery

Web Services Bootcamp: Adding Value to Library Apps & Services

Web 2.0, Social Programming, and Mashups (What is in for me!) Social Community, Collaboration, Sharing

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Web Services for Libraries. Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries

,

Web 2.0 Tutorial. Jacek Kopecký STI Innsbruck

Web 2.0, AJAX and RIAs

Leveraging the Social Web for Situational Application Development and Business Mashups

Web 2.0 Käyttöliittymätekniikat

Database Driven Web 2.0 for the Enterprise

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

The Web: Concepts and Technology. January 15: Course Overview

CS50 Quiz Review. November 13, 2017

Applikationen im Browser Webservices ohne Grenzen

Part of this connection identifies how the response can / should be provided to the client code via the use of a callback routine.

Utilizing Folksonomy: Similarity Metadata from the Del.icio.us System CS6125 Project

Whirlwind Tour of Web Mashups. Sophia Liu November 19, 2008

All About Open & Sharing

Web 2.0 Attacks Explained

AJAX: Rich Internet Applications

History and Backgound: Internet & Web 2.0

Web Architectural Philosophy

GRITS AJAX & GWT. Trey Roby. GRITS 5/14/09 Roby - 1

The Implementation of Mashups Web to Integrate Students Data and Service Announcement in a University Website

SMashup Personal Learning Environments

Epub Books Programming PHP

Like It Or Not Web Applications and Mashups Will Be Hot

Developer Internship Opportunity at I-CC

Credits: Some of the slides are based on material adapted from

Read & Download (PDF Kindle) PHP Ajax Cookbook

Develop Mobile Front Ends Using Mobile Application Framework A - 2

7401ICT eservice Technology. (Some of) the actual examination questions will be more precise than these.

PGT T3CHNOLOGY SCOUTING. Google Webtoolkit. JSF done right?

Nick Terkay CSCI 7818 Web Services 11/16/2006

ECPR Methods Summer School: Automated Collection of Web and Social Data. github.com/pablobarbera/ecpr-sc103

Full Stack Web Developer Nanodegree Syllabus

Working with Javascript Building Responsive Library apps

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies

Web 2.0 For the Rest of Us. Joshua Porter Director of Web Development User Interface Engineering

Web Frameworks MMIS 2 VU SS Denis Helic. March 10, KMI, TU Graz. Denis Helic (KMI, TU Graz) Web Frameworks March 10, / 18

OU Mashup V2. Display Page

How to use jquery file. How to use jquery file.zip

Making Ajax Easy With Model-Glue. Joe Rinehart Firemoss, LLC

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016

How To Construct A Keyword Strategy?

Networking & The Web. HCID 520 User Interface Software & Technology

An API for Your Data. David Brennan, PhUSE An API for Your Data, David Brennan, AD08, PhUSE

Mobile Data: How to avoid the latency trap when using web services

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

Aspects and challenges of mashup creator design

Oracle APEX 18.1 New Features

Building Mashups. Craig Knoblock. University of Southern California. Thanks to Rattapoom Tuchinda and

Web 2.0 and Security

CSC 443: Web Programming

20. Situational Applications and Mashups

The Web: Concepts and Technology. 1 CS 584: Information Retrieval. Math & Computer Science Department, Emory University

AJAX Workshop. Karen A. Coombs University of Houston Libraries Jason A. Clark Montana State University Libraries

Simple AngularJS thanks to Best Practices

Overview

Web Applications. Software Engineering 2017 Alessio Gambi - Saarland University

Using Development Tools to Examine Webpages

How APEXBlogs was built

Top 10 AJAX security holes & driving factors

Master Project Software Engineering: Team-based Development WS 2010/11

Web Application with AJAX. Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar. University of Colorado, Colorado Springs

LAST WEEK ON IO LAB. Project 3 was due today at noon. If you haven t sent it to us and haven t already talked to us, come talk to us now.

Lecture 4: Data Collection and Munging

The Joy of Software Development

Creating an Online Catalogue Search for CD Collection with AJAX, XML, and PHP Using a Relational Database Server on WAMP/LAMP Server

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems

Compilers Project Proposals

Session 18. jquery - Ajax. Reference. Tutorials. jquery Methods. Session 18 jquery and Ajax 10/31/ Robert Kelly,

Advanced Joomla! Dan Rahmel. Apress*

Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (Swift, Apps, Javascript, PHP, Python, Sql, HTML) By Os Swift

Web Architecture Review Sheet

Developing a Web Server Platform with SAPI support for AJAX RPC using JSON

XAP: extensible Ajax Platform

Dissecting mashups and remixes

Outline. AJAX for Libraries. Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries

웹소프트웨어의신뢰성. Instructor: Gregg Rothermel Institution: 한국과학기술원 Dictated: 김윤정, 장보윤, 이유진, 이해솔, 이정연

Discussion #4 CSS VS XSLT. Multiple stylesheet types with cascading priorities. One stylesheet type

Building Mashups. Craig Knoblock. University of Southern California. Thanks to Rattapoom Tuchinda

Semantic Web and Web2.0. Dr Nicholas Gibbins

Technology Brown Bag: Web 2.0

QWeSST. Type-Safe Web Programming. Thierry Sans and Iliano Cervesato. Carnegie Mellon University Qatar

of making things look better with CSS, and you have a much better platform for interface development.

Furl Furled Furling. Social on-line book marking for the masses. Jim Wenzloff Blog:

Reading How the Web Works

iframe programming with jquery jquery Summit 2011

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

Executive Summary. Performance Report for: The web should be fast. How does this affect me?

Web 2.0 and AJAX Security. OWASP Montgomery. August 21 st, 2007

In this third unit about jobs in the Information Technology field we will speak about software development

Human vs Artificial intelligence Battle of Trust

AJAX and PHP AJAX. Christian Wenz,

Web 2.0: Is it a Whole New Internet?

Transcription:

Mashups Jeff Wong Human-Computer Interaction Institute Carnegie Mellon University jeffwong@cmu.edu Who am I? 2nd Year PhD Student, HCII @ CMU Research: mashups and end-user programming (EUP) Creator of Marmite Masters HCI, Carnegie Mellon Computer Science, UC Berkeley (2000) Former millionaire 1

Last Time Tomek introduces you to Web technologies (Web 2.0) DOM CSS (don t) Javascript AJAX XmlHttpRequest XML (avoid if possible) JSON This Time Jeff shows you mashups and how to make your own. Mashup Patterns Getting other People s stuff Scraping RSS Using APIs Mashup Architecture & Tools Business Models The Future 2

Mashup Patterns What Are Mashups? A mashup is a web application that combines data from more than one source into a single integrated tool - Wikipedia A good start, but not a complete definition, better to show examples 3

Craigslist Rentals + + Google Maps = 4

= HousingMaps.com Pattern from HousingMaps HousingMaps is Craigslist: geographic data Map as a widget Metadata extraction Filtering New index for existing leaves Visualization is cheap Google Maps is overdone Google MyMaps today Let s-all-do-same-thing Flickr Twitter 10 5

Patterns in Mashups by me and my Advisor accepted to Workshop for End-User Software Engineering Understand patterns... tool design make things easy for certain kinds suggest new avenues for mashup innovation 11 Patterns in Mashups Method Look at lists of good mashups Programmable Web Mashup of the Day MashupAwards.com (every day) Describe how data sources are used Flag attributes Guess at user needs Make a tables of attributes toss bad mashups (50%) 12 6

Aggregation 13 Alternate UI 14 7

Personalization 15 Focused-View of the Data 16 8

Real-Time Monitoring 17 Patterns found Aggregation Alternate UI & In-situ use Personalization Focused View of Data Real-time Monitoring others??? (maybe some obvious ones here) 18 9

Other sources for inspiration Greasemonkey scripts Firefox plugins Explore APIs! Helpful to do this in a group Report back and brainstorm together AVOID popular APIs so many *lonely* APIs Your own personal experience! Long tail of mashups Hacking, Mashing, & Gluing (Hartmann, Doorley & Klemmer) 19 Find More Mashups ProgrammableWeb Lots of crap here Use the search form to get all mashups 20 10

Other mashup possibilities Government Census data Democracy Political discourse Use Wikipedia Some APIs out there Mixed initiative mashups Humans can sort, rate, and comment Re-categorize Apply novel algorithms! Data-mining or semantic stuff 21 How to re-use other people s stuff (APIs and more) 11

Re-using other people s stuff Screen-scraping RSS Feeds APIs Web Services (WSDL + SOAP) REST Wrappers for favorite programming language Java, Python, Perl, PHP, Flash Prototype in an open, interactive environment 23 Screen-scraping Basically: visit web pages, extract information Do this when there is no API Variety of techniques Query languages Demonstrational interfaces Dapper BUT Slow Unstable 24 12

Query Languages Need to inspect page s DOM structure Need to test interactively XPath (yuck) Powerful, but complicated BeautifulSoup (Python) JQuery (Javascript) XML parsers not so helpful 25 Demonstrational Interfaces Dapper is the best Works on web pages where DOM structure is regular Creates a scraper that takes a URL and turns the web page into XML, CSV, RSS, etc Some semantic scrapers exist Mostly research prototypes MIT Sifter h2:headline div: div:date p:article summary h2:another headline div: div:date p:article summary 26 13

RSS Feeds XML for news articles Also supports fields and tags for names RSS 2.0 is simpler than RSS 1.1 A feed is a list of items News oriented tags: title, description, date, etc Services often use extensions to insert custom fields 27 What are API s (on the Web) Libraries for programming Java draw a box sort this list the list API s on the web Upcoming.org: search for events (in an area), lookup venue Google: search for something Rent-o-meter: add my listing to your database 28 14

How to use an API Find an API worth using involves prototyping Get a developer key (sometimes) Read the documentation Explore how the API will work Pick a prototyping language or method Ex: Javascript, Python, Java, your browser, PHP, etc Establish a debugging process Avoid busy work or waterfall process Keep in mind architectural decisions while you are testing performance may be important 29 Web Services vs REST Web Services Service-Oriented Architecture (SOA) or Web Services WSDL Web-Services Description Language SOAP Simple-Object Access Protocol Simple In Theory You download a WSDL file, generate function call stubs (using tools), call your web services WSDL file Your tools and environment SOAP The Web Service Endpoint 30 15

Web Service-based Weather Service Define some methods in WSDL file getweather(country, state, city) Define to be accessible via http on certain url Return XML-formatted content To get latest weather, create a program that POSTs the right SOAP call to the URL Works for programs only Web Services vs. REST Web Services are complicated WSDL is complicated to make SOAP is hard to implement on providers end High-barrier to entry for simple services User needs to locate a parser and stub generator 32 16

REST to the rescue! REST (Representational State Transfer) related idea Philosophy of how web works Main ideas: Few verbs, many nouns, applied uniformly to all data GET, POST, PUT, DELETE Standard HTTP methods URLs are implicit API Minimal state maintained between transactions You can test it by entering URL in your browser! http://flickr.com/photos/thisisjeffwong/2245436259/sizes/l/ REST-based Weather Service Rely exclusively on pre-defined methods GET, POST, PUT, DELETE Define URLs http://weather.com/usa/pennsylvania/pittsburgh http://weather.com/usa/georgia/atlanta Return content in some form HTML web page or XML-formatted To get the latest weather, just access the URL Works for people, programs 17

REST Drawbacks Inspectable, simple for providers, low overhead BUT Hard to deal with a lot of different calls Have to read documentation to figure out options Calls don t look like function calls 1. URL formation 2. Make asynchronous call, setup callback 3. Setup post-processing of results Possible solution: WADL (WSDL for REST) generate using REST Describe and Compile 35 Wrappers Service providers make a library to access their service in your programming language Usually big providers Amazon, ebay, Google, Flickr 36 18

Interesting APIs Mindmeister Maybe with del.icio.us Remember the Milk BaseCamp Project management 43Things Social goal setting Ning Community Web Services 37 API exploration advice Use an interactive programming language Javascript (in shell) Python Ruby? Look for developer API exploration tools Tend to be interactive Similar to above but usually tailored Use Firefox or Internet Explorer to pick at REST results 38 19

Jeff s Tool Demo Hope this works! 39 Go beyond APIs Interesting Data is not always behind APIs Government and economic data Environmental and scientific data Fish Data + Recipes: EcoEats HeyWhatsThat Swivel Ask and ye *may* receive Sometimes you get proprietary data Boundaries are always expanding Semantic 40 20

Mashup Architecture & Tools Dissecting a Mashup HousingMaps.com 21

EcoEats architecture OceansAlive.org MealMaster Recipes Python BeautifulSoup scraper Perl parsing Python injection SQL Database Zend+PHP user 43 No-cross site scripting Security model of Javascript Same origin policy Can only talk to the server where your page comes from Like Java applets This means you need to setup a proxy Service 1 Service 2 Call APIs using your backend user Your Server XMLHttpRequest 44 22

No-cross site scripting BUT If you sign your scripts this might work JQuery Javascript library supports this I think IANASE Service 1 XMLHttpRequest Service 2 XMLHttpRequest user Service 3 XMLHttpRequest 45 Mashup Tools Programming mashups quite hard HTML, text parsing, regular expressions, databases, integration with other web services, etc Many tools recently created: Marmite, Dapper, Intel MashMaker Microsoft Popfly, Yahoo Pipes 23

Marmite Goal: Make it easy to extract data from sites and then visualize as desired HousingMaps.com Set of Operators 24

Data Flow View Data View 25

Extracting Generic Content Can t have pre-defined extractor operators for every possible web site Need a more general way of extracting data from pages Developed a generic wizard UI for selecting links Content from that set could be extracted via other operators Uses Solvent (MIT), an XPath-based algorithm for finding patterns in web pages Finds groups of related web content based on how HTML is structured Marmite 26

Using Marmite (Envisioned) Extract content from one or more web pages names, addresses, dates, phone #, URLs Process it in a data flow manner filtering out values or adding metadata integrating with other data sources (similar to a database join operation) Direct the output to a variety of sinks databases, map services, text files, visualizations, web pages, or source code that can be further edited Marmite No way to integrate into an automatic process Not supported (by Me) Hard to explore Web Services No supporting tools or community 54 27

Yahoo Pipes 55 Microsoft Popfly Blocks of functionality shared in a programmer community Web Services you want might already be coded! Integrated environment at different levels of code Javascript (YAY) Probably your best bet for not having to build something from scratch Or setup a web server, environment (PITA) 56 28

Spinning 3D translucency! 57 58 29

59 Business Models 30

How to succeed with mashups Making money is nice Get bought Make affliate money Drive advertising (sketchy) Get hired Make something cool by reusing something Innovation is invention in context Make something cool Once people use it, you can then decide what success means Requires some PR and polish The Future 62 31

The Future Semantic Web Not my expertise... can some speak to this? Facebook? Advantages:??? Disadvantages:??? 63 Thanks! Jeff Wong Human-Computer Interaction Institute Carnegie Mellon University jeffwong@cmu.edu 64 32