SlideShare une entreprise Scribd logo
1  sur  10
THE CLOCKWORKS BEHIND A
 JAVASCRIPT FRAMEWORK
 that powers a billion charts a month
What everybody (secretly) wants to do?
 Create popular frameworks and apps
 Help a lot of people and organizations
 Make a lot of money out of it
Avoiding the vicious cycle
                                       Scrap    Develop




                             Let it
                              out                         Release
                             again!




                                        Re-
                                                 Scrap
                                      Develop
What do we lose in this process?
   Enthusiasm for innovation
   Delay in product shipment
   Possible reduction in quality
   Difficulty in migration
   Trust of your consumers
   MONEY
The story of our framework
• Transparent transition for existing users from
  Flash to SVG and VML.
• We had no way to anticipate the roadblocks
  that we would face while developing for this
  transition.
• Thus, we created a model flexible enough to
  support any design required to attend
  customers’ needs.
Developing the “play dough”
 Treated the core of our framework as a mini-
  framework that would allow us to develop our
  framework around it!
 Plugin-like architecture.
 Event driven.
 Standardized inheritance.
 Managed interfaces.
Add Module

Event Dispatcher                         Inject
                                        Module




                                      Command
   Interface                         Interpreters
   Facilitator
                    Policy Parsers
The code that does it!
FusionCharts([’private’, 'modules.api.sortdata',
        function () {

   var ns = this,
       core = ns.core,
       sortData = function () { /* define it */ };

   ns.extend(core.prototype, {
      keepDataSorted: function (yes) {
         this[yes ? 'addEventListener' :
             'removeEventListener']('BeforeDataUpdate',
                  sortData);
      }
   });

}]);
// Fiddle: http://jsfiddle.net/shamasis/RNe3h/
(new Tips()).cliché()
• Set coding style standards including in-line
  documentation standards. – allows easy
  maintenance on multi-developer environment
• Lint your codes from the very first day. It may be
  costly to do later.
• Follow inline documentation standards – maybe
  javaDocs, jsDocs, etc.
• Even better, if your minifier engine has its own
  rules (such as of Closure Compiler), use that.
Points to Design a Good API
http://www.shamasis.net/2009/07/how-to-design-a-good-api/

Why to Design a Good API
http://www.shamasis.net/2009/05/why-to-design-a-good-api/




FusionCharts Beginner’s Guide
http://www.fusioncharts.com/resources/fusioncharts-beginners-guide/

    shamasis@fusioncharts.com
    @shamasis

Contenu connexe

Tendances

Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Chris Bannon
 
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...Radu Vunvulea
 
Developing ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UIDeveloping ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UILohith Goudagere Nagaraj
 
What Ifs - VMware Lightning Talk OpsCamp San Francisco
What Ifs - VMware Lightning Talk OpsCamp San FranciscoWhat Ifs - VMware Lightning Talk OpsCamp San Francisco
What Ifs - VMware Lightning Talk OpsCamp San FranciscoOpsCamp
 

Tendances (7)

Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5
 
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...
How to migrate a monolithic system to microservices, Radu Vunvulea DevTalks, ...
 
XAML/C# to HTML5/JS
XAML/C#  to HTML5/JS XAML/C#  to HTML5/JS
XAML/C# to HTML5/JS
 
SaaS is hot
SaaS is hotSaaS is hot
SaaS is hot
 
Developing ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UIDeveloping ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UI
 
What Ifs - VMware Lightning Talk OpsCamp San Francisco
What Ifs - VMware Lightning Talk OpsCamp San FranciscoWhat Ifs - VMware Lightning Talk OpsCamp San Francisco
What Ifs - VMware Lightning Talk OpsCamp San Francisco
 
Nodesummit
NodesummitNodesummit
Nodesummit
 

En vedette

Gafas de Realidade Virtual
Gafas de Realidade VirtualGafas de Realidade Virtual
Gafas de Realidade Virtualprieto4
 
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...Steven McGee
 
De hemorroides tratamiento
De hemorroides tratamientoDe hemorroides tratamiento
De hemorroides tratamientoeshacersea
 
Tutorial Google books
 Tutorial Google books Tutorial Google books
Tutorial Google books1975alex
 
The second mile principle
The second mile principleThe second mile principle
The second mile principleVan Nagac
 
Primera clase configuración del EVA
Primera clase configuración del EVAPrimera clase configuración del EVA
Primera clase configuración del EVAMarisol Aman
 
An Approach to Digital Marketing
An Approach to Digital MarketingAn Approach to Digital Marketing
An Approach to Digital MarketingSuresh Parmachand
 
Learning Outcome Task One
Learning Outcome Task OneLearning Outcome Task One
Learning Outcome Task Onephele1994
 
Geoprocessamento: "Coisa" do século passado
Geoprocessamento: "Coisa" do século passadoGeoprocessamento: "Coisa" do século passado
Geoprocessamento: "Coisa" do século passadoHelton Uchoa
 
