SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Web Development:
The Next 5 Years
Introduction
     John Sutherland
 http://sneeu.com/john/
The talk

• It’s all about the future
• Silverlight, AIR both failed to take off
• The browser isn’t going anywhere
• And open standards are the way forward
The talk (2)

• Interested in too many things
• Loads of talk ideas
• A few frontend, a few backend
• Nothing I thought would be > 5 minutes
• So ... 5 small topics = 30 minutes
The topics

• XHTML 2.0 & HTML 5
• CSS 3.0
• ECMAScript 4 (JavaScript 2)
• WTF is CouchDB?
• WTF is Comet? (the money-shot)
Talk slower!
XHTML 2.0 & HTML 5
X2: What’s cool?

• No more shitty tags: acronym, b, i, tt,
  font, basefont, big, small, or iframe

• Sections and headers: section and h
• Any thing can be a link with @href
• The new navigation list, nl
X2: What’s not cool?

• h1-h6 remain despite section and h
• a and img are still around
• The lengthy and closed W3C process
H5: What’s cool?

• The new m element (for marked/
  highlighted)

• input@type is now on speed
• The process is more open than XHTML 2
H5: What’s not cool?

• font returns‽
• Predefined @class names
• Continued support for b, i, iframe,
  small & co.
More
http://xhtml.com/en/future/x-html-5-versus-xhtml-2/
CSS 3.0
It’s going to rock
• Multiple background images
• Box shadows
• Multi-column layout
• Hot-ass attribute & pseudo selectors
• Media queries
• Advanced layout
Multiple backgrounds

#content {
    background:
      url(top_center.png) repeat-x top
      url(top_left.png) no-repeat left top
      url(top_right.png) no-repeat right top;
}
Advanced Layout
body {
   display: “abb”
            “cbb”
}
#branding { position: a; }
#interest { position: b; }
#navigation { position: c; }
Some of it works now!

• :target pseudo selector in FF & Safari
• text-shadow property in Safari
• Multi-column layout in FF & Safari
• Multiple backgrounds in Safari
More
http://css3.info/
ECMAScript 4
(JavaScript 2)
One metric shitload of
 awesome new stuff
Type Annotations
•   function indexOf(
       needle : string,
       haystack : string) : int {
         // ...
    }
•   var age : int = 25;
•   var name : string! = quot;Johnquot;;
Classes
class WebDeveloper extends Developer {
   // must be initialised:
   var favDoctype : string!;
   override function say(s) {
      return quot;<![CDATA[quot; + s + quot; and AJAX!]]>quot;;
   }
}


var d = new WebDeveloper;
Classes (2)

• final keyword: cannot be extended
• dynamic keyword: can have properties
  added at runtime

• Interfaces: just like Java used to make
Functions
• generic keyword: overload function
  names, just like Java

• Better var-args
  function f(fixed : String,
     ...extras : [String]) {}

• intrinsic keyword: operator
  overloading
More
• let blocks:
  let (x = 0) { /* x == 0 */ }
     // x is undefined

• for each:
  for each (
     let n in [1, 2, 3, 5]) // ...
More
http://ejohn.org/blog/ecmascript-4-speaking-tour/
Demo
WTF is CouchDB?
CouchDB
• Succinctly: “a RESTful JSON document
  store”

• RESTful: uses nice URLs and HTTP
  verbs (GET, POST, PUT & DELETE)

• JSON: JavaScript Object Notation
• Document: an arbitrary (but not
  necessarily) JSON structure
CouchDB: what else?
• JavaScript views & queries: built on
  Mozilla’s SpiderMonkey

• Lucene powered full-text search
• Replication: online & offline
• No authentication yet (will have doc-level)
• An absolute shit to setup
Demo
WTF is Comet?
You know AJAX ...?
• Great for async- sending to the server
• Rubbish for async- receiving from the
  server

 • Chat
 • Real-time data: stock prices; Weewar
 • Other server-event stuff
Comet solves it
• The name is a play on the AJAX bleach
• All sorts of ways to implement it, ‘Comet’
  refers to them all

 • “Forever frame”
 • Dynamic script long polling
 • XHR long polling
Comet solves it (2)
• All Comet implementations are mondo-
  hacks

