SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Mind the Tools
HOW THE TECHNOLOGY WE USE TO BUILD THE WEB
SHAPES THE WEB
Alex Payne
Edge of the Web 2009 – Perth, Australia
❦
Introduction
❖ Working on Twitter since
January, 2007.
❖ Working on the Web since age
12 (1995).
❖ A bit nuts about programming
languages.
❖ Co-author of Programming Scala
from O’Reilly (October, 2009).
How does language
shape what we do?
“That’s demented!”
Agenda
i. A little history.
ii. A tour of the present.
iii. Gazing into the future.
iv. How languages and tools shaped the web.
A Brief History
Programming Languages
of the Web
In The Beginning...
❖ HTML born in 1990-91.
❖ First proper public specification of HTML arrives in
1993.
❖ NCSA Mosaic 1.0 released in April, 1993, just as CERN
announces that the Web will be free and open.
❖ CGI standard emerges in 1993, enabling the earliest web
applications.
The CGI Era
❖ 1993 - 1997.
❖ Most common languages for CGI scripts:
❖ C
❖ Perl
❖ Reduces data to key-value pairs.
❖ The primordial soup of web applications.
The Applet Era
❖ 1995 - 1997.
❖ A showcase for the Java language.
❖ The first “dynamic” content on the Web.
❖ Solid security model, impressive demos, but never really
took hold.
❖ Killed by Microsoft’s unbundling and the rise of Flash
in the early naughts.
The Flash Era
❖ 1998 - present
❖ Started out as simply a solution for vector-based
animation.
❖ For a while, a competitor to “DHTML”.
❖ Now used mostly for delivering video and games.
❖ Deep concern in the Web standards and FOSS
communities about its use.
The JavaScript Era
❖ 1998 - present.
❖ From animations and client-side form validations to
web application greatness.
❖ Much maligned, must misunderstood.
❖ Now one of the most widely-deployed languages in
existence.
The PHP Era
❖ 1998 - 2005
❖ The first programming language built explicitly for web
development.
❖ Decent performance, fast development cycle.
❖ Encourages poor programming practices.
❖ Also spawned ASP.
The LAMP Era
❖ 2001 - 2007
❖ Python catches up to PHP.
❖ Perl is still around.
❖ Generic interfaces like FCGI enable a “right tool for
the job” mentality.
❖ Open source web servers and databases have matured.
The Age of Frameworks
❖ 2005 - present.
❖ Ruby on Rails, Django, and many copycats.
❖ Codifying best practices, treating web application
development like “real” software development.
❖ Increased productivity, but at the cost of vendor
dependency.
Timeline
1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
CGI (Perl, C)
1993 – 1997
JavaScript
1998 – 2009
frameworks (Rails, Django, et. al.)
2005 – 2009
Flash (ActionScript)
1998 – 2009
The Web opens up
1993
Applets (Java)
1995 – 1997
HTML born
1990 – 1991
PHP
1998 – 2005
LAMP (Python, PHP, Perl)
2001 – 2007
VRML
1995 – 1997
Charted Territory
Typing Object Model Compilation
Perl
Python
PHP
Ruby
JavaScript
ActionScript
Java
dynamic class-based interpreted
dynamic class-based interpreted
dynamic class-based interpreted
dynamic class-based interpreted
dynamic prototype-based interpreted
static prototype-based compiled
static class-based compiled
Lessons of History
❖ Dynamic, interpreted languages have been
dominant on the Web.
❖ Languages built exclusively for the Web face
tough criticism (PHP, JavaScript).
❖ No one technology lasts forever – and that’s a good
thing.
The Present
Frameworks Everywhere
❖ Application frameworks: Rails, Django.
❖ JavaScript frameworks: jQuery, YUI.
❖ CSS frameworks: Blueprint, Baseline.
❖ Typography frameworks (?!): TypeKit, sIFR.
APIs Everywhere
❖ Not just for mashups anymore.
❖ Eat your own dog food: API as systems architecture.
❖ Letting data escape the browser model.
JavaScript Everywhere
❖ Use the same language, front-to-back.
❖ Perfect for AJAX-heavy applications.
❖ JSON as universal object format.
❖ A bit untested, but AppJet and others are paving the
way.
Code Generation
❖ Use the same language for everything, but compile
down to HTML, CSS, and JavaScript.
❖ Google Web Toolkit (GWT).
❖ Popular in the Ruby and functional language
communities.
Refining Standards
❖ HTML 5, JavaScript 1.9
❖ new challenges:
❖ mobile
❖ geolocation
❖ heavyweight web applications (GMail, etc.)
❖ old and difficult challenges:
❖ internationalization
❖ accessibility
The Web Outside The Browser
❖ Taking web development to
other realms:
❖ the desktop (AIR, Titanium)
❖ mobile (Palm webOS)
❖ Why build your own
development model?
The Future
The Post-Framework Era
❖ Message queues connecting heterogeneous components.
❖ Trickle-down SOA.
❖ Back to LAMP, only language doesn’t matter this time.
❖ And, yes, finally, the Cloud.
The Native Era
❖ Google Native Client.
❖ Getting video out of Flash.
❖ Mobile apps.
The Functional Era
❖ Functional languages fit the Web development model.
❖ It’s taken time for the old FP languages (Lisp, Haskell,
OCaml) to build up Web tooling.
❖ Newer functional languages (Scala, Clojure) are already
productive and competitive for Web work.
❖ Even newer FP languages are aimed squarely at the Web
(Arc, Ur).
How Does All This Shape The Web?
Dynamism.
Tension.
Heterogeneity.
Evolution.
Tools matter.
Language matters.
Thank you!
Questions?
❦

