SlideShare a Scribd company logo
1 of 31
Download to read offline
Feature Development
    with jQuery


        Mike Edwards
        medwards20x6@gmail.com
About Me
Mike Edwards
M.S. Computer Science, University of Iowa
Started building web applications professionally in 2000

JavaScript expert level
jQuery: Started using it about 1.5 years ago
Used extensively since then

I'm very interested in common themes across different
technologies
Outline
● Introduction
  ○ UserScripts: Greasemonkey, Tampermonkey
  ○ Filtering Script: Demo, Code Review
● Thinking about Perspective
  ○ Looking at the same thing from a different angle
  ○ The Perspective of Source Control
  ○ Filtering Script: From a New Perspective
● A Basic MVC Plugin Architecture
  ○ Modular Architecture
  ○ Refactoring: Quick Intro
  ○ jQuery & MVC
  ○ Plugin Ecosystems
  ○ Filtering: Refactored
User Scripts
● Supporting Add-ons:
   ○ Greasemonkey, Tampermonkey
● Scripts are installed by the user in their
  browser, not by a web admin on the server
● User scripts make on-the-fly changes to a
  web page's content as the page is loaded
  into the users browser
● As long as the script doesn't use any of it's
  escalated privileges, it can be loaded directly
  onto the server for all users
Filter/Sort Demo
Filtering Script:
Code Review
Filtering Script:
Code Review
Old Lady/Young Lady
Thinking about Perspective
● Sometimes the same thing looks very
  different from another perspective
Perspective: Computability
● This concept runs right to the bedrock of all
  Computer Science
● Church/Turing Thesis
   ○ Lambda Calculus and Turing Machines are
     equivalent ways of looking at computability
● Electrical Engineering: You can build an
  entire CPU out of just NAND logic gates.
  You can also build it out of just NOR logic
  gates.
Source Control
Branching & Merging
Filtering Script:
A New Perspective
Merge or Modularize
● jQuery "Feature Files" consist of "payload" code and
    "merge instructions" about where to splice in the
    payloads
●   One approach once we've successfully prototyped a new
    feature is to then manually merge it into the application
    code-base (Feature Branching/Merge)
●   Feature Branching is a poor man's modular architecture, instead of
    building systems with the ability to easy swap in and out features at
    runtime / deploytime they couple themselves to the source control
    providing this mechanism through manual merging.
    -- Dan Bodart
    http://martinfowler.com/bliki/FeatureBranch.html
Technical Debt & Refactoring
● Technical Debt:
        "You have a piece of functionality that you need to add to your system.
   You see two ways to do it, one is quick to do but is messy - you are sure
   that it will make further changes harder in the future. The other results in a
   cleaner design, but will take longer to put in place."
   - Martin Fowler
● Refactoring:
        "a disciplined technique for restructuring an existing body of code,
   altering its internal structure without changing its external behavior"
   - Wikipedia
Plugin Ecosystems
● Users can decide for themselves via
  configuration which features they need
● Third-party developers can potentially
  enhance the value of your product at no cost
  to you
● An API built for plugins can be used for
  integration with partner applications and/or
  used as a backend for additional platforms
  (mobile web, mobile native)
MVC Architecture
Modern Web Architecture
Web 2.0 Thick-client
    One-Page App
Web 2.0 & MVC
jQueries Responsibilities
MVC Frameworks
jQuery & MVC cont.
● Most "MVC" frameworks focus on "MV"
   ○ Observable models
   ○ Template based rendering
   ○ Data Binding/Automatic re-rendering
● jQuery specializes in "C" with a side of "V"
   ○ Event Handlers
   ○ AJAX
   ○ Powerful ability to update the View in real-time, but
     no template support or observable models
Filtering Plugin:
Basic Plugin Framework
Filtering Plugin:
Plugin Loader
Filtering Plugin:
Model
Filtering Plugin:
View
Filtering Plugin:
Controller
jQuery Pitfall
Refactoring Continued...
● Pitfall: Because jQuery is so good at
  Querying the view, it can be tempting to
  simply treat the view as your model.
● This is okay for prototypes and tiny features,
  but should be refactored when possible

● We've re-organized the code by it's MVC
  role, which is a start
● Still need to flesh-out and integrate with the
  underlying application infrastructure
Branch/Merge vs Plugins

Version Control   Plugin Architecture


Trunk             Application Core Architecture


Branch            Start New Plugin


Merge/Patch       Load Plugin at Run-time


