Jeremy Keith speaking at An Event Apart Orlando 2016 at Disney’s Contemporary Resort in Walt Disney World on October 5, 2016.
Web browsers have become so powerful that developers are now treating them as if they were a runtime environment as predictable as any other. But the truth is that we still need to deal with many unknown factors that torpedo our assumptions. The web is where Postel’s Law meets Murphy’s Law, so we can’t treat web development as if it were just another flavor of software. Instead we must work with the grain of the web. You’ll learn tried and tested (as well as new) approaches to building for the web that will result in experiences that are robust, flexible, and resilient.
Notes
- Resilience
- “Deliver the bits, stupid.” — David Isenberg, “Rise of the Stupid Network”
- “The trick… is to make sure that each limited mechanical part of the web, each application, is within itself composed of simple parts that will never get too powerful.” — Tim Berners-Lee
- HTML started with 21 elements; now has 121 elements
- The beauty of HTML is that we can add new elements with confidence that we know how older browsers will handle them
- This was a design decision of HTML
- Takes advantage of HTML’s error handling model
- Older browsers treat attributes they don’t understand the same way they treat tags they don’t understand
- CSS has a similar error handling model as HTML
- There is one single CSS pattern for everything:
selector { property: value; }
- CSS and HTML are very resilient because they are forgiving
- “Be conservative in what you send, be liberal in what you accept.” — Jon Postel
- HTML and CSS are declarative languages (resilient); JavaScript is an imperative language (fragile)
- “Anything that can possibly go wrong, will go wrong.” — Edward Aloysius Murphy, Jr.
- “Everyone Has JavaScript, Right?” by Stuart Langridge
- Three step process for building on the web:
- Identify core functionality
- What’s the one thing you want every user to be able to do?
- Make that functionality available using the simplest technology
- Simplest technology is the most resilient
- Enhance!
- This is where you want to spend your time
- This is where you differentiate yourself from the competition
- Identify core functionality
- You can apply the process to each component of your website
- “This is too easy”
- Lots of room to show this is possible on large projects
- “This is too hard”
- Just follow the process for core functionality, not everything
- Yes, there will be some duplicate effort
- It won’t be easy the first time
- Doing steps 1 and 2 gives you permission to go crazy on step 3
- By doing steps 1 and 2, you can build up “technical credit” for step 3
- Acceptance of chaos of the web
- “If you build pages with the idea that parts other than html are optional, you will create a better and stronger web page.” — gov.uk, Government Service Design Manual
- Developer convenience should not come at the expense of user needs
- This is what you get paid for, that’s why they call it work
- We try to pretend that the web can be contained
- “Ninety percent of everything is crud.” — Theodore Sturgeon
- “Any sufficiently advanced technology is indistinguishable from magic.” — Arthur C. Clarke
- “There is a Horse in the Apple Store” by Frank Chimero
- “Cool URIs don’t change.” — Tim Berners-Lee
- The Fountains of Paradise by Arthur C. Clarke
Speaker Links and Resources
- Books
- The Victorian Internet by Tom Standage, 01998
- Where Wizards Stay Up Late: The Origins of the Internet by Katie Hafner, 01996
- Weaving the Web by Tim Berners-Lee, 01999
- The Fountains of Paradise by Arthur C. Clarke, 01979
- References
- On Distributed Communications by Paul Baran, 01964
- Transmission Control Protocol by Jon Postel, 01980
- WorldWideWeb: Proposal for a HyperText Project by Tim Berners-Lee, 01990
- The Rise of the Stupid Network by David S. Isenberg, 01997
- Delay-Tolerant Networking Architecture by Vint Cerf, et al, 02007
- There is a Horse in the Apple Store by Frank Chimero, 02010
- Resources
- Submarine Cable Map by Telegeography
- Everyone Has JavaScript, Right? by Stuart Langridge
- Government Service Design Manual
- Introduction to Service Worker by Matt Gaunt
- The Offline Cookbook by Jake Archibald
- Related posts on adactio.com
- 02014-02-26 Continuum
- 02014-10-23 Be progressive
- 02014-11-03 Just what is it that you want to do?
- 02015-07-02 Baseline
- 02015-09-06 Enhance!
- Further reading
- Grade components, not browsers by Scott Jehl, 02013
- Building for the device agnostic web by Orde Saunders, 02013
- Device-Agnostic by Trent Walton, 02014
- Stop Breaking the Web by Nicolas Bevacqua, 02014
- The Practical Case for Progressive Enhancement by Jason Garber, 02015
- Let Links Be Links by Ross Penman, 02015
- Thriving in Unpredictability by Tim Kadlec, 02015
- Designing with Progressive Enhancement by Jason Garber, 02015
- A fictional conversation about progressive enhancement by Tom Morris, 02015
- See also: other links tagged with "progressive enhancement" on adactio.com
Related Links
- “Progressive Enhancement ‘Debate’” by Chris Coyier