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
Ad

More Related Content

Viewers also liked (20)

Про YAPC::TV
Про YAPC::TVПро YAPC::TV
Про YAPC::TV
Andrew Shitov
 
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
George Martin
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencia
laurabarrosg
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2
Regina Franco
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPorto
lauravieira
 
Lupin ladies
Lupin  ladiesLupin  ladies
Lupin ladies
Elina_Dutta
 
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ções
Mauricio 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-listea
George Martin
 
Social Bookmarking
Social BookmarkingSocial Bookmarking
Social Bookmarking
Joquetta Johnson
 
RSS
RSSRSS
RSS
Jesicac27
 
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
Diaitisia Administrator
 
Horror Convention
Horror Convention Horror Convention
Horror Convention
Laura Forrest-Sufrin
 
Kosenconf numazu opening
Kosenconf numazu openingKosenconf numazu opening
Kosenconf numazu opening
Takahiro KUREBAYASHI
 
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
Sito Yelas
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
camnaron123
 
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
George Martin
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencia
laurabarrosg
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2
Regina Franco
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPorto
lauravieira
 
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ções
Mauricio 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-listea
George 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 mujeres
Sito Yelas
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
camnaron123
 

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
Sergey 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 Mobile
Chris Toohey
 
Struts2
Struts2Struts2
Struts2
yuvalb
 
Combres
CombresCombres
Combres
Buu Nguyen
 
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-WS
Carol McDonald
 
Retrofitting
RetrofittingRetrofitting
Retrofitting
Ted Husted
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
Graham 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 Final
ematrix
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Guillaume 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.js
mangoice
 
Ajax ons2
Ajax ons2Ajax ons2
Ajax ons2
Chad Davis
 
02 create first-map
02 create first-map02 create first-map
02 create first-map
Sébastien Deleuze
 
Odp
OdpOdp
Odp
Mark McNasby
 
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
Hadoop User Group
 
JavaScript
JavaScriptJavaScript
JavaScript
Doncho Minkov
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
Hemakumar.S
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
Timothy Perrett
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS Framework
Mohd Imran
 
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
Sergey 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 Mobile
Chris Toohey
 
Struts2
Struts2Struts2
Struts2
yuvalb
 
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-WS
Carol McDonald
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
Graham 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 Final
ematrix
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Guillaume 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.js
mangoice
 
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
Hadoop User Group
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
Hemakumar.S
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
Timothy Perrett
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS Framework
Mohd Imran
 
Ad

Recently uploaded (20)

Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Ad

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)