1 Y! v. Y! Yahoo! Case Studies Across the Page—App Spectrum, One Size Does Not Fit All Nate Koechley 2006, London – June 16 th, 2006

Slides:



Advertisements
Similar presentations
Getting Your Web Site Found. Meta Tags Description Tag This allows you to influence the description of your page with the web crawlers.
Advertisements

PHP for Server-Side Preprocessing Chapter 08. Overview and Objectives Present a brief history of the PHP language Discuss how PHP fits into the overall.
Copyright © 2012 Certification Partners, LLC -- All Rights Reserved Lesson 4: Web Browsing.
Introduction to JavaScript Module 1 Client Side JS Programming M-GO Sponsored By
1 Cleaning up the Internet Using AJAX, SOAP and Comet CS526 Mike Gerschefske Justin Gray James Yoo 02 May 2006.
AJAX & By – Anupama Sharma. Defining Ajax Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together.
Microsoft ASP.NET AJAX - AJAX as it has to be Presented by : Rana Vijayasimha Nalla CSCE Grad Student.
ITWS-2210 / CSCI Logistics Format – Class w/ mini projects (graded on class participation) – Labs (individual projects, graded on completion in.
Chapter 9 Introduction to the Document Object Model (DOM) JavaScript, Third Edition.
5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 1 Cleaning up the Internet Using AJAX, SOAP and Comet CS526 Mike Gerschefske Justin Gray James Yoo 02 May 2006.
1st Project Introduction to HTML.
Part or all of this lesson was adapted from the University of Washington’s “Web Design & Development I” Course materials.
Chapter ONE Introduction to HTML.
JavaScript & Metaperformance Douglas Crockford Yahoo! Inc.
Web Content Management Systems. Lecture Contents Web Content Management Systems Non-technical users manage content Workflow management system Different.
EWD VistA Update 2010 Rob Tweed M/Gateway Developments Ltd.
MVC New release IE8 Beta 1 Deep Zoom (sea dragon) Silver light 2.0 Beta 1 Expression Blend 2.5 Preview Instant Messaging API Enhancements to Virtual Earth.
Yahoo! vs. Yahoo! Three Large-Scale Mainstream DHTML Implementations Nate Koechley
Www. ScoutsOnline.co.uk On-Brand Websites for Scout Groups.
HINARI/Basic Internet Concepts (module 1.1). Instructions - This part of the:  course is a PowerPoint demonstration intended to introduce you to Basic.
Ajax Runtime Toolkits IBM Emerging Technologies. What is an AJAX Toolkit/Framework? An AJAX Toolkit/Runtime is more than just XMLHTTPRequest Should includes:
PHP TUTORIAL. HISTORY OF PHP  PHP as it's known today is actually the successor to a product named PHP/FI.  Created in 1994 by Rasmus Lerdorf, the very.
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
Nate Koechley – Yahoo! vs. Yahoo!: Case Studies Nate Koechley Senior Engineer & Designer, Yahoo! User Interface (YUI) Library Team.
AJAX and Atlas in ASP.NET 2.0 William J. Steele MSDN Developer Evangelist Microsoft Corporation
HTML, XHTML, and CSS Sixth Edition Chapter 1 Introduction to HTML, XHTML, and CSS.
MIS 425 Lecture 3 – HTML 5 and CSS Instructor: Martin Neuhard
World Wide Web Aaditya Bhatia CS 147. Agenda History OSI model Hardware IP address DNS Server - Client Peer-to-peer Web-Sites Web programming Search engines.
1 AJAX and Dapper: The Good, the Bad, and the Ugly Joe Sirott PMEL/NOAA.
The Web Architecture and ASP.NET. Slide 2 Review of the Web (1) It began with HTTP and HTML, which delivers static Web pages to browsers which would render.
10/13/2015 ©2006 Scott Miller, University of Victoria 1 Content Serving Static vs. Dynamic Content Web Servers Server Flow Control Rev. 2.0.
1 Yahoo! User Interface Library Nate Oracle User Experience April 17th, 2006.
Conceptual Architecture of Mozilla Firefox (version ) Jared Haines Iris Lai John,Chun-Hung,Chiu Josh Fairhead June 5, 2007.
2 Web Standards and IE7 Embracing the Future, Managing the Past.
XHTML By Trevor Adams. Topics Covered XHTML eXtensible HyperText Mark-up Language The beginning – HTML Web Standards Concept and syntax Elements (tags)
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Building Rich Web Applications with Ajax Linda Dailey Paulson IEEE – Computer, October 05 (Vol.38, No.10) Presented by Jingming Zhang.
Bells, Whistles, and Alarms: HCI Lessons Using AJAX for a Page-turning Web Application Juliet L. Hardesty, Indiana University.
AfterCollege Self-Service Scrape Configuration & Posting Utility Kai Hu Haiyan Wu May 14, Harney 235.
Real-World AJAX Seminar - March 13, 2006 Bringing the Richness and Responsiveness of Desktop Applications to the Web Sahil Malik telerik.
INTRODUCTION TO WEB APPLICATION Chapter 1. In this chapter, you will learn about:  The evolution of the Internet  The beginning of the World Wide Web,
HTML5 AND THE FUTURE JAVASCRIPT PLATFORM Marcelo Lopez Ruiz Senior Software Design Engineer Microsoft Corporation.
World Wide Web “WWW”, "Web" or "W3". World Wide Web “WWW”, "Web" or "W3"
REAL WORLD AJAX MARCH TIBCO USER CONFERENCE / 2004 Enterprise Rich Internet Applications with AJAX Real World Case Studies with TIBCO General Interface™
Putting Performance Best Practices Together to Create the Perfect SPA Chris Love2Dev.com.
David Lawrence 7/8/091Intro. to PHP -- David Lawrence.
RIA and Web2.0 Development with no Coding Juan Camilo Ruiz Senior Product Manager Development Tools.
Louisa Lambregts, Louisa Lambregts
INT222 - Internet Fundamentals Shi, Yue (Sunny) Office: T2095 SENECA COLLEGE.
Weekend MS CS Program Internet and Web Technologies COT 5930 Web Project Development - Ajax Dr. Roy Levow, Associate Chair & Professor
 Web pages originally static  Page is delivered exactly as stored on server  Same information displayed for all users, from all contexts  Dynamic.
HTML Concepts and Techniques Fifth Edition Chapter 1 Introduction to HTML.
LESSON 15 – UNIT 0 ADAPTING YOUR WEB SITE FOR MOBILE DEVICES.
Chapter 1 Introduction to HTML, XHTML, and CSS HTML5 & CSS 7 th Edition.
AJAX and REST. Slide 2 What is AJAX? It’s an acronym for Asynchronous JavaScript and XML Although requests need not be asynchronous It’s not really a.
1 Yahoo! vs. Yahoo! Yahoo! Case Studies Across the Doc—App Spectrum Nate Koechley: The Ajax Experience.
Web Technology (NCS-504) Prepared By Mr. Abhishek Kesharwani Assistant Professor,UCER Naini,Allahabad.
 AJAX technology  Rich User Experience  Characteristics  Real live examples  JavaScript and AJAX  Web application workflow model – synchronous vs.
AJAX CS456 Fall Examples Where is AJAX used? Why do we care?
ASP.Net ICallback Vijayalakshmi G M Senior Trainer Binary Spectrum.
1 MIT 5316 Web-Based Computing Lecture 1. 2 Welcome Introduction Syllabus.
Customizing Share Document Previews Will Abson Senior Integrations Engineer and Share Extras Project Lead
The Microsoft Technical Roadshow 2007 AJAX Development Mike Ormond Developer & Platform Group Microsoft Ltd
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.
Project 1 Introduction to HTML.
AJAX.
Prepared for Md. Zakir Hossain Lecturer, CSE, DUET Prepared by Miton Chandra Datta
Silverlight Technology
AJAX Impact on Telecom It’s not just for web sites anymore.
Presentation transcript:

1 Y! v. Y! Yahoo! Case Studies Across the Page—App Spectrum, One Size Does Not Fit All Nate Koechley 2006, London – June 16 th, 2006 |

2 Y! v. Y! v. Y! Three Yahoo! Case Studies Across the Page—App Spectrum, One Size Does Not Fit All Nate Koechley 2006, London – June 16 th, 2006 |

3 Nate Koechley

4 It’s Pronounced “Kek’lee”

5 Hello, World Nate Koechley –At Yahoo! since 2001 –Charter member of Web Development team –On Yahoo! User Interface Library (YUI) team Three roles: –Senior Frontend Engineer –Technical Evangelist –Design Liaison

6 Yahoo! User Interface Library (uh, thanks Simon) A la carte –Event ~ 2k onAvailable Custom Events / Pub-Sub –DOM ~ 3k Add/replace Class Utilities vs. Controls, also CSS “There’s no shortage of better things to spend time on.”

7 The DHTML Universe by Dojo’s Alex Russell (work in progress) DHTML_universe.pdf

9

16 A Great Community at Yahoo!

17 Praise Them, Blame Me

18 You?

19 OK then, a quick history:

A bit of evolution over the years…

A bit of evolution over the years…

A bit of evolution over the years…

A bit of evolution over the years…

A bit of evolution over the years…

A bit of evolution over the years…

…into the page that today welcomes 188m users every month, 5.2 billion times A bit of evolution over the years… Source: Comscore, Feb. 2006

27 The New Yahoo! Home Page Video:

28 It is immensely telling that the new Yahoo! homepage is a DHTML homepage.

29 “Getting It Right The Second Time”

30 Three Case Studies

31 Case Study 1: History –“Preview” release exactly one month ago today –From scratch –Newest development effort to be released Massive Scale –5.2 billion views per month –188 million unique users Major DHMTL and Ajax Implementation

32 Case Study 1: Yahoo! Home Page Preview Video:

33 Case Study 2: History –Beta release exactly eight days ago –From scratch –Long development timeline Massive Scale –30 million unique users –2 billion photos Major DHTML and Ajax Implementation

34 Case Study 2: Yahoo! Photos Beta Video:

35 Case Study 3: History –Beta release about one year ago –Legacy-ish, was Oddpost.com –Oddpost development began in 1999 Massive Scale –World’s largest provider –Available in 21 languages Preeminent DHTML and Ajax Application

36 Case Study 3: Yahoo! Mail Beta Video:

37 do not worry – not a product pitch

38 Common Goals:

39 Common Goals: 1) Performance (x3)

