SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

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
 

What's hot (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
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

Recently uploaded

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

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

Editor's Notes

  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.