Cherry-picking    Enable/Disable Plugins
Conclusion
● jQueries power comes, at least partly, from
  it's ability to weave "merge" code inline
● An alternate way to view this is that jQuery
  provides the infrastructure necessary to
  create Application level plugins
● Aspect-Oriented Programming as an entire
  field dedicated to this kind of thinking
Discussion
Mike Edwards
medwards20x6@gmail.com

More Related Content

What's hot

Developing dynamic ui using react
Developing dynamic ui using reactDeveloping dynamic ui using react
Developing dynamic ui using reactsushmita bhor
 
React vs angular what to choose for your app
React vs angular what to choose for your appReact vs angular what to choose for your app
React vs angular what to choose for your appConcetto Labs
 
JavaScript - Kristiansand PHP
JavaScript - Kristiansand PHPJavaScript - Kristiansand PHP
JavaScript - Kristiansand PHPholeedave
 
iOS architecture patterns
iOS architecture patternsiOS architecture patterns
iOS architecture patternsallanh0526
 
Introduction to react js and reasons to go with react js in 2020
Introduction to react js and reasons to go with react js in 2020Introduction to react js and reasons to go with react js in 2020
Introduction to react js and reasons to go with react js in 2020Concetto Labs
 
Component based architecture
Component based architectureComponent based architecture
Component based architectureZaiyang Li
 
Design Patterns for Smart Applications
Design Patterns for Smart ApplicationsDesign Patterns for Smart Applications
Design Patterns for Smart ApplicationsSri Ambati
 
Building blocks of Angular
Building blocks of AngularBuilding blocks of Angular
Building blocks of AngularKnoldus Inc.
 
React.js vs angular.js a comparison
React.js vs angular.js a comparisonReact.js vs angular.js a comparison
React.js vs angular.js a comparisonNarola Infotech
 
iOS Architectures
iOS ArchitecturesiOS Architectures
iOS ArchitecturesHung Hoang
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Nativedvcrn
 
Super slideshow 2
Super slideshow 2Super slideshow 2
Super slideshow 2zhangxw205
 
REACT JS COACHING CENTER IN CHANDIGARH
REACT JS COACHING CENTER IN CHANDIGARHREACT JS COACHING CENTER IN CHANDIGARH
REACT JS COACHING CENTER IN CHANDIGARHPritamNegi5
 
Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019Mikhail Kuznetcov
 
Say hello to react js - Day 1
Say hello to react js   - Day 1Say hello to react js   - Day 1
Say hello to react js - Day 1Smile Gupta
 
The Complete React Learning Course
The Complete React Learning CourseThe Complete React Learning Course
The Complete React Learning CourseRakhi Lambha
 
Angularjs [Bahasa Indonesia]
Angularjs [Bahasa Indonesia]Angularjs [Bahasa Indonesia]
Angularjs [Bahasa Indonesia]Yanuar W
 

What's hot (20)

Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Developing dynamic ui using react
Developing dynamic ui using reactDeveloping dynamic ui using react
Developing dynamic ui using react
 
React vs angular what to choose for your app
React vs angular what to choose for your appReact vs angular what to choose for your app
React vs angular what to choose for your app
 
JavaScript - Kristiansand PHP
JavaScript - Kristiansand PHPJavaScript - Kristiansand PHP
JavaScript - Kristiansand PHP
 
iOS architecture patterns
iOS architecture patternsiOS architecture patterns
iOS architecture patterns
 
Introduction to react js and reasons to go with react js in 2020
Introduction to react js and reasons to go with react js in 2020Introduction to react js and reasons to go with react js in 2020
Introduction to react js and reasons to go with react js in 2020
 
Component based architecture
Component based architectureComponent based architecture
Component based architecture
 
Design Patterns for Smart Applications
Design Patterns for Smart ApplicationsDesign Patterns for Smart Applications
Design Patterns for Smart Applications
 
Building blocks of Angular
Building blocks of AngularBuilding blocks of Angular
Building blocks of Angular
 
React.js vs angular.js a comparison
React.js vs angular.js a comparisonReact.js vs angular.js a comparison
React.js vs angular.js a comparison
 
iOS Architectures
iOS ArchitecturesiOS Architectures
iOS Architectures
 
React.js vs node.js
React.js vs node.jsReact.js vs node.js
React.js vs node.js
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Super slideshow 2
Super slideshow 2Super slideshow 2
Super slideshow 2
 