40 Common Goals: 1) Performance 2) Interactivity

41 Common Goals: 1) Performance 2) Interactivity 3) Stay true to our beliefs

42 Common Approaches:

43 The Basics No Absolute Pos Yes Compression YesNo Obfuscation Yes Minimization Yes Keyboard NoYes Font-size Responsive Yes CSS Sprites QuirksStrict Render Mode NoneXHTML 1.0 Strict HTML 4.01 Strict Doctype

44 From Documents to Applications

45 Page—Application Spectrum Historically Web Shallow Interaction Simple Idioms For Consumption Markup + Skin Sequential Nav Passive Historically Desktop Deep Interaction Powerful Idioms For Productivity JS, DHTML, Ajax, DOM Self Contained ActiveApplicationPage

46 Page—Application SpectrumApplicationPage

47 Looking Across the Spectrum 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

48 Looking Across the Spectrum: Tracking Events 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

49 From Page-Granular to Event-Granular Interfaces

50 Tracking Events: Event Utilities Don’t piss off the DOM Scripting Task Force –No JS in attribute space / markup! Watch out for memory leaks!!! (yes, three !’s) Many great utilities –YUI Event Utility –Dojo –Scott Andrew –many more…

51 Tracking Events: Event Attachment Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts

52 Browsers die when there are too many (objects + listeners)

