SlideShare uma empresa Scribd logo
1 de 39
The pyramid of application development RikArends @rikarends @ajax_org
Then 1983 Commodore 64 65536 bytes of ram 1 mhz Focus: applications
Now Current PC 2.000.000.000 + bytes of ram 4x3000 mhz + Focus: applications
How do layers emerge Competition creates layer complexity A new layer in between the app and the hardware is needed to optimize reach Ms / IBM PC, OS / runtimes
Why layer independence is important Monopoly emerges through multi-layer controlled competition destruction Diversity is healthy Never stops optimizing areas Natural selection works by selection from the diversity, not by directed adaptation
When do you need standardization Up: abstraction, Down: standardization Progress halted because of not abstractable scalability differences Competition incredibly technical Lower level innovation useless because of too many verticals Group competition with larger entities
Where are we now Standardization in the browser made it scalable to abstract on base level Browser competition now focused on performance and strict compliance
What do JS libraries do Abstract browser differences Optimize effort vs result Modularize and reuse
JS Library differentiation DOM operation automation: jQuery, Prototype, Mootools Widget libraries: Dojo, Qooxdoo, Ext Domain specific methodologies Ample, Ajax.org Platform
Domain specific methodologies Compression through projection Language optimized for understanding Cross-over at optimal points
Browser domain specific HTML Document and spatial structure CSS Styling
HTML 5  Started as the DSL for web applications Moved towards adding features  HTML is the assembly language of the web Does not solve the application-level integration
Domains in an application Layout State Style Templating Data bindings Communication
DSL approaches Tree hierarchy (markup, json) Functional Reactive (signal-slot) Query selectors (css-selectors, xpath, json-path) Expressions Code flow syntax (e4x, live markup)
Why are we doing this? Our time is expensive We want to build cool stuff It should be fun to make  and maintain
Ajax.orgDSLs Ajax.org Markup Language Static application declaration Live Markup Dynamic application declaration Layouting Skinning Expression CSS
Ajax.org Markup Language Application is represented in a DOM tree XML (AML) definable JSON definable JS 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 way var 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 API var 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 <?lm varx = 10;     <ul>{ each([mdlExample::foo/bar]) {             <li>{				[@name].toUpperCase() + x			  }</li>         }     }</ul> ?>
Dynamic UI - Live Markup <?lm varx = 10;     <ul>{ each([mdlExample::foo/bar]) {             <li>{				[@name].toUpperCase() + x			  }</li>         }     }</ul> ?>
Live markup syntax Extended JavaScript [] for query selectors {} for code mode In string parsing E4X style xml literals (literal is a string, not an object) Overloaded operators Async calling abstracted (use sparsely) Fast execution and compilation Auto concat and auto output
A lot of work in HTML: Synchronizing data with the UI Dealing with the server Maintaining state Undo / Redo / Offline Templating from data Dynamic 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 together Collaborative applications Databinding (remote) Complete widgets Server communication
Collaborative Demo
Vision The browser is the application platform of the future
What we need Full feature UI platform IDE Desktop integration Serverside integration Make the browser compete withFlash and Silverlight
APF Roadmap Apf 3.0 stable early Q1 2010	 Apf 3.1 contentEditable WAI-ARIA support Virtual viewport for all widgets Offline applications Multiple query languages in Live Markup (JSON-Path, CSS3)
Thank you RikArends @rikarendsrik@ajax.org www.ajax.org @ajax_org

Mais conteúdo relacionado

Destaque

From moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcFrom moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcGeorge Martin
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencialaurabarrosg
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2Regina Franco
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPortolauravieira
 
El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]Tarcízio Silva
 
Plano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesPlano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesMauricio Serafim
 
Il fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaIl fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaGeorge Martin
 
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Ηλιάδης Γεώργιος
 
PLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresPLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresSito Yelas
 
Presentacion final
Presentacion finalPresentacion final
Presentacion finalcamnaron123
 

Destaque (20)

Про YAPC::TV
Про YAPC::TVПро YAPC::TV
Про YAPC::TV
 
Browser (mozila&chrome) tips by tanbircox
Browser (mozila&chrome) tips by tanbircoxBrowser (mozila&chrome) tips by tanbircox
Browser (mozila&chrome) tips by tanbircox
 
From moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcFrom moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hc
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencia
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPorto
 
Lupin ladies
Lupin  ladiesLupin  ladies
Lupin ladies
 
El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]
 
Plano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesPlano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e Organizações
 
Il fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaIl fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listea
 
Social Bookmarking
Social BookmarkingSocial Bookmarking
Social Bookmarking
 
Balada gitana 2
Balada gitana 2Balada gitana 2
Balada gitana 2
 
RSS
RSSRSS
RSS
 
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
 
Beach Soccer Law 2
Beach Soccer Law 2Beach Soccer Law 2
Beach Soccer Law 2
 