Direito penal iii crimes contra a inviolabilidade de correspondência
Direito penal iii   crimes contra a inviolabilidade de correspondênciaDireito penal iii   crimes contra a inviolabilidade de correspondência
Direito penal iii crimes contra a inviolabilidade de correspondênciaUrbano Felix Pugliese
 
Programas y Herramientas de Google para emprendedores
Programas y Herramientas de Google para emprendedoresProgramas y Herramientas de Google para emprendedores
Programas y Herramientas de Google para emprendedoresJuan José Rodriguez MsC.
 
List view y UI en Android
List view y UI en AndroidList view y UI en Android
List view y UI en AndroidByron Andres
 

En vedette (20)

Lo2 pitch
Lo2 pitchLo2 pitch
Lo2 pitch
 
google aps
google apsgoogle aps
google aps
 
Gafas de Realidade Virtual
Gafas de Realidade VirtualGafas de Realidade Virtual
Gafas de Realidade Virtual
 
Living on the future with google glass 2015
Living on the future with google glass   2015Living on the future with google glass   2015
Living on the future with google glass 2015
 
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...
USPTO patent application 13,573,002 The Heart Beacon Cycle Time Space Meter, ...
 
De hemorroides tratamiento
De hemorroides tratamientoDe hemorroides tratamiento
De hemorroides tratamiento
 
Tutorial Google books
 Tutorial Google books Tutorial Google books
Tutorial Google books
 
The second mile principle
The second mile principleThe second mile principle
The second mile principle
 
Primera clase configuración del EVA
Primera clase configuración del EVAPrimera clase configuración del EVA
Primera clase configuración del EVA
 
Tic´s google +
Tic´s google +Tic´s google +
Tic´s google +
 
An Approach to Digital Marketing
An Approach to Digital MarketingAn Approach to Digital Marketing
An Approach to Digital Marketing
 
Learning Outcome Task One
Learning Outcome Task OneLearning Outcome Task One
Learning Outcome Task One
 
Geoprocessamento: "Coisa" do século passado
Geoprocessamento: "Coisa" do século passadoGeoprocessamento: "Coisa" do século passado
Geoprocessamento: "Coisa" do século passado
 
Las nuevas funcionalidades de Google Apps
Las nuevas funcionalidades de Google AppsLas nuevas funcionalidades de Google Apps
Las nuevas funcionalidades de Google Apps
 
GDG DevFest Lighting Talks México
GDG DevFest Lighting Talks MéxicoGDG DevFest Lighting Talks México
GDG DevFest Lighting Talks México
 
Direito penal iii crimes contra a inviolabilidade de correspondência
Direito penal iii   crimes contra a inviolabilidade de correspondênciaDireito penal iii   crimes contra a inviolabilidade de correspondência
Direito penal iii crimes contra a inviolabilidade de correspondência
 
Fenómeno de Google
Fenómeno de GoogleFenómeno de Google
Fenómeno de Google
 
Servicios de google
Servicios de googleServicios de google
Servicios de google
 
Programas y Herramientas de Google para emprendedores
Programas y Herramientas de Google para emprendedoresProgramas y Herramientas de Google para emprendedores
Programas y Herramientas de Google para emprendedores
 
List view y UI en Android
List view y UI en AndroidList view y UI en Android
List view y UI en Android
 

Similaire à FusionCharts Clockworks

Cloud Application Development Lifecycle
Cloud Application Development LifecycleCloud Application Development Lifecycle
Cloud Application Development LifecycleSuhas Kelkar
 
PHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on BluemixPHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on BluemixIBM
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developersDaniel Krook
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativecornelia davis
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeVMware Tanzu
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deploymentFilippo Zanella
 
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)Nathaniel Bagnell
 
Accelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and KubernetesAccelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and KubernetesRick Hightower
 
Java Agile ALM: OTAP and DevOps in the Cloud
Java Agile ALM: OTAP and DevOps in the CloudJava Agile ALM: OTAP and DevOps in the Cloud
Java Agile ALM: OTAP and DevOps in the CloudMongoDB
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...Henning Jacobs
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamBrian Benz
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaOtávio Santana
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsBrad Williams
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale ArchitectureRightScale
 
Is Quarkus a worthy alternative to Java Spring
Is Quarkus a worthy alternative to Java SpringIs Quarkus a worthy alternative to Java Spring
Is Quarkus a worthy alternative to Java SpringMindfire LLC
 
Introducing AWS OpsWorks, a DevOps application management platform
Introducing AWS OpsWorks, a DevOps application management platformIntroducing AWS OpsWorks, a DevOps application management platform
Introducing AWS OpsWorks, a DevOps application management platformAmazon Web Services
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript FrameworksChristian Gaetano
 

Similaire à FusionCharts Clockworks (20)

Cloud Application Development Lifecycle
Cloud Application Development LifecycleCloud Application Development Lifecycle
Cloud Application Development Lifecycle
 
PHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on BluemixPHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on Bluemix
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developers
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)
Application Development with HTML5 (Microsoft TechDays 2011 - DEV302)
 
Accelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and KubernetesAccelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and Kubernetes
 
Java Agile ALM: OTAP and DevOps in the Cloud
Java Agile ALM: OTAP and DevOps in the CloudJava Agile ALM: OTAP and DevOps in the Cloud
Java Agile ALM: OTAP and DevOps in the Cloud
 
Why Startups Are Still On AWS
Why Startups Are Still On AWSWhy Startups Are Still On AWS
Why Startups Are Still On AWS
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com Java
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale Architecture
 
Is Quarkus a worthy alternative to Java Spring
Is Quarkus a worthy alternative to Java SpringIs Quarkus a worthy alternative to Java Spring
Is Quarkus a worthy alternative to Java Spring
 
Oracle Cloud Native
Oracle Cloud NativeOracle Cloud Native
Oracle Cloud Native
 
Introducing AWS OpsWorks, a DevOps application management platform
Introducing AWS OpsWorks, a DevOps application management platformIntroducing AWS OpsWorks, a DevOps application management platform
Introducing AWS OpsWorks, a DevOps application management platform
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript Frameworks
 

Dernier

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Dernier (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

FusionCharts Clockworks

  • 1. THE CLOCKWORKS BEHIND A JAVASCRIPT FRAMEWORK that powers a billion charts a month
  • 2. What everybody (secretly) wants to do?  Create popular frameworks and apps  Help a lot of people and organizations  Make a lot of money out of it
  • 3. Avoiding the vicious cycle Scrap Develop Let it out Release again! Re- Scrap Develop
  • 4. What do we lose in this process?  Enthusiasm for innovation  Delay in product shipment  Possible reduction in quality  Difficulty in migration  Trust of your consumers  MONEY
  • 5. The story of our framework • Transparent transition for existing users from Flash to SVG and VML. • We had no way to anticipate the roadblocks that we would face while developing for this transition. • Thus, we created a model flexible enough to support any design required to attend customers’ needs.
  • 6. Developing the “play dough”  Treated the core of our framework as a mini- framework that would allow us to develop our framework around it!  Plugin-like architecture.  Event driven.  Standardized inheritance.  Managed interfaces.
  • 7. Add Module Event Dispatcher Inject Module Command Interface Interpreters Facilitator Policy Parsers
  • 8. The code that does it! FusionCharts([’private’, 'modules.api.sortdata', function () { var ns = this, core = ns.core, sortData = function () { /* define it */ }; ns.extend(core.prototype, { keepDataSorted: function (yes) { this[yes ? 'addEventListener' : 'removeEventListener']('BeforeDataUpdate', sortData); } }); }]); // Fiddle: http://jsfiddle.net/shamasis/RNe3h/
  • 9. (new Tips()).cliché() • Set coding style standards including in-line documentation standards. – allows easy maintenance on multi-developer environment • Lint your codes from the very first day. It may be costly to do later. • Follow inline documentation standards – maybe javaDocs, jsDocs, etc. • Even better, if your minifier engine has its own rules (such as of Closure Compiler), use that.
  • 10. Points to Design a Good API http://www.shamasis.net/2009/07/how-to-design-a-good-api/ Why to Design a Good API http://www.shamasis.net/2009/05/why-to-design-a-good-api/ FusionCharts Beginner’s Guide http://www.fusioncharts.com/resources/fusioncharts-beginners-guide/ shamasis@fusioncharts.com @shamasis

Notes de l'éditeur

  1. 1. Frameworks that are used by millions of users.2. Such frameworks needs to be modeled for long product life cycles.Easy upgradeability from the framework developers’ internal consumption perspective.This was one framework that we knew that would be consumed by a large user base and as such requires to meet enterprise standards from day one of its development.
  2. 1. Frameworks that are used by millions of users.2. Such frameworks needs to be modeled for long product life cycles.Easy upgradeability from the framework developers’ internal consumption perspective.This was one framework that we knew that would be consumed by a large user base and as such requires to meet enterprise standards from day one of its development.
  3. With growth and popularity gains, comes the need for distributed development, faster turn around times and scalability.We jumped into an already popular user-base of 20000 customers.We were walking on a path where we knew we would face unheard of challenges in order to unify user experience of an already stable Flash platform.
  4. To meet the needs of popularity we did stuff… some right, some wrong and some wrongs that we made right.There are certain mistakes that are too costly to turn back from.Extensible in all possible ways. – allows you to not limit yourselvesDoes not require total design definition in order to start development. – reduces TATAllows a modular structure for controlled development. – promotes multi-developer environment
  5. What did we achieve through this?Allowed people to work confidently and modularly on separate closed scripts that share a common namespace variable. Thus, they are easy to maintain and easier for multi-developer environment to work on it.Increased velocity of development by letting people be able develop
  6. Need to add / show fiddle link
  7. http://en.wikipedia.org/wiki/JSDochttps://developers.google.com/closure/compiler/docs/js-for-compiler
  8. I write only when there is anything worthwhile.