SlideShare a Scribd company logo
10 Years of JavaScript
what I’ve learnt so far
10 Years of Javascript
                 Brief introduction of me personally, where
                 I started (PHP), accomplishments and
                 professional career errata

 Who am I?              A run-through the history of professional Javascript usage
                        and the evolution of the Web Developer profession. From
                        browsers to ECMA to Ajax to libraries and commercialisation
 10 Years Ago...                                 Main pattern is the continuous struggle on delegation of logic;
                                                 what should be done on the client side and what on the ser ver?
                                                 Discussion goes BEYOND processing power of clients
 Frontend vs. Backend
                                              Dive deeper in more patterns that are more technical
 Other Recurring Patterns
 End of Part I   Conclusion about what I’ve really learnt the past ten yrs,
                 including me being happy about community growth!
                 #amsterdamjs rules!
Who am I?

                                    Small joke about definitely not being a nerd ;)
Geek
                                          Talk about ZMG, big for Mambo and J!, no JS at that
Started with PHP                          time, only small DHTML stuff



Landed a job (quit school!)                          Talk about university - art, sociology, psychology, etc. and future
                                                     prospects in that area :(
                                                     Learnt that there’s never enough time!

A very happy man :)
                                                     Job at eBuddy and first serious JS work, built clients, framework,
                                                     Javeline, Ajax.org



     Girlfriend
     Sailing whenever I can
     Made profession out of hobby
     Doing puzzles > 40hrs a week
No dashes, because it screws up my presentation! :P




Frontend vs. Backend
                         Describe evolving systems in hardware/ computing power


Power struggle                     Flash leads the way - clients can do a lot
                                   Sandboxing holds back innovation
                                   Delay: dotcom boom slowed down innovation
Richer clients                     Browser wars back on track (finally...)!!


                                                                                           Describe transition
Backend: from power horse to data cloud                                                    Dissimulation of MVC pattern -
                                                                                           exemplify!


Frontend: from dumb terminal to rich platform
Driven by innovation
            Innovation (re)sets the balance
            cloud? rich client? parallel computing? JIT’ed JS?
Other Recurring Patterns

                                       Javascript vs. ECMA vs. JScript and x-browser incompatibilities


Fixing the browser
                                         Lots of talk about it, blogosphere hot about it AFTER Ajax was coined.
Object Oriented JS
Big Boom of the ‘frameworks’                                    Combine the above 2 points: frameworks are born.



WTFJS.com
      Nice display and proof why frameworks exist and
      are still needed.
      With HTML5 even more pressure will be on
O.R.P. - Fixing the browser
                       Extending native objects - decorator pattern
                       Bringing Ruby to JS
                       OO pattern implementation

 PrototypeJS           Scriptaculous made it big




 MochiKit
               Don’t know much about it, it was big enough


             Odd one out - proprietary UI-centric client-side framework with a
 Backbase    declarative API (XML)
             Tries to fix a whole other spectrum of problems


 NO, not JQuery...not yet...
O.R.P. - Object Oriented JS
                                      What’s so nice about OO? Scholars-programmers were taught to think
                                      in terms of objects
                                      Inheritance considerations (classes, modules, packages, namespaces)
                                      Big server-side and desktop app languages are OO

 Paradigm: getting OO features in JS  Prototypal inheritance not often understood - odd bite to it




 Edwards’ Base.js           Show example



 Stephenson’s Prototype
 Crockford: “I now see my early attempts to support the classical model in
 JavaScript as a mistake”

 NO, still not JQuery...not yet...                         Hehe...
O.R.P. - Object Oriented JS
   var Animal = Base.extend({
     constructor: function(name) {
       this.name = name;
     },
     
     name: "",
     
     eat: function() {
       this.say("Yum!");
     },
     
     say: function(message) {
       alert(this.name + ": " + message);
     }
   });
   var Cat = Animal.extend({
     eat: function(food) {
       if (food instanceof Mouse) this.base();
       else this.say("Yuk! I only eat mice.");
     }
   });
     
   var Mouse = Animal.extend();
O.R.P. - Object Oriented JS
                                   What’s so nice about OO? Scholars-programmers were taught to think
                                   in terms of objects
                                   Inheritance considerations (classes, modules, packages, namespaces)
                                   Big server-side and desktop app languages are OO

 Paradigm: getting OO features in JS
                                   Prototypal inheritance not often understood - odd bite to it




 Edwards’ Base.js
 Stephenson’s Prototype              Show example



 Crockford: “I now see my early attempts to support the classical model in
 JavaScript as a mistake”

 NO, still not JQuery...not yet...                      Hehe...