REACT JS COACHING CENTER IN CHANDIGARH
REACT JS COACHING CENTER IN CHANDIGARHREACT JS COACHING CENTER IN CHANDIGARH
REACT JS COACHING CENTER IN CHANDIGARH
 
React js Introduction
React js IntroductionReact js Introduction
React js Introduction
 
Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019
 
Say hello to react js - Day 1
Say hello to react js   - Day 1Say hello to react js   - Day 1
Say hello to react js - Day 1
 
The Complete React Learning Course
The Complete React Learning CourseThe Complete React Learning Course
The Complete React Learning Course
 
Angularjs [Bahasa Indonesia]
Angularjs [Bahasa Indonesia]Angularjs [Bahasa Indonesia]
Angularjs [Bahasa Indonesia]
 

Viewers also liked

Cmmi adptando cmmi a proyectos pequeños weinberg[1]
Cmmi adptando cmmi a proyectos pequeños weinberg[1]Cmmi adptando cmmi a proyectos pequeños weinberg[1]
Cmmi adptando cmmi a proyectos pequeños weinberg[1]JULIO GONZALEZ SANZ
 
6.[35 40]toward an integrated framework for language testing and intervention
6.[35 40]toward an integrated framework for language testing and intervention6.[35 40]toward an integrated framework for language testing and intervention
6.[35 40]toward an integrated framework for language testing and interventionAlexander Decker
 
Making Effective Presentations
Making Effective PresentationsMaking Effective Presentations
Making Effective Presentationsssslawton
 
5 reasons why every business owner must understand unified communications
5 reasons why every business owner must understand unified communications5 reasons why every business owner must understand unified communications
5 reasons why every business owner must understand unified communicationsGreg Eicke
 
giaibongda.com pitch deck
giaibongda.com pitch deckgiaibongda.com pitch deck
giaibongda.com pitch deckQuang Nguyen
 
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]
Cmmi hm 2008 sepg model changes for high maturity  1v01[1]Cmmi hm 2008 sepg model changes for high maturity  1v01[1]
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]JULIO GONZALEZ SANZ
 
Voxeo Summit Day 1 - Prophecy log search
Voxeo Summit Day 1 - Prophecy log searchVoxeo Summit Day 1 - Prophecy log search
Voxeo Summit Day 1 - Prophecy log searchVoxeo Corp
 
Preparados para el día menos pensado
Preparados para el día menos pensadoPreparados para el día menos pensado
Preparados para el día menos pensadoEdwin Ortiz
 
Sindrome de Niggle CAS2015
Sindrome de Niggle CAS2015Sindrome de Niggle CAS2015
Sindrome de Niggle CAS2015Jorge Uriarte
 
Introduction to Portland State's New Venture Management Course
Introduction to Portland State's New Venture Management CourseIntroduction to Portland State's New Venture Management Course
Introduction to Portland State's New Venture Management CourseAntonie Jetter
 
Conférence Bercy - Futurs de l'Etat - mai 2016
Conférence Bercy - Futurs de l'Etat - mai 2016Conférence Bercy - Futurs de l'Etat - mai 2016
Conférence Bercy - Futurs de l'Etat - mai 2016Antoine Brachet
 
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...Antoine Brachet
 
Las 10 mejores canciones de trance
Las 10 mejores canciones de tranceLas 10 mejores canciones de trance
Las 10 mejores canciones de tranceelpantrapero
 
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...MONA
 
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015MONA
 

Viewers also liked (20)

Cmmi adptando cmmi a proyectos pequeños weinberg[1]
Cmmi adptando cmmi a proyectos pequeños weinberg[1]Cmmi adptando cmmi a proyectos pequeños weinberg[1]
Cmmi adptando cmmi a proyectos pequeños weinberg[1]
 
6.[35 40]toward an integrated framework for language testing and intervention
6.[35 40]toward an integrated framework for language testing and intervention6.[35 40]toward an integrated framework for language testing and intervention
6.[35 40]toward an integrated framework for language testing and intervention
 
Making Effective Presentations
Making Effective PresentationsMaking Effective Presentations
Making Effective Presentations
 
5 reasons why every business owner must understand unified communications
5 reasons why every business owner must understand unified communications5 reasons why every business owner must understand unified communications
5 reasons why every business owner must understand unified communications
 
giaibongda.com pitch deck
giaibongda.com pitch deckgiaibongda.com pitch deck
giaibongda.com pitch deck
 
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]
Cmmi hm 2008 sepg model changes for high maturity  1v01[1]Cmmi hm 2008 sepg model changes for high maturity  1v01[1]
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]
 
