Your SlideShare is downloading. ×
  • Like
FusionCharts Clockworks
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

FusionCharts Clockworks

  • 673 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
673
On SlideShare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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.
  • 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.
  • 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.
  • 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
  • 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
  • Need to add / show fiddle link
  • http://en.wikipedia.org/wiki/JSDochttps://developers.google.com/closure/compiler/docs/js-for-compiler
  • I write only when there is anything worthwhile.

Transcript

  • 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 ModuleEvent 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 APIhttp://www.shamasis.net/2009/07/how-to-design-a-good-api/Why to Design a Good APIhttp://www.shamasis.net/2009/05/why-to-design-a-good-api/FusionCharts Beginner’s Guidehttp://www.fusioncharts.com/resources/fusioncharts-beginners-guide/ shamasis@fusioncharts.com @shamasis