Contenu connexe

En vedette

Mind map of developing the leader with in you course
Mind map of developing the leader with in you courseMind map of developing the leader with in you course
Mind map of developing the leader with in you coursesadek younis
 
Brain Business - Leading with the Brain in Mind
Brain Business - Leading with the Brain in MindBrain Business - Leading with the Brain in Mind
Brain Business - Leading with the Brain in MindBernice Moore, PhD
 
Programming your mind
Programming your mindProgramming your mind
Programming your mindDale Calvert
 
Powers of Brain
Powers of BrainPowers of Brain
Powers of Brainekanna
 
The game of controlling the mind
The game of controlling the mindThe game of controlling the mind
The game of controlling the mindVedangiBrahmbhatt
 
Seven Steps to Control Your Subconscious Mind....
Seven Steps to Control Your Subconscious Mind....Seven Steps to Control Your Subconscious Mind....
Seven Steps to Control Your Subconscious Mind....Giridhar Gopal Saraswat
 
3 Brain/Mind MANIPULATION Secrets
3 Brain/Mind MANIPULATION Secrets3 Brain/Mind MANIPULATION Secrets
3 Brain/Mind MANIPULATION SecretsHeinrichMahr
 
Metrics for early stage startups
Metrics for early stage startupsMetrics for early stage startups
Metrics for early stage startupsAndreas Klinger
 
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.Andreas Klinger
 
Actionable Customer Development
Actionable Customer DevelopmentActionable Customer Development
Actionable Customer DevelopmentAndreas Klinger
 

En vedette (12)

Mind map of developing the leader with in you course
Mind map of developing the leader with in you courseMind map of developing the leader with in you course
Mind map of developing the leader with in you course
 
The Collaborative Leader
The Collaborative LeaderThe Collaborative Leader
The Collaborative Leader
 
Brain Business - Leading with the Brain in Mind
Brain Business - Leading with the Brain in MindBrain Business - Leading with the Brain in Mind
Brain Business - Leading with the Brain in Mind
 
Programming your mind
Programming your mindProgramming your mind
Programming your mind
 
Powers of Brain
Powers of BrainPowers of Brain
Powers of Brain
 
The game of controlling the mind
The game of controlling the mindThe game of controlling the mind
The game of controlling the mind
 
Seven Steps to Control Your Subconscious Mind....
Seven Steps to Control Your Subconscious Mind....Seven Steps to Control Your Subconscious Mind....
Seven Steps to Control Your Subconscious Mind....
 
3 Brain/Mind MANIPULATION Secrets
3 Brain/Mind MANIPULATION Secrets3 Brain/Mind MANIPULATION Secrets
3 Brain/Mind MANIPULATION Secrets
 
Mind power
Mind powerMind power
Mind power
 