• Recent hype is about Bayeux:
 • Dojo Foundation specification
 • A standard way to pass around JSON
 • A pub/sub model
Client-side

• Pages & screens served up as normal
• Use XHR long polling to wait for events
• Server blocks until event worth returning
JavaScript libraries

• Dojo: loads working; responsible for
  Bayeux.

• jQuery: plugin available
• Prototype: couldn’t find much
• MooTools: discussion in the forums
The server-side
• I’ve mostly looked at Python
 • twisted-cometd
 • Orbited (pyEvent based)
 • pyorbited (Python Comet client)
• Certainly tools in most languages
 • Jetty 6.1 (Java app-server with comet)
Demo
That’s it, questions?
http://sneeu.com/barcampscotland2008/
        these slides and more
Photos
•   http://flickr.com/photos/cs___/1185503907/

•   http://flickr.com/photos/anthonybaker/59254428/

•   http://flickr.com/photos/elchicodelaleche/451117110/

•   http://flickr.com/photos/stinkypeter/1353500787/

•   http://flickr.com/photos/jeffrey/212073003/

•   http://flickr.com/photos/roadsidepictures/495353912/

•   http://flickr.com/photos/paulmoody/349360565/
Thanks
c bna
This work is licensed under the Creative Commons Attribution-
Noncommercial-Share Alike 2.5 UK: Scotland License. To view a copy
of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/
scotland/ or send a letter to Creative Commons, 171 Second Street,
Suite 300, San Francisco, California, 94105, USA.

Contenu connexe

Tendances

Phorum MySQL tricks
Phorum MySQL tricksPhorum MySQL tricks
Phorum MySQL tricksguestd34230
 
Rapid API development on MongoDB
Rapid API development on MongoDBRapid API development on MongoDB
Rapid API development on MongoDBDaniel Hjelm
 
Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Tatsuhiko Miyagawa
 
Seguranca em APP Rails
Seguranca em APP RailsSeguranca em APP Rails
Seguranca em APP RailsDaniel Lopes
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual InfrastructureBryan McLellan
 
WP-CLI Workshop at WordPress Meetup Cluj-Napoca
WP-CLI Workshop at WordPress Meetup Cluj-NapocaWP-CLI Workshop at WordPress Meetup Cluj-Napoca
WP-CLI Workshop at WordPress Meetup Cluj-Napoca4nd4p0p
 
DC Alt.Net: Building Web Apps With node.js
DC Alt.Net: Building Web Apps With node.jsDC Alt.Net: Building Web Apps With node.js
DC Alt.Net: Building Web Apps With node.jsTroy Goode
 
What's New in Web Development
What's New in Web DevelopmentWhat's New in Web Development
What's New in Web DevelopmentKonstantin Käfer
 
Pylons + Tokyo Cabinet
Pylons + Tokyo CabinetPylons + Tokyo Cabinet
Pylons + Tokyo CabinetBen Cheng
 
Intro to CouchDB
Intro to CouchDBIntro to CouchDB
Intro to CouchDBbenaldred
 
Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Alex Kavanagh
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty FrameworkAapo Talvensaari
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Developmenttwopoint718
 
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17GreeceJS
 
Plongée dans l'écosystème Laravel
Plongée dans l'écosystème LaravelPlongée dans l'écosystème Laravel
Plongée dans l'écosystème LaravelGabriel Pillet 🐙
 

Tendances (19)

Phorum MySQL tricks
Phorum MySQL tricksPhorum MySQL tricks
Phorum MySQL tricks
 
Rapid API development on MongoDB
Rapid API development on MongoDBRapid API development on MongoDB
Rapid API development on MongoDB
 
Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8
 
Seguranca em APP Rails
Seguranca em APP RailsSeguranca em APP Rails
Seguranca em APP Rails
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
 
WP-CLI Workshop at WordPress Meetup Cluj-Napoca
WP-CLI Workshop at WordPress Meetup Cluj-NapocaWP-CLI Workshop at WordPress Meetup Cluj-Napoca
WP-CLI Workshop at WordPress Meetup Cluj-Napoca
 
DC Alt.Net: Building Web Apps With node.js
DC Alt.Net: Building Web Apps With node.jsDC Alt.Net: Building Web Apps With node.js
DC Alt.Net: Building Web Apps With node.js
 