Horror Convention
Horror Convention Horror Convention
Horror Convention
 
Kosenconf numazu opening
Kosenconf numazu openingKosenconf numazu opening
Kosenconf numazu opening
 
PLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresPLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeres
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
 
Lista prezenta Romania
Lista prezenta RomaniaLista prezenta Romania
Lista prezenta Romania
 

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

Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Sergey Ilinsky
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileChris Toohey
 
Struts2
Struts2Struts2
Struts2yuvalb
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]Chris Toohey
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSCarol McDonald
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikGraham Jones
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Finalematrix
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Guillaume Laforge
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Codemotion
 
Playing with d3.js
Playing with d3.jsPlaying with d3.js
Playing with d3.jsmangoice
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupHadoop User Group
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree nodeHemakumar.S
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicTimothy Perrett
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS FrameworkMohd Imran
 

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

Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
Struts2
Struts2Struts2
Struts2
 
Combres
CombresCombres
Combres
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
 
Retrofitting
RetrofittingRetrofitting
Retrofitting
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Final
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
 
Playing with d3.js
Playing with d3.jsPlaying with d3.js
Playing with d3.js
 
Ajax ons2
Ajax ons2Ajax ons2
Ajax ons2
 
02 create first-map
02 create first-map02 create first-map
02 create first-map
 
Odp
OdpOdp
Odp
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user group
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS Framework
 

Último

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"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
 
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
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 

Último (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"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 ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

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

  • 1. The pyramid of application development RikArends @rikarends @ajax_org
  • 2.
  • 3.
  • 4. Then 1983 Commodore 64 65536 bytes of ram 1 mhz Focus: applications
  • 5. Now Current PC 2.000.000.000 + bytes of ram 4x3000 mhz + Focus: applications
  • 6. How do layers emerge Competition creates layer complexity A new layer in between the app and the hardware is needed to optimize reach Ms / IBM PC, OS / runtimes
  • 7. Why layer independence is important Monopoly emerges through multi-layer controlled competition destruction Diversity is healthy Never stops optimizing areas Natural selection works by selection from the diversity, not by directed adaptation
  • 8. When do you need standardization Up: abstraction, Down: standardization Progress halted because of not abstractable scalability differences Competition incredibly technical Lower level innovation useless because of too many verticals Group competition with larger entities
  • 9. Where are we now Standardization in the browser made it scalable to abstract on base level Browser competition now focused on performance and strict compliance
  • 10. What do JS libraries do Abstract browser differences Optimize effort vs result Modularize and reuse
  • 11. JS Library differentiation DOM operation automation: jQuery, Prototype, Mootools Widget libraries: Dojo, Qooxdoo, Ext Domain specific methodologies Ample, Ajax.org Platform
  • 12. Domain specific methodologies Compression through projection Language optimized for understanding Cross-over at optimal points
  • 13. Browser domain specific HTML Document and spatial structure CSS Styling
  • 14. HTML 5 Started as the DSL for web applications Moved towards adding features HTML is the assembly language of the web Does not solve the application-level integration
  • 15. Domains in an application Layout State Style Templating Data bindings Communication
  • 16. DSL approaches Tree hierarchy (markup, json) Functional Reactive (signal-slot) Query selectors (css-selectors, xpath, json-path) Expressions Code flow syntax (e4x, live markup)
  • 17. Why are we doing this? Our time is expensive We want to build cool stuff It should be fun to make and maintain
  • 18. Ajax.orgDSLs Ajax.org Markup Language Static application declaration Live Markup Dynamic application declaration Layouting Skinning Expression CSS
  • 19. Ajax.org Markup Language Application is represented in a DOM tree XML (AML) definable JSON definable JS 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 way var 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 API var 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 <?lm varx = 10; <ul>{ each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul> ?>
  • 24. Dynamic UI - Live Markup <?lm varx = 10; <ul>{ each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul> ?>
  • 25. Live markup syntax Extended JavaScript [] for query selectors {} for code mode In string parsing E4X style xml literals (literal is a string, not an object) Overloaded operators Async calling abstracted (use sparsely) Fast execution and compilation Auto concat and auto output
  • 26. A lot of work in HTML: Synchronizing data with the UI Dealing with the server Maintaining state Undo / Redo / Offline Templating from data Dynamic 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 together Collaborative applications Databinding (remote) Complete widgets Server communication
  • 36. Vision The browser is the application platform of the future
  • 37. What we need Full feature UI platform IDE Desktop integration Serverside integration Make the browser compete withFlash and Silverlight
  • 38. APF Roadmap Apf 3.0 stable early Q1 2010 Apf 3.1 contentEditable WAI-ARIA support Virtual viewport for all widgets Offline applications Multiple query languages in Live Markup (JSON-Path, CSS3)
  • 39. Thank you RikArends @rikarendsrik@ajax.org www.ajax.org @ajax_org