An Event Apart: “Resilience: Building a Robust Web That Lasts”

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.


  • 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:
    1. Identify core functionality
      • What’s the one thing you want every user to be able to do?
    2. Make that functionality available using the simplest technology
      • Simplest technology is the most resilient
    3. Enhance!
      • This is where you want to spend your time
      • This is where you differentiate yourself from the competition
  • 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.” —, 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

Related Links