What's New in Web Development
What's New in Web DevelopmentWhat's New in Web Development
What's New in Web Development
 
Web sockets in Java
Web sockets in JavaWeb sockets in Java
Web sockets in Java
 
Pylons + Tokyo Cabinet
Pylons + Tokyo CabinetPylons + Tokyo Cabinet
Pylons + Tokyo Cabinet
 
Slide Test
Slide TestSlide Test
Slide Test
 
Intro to CouchDB
Intro to CouchDBIntro to CouchDB
Intro to CouchDB
 
Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3Real time web (Orbited) at BCNE3
Real time web (Orbited) at BCNE3
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Development
 
JS Event Loop
JS Event LoopJS Event Loop
JS Event Loop
 
CouchDB Google
CouchDB GoogleCouchDB Google
CouchDB Google
 
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
 
Plongée dans l'écosystème Laravel
Plongée dans l'écosystème LaravelPlongée dans l'écosystème Laravel
Plongée dans l'écosystème Laravel
 

En vedette

Catharine of aragon
Catharine of aragonCatharine of aragon
Catharine of aragonkrice
 
Alexander the great # 4 web
Alexander the great # 4   webAlexander the great # 4   web
Alexander the great # 4 webkrice
 
France
FranceFrance
Francekrice
 
Self Introduction1
Self Introduction1Self Introduction1
Self Introduction1bluesky1712
 
Jaws Lt -2010-02-23
Jaws Lt -2010-02-23Jaws Lt -2010-02-23
Jaws Lt -2010-02-23ryo katsuma
 
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introductionryo katsuma
 

En vedette (6)

Catharine of aragon
Catharine of aragonCatharine of aragon
Catharine of aragon
 
Alexander the great # 4 web
Alexander the great # 4   webAlexander the great # 4   web
Alexander the great # 4 web
 
France
FranceFrance
France
 
Self Introduction1
Self Introduction1Self Introduction1
Self Introduction1
 
Jaws Lt -2010-02-23
Jaws Lt -2010-02-23Jaws Lt -2010-02-23
Jaws Lt -2010-02-23
 
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introduction
 

Similaire à Web Development: The Next Five Years

Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorialoscon2007
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryMatt Butcher
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Performance Improvements In Browsers
Performance Improvements In BrowsersPerformance Improvements In Browsers
Performance Improvements In BrowsersGoogleTecTalks
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsersjeresig
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Railsdosire
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesJazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesSimon Willison
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsersjeresig
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Patrick Chanezon
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracketjnewmanux
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash CourseMrAbbas
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash CourseMrAbas
 
Once upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side renderingOnce upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side renderingAndrea Giannantonio
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Developmentwolframkriesing
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0Jan Sifra
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsasync_io
 

Similaire à Web Development: The Next Five Years (20)

Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorial
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQuery
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Performance Improvements In Browsers
Performance Improvements In BrowsersPerformance Improvements In Browsers
Performance Improvements In Browsers
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsers
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Rails
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesJazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsers
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracket
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
Once upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side renderingOnce upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side rendering
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Development
 
The Future of CSS
The Future of CSSThe Future of CSS
The Future of CSS
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 

