Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Coding the UI: Lessons Learned from Orbitz and ...
Search
Mark Meeker
October 08, 2008
Technology
0
55
Coding the UI: Lessons Learned from Orbitz and ebookers
AjaxWorld - October, 2008
Mark Meeker
October 08, 2008
Tweet
Share
More Decks by Mark Meeker
See All by Mark Meeker
Building a Mobile Device Lab
meeker
0
140
Building a Live Style Guide
meeker
1
80
Front-End Operations
meeker
2
130
Simplifying Massive Changes with a Live Style Guide
meeker
0
63
Modern Browser Support
meeker
0
77
Strategies for Accessibility
meeker
0
50
Real World Web Development
meeker
0
160
Open & Acccessible
meeker
0
81
Merging Ajax and Accessibility
meeker
0
44
Other Decks in Technology
See All in Technology
オブザーバビリティと育てた ID管理・認証認可基盤の歩み / The Journey of an ID Management, Authentication, and Authorization Platform Nurtured with Observability
kaminashi
1
1k
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
340
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
280
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
140
Okta Identity Governanceで実現する最小権限の原則 / Implementing the Principle of Least Privilege with Okta Identity Governance
tatsumin39
0
180
知覚とデザイン
rinchoku
1
610
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
650
OPENLOGI Company Profile for engineer
hr01
1
45k
生成AI時代のPythonセキュリティとガバナンス
abenben
0
140
ヘンリー会社紹介資料(エンジニア向け) / company deck for engineer
henryofficial
0
400
AI時代、“平均値”ではいられない
uhyo
8
2.6k
組織全員で向き合うAI Readyなデータ利活用
gappy50
4
1.3k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Practical Orchestrator
shlominoach
190
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Documentation Writing (for coders)
carmenintech
75
5.1k
Bash Introduction
62gerente
615
210k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
116
20k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
The Pragmatic Product Professional
lauravandoore
36
7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Transcript
AJAX*World* October,'2008 Mark*Meeker* CODING THE UI: LEARNED FROM ORBITZ &
EBOOKERS LESSONS
None
Dozens of apps, hundreds of VMs, thousands of services. UI
webapp (controller layer) JSP (page templating) JavaScript JSP 2.0 XHTML
1.0 CSS CSS 2.1
“As far as the customer is concerned, the interface is
the product.” - Jef Raskin
“Browsers are the most hostile software development environments possible.” -
Douglas Crockford
1,971 Revisions to 1 .css file since Oct. 2006 2.9
edits per day (if working weekends)
2007 - updates.orbitz.com 2008 - ebookers.com 2005 - CheapTickets.com 2006
- mobile.orbitz.com 2001 - Orbitz.com 2002 - OrbitzForBusiness.com
None
Single JSP files measuring in thousands of lines Massive amounts
of repeated markup 561 files with <html> tag Minimal re-use 66 tables on one page Experience
“Good judgement is the result of experience … Experience is
the result of bad judgement.” —Fred Brooks
Fresh start? http://flickr.com/photos/jeremybrooks/833157523/
Wishlist Internationalization Universality Maintain High Quality Code Promote Code Re-Use
Consistent Experience http://flickr.com/photos/litandmore/2664900676/
Internationalization http://www.flickr.com/photos/nickjacksonza/256651959/
6:50pm versus 18:50
14/11/07 versus 11/14/07
miles versus kilometers
3,000+ Labels, strings, paragraphs of text.
Traveler vs. Traveller vs. Passengers
1,500+ Images
Images Remove text as much as possible Consider cultural differences
in images choices
English
French
Japanese
Translation Small words can expand 200-300% Rule of thumb: 40%
Watch for wrapping issues (or lack thereof) Consider during design comp stage
Universality
None
Follow Web Standards
Follow Web Standards P.O.S.H. plain old semantic HTML Constant balancing
act Reduces display defects Reset Styles Validate CSS Reminder that it is an evolving code base
IE6 Support <!--[if IE 6]> <style type="text/css" media="all"> @import url(/style/layout/layoutIE6Fix.css);
</style> <![endif]-->
Firefox 3, OSX
IE 5.2, OSX
None
None
Amazon Kindle
Progressive Enhancement Content is KING! Start with semantic markup Get
working functionality with HTML only Enhance display with CSS Enhance behavior with JavaScript
Separation of Layers No in-line styles or in-line JavaScript If
it only works with JavaScript, create it with JavaScript
Graded Browser Support http://developer.yahoo.com/yui/articles/gbs/ Varying levels of support Isn’t required
to be identical Not all or nothing
Graded Browser Support A-Grade White-list (well-known, measurable market share) Tested
by QA Team C-Grade Blacklist (incapable browsers, call drivers) X-Grade Everyone else
Maintain High Quality http://www.flickr.com/photos/harvypascua/46114061
High Quality Validation Build time tests (automated) static code analysis
CSS validation JSP compile Constant developer vigilance Sometimes constraints are good
Constraints Custom tags for some HTML elements anchors, images, form
elements Only allow subset of attributes no: onclick, id required: various content Able to enforce all inputs have labels Free CSS and JS support Free shared functionality
None
None
Debug Tools Logging Runtime in-application debugging Expose data to testers
Debug various types of modules Content Error message placement
File Structure Developer first Build for deploy later move files
around combine them reformat them strip comments
CSS Files Split between multiple files Typography Color Layout Modules
Nav Each declaration on its own line
Promote Re-Use (DRY) http://flickr.com/photos/kingdesmond/477389196
Composite View Separates “layout” of page from content Allows to
plug in different modules into page Used in Apache Tiles Leverage in-house framework Try and gain as much re-use of JSP code
Layout Header Footer Rail Body
Module
None
Page Definition header.jsp --> Header results.jsp --> Body sortbar.jsp -->
Rail footer.jsp --> Footer
Page Composition Page Def B/E Magic Browser
None
DRY Avoid targeting IDs for CSS or JS Custom attribute
for JavaScript Data Separation of Layers Helper code for small “controls” with the CSS to go with them Take advantage of lazy developers
Consistent Experience http://www.flickr.com/photos/kiad/491754035/
Consistent Experience Make learning how to use the site easier
for users. Reduce the number of patterns. Stick with the ones that work best. Meet users expectations on... messaging error placements interfaces
None
None
None
None
Consistent Experience Review the site for common patterns Introduce a
Pattern Library Build common “controls”
Follow the 80/20 Rule
“Simple things should be simple and complex things should be
possible.” —Alan Kay
80/20 Rule Make it easy to do the the common
task for 80% of your users Make it possible to do everything for the other 20% that need to
None
Hide/Reveal
Micro-content
80/20 Rule Patterns: Hide Reveal Tabs Pattern Pulling in content
via Ajax “Micro-content” bubbles
What’s Next? http://flickr.com/photos/reinvented/179863733/
Slides: http://markmeeker.com/events/ajaxworld2008 Email:
[email protected]
Blog: http://markmeeker.com Orbitz Jobs: http://www.orbitz.com/startmycareer Questions?