progressive enhancement

104
Progressive Enhancement

Upload: zach-leatherman

Post on 02-Jul-2015

1.126 views

Category:

Technology


2 download

DESCRIPTION

Progressive Enhancement is one of the most important and useful software engineering tools in our web development toolbox, but in practice it's largely ignored. We'll dive into the basics of PE, the common pitfalls (think and the newer class="no-js"), how to support Blackberry 4.x and IE6 without a ton of extra work, tools to avoid that violate PE best practices, and how to apply PE pragmatically.

TRANSCRIPT

Page 1: Progressive Enhancement

ProgressiveEnhancement

Page 2: Progressive Enhancement

Hello.Zach LeathermanFront End Engineer est. 1998UI “Architect” at Union Pacific RailroadWeb 3.0, 6 Bladed Razors, 7 Minute Abs:

849K Pageviews, 1.3K RSS subscribersBigText jQuery Plugin AuthorOmaha Startup Weekend: GiftBright and CallSpinnerNo affiliation:

@zachleat http://zachleat.com

Page 3: Progressive Enhancement

Problem?

Page 4: Progressive Enhancement
Page 5: Progressive Enhancement

WEB BROWSERS

Page 6: Progressive Enhancement

3.6, 4, 5

Page 7: Progressive Enhancement

Fennec

Page 8: Progressive Enhancement

Camino

Page 9: Progressive Enhancement

Flock SeaMonkey

K-Meleon

Page 10: Progressive Enhancement

MicroB

Page 12: Progressive Enhancement

11, 12

Page 13: Progressive Enhancement

Konqueror

Page 14: Progressive Enhancement
Page 15: Progressive Enhancement
Page 16: Progressive Enhancement
Page 17: Progressive Enhancement
Page 18: Progressive Enhancement
Page 19: Progressive Enhancement
Page 20: Progressive Enhancement
Page 21: Progressive Enhancement

(NetFront)

Page 22: Progressive Enhancement

(NetFront)

Page 23: Progressive Enhancement

RockMelt Shiira

OmniWebiCab

SkyFire

Page 24: Progressive Enhancement

11Mini 4, 5, 6

Page 25: Progressive Enhancement

Internet Channel

Page 26: Progressive Enhancement

6

Page 27: Progressive Enhancement

7, 8

Page 28: Progressive Enhancement

9

Page 29: Progressive Enhancement

Maxthon Avant Browser

Page 30: Progressive Enhancement
Page 31: Progressive Enhancement
Page 32: Progressive Enhancement
Page 33: Progressive Enhancement

SPECIFICATIONS

Page 34: Progressive Enhancement

Design Documents

Page 35: Progressive Enhancement
Page 36: Progressive Enhancement

HTML276 pages

HTML5500 pages

http://html5.hadw.com/

Page 37: Progressive Enhancement

UNRELIABLE or SLOW NETWORKS

Page 38: Progressive Enhancement

Cheap shot

Page 39: Progressive Enhancement

IMPERFECT CODE

Page 40: Progressive Enhancement

<a href=”#” onclick=”throw Error(‘Whoops’)”> GO TO NEXT PAGE</a>

Page 41: Progressive Enhancement
Page 42: Progressive Enhancement
Page 43: Progressive Enhancement

You’re unit testing, right?

Page 44: Progressive Enhancement

P.E.

Page 45: Progressive Enhancement

HTMLCSS

JavaScript

I need my space

Page 46: Progressive Enhancement

HTML CSS

JavaScript

ContentPresentationBehaviors

Page 47: Progressive Enhancement

HTML CSS

JavaScript

FirstSecondThird

Page 48: Progressive Enhancement

Example

Page 49: Progressive Enhancement

HTML

Page 50: Progressive Enhancement

Ajax Target HTML

Page 51: Progressive Enhancement

CSS

Page 52: Progressive Enhancement

Modify Ajax Target

Page 53: Progressive Enhancement

JavaScript

Page 54: Progressive Enhancement

Choose Your Weapons Wisely

http://www.flickr.com/photos/29503348@N03/4915763648/

Page 55: Progressive Enhancement

Performance

Page 56: Progressive Enhancement

Accessibility

Page 57: Progressive Enhancement
Page 58: Progressive Enhancement
Page 59: Progressive Enhancement
Page 60: Progressive Enhancement

Common Mistakes

Page 61: Progressive Enhancement

<noscript>

Page 62: Progressive Enhancement

HTML5 Boilerplate

Page 63: Progressive Enhancement

What to P.E.

Page 64: Progressive Enhancement

TextImages

CSSJavaScript

alt=”Text”DefaultsNo AjaxNo Behaviors

Page 65: Progressive Enhancement

TextImages

Flash Video Transcripts Still Images

Page 66: Progressive Enhancement

TextImagesAudio

Video

1838 Telegraph1865 Telefax1876 Telephone1896 Radio1927 Television1930 Videophone

Page 67: Progressive Enhancement

One Web,Mobile First

JavaScriptRequired Web

IE OnlyWebKit Only

Two WebIncl

usiv

eExclusive

Page 68: Progressive Enhancement

LayoutsResponsive Design & Text

http://blog.andyhume.net/responsive-by-default

Page 69: Progressive Enhancement

InteractionsKeyboard > Mouse > Touch

Page 70: Progressive Enhancement
Page 71: Progressive Enhancement
Page 72: Progressive Enhancement

http://issuu.com/curtisbrenneman/docs/net208

NetMagIssue 208

Page 73: Progressive Enhancement

Pragmatism

Page 74: Progressive Enhancement
Page 75: Progressive Enhancement
Page 76: Progressive Enhancement
Page 77: Progressive Enhancement
Page 78: Progressive Enhancement

Who to P.E.

Page 79: Progressive Enhancement

http

://de

velo

per.y

ahoo

.com

/yui

/art

icle

s/gb

s/

Page 80: Progressive Enhancement

http

://jq

uery

mob

ile.c

om/g

bs/

Page 81: Progressive Enhancement

Ok, but how does this help me?

Page 82: Progressive Enhancement

IE6 and Blackberry 4.x still have CSS, JavaScript

support

Page 83: Progressive Enhancement
Page 84: Progressive Enhancement

Three Ways To Forkhttp://allyoucanleet.com/2011/02/05/the-cost-of-feature-testing/

Page 85: Progressive Enhancement

User Agent SniffingBad.

“Mozilla”“Like Gecko”

Page 86: Progressive Enhancement

Weak InferenceNot much better.

Page 87: Progressive Enhancement

Feature DetectionGood.

Page 88: Progressive Enhancement
Page 89: Progressive Enhancement
Page 90: Progressive Enhancement
Page 91: Progressive Enhancement
Page 92: Progressive Enhancement

Tool Snobbery

Page 93: Progressive Enhancement
Page 94: Progressive Enhancement

Warning Signs

Page 95: Progressive Enhancement

APIs are JavaScript Only

Page 96: Progressive Enhancement

Clientside JavaScript Templating

Page 97: Progressive Enhancement

Mobile Component Frameworks

Page 98: Progressive Enhancement
Page 99: Progressive Enhancement

Good, Bad, & Ugly

Page 100: Progressive Enhancement

Retrofit Existing Code

Page 101: Progressive Enhancement

Requires Thought

Page 102: Progressive Enhancement

Slightly Larger Code Base

Page 103: Progressive Enhancement

Tool Snobbery

Page 104: Progressive Enhancement

Thanks!

Zach Leatherman

http://zachleat.com

@zachleat