O.R.P. - Object Oriented JS
  var Person = Class.create();
  Person.prototype = {
     initialize: function(name) {
        this.name = name;
     },
     say: function(message) {
        return this.name + ': ' + message;
     }
  };

  var guy = new Person('Miro');
  guy.say('hi');
  // -> "Miro: hi"

  var Pirate = Class.create();
  // inherit from Person class:
  Pirate.prototype = Object.extend(new Person(), {
    // redefine the speak method
    say: function(message) {
      return this.name + ': ' + message + ', yarr!';
    }
  });

  var john = new Pirate('Long John');
  john.say('ahoy matey');
  // -> "Long John: ahoy matey, yarr!"
O.R.P. - Object Oriented JS             What’s so nice about OO? Scholars-programmers were taught to think
                                        in terms of objects
                                        Inheritance considerations (classes, modules, packages, namespaces)
                                        Big server-side and desktop app languages are OO
                                        Prototypal inheritance not often understood - odd bite to it



 Paradigm: getting OO features in JS
 Edwards’ Base.js
 Stephenson’s Prototype
 Crockford: “I now see my early attempts to support the classical model in
 JavaScript as a mistake”

 NO, still not JQuery...not yet...                    Hehe...
O.R.P. - Big Boom of ‘frameworks’
                                                           Combination of Fixing the browser and OO in JS
                                                           DOMReady
                                                           CSS3 Selectors
                                                           Widgets - ready-made packages of functionality: OpenRico
                                                           Dojo, Qooxdoo as Open Source
                                                           Bindows, Backbase, Tibco as proprietary


 No list here, ‘cause it’s infinite...almost
 Reasoning
 YES, now JQuery is among us!
                                                  Explain JQuery’s success
 The power of extensibility                       Is it a framework?



 Performance      Separate slide on Performance
                  (stuff I’ve learnt about it)
Performance

Minimize the AMOUNT of HTTP requests
Modularize
              Show next slide (example)




Function calls are expensive/ avoid recursion
Lookups are expensive
Performance
 fab = {};

 (function(global) {
     var a = 1,
         b = 2;

     global.fab.newModule = {
         getA: function() {
             return a;
         },
         setA: function(newA) {
             a = newA;
         },
         getB: function() {
             return b;
         },
         setB: function(newB) {
             b = newB;
         },
         getSum: function() {
             return a + b;
         }
     };
 })(this);
Performance

Minimize the AMOUNT of HTTP requests
Modularize
Function calls are expensive/ avoid recursion
Lookups are expensive
End of Part 1

 Conclusion
 Questions?
 Follow me @mikedeboer
 Find me @amsterdamjs ;)
Ad

More Related Content

Viewers also liked (16)

Lapurdi Fisikoa
Lapurdi FisikoaLapurdi Fisikoa
Lapurdi Fisikoa
gandabost
 
Araba Fisikoa
Araba FisikoaAraba Fisikoa
Araba Fisikoa
gandabost
 
Araba Kulturala
Araba  KulturalaAraba  Kulturala
Araba Kulturala
gandabost
 
Lapurdi Kulturala
Lapurdi KulturalaLapurdi Kulturala
Lapurdi Kulturala
gandabost
 
2010 Winter Olympics and Signiant
2010  Winter Olympics and Signiant2010  Winter Olympics and Signiant
2010 Winter Olympics and Signiant
Signiant
 
Real Cost of Physical Media Distribution
Real Cost of Physical Media DistributionReal Cost of Physical Media Distribution
Real Cost of Physical Media Distribution
Signiant
 
Euskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta ZuberoaEuskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta Zuberoa
gandabost
 
Araba Fisikoa
Araba FisikoaAraba Fisikoa
Araba Fisikoa
gandabost
 
Euskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta ZuberoaEuskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta Zuberoa
gandabost
 
Jungleanimals
JungleanimalsJungleanimals
Jungleanimals
lauvio
 
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta KulturalaEuskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
gandabost
 