Dernier

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
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
"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
 
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
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

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
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
"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 ...
 
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
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Web Development: The Next Five Years

  • 2. Introduction John Sutherland http://sneeu.com/john/
  • 3. The talk • It’s all about the future • Silverlight, AIR both failed to take off • The browser isn’t going anywhere • And open standards are the way forward
  • 4. The talk (2) • Interested in too many things • Loads of talk ideas • A few frontend, a few backend • Nothing I thought would be > 5 minutes • So ... 5 small topics = 30 minutes
  • 5. The topics • XHTML 2.0 & HTML 5 • CSS 3.0 • ECMAScript 4 (JavaScript 2) • WTF is CouchDB? • WTF is Comet? (the money-shot)
  • 7. XHTML 2.0 & HTML 5
  • 8. X2: What’s cool? • No more shitty tags: acronym, b, i, tt, font, basefont, big, small, or iframe • Sections and headers: section and h • Any thing can be a link with @href • The new navigation list, nl
  • 9. X2: What’s not cool? • h1-h6 remain despite section and h • a and img are still around • The lengthy and closed W3C process
  • 10. H5: What’s cool? • The new m element (for marked/ highlighted) • input@type is now on speed • The process is more open than XHTML 2
  • 11. H5: What’s not cool? • font returns‽ • Predefined @class names • Continued support for b, i, iframe, small & co.
  • 14. It’s going to rock • Multiple background images • Box shadows • Multi-column layout • Hot-ass attribute & pseudo selectors • Media queries • Advanced layout
  • 15. Multiple backgrounds #content { background: url(top_center.png) repeat-x top url(top_left.png) no-repeat left top url(top_right.png) no-repeat right top; }
  • 16. Advanced Layout body { display: “abb” “cbb” } #branding { position: a; } #interest { position: b; } #navigation { position: c; }
  • 17. Some of it works now! • :target pseudo selector in FF & Safari • text-shadow property in Safari • Multi-column layout in FF & Safari • Multiple backgrounds in Safari
  • 20. One metric shitload of awesome new stuff
  • 21. Type Annotations • function indexOf( needle : string, haystack : string) : int { // ... } • var age : int = 25; • var name : string! = quot;Johnquot;;
  • 22. Classes class WebDeveloper extends Developer { // must be initialised: var favDoctype : string!; override function say(s) { return quot;<![CDATA[quot; + s + quot; and AJAX!]]>quot;; } } var d = new WebDeveloper;
  • 23. Classes (2) • final keyword: cannot be extended • dynamic keyword: can have properties added at runtime • Interfaces: just like Java used to make
  • 24. Functions • generic keyword: overload function names, just like Java • Better var-args function f(fixed : String, ...extras : [String]) {} • intrinsic keyword: operator overloading
  • 25. More • let blocks: let (x = 0) { /* x == 0 */ } // x is undefined • for each: for each ( let n in [1, 2, 3, 5]) // ...
  • 27. Demo
  • 29. CouchDB • Succinctly: “a RESTful JSON document store” • RESTful: uses nice URLs and HTTP verbs (GET, POST, PUT & DELETE) • JSON: JavaScript Object Notation • Document: an arbitrary (but not necessarily) JSON structure
  • 30. CouchDB: what else? • JavaScript views & queries: built on Mozilla’s SpiderMonkey • Lucene powered full-text search • Replication: online & offline • No authentication yet (will have doc-level) • An absolute shit to setup
  • 31. Demo
  • 33. You know AJAX ...? • Great for async- sending to the server • Rubbish for async- receiving from the server • Chat • Real-time data: stock prices; Weewar • Other server-event stuff
  • 34. Comet solves it • The name is a play on the AJAX bleach • All sorts of ways to implement it, ‘Comet’ refers to them all • “Forever frame” • Dynamic script long polling • XHR long polling
  • 35. Comet solves it (2) • All Comet implementations are mondo- hacks • Recent hype is about Bayeux: • Dojo Foundation specification • A standard way to pass around JSON • A pub/sub model
  • 36. Client-side • Pages & screens served up as normal • Use XHR long polling to wait for events • Server blocks until event worth returning
  • 37. JavaScript libraries • Dojo: loads working; responsible for Bayeux. • jQuery: plugin available • Prototype: couldn’t find much • MooTools: discussion in the forums
  • 38. The server-side • I’ve mostly looked at Python • twisted-cometd • Orbited (pyEvent based) • pyorbited (Python Comet client) • Certainly tools in most languages • Jetty 6.1 (Java app-server with comet)
  • 39. Demo
  • 42. Photos • http://flickr.com/photos/cs___/1185503907/ • http://flickr.com/photos/anthonybaker/59254428/ • http://flickr.com/photos/elchicodelaleche/451117110/ • http://flickr.com/photos/stinkypeter/1353500787/ • http://flickr.com/photos/jeffrey/212073003/ • http://flickr.com/photos/roadsidepictures/495353912/ • http://flickr.com/photos/paulmoody/349360565/
  • 44. c bna This work is licensed under the Creative Commons Attribution- Noncommercial-Share Alike 2.5 UK: Scotland License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ scotland/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.