41
Mind the Tools HOW THE TECHNOLOGY WE USE TO BUILD THE WEB SHAPES THE WEB Alex Payne Edge of the Web 2009 – Perth, Australia

Mind The Tools

Embed Size (px)

DESCRIPTION

How the technology we use to build the Web shapes the web. A look at the history, present, and future of the programming languages and tools used in web development, and how they've impacted the culture of the Web.

Citation preview

Page 1: Mind The Tools

Mind the ToolsHOW THE TECHNOLOGY WE USE TO BUILD THE WEB

SHAPES THE WEB

Alex PayneEdge of the Web 2009 – Perth, Australia

Page 2: Mind The Tools

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).

Page 3: Mind The Tools
Page 4: Mind The Tools

How does languageshape what we do?

Page 5: Mind The Tools

“That’s demented!”

Page 6: Mind The Tools

Agenda

i. A little history.

ii. A tour of the present.

iii. Gazing into the future.

iv. How languages and tools shaped the web.

Page 7: Mind The Tools

A Brief History

Programming Languagesof the Web

Page 8: Mind The Tools

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.

Page 9: Mind The Tools
Page 10: Mind The Tools

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.

Page 11: Mind The Tools
Page 12: Mind The Tools

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.

Page 13: Mind The Tools
Page 14: Mind The Tools
Page 15: Mind The Tools

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.

Page 16: Mind The Tools

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.

Page 17: Mind The Tools
Page 18: Mind The Tools

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.

Page 19: Mind The Tools

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.

Page 20: Mind The Tools

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.

Page 21: Mind The Tools

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 up1993

Applets (Java)

1995 – 1997

HTML born

1990 – 1991

PHP

1998 – 2005

LAMP (Python, PHP, Perl)

2001 – 2007

VRML

1995 – 1997

Page 22: Mind The Tools

Charted Territory

Typing Object Model CompilationPerlPythonPHPRubyJavaScriptActionScriptJava

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

Page 23: Mind The Tools

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.

Page 24: Mind The Tools

The Present

Page 25: Mind The Tools

Frameworks Everywhere

❖ Application frameworks: Rails, Django.

❖ JavaScript frameworks: jQuery, YUI.

❖ CSS frameworks: Blueprint, Baseline.

❖ Typography frameworks (?!): TypeKit, sIFR.

Page 26: Mind The Tools

APIs Everywhere

❖ Not just for mashups anymore.

❖ Eat your own dog food: API as systems architecture.

❖ Letting data escape the browser model.

Page 27: Mind The Tools

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.

Page 28: Mind The Tools

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.

Page 29: Mind The Tools

Refining Standards❖ HTML 5, JavaScript 1.9

❖ new challenges:

❖ mobile

❖ geolocation

❖ heavyweight web applications (GMail, etc.)

❖ old and difficult challenges:

❖ internationalization

❖ accessibility

Page 30: Mind The Tools

The Web Outside The Browser

❖ Taking web development to

other realms:

❖ the desktop (AIR, Titanium)

❖ mobile (Palm webOS)

❖ Why build your own

development model?

Page 31: Mind The Tools

The Future

Page 32: Mind The Tools

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.

Page 33: Mind The Tools

The Native Era

❖ Google Native Client.

❖ Getting video out of Flash.

❖ Mobile apps.

Page 34: Mind The Tools

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).

Page 35: Mind The Tools

How Does All This Shape The Web?

Page 36: Mind The Tools

Dynamism.

Page 37: Mind The Tools

Tension.

Page 38: Mind The Tools

Heterogeneity.

Page 39: Mind The Tools

Evolution.

Page 40: Mind The Tools

Tools matter.Language matters.

Page 41: Mind The Tools

Thank you!

Questions?