Optimizing Your WAN Bandwidth Has Immediate ROI
Optimizing Your WAN Bandwidth Has Immediate ROIOptimizing Your WAN Bandwidth Has Immediate ROI
Optimizing Your WAN Bandwidth Has Immediate ROI
Signiant
 
Signiant Overview Fall 2010
Signiant Overview Fall 2010Signiant Overview Fall 2010
Signiant Overview Fall 2010
Signiant
 
Signiant Overview
Signiant OverviewSigniant Overview
Signiant Overview
Signiant
 
Signiant Overview
Signiant OverviewSigniant Overview
Signiant Overview
Signiant
 
Content Supply Chain Management White Paper
Content Supply Chain Management White PaperContent Supply Chain Management White Paper
Content Supply Chain Management White Paper
Signiant
 
Lapurdi Fisikoa
Lapurdi FisikoaLapurdi Fisikoa
Lapurdi Fisikoa
gandabost
 
Araba Fisikoa
Araba FisikoaAraba Fisikoa
Araba Fisikoa
gandabost
 
Araba Kulturala
Araba  KulturalaAraba  Kulturala
Araba Kulturala
gandabost
 
Lapurdi Kulturala
Lapurdi KulturalaLapurdi Kulturala
Lapurdi Kulturala
gandabost
 
2010 Winter Olympics and Signiant
2010  Winter Olympics and Signiant2010  Winter Olympics and Signiant
2010 Winter Olympics and Signiant
Signiant
 
Real Cost of Physical Media Distribution
Real Cost of Physical Media DistributionReal Cost of Physical Media Distribution
Real Cost of Physical Media Distribution
Signiant
 
Euskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta ZuberoaEuskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta Zuberoa
gandabost
 
Araba Fisikoa
Araba FisikoaAraba Fisikoa
Araba Fisikoa
gandabost
 
Euskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta ZuberoaEuskalerria, Bizkaia Eta Zuberoa
Euskalerria, Bizkaia Eta Zuberoa
gandabost
 
Jungleanimals
JungleanimalsJungleanimals
Jungleanimals
lauvio
 
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta KulturalaEuskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
Euskal Herria (Gipuzkoak Eta Nafarroa)Poli Fisikoa Eta Kulturala
gandabost
 
Optimizing Your WAN Bandwidth Has Immediate ROI
Optimizing Your WAN Bandwidth Has Immediate ROIOptimizing Your WAN Bandwidth Has Immediate ROI
Optimizing Your WAN Bandwidth Has Immediate ROI
Signiant
 
Signiant Overview Fall 2010
Signiant Overview Fall 2010Signiant Overview Fall 2010
Signiant Overview Fall 2010
Signiant
 
Signiant Overview
Signiant OverviewSigniant Overview
Signiant Overview
Signiant
 
Signiant Overview
Signiant OverviewSigniant Overview
Signiant Overview
Signiant
 
Content Supply Chain Management White Paper
Content Supply Chain Management White PaperContent Supply Chain Management White Paper
Content Supply Chain Management White Paper
Signiant
 

Similar to 10 Years of JavaScript (20)

DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
elliando dias
 
Intro to OOP
Intro to OOPIntro to OOP
Intro to OOP
Gant Laborde
 
Workshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General OverviewWorkshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General Overview
Visual Engineering
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
Alexandre Lachèze
 
Real World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case StudyReal World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case Study
housecor
 
Technology Trends
Technology TrendsTechnology Trends
Technology Trends
Henry Jacob
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
Jackson Tian
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
guileen
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015
jbandi
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
Kasra Khosravi
 
Node @ flipkart
Node @ flipkartNode @ flipkart
Node @ flipkart
Abhinav Rastogi
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
jbandi
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
 
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning DevelopersNode.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developers
cacois
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
Web Development with Smalltalk
Web Development with SmalltalkWeb Development with Smalltalk
Web Development with Smalltalk
Mariano Martínez Peck
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
William Myers
 
Intro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate JavascriptIntro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate Javascript
Andrew Lovett-Barron
 
Enterprise TypeScript
Enterprise TypeScriptEnterprise TypeScript
Enterprise TypeScript
Jeremy Likness
 
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
geraldbauer
 
Workshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General OverviewWorkshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General Overview
Visual Engineering
 
Real World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case StudyReal World Single Page App - A Knockout Case Study
Real World Single Page App - A Knockout Case Study
housecor
 