53 Tracking Events: Lots and lots Objects can have many events: –Multiple keyboard listeners –Down+drag –Down+key –Down+doubleclick –Down+click+key –More… Multiple by countless number of objects!

54 Tracking Events: Event Delegation Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts Obj +evnts

55 Tracking Events: Event Delegation Obj

56 Tracking Events: Event Delegation Obj Event

57 More on “Delegation” Addressing Object Count 1.Listen to document.onmousedown (native) 2.Note which event.target (native) Addressing Handler Count 3.Then delegate and attach the handlers you need, just in time.

58 Event Delegation Example: Mousedown in vicinity of thumbnail –If on If MouseMove –Assign Drag and Drop –If on whitespace If MouseMove –Assign Selection Rectangle

59 Event Delegation Example: Is the click on a photo thumbnail? If so, delegate to its related Javascript controller object eg: photoItems[this.index].mousedown(); Where "this" is the thumbnail clicked, via event.target/srcElement etc.

60 Tracking Events: Event Delegation Obj Event

61 Tracking Events: DetailsApplicationPage Few Objects with Simple Handlers Event Attachment Many Objects w/ Multiple Handlers Event Delegation Many Objects w/ Multiple Handlers Event Delegation

62 Looking Across the Spectrum: Memory Management 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

63 Memory Management With extensive DOM and JS work, there’s the potential for things to get out of hand. Goals: –Don’t leak memory Also, keep overall memory footprint small –Offer a quickly-responsive interface –Stability

