Mind The Tools

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

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.

Transcript of Mind The Tools

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?