Evolution is Awesome

2e36436c692b2e5fbc172e9fb7563171?s=47 dherman
March 26, 2014

Evolution is Awesome

My EmberConf 2014 keynote, on evolving the Web forward.

2e36436c692b2e5fbc172e9fb7563171?s=128

dherman

March 26, 2014
Tweet

Transcript

  1. None
  2. EVOLUTION IS AWESOME

  3. photo credits: http://en.wikipedia.org/wiki/French_Revolution

  4. 1998: Netscape was doomed – and they knew it. Microsoft

    was likely to kill the Web. The plan: at 10am on March 31, Jamie Zawinski would push Netscape's source code to the Web, creating the open source Mozilla Web browser.
  5. http://www.youtube.com/watch?v=mZTJbsUcdeU

  6. Well, they simply cannot undo what has been done. The

    Mozilla code is out there…and nobody can ever take that away from you. Ever. — Jamie Zawinski, 23 Nov. 1999
  7. ! ! Cause for revolution zomg Web's gonna die !

    ! ! ! ! Not so much eugh, JS has warts eugh, HTML has warts eugh, CSS has warts
  8. Y U NO bytecode?

  9. JavaScript lacks cross-language features. JavaScript is slow. JavaScript is sometimes

    fast but unpredictable. JIT compilation can be janky.
  10. Revolution: new bytecode language! Evolution: • build a native →

    JS compiler • study and optimize code patterns it generates • close gaps where we aren't generating optimal code • formalize pattern as validator ⇒ AOT
  11. All along, asm.js has worked across browsers.

  12. 1JS

  13. <script  type="application/javascript;version=4">   ! ! ! </script>

  14. <script  type="application/javascript;version=4">      function  gen()  {      

       yield  42;      }   </script>
  15. <script  type="application/javascript;version=4">      function  gen()  {      

       yield  42;      }   </script> ✘
  16. <script  type="application/javascript;version=6">      function  gen()  {      

       yield  42;      }   </script>
  17. None
  18. <script>      function*  gen()  {        

     yield  42;      }   </script>
  19. Focus: no reinvent-the-universe boondoggles Consistency: keep a unified development model

    Adoption: gradual adoption (polyfills, compilers)
  20. "use  strict";   ! ! ! ! ! ! !

  21. "use  strict";   ! if  (foo)  {      function

     f()  {      }      ...   }   ! module.exports  =  ...;
  22. //  automatically  strict   ! if  (foo)  {    

     function  f()  {      }      ...   }   ! export  default  ...;
  23. features > forks modules > modes

  24. Extensible Web

  25. Good design is motivated by use cases, workflows. Good design

    is built from small, orthogonal, and composable primitives.
  26. study the text interpret the text study the text interpret

    the text study the text interpret the text
  27. design evaluate design evaluate design evaluate

  28. photo credits: http://davidpaulbaker.blogspot.com/2013/02/move-fast-and-break-things.html

  29. do  {      product.build();      product.ship();    

     product.evaluate();   }  while  (!product.isPerfect());
  30. do  {      standard.design();      standard.ship();    

     standard.evaluate();      throw  new  DontBreakTheWeb();   }  while  (!standard.isPerfect());
  31. None
  32. browser vendors devs

  33. browser vendors devs

  34. browser vendors devs development workflow

  35. 1. Add the missing primitives. 2. Enable userland polyfills and

    compilers. 3. Work together to design the future.
  36. 1. Add the missing primitives. 2. Enable userland polyfills and

    compilers. 3. Work together to design the future. Thanks!