Metrics for early stage startups
Metrics for early stage startupsMetrics for early stage startups
Metrics for early stage startups
 
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.
Startup Metrics, a love story. All slides of an 6h Lean Analytics workshop.
 
Actionable Customer Development
Actionable Customer DevelopmentActionable Customer Development
Actionable Customer Development
 

Plus de Alex Payne

Splitting up your web app
Splitting up your web appSplitting up your web app
Splitting up your web appAlex Payne
 
The perils and rewards of working on stuff that matters
The perils and rewards of working on stuff that mattersThe perils and rewards of working on stuff that matters
The perils and rewards of working on stuff that mattersAlex Payne
 
Emerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonEmerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonAlex Payne
 
The Why and How of Scala at Twitter
The Why and How of Scala at TwitterThe Why and How of Scala at Twitter
The Why and How of Scala at TwitterAlex Payne
 
Building Distributed Systems in Scala
Building Distributed Systems in ScalaBuilding Distributed Systems in Scala
Building Distributed Systems in ScalaAlex Payne
 
Speedy, Stable, and Secure: Better Web Apps Through Functional Languages
Speedy, Stable, and Secure: Better Web Apps Through Functional LanguagesSpeedy, Stable, and Secure: Better Web Apps Through Functional Languages
Speedy, Stable, and Secure: Better Web Apps Through Functional LanguagesAlex Payne
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingAlex Payne
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of TwitterAlex Payne
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0Alex Payne
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIsAlex Payne
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?Alex Payne
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeAlex Payne
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public HotspotsAlex Payne
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008Alex Payne
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your APIAlex Payne
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Alex Payne
 

Plus de Alex Payne (18)

Splitting up your web app
Splitting up your web appSplitting up your web app
Splitting up your web app
 
The perils and rewards of working on stuff that matters
The perils and rewards of working on stuff that mattersThe perils and rewards of working on stuff that matters
The perils and rewards of working on stuff that matters
 
Emerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonEmerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the Horizon
 
The Why and How of Scala at Twitter
The Why and How of Scala at TwitterThe Why and How of Scala at Twitter
The Why and How of Scala at Twitter
 
Building Distributed Systems in Scala
Building Distributed Systems in ScalaBuilding Distributed Systems in Scala
Building Distributed Systems in Scala
 
Speedy, Stable, and Secure: Better Web Apps Through Functional Languages
Speedy, Stable, and Secure: Better Web Apps Through Functional LanguagesSpeedy, Stable, and Secure: Better Web Apps Through Functional Languages
Speedy, Stable, and Secure: Better Web Apps Through Functional Languages
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in Computing
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of Twitter
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIs
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to Adobe
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public Hotspots
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
Why Scala?
Why Scala?Why Scala?
Why Scala?
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your API
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007
 

