$30 off During Our Annual Pro Sale. View Details »

Pushing the Boundaries without Breaking the Web

Rachel Andrew
September 06, 2012

Pushing the Boundaries without Breaking the Web

The version of this talk that I gave at Frontend Conference in Zurich. For links to the video and some reference material see: http://www.rachelandrew.co.uk/presentations/frontend-conference-zurich

Rachel Andrew

September 06, 2012

More Decks by Rachel Andrew

Other Decks in Technology


  1. Pushing the boundaries without Breaking the Web

  2. Rachel Andrew http://edgeofmyseat.com http://grabaperch.com http://rachelandrew.co.uk @rachelandrew

  3. a History Lesson

  4. <script type="text/javascript"> <!-- function MM_reloadPage(init) { if (init==true) with (navigator)

    {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script>
  5. None
  6. Things used by people who understand the problems they solve

    are also used by those who do not understand those problems, or even if there is a problem.
  7. This is an amazing time to be a web developer.

  8. None
  9. None
  10. Frustration

  11. The web is a work in progress. Your job? To

    deal with it.
  12. Making things better

  13. None
  14. You now have two problems

  15. None
  16. The state of play in December 2011.

  17. December 2011: greenbelt.org.uk

  18. December 2011: greenbelt.org.uk

  19. December 2011: greenbelt.org.uk

  20. December 2011: greenbelt.org.uk

  21. December 2011: greenbelt.org.uk

  22. December 2011: greenbelt.org.uk

  23. December 2011: greenbelt.org.uk

  24. December 2011: greenbelt.org.uk

  25. December 2011: greenbelt.org.uk

  26. December 2011: greenbelt.org.uk

  27. December 2011: greenbelt.org.uk

  28. Understanding the technology your audience is using gives you a

    point of reference for your decisions.
  29. Our approach: mobile first responsive design

  30. <link rel="stylesheet" href="/assets/css/basic.css" /> <link rel="stylesheet" media="only screen and (min-width:

    460px)" href="/ assets/css/460.css" /> <link rel="stylesheet" media="only screen and (min-width: 700px)" href="/ assets/css/700.css" /> <link rel="stylesheet" media="only screen and (min-width: 940px)" href="/ assets/css/940.css" /> <link rel="stylesheet" media="only screen and (min-width: 1180px)" href="/ assets/css/1180.css" />
  31. None
  32. Problem: no media query support in IE8 and below.

  33. No media query support

  34. No media query support

  35. No media query support

  36. Option 1: serve these users the mobile version of the

    site only
  37. Option 2: Use respond.js to polyfill media query support

  38. Option 3: Offer a fixed width version of the site

    to IE8 and below
  39. None
  40. Problem: lack of support for styling HTML5 semantic elements in

    older browsers.
  41. No support for HTML5 semantic elements

  42. No support for HTML5 semantic elements

  43. No support for HTML5 semantic elements

  44. Option 1: use the JavaScript polyfill html5.js to add support

    via JavaScript
  45. Option 2: avoid using HTML5 semantic elements in the templates

    until IE8 usage declines
  46. Replacing divs with semantic elements later is trivial due to

    our template based CMS.
  47. We (edgeofmyseat.com) are retained to maintain & develop the site.

    We can make these changes when old browser usage reduces.
  48. Your mileage (and situation) may vary.

  49. Avoiding using the tag in your selectors means you can

    switch tags in your templates without changing your CSS.
  50. Problem: lack of support for certain CSS3 Selectors in older

  51. No support for nth-child

  52. Option1: do nothing

  53. Option 2: polyfill with Selectivizr

  54. Option 3: fix each selector in your own JavaScript

  55. My decision to fix the width for older browsers also

    made polyfilling CSS3 selectors much easier.
  56. Problem: no clear solution for Responsive Images

  57. Solution: put in place technology that will enable us to

    adopt a solution later
  58. My process

  59. 1. What is the problem? My process

  60. 1. What is the problem? My process 2. What are

    my constraints?
  61. 1. What is the problem? My process 2. What are

    my constraints? 3. Is not supporting this feature an option?
  62. 1. What is the problem? My process 2. What are

    my constraints? 3. Is not supporting this feature an option? 4. What current solutions exist?
  63. 1. What is the problem? My process 2. What are

    my constraints? 3. Is not supporting this feature an option? 4. What current solutions exist? 5. Use a polyfill or roll my own?
  64. May 2012: grabaperch.com

  65. May 2012: grabaperch.com

  66. May 2012: grabaperch.com

  67. May 2012: grabaperch.com

  68. May 2012: grabaperch.com

  69. May 2012: grabaperch.com

  70. May 2012: grabaperch.com

  71. May 2012: grabaperch.com

  72. May 2012: grabaperch.com

  73. How many users of the Perch website do not have

    support for the modern web technologies we want to use?
  74. May 2012: grabaperch.com

  75. May 2012: grabaperch.com

  76. May 2012: grabaperch.com

  77. None
  78. I use more polyfills when I have fewer older browser

    users. The downsides are going to be an issue to a much smaller %
  79. Why not just use a boilerplate?

  80. None
  81. Stop solving problems you don’t yet have

  82. If you don’t know what it is doing. Why is

    it there?
  83. What happens if any part does not load?

  84. Do you know what is safe to delete?

  85. Starting with the bare minimum and adding things forces you

    to consider the implications of each thing you add.
  86. There’s no silver bullet to making a slow site fast.

    You must take a holistic approach. High performance runs the entire way through from the hardware it’s hosted on, through the app that builds the pages, to the server software that delivers the pages and the front end code that displays them in a browser. Drew McLellan - http://allinthehead.com/retro/361/how-to-make-your-website-fast
  87. Web pages are getting larger and a lot of the

    size is down to JavaScript. http://royal.pingdom.com/2011/11/21/web-pages-getting-bloated-here-is-why/
  88. Size Matters

  89. Helping people to start well.

  90. We are all learners and we are all teachers...

  91. ... no matter how old we are, how long we

    have been doing this, and whether we write tutorials or speak at conferences or not.
  92. Polyfills should not be a black box

  93. Teach problem solving before polyfilling.

  94. None
  95. “Perch is removing my paragraphs”

  96. We need to teach: HTML, CSS, JavaScript

  97. We need to teach: Problem Solving skills

  98. None
  99. If we train people to just copy and paste, we

    stop them growing, learning and contributing.
  100. Moving the web forward together

  101. Make sure you know why you are using a solution

    and what your other options are.
  102. Know and test for what happens if JavaScript doesn’t load.

  103. When teaching or writing tutorials for others explain problems before

    handing out the solution. Explain why as well as how.
  104. Thank you. Image credits - Flickr users: artbystevejohnson, atoach, dominicspics,

    imagesbywestfall, koalazymonkey, pinksherbert, whatcouldgowrong