64 Memory Management: General Best Practices For each constructor have a destructor 1.Create Objects 2.Unhook 3.Remove Handlers 4.Remove References

65 Memory Management: Three Approaches 1.Destruction (general best practice) 2.Conservation (niche) 3.Recycling (niche)

66 Memory Management: DetailsApplicationPage Conservation Destruction Destruction, but… Recycle iframes (about:blank)

67 Memory Management Tip: Measure and Test –Drip is a great tool –Test extreme object counts –Test long interactions –Test extensive navigation

68 Looking Across the Spectrum: Delivering JS and CSS 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

69 Delivering JS and CSS: General Best Practices A single large file loads fastest. –HTTP requests are the nemesis of a well- tuned site. –Build process is, therefore, very important. CSS files as close to the top as possible. JS files as close to as possible.

70 Delivering JS and CSS: Three Other Approaches 1) Many small files at once –Enables atomic/team development –Enables partial caching if parts change

71 Delivering JS and CSS: Three Other Approaches 2) Many small files on demand –Some demanded functionality may be subtly slower –Allows tuning in response to use cases and task analysis

72 Delivering JS and CSS: Three Other Approaches 3) Inline in the –Caching is not as effective as we imagine, especially on pages set as browser home pages

73 Delivering CSS and JS: DetailsApplicationPage Many smaller files, on demand. Some inline. Every feature not used every time. Content is key. Uber file of interface JS/CSS. Pay once. Objects/data on demand Single File (anti-example) Functionality is key. Highly interconnected.

74 Looking Across the Spectrum: Data Format 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

75 Data Format: General Best Practice Use JSON for data interchange –Natively understood –“The fat-free alternative to XML” –Tools in every known programming language

76 Data Format: Other Approaches Somebody is going to have to pay the CPU price to render the View –Faster to pass a string that expresses a DOM state directly than trying to parse and create on the fly. –Consider client and server in tandem when making architectural choices Parsing XML degrades performance greater- than-linearly as XML size increases.

77 Data Format: DetailsApplicationPage “JSON rocks” “We want to move to JSON” “We’re using some JSON, and will be much more soon” Recognize strengths of client and server

78 Looking Across the Spectrum: Pagination 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

79 “Ajax is awesome!! Hmmm, I know: we can do pagination without refreshing the page!! Sweet, we’re so totally Web 2.0 now!!”

80 Could does not equal should.

81 Pagination: DetailsApplicationPage Single page, so basically not applicable. Some Ajax pagination in Personal Assistant module Heavy Objects Ajax Pagination; No refresh but new collection. Light Objects Endless-scrolling (and clever caching)

82 Looking Across the Spectrum: Browser Support 1.Tracking Events 2.Memory Management 3.Delivering JS and CSS 4.Data Format 5.Pagination 6.Browser Support

83 Which browser to support?

84

85 Graded Browser Support: Two Key Ideas 1) Support does not mean “the same” “Expecting two users using different browser software to have an identical experience fails to embrace or acknowledge the heterogeneous essence of the Web.” 2) Support must not be binary!

86 Graded Browser Support: General Best Practice 3 Grades of Browser Support C-grade support (core support, 2%) A-grade support (advanced support, 97%) X-grade support (the X-Factor, 1%)

87

88 A bit about browser stats…

89 A bit about browser stats… More 5.0 than 5.5; –We consider 5.0 C-Grade Note by-country skews Note by-content skews IE7 already moved the needle –Historically, SP2 rollout out very quickly

90 Browser as Development Environment?

91 Browser Support: Summary Still a huge pain in the ass. –The Web is the most hostile software engineering environment imaginable. (Douglas Crockford) Same answer for everybody. – Develop to standards, then patch. Maintain discipline in the face of heterogeneity.

92 The price is always higher to say “no” to Safari and Opera

93 Browser Support: DetailsApplicationPage GBS A-grade Developed in Gecko GBS A-grade Developed in Gecko IE and FF Developed in IE, then built IE-emulation layer.

94 We're in this for the long haul.

95 Quality is OUR job. Be belligerent.

96 Today’s bad decisions will be tomorrow’s constraints

97 Thank you. Questions? Nate Koechley This presentation is available at