Mind The Tools

  • 1. Mind the Tools HOW THE TECHNOLOGY WE USE TO BUILD THE WEB SHAPES THE WEB Alex Payne Edge of the Web 2009 – Perth, Australia ❦
  • 2. Introduction ❖ Working on Twitter since January, 2007. ❖ Working on the Web since age 12 (1995). ❖ A bit nuts about programming languages. ❖ Co-author of Programming Scala from O’Reilly (October, 2009).
  • 3.
  • 6. Agenda i. A little history. ii. A tour of the present. iii. Gazing into the future. iv. How languages and tools shaped the web.
  • 7. A Brief History Programming Languages of the Web
  • 8. In The Beginning... ❖ HTML born in 1990-91. ❖ First proper public specification of HTML arrives in 1993. ❖ NCSA Mosaic 1.0 released in April, 1993, just as CERN announces that the Web will be free and open. ❖ CGI standard emerges in 1993, enabling the earliest web applications.
  • 9.
  • 10. The CGI Era ❖ 1993 - 1997. ❖ Most common languages for CGI scripts: ❖ C ❖ Perl ❖ Reduces data to key-value pairs. ❖ The primordial soup of web applications.
  • 11.
  • 12. The Applet Era ❖ 1995 - 1997. ❖ A showcase for the Java language. ❖ The first “dynamic” content on the Web. ❖ Solid security model, impressive demos, but never really took hold. ❖ Killed by Microsoft’s unbundling and the rise of Flash in the early naughts.
  • 13.
  • 14.
  • 15. The Flash Era ❖ 1998 - present ❖ Started out as simply a solution for vector-based animation. ❖ For a while, a competitor to “DHTML”. ❖ Now used mostly for delivering video and games. ❖ Deep concern in the Web standards and FOSS communities about its use.
  • 16. The JavaScript Era ❖ 1998 - present. ❖ From animations and client-side form validations to web application greatness. ❖ Much maligned, must misunderstood. ❖ Now one of the most widely-deployed languages in existence.
  • 17.
  • 18. The PHP Era ❖ 1998 - 2005 ❖ The first programming language built explicitly for web development. ❖ Decent performance, fast development cycle. ❖ Encourages poor programming practices. ❖ Also spawned ASP.
  • 19. The LAMP Era ❖ 2001 - 2007 ❖ Python catches up to PHP. ❖ Perl is still around. ❖ Generic interfaces like FCGI enable a “right tool for the job” mentality. ❖ Open source web servers and databases have matured.
  • 20. The Age of Frameworks ❖ 2005 - present. ❖ Ruby on Rails, Django, and many copycats. ❖ Codifying best practices, treating web application development like “real” software development. ❖ Increased productivity, but at the cost of vendor dependency.
  • 21. Timeline 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 CGI (Perl, C) 1993 – 1997 JavaScript 1998 – 2009 frameworks (Rails, Django, et. al.) 2005 – 2009 Flash (ActionScript) 1998 – 2009 The Web opens up 1993 Applets (Java) 1995 – 1997 HTML born 1990 – 1991 PHP 1998 – 2005 LAMP (Python, PHP, Perl) 2001 – 2007 VRML 1995 – 1997
  • 22. Charted Territory Typing Object Model Compilation Perl Python PHP Ruby JavaScript ActionScript Java dynamic class-based interpreted dynamic class-based interpreted dynamic class-based interpreted dynamic class-based interpreted dynamic prototype-based interpreted static prototype-based compiled static class-based compiled
  • 23. Lessons of History ❖ Dynamic, interpreted languages have been dominant on the Web. ❖ Languages built exclusively for the Web face tough criticism (PHP, JavaScript). ❖ No one technology lasts forever – and that’s a good thing.
  • 25. Frameworks Everywhere ❖ Application frameworks: Rails, Django. ❖ JavaScript frameworks: jQuery, YUI. ❖ CSS frameworks: Blueprint, Baseline. ❖ Typography frameworks (?!): TypeKit, sIFR.
  • 26. APIs Everywhere ❖ Not just for mashups anymore. ❖ Eat your own dog food: API as systems architecture. ❖ Letting data escape the browser model.
  • 27. JavaScript Everywhere ❖ Use the same language, front-to-back. ❖ Perfect for AJAX-heavy applications. ❖ JSON as universal object format. ❖ A bit untested, but AppJet and others are paving the way.
  • 28. Code Generation ❖ Use the same language for everything, but compile down to HTML, CSS, and JavaScript. ❖ Google Web Toolkit (GWT). ❖ Popular in the Ruby and functional language communities.
  • 29. Refining Standards ❖ HTML 5, JavaScript 1.9 ❖ new challenges: ❖ mobile ❖ geolocation ❖ heavyweight web applications (GMail, etc.) ❖ old and difficult challenges: ❖ internationalization ❖ accessibility
  • 30. The Web Outside The Browser ❖ Taking web development to other realms: ❖ the desktop (AIR, Titanium) ❖ mobile (Palm webOS) ❖ Why build your own development model?
  • 32. The Post-Framework Era ❖ Message queues connecting heterogeneous components. ❖ Trickle-down SOA. ❖ Back to LAMP, only language doesn’t matter this time. ❖ And, yes, finally, the Cloud.
  • 33. The Native Era ❖ Google Native Client. ❖ Getting video out of Flash. ❖ Mobile apps.
  • 34. The Functional Era ❖ Functional languages fit the Web development model. ❖ It’s taken time for the old FP languages (Lisp, Haskell, OCaml) to build up Web tooling. ❖ Newer functional languages (Scala, Clojure) are already productive and competitive for Web work. ❖ Even newer FP languages are aimed squarely at the Web (Arc, Ur).
  • 35. How Does All This Shape The Web?