Technology Trends
Technology TrendsTechnology Trends
Technology Trends
Henry Jacob
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
Jackson Tian
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
guileen
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015
jbandi
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
Kasra Khosravi
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
jbandi
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
 
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning DevelopersNode.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developers
cacois
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
Intro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate JavascriptIntro to BackboneJS + Intermediate Javascript
Intro to BackboneJS + Intermediate Javascript
Andrew Lovett-Barron
 
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
geraldbauer
 
Ad

Recently uploaded (20)

Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdfKit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Wonjun Hwang
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
Build With AI - In Person Session Slides.pdf
Build With AI - In Person Session Slides.pdfBuild With AI - In Person Session Slides.pdf
Build With AI - In Person Session Slides.pdf
Google Developer Group - Harare
 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
 
Cybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and MitigationCybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and Mitigation
VICTOR MAESTRE RAMIREZ
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Wonjun Hwang
 
IT484 Cyber Forensics_Information Technology
IT484 Cyber Forensics_Information TechnologyIT484 Cyber Forensics_Information Technology
IT484 Cyber Forensics_Information Technology
SHEHABALYAMANI
 
Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
DevOpsDays SLC - Platform Engineers are Product Managers.pptx
DevOpsDays SLC - Platform Engineers are Product Managers.pptxDevOpsDays SLC - Platform Engineers are Product Managers.pptx
DevOpsDays SLC - Platform Engineers are Product Managers.pptx
Justin Reock
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Maarten Verwaest
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Mike Mingos
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Safe Software
 
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdfKit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Wonjun Hwang
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
 
Cybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and MitigationCybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and Mitigation
VICTOR MAESTRE RAMIREZ
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Wonjun Hwang
 
IT484 Cyber Forensics_Information Technology
IT484 Cyber Forensics_Information TechnologyIT484 Cyber Forensics_Information Technology
IT484 Cyber Forensics_Information Technology
SHEHABALYAMANI
 
Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
DevOpsDays SLC - Platform Engineers are Product Managers.pptx
DevOpsDays SLC - Platform Engineers are Product Managers.pptxDevOpsDays SLC - Platform Engineers are Product Managers.pptx
DevOpsDays SLC - Platform Engineers are Product Managers.pptx
Justin Reock
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Limecraft Webinar - 2025.3 release, featuring Content Delivery, Graphic Conte...
Maarten Verwaest
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Mike Mingos
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...
Safe Software
 
Ad

