Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Evolution is Awesome

dherman
March 26, 2014

Evolution is Awesome

My EmberConf 2014 keynote, on evolving the Web forward.

dherman

March 26, 2014
Tweet

More Decks by dherman

Other Decks in Programming

Transcript

  1. 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.
  2. 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
  3. ! ! Cause for revolution zomg Web's gonna die !

    ! ! ! ! Not so much eugh, JS has warts eugh, HTML has warts eugh, CSS has warts
  4. 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
  5. 1JS

  6. <script>      function*  gen()  {        

     yield  42;      }   </script>
  7. "use  strict";   ! if  (foo)  {      function

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

     function  f()  {      }      ...   }   ! export  default  ...;
  9. Good design is motivated by use cases, workflows. Good design

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

    the text study the text interpret the text
  11. do  {      product.build();      product.ship();    

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

     standard.evaluate();      throw  new  DontBreakTheWeb();   }  while  (!standard.isPerfect());
  13. 1. Add the missing primitives. 2. Enable userland polyfills and

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

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