Voxeo Summit Day 1 - Prophecy log search
Voxeo Summit Day 1 - Prophecy log searchVoxeo Summit Day 1 - Prophecy log search
Voxeo Summit Day 1 - Prophecy log search
 
About me
About meAbout me
About me
 
Preparados para el día menos pensado
Preparados para el día menos pensadoPreparados para el día menos pensado
Preparados para el día menos pensado
 
Qm material specs
Qm material specsQm material specs
Qm material specs
 
Sindrome de Niggle CAS2015
Sindrome de Niggle CAS2015Sindrome de Niggle CAS2015
Sindrome de Niggle CAS2015
 
Introduction to Portland State's New Venture Management Course
Introduction to Portland State's New Venture Management CourseIntroduction to Portland State's New Venture Management Course
Introduction to Portland State's New Venture Management Course
 
Kailaine e karine
Kailaine e karine Kailaine e karine
Kailaine e karine
 
Conférence Bercy - Futurs de l'Etat - mai 2016
Conférence Bercy - Futurs de l'Etat - mai 2016Conférence Bercy - Futurs de l'Etat - mai 2016
Conférence Bercy - Futurs de l'Etat - mai 2016
 
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
 
Las 10 mejores canciones de trance
Las 10 mejores canciones de tranceLas 10 mejores canciones de trance
Las 10 mejores canciones de trance
 
Ted talks
Ted talksTed talks
Ted talks
 
Presentation lanie
Presentation laniePresentation lanie
Presentation lanie
 
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
 
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
 

Similar to Feature Development with jQuery

Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework Yakov Fain
 
React vs Angular - Which is best JS Framework for Front-end Development
React vs Angular - Which is best JS Framework for Front-end DevelopmentReact vs Angular - Which is best JS Framework for Front-end Development
React vs Angular - Which is best JS Framework for Front-end DevelopmentPixlogix Infotech
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular applicationSuresh Patidar
 
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...JPLoft Solutions
 
Lagom : Reactive microservice framework
Lagom : Reactive microservice frameworkLagom : Reactive microservice framework
Lagom : Reactive microservice frameworkFabrice Sznajderman
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29Nitin Bhojwani
 
Comparison Between React Vs Angular.pdf
Comparison Between React Vs Angular.pdfComparison Between React Vs Angular.pdf
Comparison Between React Vs Angular.pdfStephieJohn
 
Building Reactive webapp with React/Flux
Building Reactive webapp with React/FluxBuilding Reactive webapp with React/Flux
Building Reactive webapp with React/FluxKeuller Magalhães
 
Angular vs. polymer a face off for the throne of frontend development
Angular vs. polymer  a face off for the throne of frontend developmentAngular vs. polymer  a face off for the throne of frontend development
Angular vs. polymer a face off for the throne of frontend developmentMoon Technolabs Pvt. Ltd.
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)Alex Ross
 
Mvc 130330091359-phpapp01
Mvc 130330091359-phpapp01Mvc 130330091359-phpapp01
Mvc 130330091359-phpapp01Jennie Gajjar
 
Introduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setupIntroduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setupAnsley Rodrigues
 
#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQueryiloveigloo
 

Similar to Feature Development with jQuery (20)

Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework
 
React vs Angular - Which is best JS Framework for Front-end Development
React vs Angular - Which is best JS Framework for Front-end DevelopmentReact vs Angular - Which is best JS Framework for Front-end Development
React vs Angular - Which is best JS Framework for Front-end Development
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Libreplan architecture
Libreplan architectureLibreplan architecture
Libreplan architecture
 
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
 
MVC
MVCMVC
MVC
 
Lagom : Reactive microservice framework
Lagom : Reactive microservice frameworkLagom : Reactive microservice framework
Lagom : Reactive microservice framework
 
MVC Framework
MVC FrameworkMVC Framework
MVC Framework
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29
 
Comparison Between React Vs Angular.pdf
Comparison Between React Vs Angular.pdfComparison Between React Vs Angular.pdf
Comparison Between React Vs Angular.pdf
 
Building Reactive webapp with React/Flux
Building Reactive webapp with React/FluxBuilding Reactive webapp with React/Flux
Building Reactive webapp with React/Flux
 
Angular vs. polymer a face off for the throne of frontend development
Angular vs. polymer  a face off for the throne of frontend developmentAngular vs. polymer  a face off for the throne of frontend development
Angular vs. polymer a face off for the throne of frontend development
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)
 
Mvc 130330091359-phpapp01
Mvc 130330091359-phpapp01Mvc 130330091359-phpapp01
Mvc 130330091359-phpapp01
 
Introduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setupIntroduction to angular | Concepts and Environment setup
Introduction to angular | Concepts and Environment setup
 
#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
 

Feature Development with jQuery

  • 1. Feature Development with jQuery Mike Edwards medwards20x6@gmail.com
  • 2. About Me Mike Edwards M.S. Computer Science, University of Iowa Started building web applications professionally in 2000 JavaScript expert level jQuery: Started using it about 1.5 years ago Used extensively since then I'm very interested in common themes across different technologies
  • 3. Outline ● Introduction ○ UserScripts: Greasemonkey, Tampermonkey ○ Filtering Script: Demo, Code Review ● Thinking about Perspective ○ Looking at the same thing from a different angle ○ The Perspective of Source Control ○ Filtering Script: From a New Perspective ● A Basic MVC Plugin Architecture ○ Modular Architecture ○ Refactoring: Quick Intro ○ jQuery & MVC ○ Plugin Ecosystems ○ Filtering: Refactored
  • 4. User Scripts ● Supporting Add-ons: ○ Greasemonkey, Tampermonkey ● Scripts are installed by the user in their browser, not by a web admin on the server ● User scripts make on-the-fly changes to a web page's content as the page is loaded into the users browser ● As long as the script doesn't use any of it's escalated privileges, it can be loaded directly onto the server for all users
  • 9. Thinking about Perspective ● Sometimes the same thing looks very different from another perspective
  • 10. Perspective: Computability ● This concept runs right to the bedrock of all Computer Science ● Church/Turing Thesis ○ Lambda Calculus and Turing Machines are equivalent ways of looking at computability ● Electrical Engineering: You can build an entire CPU out of just NAND logic gates. You can also build it out of just NOR logic gates.
  • 12. Filtering Script: A New Perspective
  • 13. Merge or Modularize ● jQuery "Feature Files" consist of "payload" code and "merge instructions" about where to splice in the payloads ● One approach once we've successfully prototyped a new feature is to then manually merge it into the application code-base (Feature Branching/Merge) ● Feature Branching is a poor man's modular architecture, instead of building systems with the ability to easy swap in and out features at runtime / deploytime they couple themselves to the source control providing this mechanism through manual merging. -- Dan Bodart http://martinfowler.com/bliki/FeatureBranch.html
  • 14. Technical Debt & Refactoring ● Technical Debt: "You have a piece of functionality that you need to add to your system. You see two ways to do it, one is quick to do but is messy - you are sure that it will make further changes harder in the future. The other results in a cleaner design, but will take longer to put in place." - Martin Fowler ● Refactoring: "a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior" - Wikipedia
  • 15. Plugin Ecosystems ● Users can decide for themselves via configuration which features they need ● Third-party developers can potentially enhance the value of your product at no cost to you ● An API built for plugins can be used for integration with partner applications and/or used as a backend for additional platforms (mobile web, mobile native)
  • 17. Modern Web Architecture Web 2.0 Thick-client One-Page App
  • 18. Web 2.0 & MVC
  • 21. jQuery & MVC cont. ● Most "MVC" frameworks focus on "MV" ○ Observable models ○ Template based rendering ○ Data Binding/Automatic re-rendering ● jQuery specializes in "C" with a side of "V" ○ Event Handlers ○ AJAX ○ Powerful ability to update the View in real-time, but no template support or observable models
  • 28. Refactoring Continued... ● Pitfall: Because jQuery is so good at Querying the view, it can be tempting to simply treat the view as your model. ● This is okay for prototypes and tiny features, but should be refactored when possible ● We've re-organized the code by it's MVC role, which is a start ● Still need to flesh-out and integrate with the underlying application infrastructure
  • 29. Branch/Merge vs Plugins Version Control Plugin Architecture Trunk Application Core Architecture Branch Start New Plugin Merge/Patch Load Plugin at Run-time Cherry-picking Enable/Disable Plugins
  • 30. Conclusion ● jQueries power comes, at least partly, from it's ability to weave "merge" code inline ● An alternate way to view this is that jQuery provides the infrastructure necessary to create Application level plugins ● Aspect-Oriented Programming as an entire field dedicated to this kind of thinking