10 Years of JavaScript

  • 1. 10 Years of JavaScript what I’ve learnt so far
  • 2. 10 Years of Javascript Brief introduction of me personally, where I started (PHP), accomplishments and professional career errata Who am I? A run-through the history of professional Javascript usage and the evolution of the Web Developer profession. From browsers to ECMA to Ajax to libraries and commercialisation 10 Years Ago... Main pattern is the continuous struggle on delegation of logic; what should be done on the client side and what on the ser ver? Discussion goes BEYOND processing power of clients Frontend vs. Backend Dive deeper in more patterns that are more technical Other Recurring Patterns End of Part I Conclusion about what I’ve really learnt the past ten yrs, including me being happy about community growth! #amsterdamjs rules!
  • 3. Who am I? Small joke about definitely not being a nerd ;) Geek Talk about ZMG, big for Mambo and J!, no JS at that Started with PHP time, only small DHTML stuff Landed a job (quit school!) Talk about university - art, sociology, psychology, etc. and future prospects in that area :( Learnt that there’s never enough time! A very happy man :) Job at eBuddy and first serious JS work, built clients, framework, Javeline, Ajax.org Girlfriend Sailing whenever I can Made profession out of hobby Doing puzzles > 40hrs a week
  • 4. No dashes, because it screws up my presentation! :P Frontend vs. Backend Describe evolving systems in hardware/ computing power Power struggle Flash leads the way - clients can do a lot Sandboxing holds back innovation Delay: dotcom boom slowed down innovation Richer clients Browser wars back on track (finally...)!! Describe transition Backend: from power horse to data cloud Dissimulation of MVC pattern - exemplify! Frontend: from dumb terminal to rich platform Driven by innovation Innovation (re)sets the balance cloud? rich client? parallel computing? JIT’ed JS?
  • 5. Other Recurring Patterns Javascript vs. ECMA vs. JScript and x-browser incompatibilities Fixing the browser Lots of talk about it, blogosphere hot about it AFTER Ajax was coined. Object Oriented JS Big Boom of the ‘frameworks’ Combine the above 2 points: frameworks are born. WTFJS.com Nice display and proof why frameworks exist and are still needed. With HTML5 even more pressure will be on
  • 6. O.R.P. - Fixing the browser Extending native objects - decorator pattern Bringing Ruby to JS OO pattern implementation PrototypeJS Scriptaculous made it big MochiKit Don’t know much about it, it was big enough Odd one out - proprietary UI-centric client-side framework with a Backbase declarative API (XML) Tries to fix a whole other spectrum of problems NO, not JQuery...not yet...
  • 7. O.R.P. - Object Oriented JS What’s so nice about OO? Scholars-programmers were taught to think in terms of objects Inheritance considerations (classes, modules, packages, namespaces) Big server-side and desktop app languages are OO Paradigm: getting OO features in JS Prototypal inheritance not often understood - odd bite to it Edwards’ Base.js Show example Stephenson’s Prototype Crockford: “I now see my early attempts to support the classical model in JavaScript as a mistake” NO, still not JQuery...not yet... Hehe...
  • 8. O.R.P. - Object Oriented JS var Animal = Base.extend({   constructor: function(name) {     this.name = name;   },      name: "",      eat: function() {     this.say("Yum!");   },      say: function(message) {     alert(this.name + ": " + message);   } }); var Cat = Animal.extend({   eat: function(food) {     if (food instanceof Mouse) this.base();     else this.say("Yuk! I only eat mice.");   } });    var Mouse = Animal.extend();
  • 9. O.R.P. - Object Oriented JS What’s so nice about OO? Scholars-programmers were taught to think in terms of objects Inheritance considerations (classes, modules, packages, namespaces) Big server-side and desktop app languages are OO Paradigm: getting OO features in JS Prototypal inheritance not often understood - odd bite to it Edwards’ Base.js Stephenson’s Prototype Show example Crockford: “I now see my early attempts to support the classical model in JavaScript as a mistake” NO, still not JQuery...not yet... Hehe...
  • 10. O.R.P. - Object Oriented JS var Person = Class.create(); Person.prototype = { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } }; var guy = new Person('Miro'); guy.say('hi'); // -> "Miro: hi" var Pirate = Class.create(); // inherit from Person class: Pirate.prototype = Object.extend(new Person(), { // redefine the speak method say: function(message) { return this.name + ': ' + message + ', yarr!'; } }); var john = new Pirate('Long John'); john.say('ahoy matey'); // -> "Long John: ahoy matey, yarr!"
  • 11. O.R.P. - Object Oriented JS What’s so nice about OO? Scholars-programmers were taught to think in terms of objects Inheritance considerations (classes, modules, packages, namespaces) Big server-side and desktop app languages are OO Prototypal inheritance not often understood - odd bite to it Paradigm: getting OO features in JS Edwards’ Base.js Stephenson’s Prototype Crockford: “I now see my early attempts to support the classical model in JavaScript as a mistake” NO, still not JQuery...not yet... Hehe...
  • 12. O.R.P. - Big Boom of ‘frameworks’ Combination of Fixing the browser and OO in JS DOMReady CSS3 Selectors Widgets - ready-made packages of functionality: OpenRico Dojo, Qooxdoo as Open Source Bindows, Backbase, Tibco as proprietary No list here, ‘cause it’s infinite...almost Reasoning YES, now JQuery is among us! Explain JQuery’s success The power of extensibility Is it a framework? Performance Separate slide on Performance (stuff I’ve learnt about it)
  • 13. Performance Minimize the AMOUNT of HTTP requests Modularize Show next slide (example) Function calls are expensive/ avoid recursion Lookups are expensive
  • 14. Performance fab = {}; (function(global) { var a = 1, b = 2; global.fab.newModule = { getA: function() { return a; }, setA: function(newA) { a = newA; }, getB: function() { return b; }, setB: function(newB) { b = newB; }, getSum: function() { return a + b; } }; })(this);
  • 15. Performance Minimize the AMOUNT of HTTP requests Modularize Function calls are expensive/ avoid recursion Lookups are expensive
  • 16. End of Part 1 Conclusion Questions? Follow me @mikedeboer Find me @amsterdamjs ;)
  翻译: