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

More Related Content

Viewers also liked

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
 

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

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

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

Recently uploaded

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 

Recently uploaded (20)

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 

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