SlideShare a Scribd company logo
The pyramid of application developmentRikArends @rikarends @ajax_org
Beholding the giant pyramid of application development; why Ajax applications are its natural top layer
Beholding the giant pyramid of application development; why Ajax applications are its natural top layer
Then1983 Commodore 6465536 bytes of ram1 mhzFocus: applications
NowCurrent PC2.000.000.000 + bytes of ram4x3000 mhz +Focus: applications
How do layers emergeCompetition creates layer complexityA new layer in between the app and the hardware is needed to optimize reachMs / IBM PC, OS / runtimes
Why layer independence is importantMonopoly emerges through multi-layer controlled competition destructionDiversity is healthyNever stops optimizing areasNatural selection works by selection from the diversity, not by directed adaptation
When do you need standardizationUp: abstraction, Down: standardizationProgress halted because of not abstractable scalability differencesCompetition incredibly technicalLower level innovation useless because of too many verticalsGroup competition with larger entities
Where are we nowStandardization in the browser made it scalable to abstract on base levelBrowser competition now focused on performance and strict compliance
What do JS libraries doAbstract browser differencesOptimize effort vs resultModularize and reuse
JS Library differentiationDOM operation automation:jQuery, Prototype, MootoolsWidget libraries:Dojo, Qooxdoo, ExtDomain specific methodologiesAmple, Ajax.org Platform
Domain specific methodologiesCompression through projectionLanguage optimized for understandingCross-over at optimal points
Browser domain specificHTMLDocument and spatial structureCSSStyling
HTML 5 Started as the DSL for web applicationsMoved towards adding features HTML is the assembly language of the webDoes not solve the application-level integration
Domains in an applicationLayoutStateStyleTemplatingData bindingsCommunication
DSL approachesTree hierarchy (markup, json)Functional Reactive (signal-slot)Query selectors (css-selectors, xpath, json-path)ExpressionsCode flow syntax (e4x, live markup)
Why are we doing this?Our time is expensiveWe want to build cool stuffIt should be fun to make and maintain
Ajax.orgDSLsAjax.org Markup LanguageStatic application declarationLive MarkupDynamic application declarationLayoutingSkinningExpression CSS
Ajax.org Markup LanguageApplication is represented in a DOM treeXML (AML) definableJSON definableJS DOM-api controllable
The XML way<div>    <a:chart>        <a:axis mode="2D">            <a:graph mode="line" formula="sin(x)" />        </a:axis>    </a:chart>    <a:button>Test</a:button></div>
The JSON wayvar chart = new apf.chart({htmlNode : document.body.firstChild,childNodes : [new apf.axis({            mode : "2D",childNodes : [                new apf.graph({                    mode : "line",                    formula : "sin(x)"                })            ]        }),		  new apf.button({caption : "2D”})    ]});
JS and W3C DOM APIvar chart = new apf.chart();apf.document.body.appendChild(chart);var axis  = chart.appendChild(newapf.axis());axis.setAttribute("mode", "2D");var graph = axis.appendChild(newapf.graph());graph.setAttribute("mode", "line");graph.setAttribute("formula", "sin(x)");var graph = axis.appendChild(newapf.button());graph.setAttribute("mode", "line");graph.setAttribute("formula", "sin(x)”);…
Dynamic UI - Live Markup<?lmvarx = 10;    <ul>{each([mdlExample::foo/bar]) {            <li>{				[@name].toUpperCase() + x			  }</li>        }    }</ul>?>
Dynamic UI - Live Markup<?lmvarx = 10;    <ul>{each([mdlExample::foo/bar]) {            <li>{				[@name].toUpperCase() + x			  }</li>        }    }</ul>?>
Live markup syntaxExtended JavaScript[] for query selectors{} for code modeIn string parsingE4X style xml literals (literal is a string, not an object)Overloaded operatorsAsync calling abstracted (use sparsely)Fast execution and compilationAuto concat and auto output
A lot of work in HTML:Synchronizing data with the UIDealing with the serverMaintaining stateUndo / Redo / OfflineTemplating from dataDynamic vector graphics
Loading data<a:model id  = "mdlUsers" src = "http://example.com/users.php" />
Displaying data - databinding<a:tree    model   = "mdlUsers"     each    = "[user]"     caption = "[@name]"     icon    = "icoUser.png" />
Displaying data – a bit more complex<a:tree    each    = "[mdlUsers::user]"     caption = "{[@fname].uCaseFirst()} [@lname]"     icon    = "{[@icon] or 'icoUser.png'}" />
Managing state and simple logic<a:thumbnails each="[mdlThumbs::thumbs]" image="[@url]" thumbsize="{sld1.value}"/><a:slider id="sld1" value="90" min="10" max="150" />
Managing state – a bit more complex<a:tree id="tree" actiontracker="atTree" ... /><a:label value="[{tree.selected}::@name]" /><a:button disabled="{!atTree.undolength}" onclick="...">    Undo</a:button>
Undo and Redo	<a:tree actiontracker="atTree" ... /><a:button onclick="atTree.undo()">Undo</a:button><a:button onclick="atTree.redo()">Redo</a:button>
Vector graphics<div>    <a:chart>        <a:axis mode="2D">            <a:graph mode="line" formula="sin(x)" />        </a:axis>    </a:chart></div>
Putting it togetherCollaborative applicationsDatabinding (remote)Complete widgetsServer communication
Collaborative Demo
VisionThe browser is the application platform of the future
What we needFull feature UI platformIDEDesktop integrationServerside integrationMake the browser compete withFlash and Silverlight
APF RoadmapApf 3.0 stable early Q1 2010	Apf 3.1contentEditableWAI-ARIA supportVirtual viewport for all widgetsOffline applicationsMultiple query languages in Live Markup (JSON-Path, CSS3)
Thank youRikArends @rikarendsrik@ajax.orgwww.ajax.org @ajax_org

More Related Content

PPT
Building real-time collaborative apps with Ajax.org Platform
PPT
Cleveland Silverlight Firestarter - XAML Basics
PPT
Outsourcing seminar 14 november 2002
PDF
Tropopoiiseis 2012 2013
PPT
Cloud technologies, IBM, Rev_2
PPSX
Beach Soccer Law 10
Building real-time collaborative apps with Ajax.org Platform
Cleveland Silverlight Firestarter - XAML Basics
Outsourcing seminar 14 november 2002
Tropopoiiseis 2012 2013
Cloud technologies, IBM, Rev_2
Beach Soccer Law 10

Viewers also liked (20)

PDF
Про YAPC::TV
PPS
From moscow to_beijing_by_train_hc
PPT
Pensamiento e ciencia
PPS
Poezie zenske krasy_2
PDF
Doutoramento em Direito UPorto
PPT
Lupin ladies
PDF
El rock barrial en la web - Basile [Resenha]
DOC
Plano de Ensino - Sociologia Econômica e Organizações
PPS
Il fallait attraper_l'instant_magique-rh-listea
PPT
Social Bookmarking
PPS
Balada gitana 2
PPTX
PPT
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
PPSX
Beach Soccer Law 2
PPTX
Horror Convention
PDF
Kosenconf numazu opening
PDF
PLUTARCO - Sobre el valor de las mujeres
PPTX
Presentacion final
PDF
Lista prezenta Romania
Про YAPC::TV
From moscow to_beijing_by_train_hc
Pensamiento e ciencia
Poezie zenske krasy_2
Doutoramento em Direito UPorto
Lupin ladies
El rock barrial en la web - Basile [Resenha]
Plano de Ensino - Sociologia Econômica e Organizações
Il fallait attraper_l'instant_magique-rh-listea
Social Bookmarking
Balada gitana 2
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Beach Soccer Law 2
Horror Convention
Kosenconf numazu opening
PLUTARCO - Sobre el valor de las mujeres
Presentacion final
Lista prezenta Romania
Ad

Similar to Beholding the giant pyramid of application development; why Ajax applications are its natural top layer (20)

PPT
Eugene Andruszczenko: jQuery
PPT
jQuery Presentation - Refresh Events
PDF
Modern JavaScript Programming
PPTX
Unobtrusive javascript with jQuery
PDF
Declarative and standards-based web application development with the Ample SDK
PPTX
Introduction to jQuery
PPT
Sergey Ilinsky Presentation Ample Sdk
ODP
Ample SDK: A tour de force
PDF
fuser interface-development-using-jquery
PDF
JS Single-Page Web App Essentials
PPT
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
PDF
HTML5 for the Silverlight Guy
PPTX
Basics of Ext JS
ODP
IBM Lotus Notes Domino XPages and XPages for Mobile
PPT
JQuery: Introduction
PPTX
High performance websites session1
KEY
jQuery Anti-Patterns for Performance
PPT
JavaScript Basics
KEY
User Interface Development with jQuery
PPT
Zend framework 05 - ajax, json and j query
Eugene Andruszczenko: jQuery
jQuery Presentation - Refresh Events
Modern JavaScript Programming
Unobtrusive javascript with jQuery
Declarative and standards-based web application development with the Ample SDK
Introduction to jQuery
Sergey Ilinsky Presentation Ample Sdk
Ample SDK: A tour de force
fuser interface-development-using-jquery
JS Single-Page Web App Essentials
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
HTML5 for the Silverlight Guy
Basics of Ext JS
IBM Lotus Notes Domino XPages and XPages for Mobile
JQuery: Introduction
High performance websites session1
jQuery Anti-Patterns for Performance
JavaScript Basics
User Interface Development with jQuery
Zend framework 05 - ajax, json and j query
Ad

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Electronic commerce courselecture one. Pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
cuic standard and advanced reporting.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Spectroscopy.pptx food analysis technology
Machine learning based COVID-19 study performance prediction
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Understanding_Digital_Forensics_Presentation.pptx
Unlocking AI with Model Context Protocol (MCP)
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Advanced methodologies resolving dimensionality complications for autism neur...
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf
Chapter 3 Spatial Domain Image Processing.pdf
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
cuic standard and advanced reporting.pdf
Encapsulation_ Review paper, used for researhc scholars
Spectroscopy.pptx food analysis technology

Beholding the giant pyramid of application development; why Ajax applications are its natural top layer

  • 1. The pyramid of application developmentRikArends @rikarends @ajax_org
  • 4. Then1983 Commodore 6465536 bytes of ram1 mhzFocus: applications
  • 5. NowCurrent PC2.000.000.000 + bytes of ram4x3000 mhz +Focus: applications
  • 6. How do layers emergeCompetition creates layer complexityA new layer in between the app and the hardware is needed to optimize reachMs / IBM PC, OS / runtimes
  • 7. Why layer independence is importantMonopoly emerges through multi-layer controlled competition destructionDiversity is healthyNever stops optimizing areasNatural selection works by selection from the diversity, not by directed adaptation
  • 8. When do you need standardizationUp: abstraction, Down: standardizationProgress halted because of not abstractable scalability differencesCompetition incredibly technicalLower level innovation useless because of too many verticalsGroup competition with larger entities
  • 9. Where are we nowStandardization in the browser made it scalable to abstract on base levelBrowser competition now focused on performance and strict compliance
  • 10. What do JS libraries doAbstract browser differencesOptimize effort vs resultModularize and reuse
  • 11. JS Library differentiationDOM operation automation:jQuery, Prototype, MootoolsWidget libraries:Dojo, Qooxdoo, ExtDomain specific methodologiesAmple, Ajax.org Platform
  • 12. Domain specific methodologiesCompression through projectionLanguage optimized for understandingCross-over at optimal points
  • 13. Browser domain specificHTMLDocument and spatial structureCSSStyling
  • 14. HTML 5 Started as the DSL for web applicationsMoved towards adding features HTML is the assembly language of the webDoes not solve the application-level integration
  • 15. Domains in an applicationLayoutStateStyleTemplatingData bindingsCommunication
  • 16. DSL approachesTree hierarchy (markup, json)Functional Reactive (signal-slot)Query selectors (css-selectors, xpath, json-path)ExpressionsCode flow syntax (e4x, live markup)
  • 17. Why are we doing this?Our time is expensiveWe want to build cool stuffIt should be fun to make and maintain
  • 18. Ajax.orgDSLsAjax.org Markup LanguageStatic application declarationLive MarkupDynamic application declarationLayoutingSkinningExpression CSS
  • 19. Ajax.org Markup LanguageApplication is represented in a DOM treeXML (AML) definableJSON definableJS DOM-api controllable
  • 20. The XML way<div> <a:chart> <a:axis mode="2D"> <a:graph mode="line" formula="sin(x)" /> </a:axis> </a:chart> <a:button>Test</a:button></div>
  • 21. The JSON wayvar chart = new apf.chart({htmlNode : document.body.firstChild,childNodes : [new apf.axis({ mode : "2D",childNodes : [ new apf.graph({ mode : "line", formula : "sin(x)" }) ] }), new apf.button({caption : "2D”}) ]});
  • 22. JS and W3C DOM APIvar chart = new apf.chart();apf.document.body.appendChild(chart);var axis = chart.appendChild(newapf.axis());axis.setAttribute("mode", "2D");var graph = axis.appendChild(newapf.graph());graph.setAttribute("mode", "line");graph.setAttribute("formula", "sin(x)");var graph = axis.appendChild(newapf.button());graph.setAttribute("mode", "line");graph.setAttribute("formula", "sin(x)”);…
  • 23. Dynamic UI - Live Markup<?lmvarx = 10; <ul>{each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul>?>
  • 24. Dynamic UI - Live Markup<?lmvarx = 10; <ul>{each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul>?>
  • 25. Live markup syntaxExtended JavaScript[] for query selectors{} for code modeIn string parsingE4X style xml literals (literal is a string, not an object)Overloaded operatorsAsync calling abstracted (use sparsely)Fast execution and compilationAuto concat and auto output
  • 26. A lot of work in HTML:Synchronizing data with the UIDealing with the serverMaintaining stateUndo / Redo / OfflineTemplating from dataDynamic vector graphics
  • 27. Loading data<a:model id = "mdlUsers" src = "http://example.com/users.php" />
  • 28. Displaying data - databinding<a:tree model = "mdlUsers" each = "[user]" caption = "[@name]" icon = "icoUser.png" />
  • 29. Displaying data – a bit more complex<a:tree each = "[mdlUsers::user]" caption = "{[@fname].uCaseFirst()} [@lname]" icon = "{[@icon] or 'icoUser.png'}" />
  • 30. Managing state and simple logic<a:thumbnails each="[mdlThumbs::thumbs]" image="[@url]" thumbsize="{sld1.value}"/><a:slider id="sld1" value="90" min="10" max="150" />
  • 31. Managing state – a bit more complex<a:tree id="tree" actiontracker="atTree" ... /><a:label value="[{tree.selected}::@name]" /><a:button disabled="{!atTree.undolength}" onclick="..."> Undo</a:button>
  • 32. Undo and Redo <a:tree actiontracker="atTree" ... /><a:button onclick="atTree.undo()">Undo</a:button><a:button onclick="atTree.redo()">Redo</a:button>
  • 33. Vector graphics<div> <a:chart> <a:axis mode="2D"> <a:graph mode="line" formula="sin(x)" /> </a:axis> </a:chart></div>
  • 34. Putting it togetherCollaborative applicationsDatabinding (remote)Complete widgetsServer communication
  • 36. VisionThe browser is the application platform of the future
  • 37. What we needFull feature UI platformIDEDesktop integrationServerside integrationMake the browser compete withFlash and Silverlight
  • 38. APF RoadmapApf 3.0 stable early Q1 2010 Apf 3.1contentEditableWAI-ARIA supportVirtual viewport for all widgetsOffline applicationsMultiple query languages in Live Markup (JSON-Path, CSS3)