# data[].attributes.title
The time traveller’s guide to web technologies

# data[].attributes.blurb.html
With JavaScript celebrating its 30th birthday this year, now feels like a good time to look back at where we came from, and look forward to where we might be heading.

In this nostalgic talk, Phil will reflect on some of the moments of our past as JavaScript and web technologies evolved, share thoughts on some of our collective hits and misses, and present some hopes and insights on what the future could hold.

# data[].attributes.slidedeck.data[].slides[].desc.html
14th May 2026 JS Heroes The time traveller’s guide to web technologies Phil Hawksworth he/him

# data[].attributes.slidedeck.data[].slides[].desc.html
8 Years t i s i v t s a l e c n i S

# data[].attributes.slidedeck.data[].slides[].desc.html
30 Years JavaScr ipt

# data[].attributes.slidedeck.data[].slides[].desc.html
30 Minutes Me

# data[].attributes.slidedeck.data[].slides[].desc.html
Reflect Consider Confess Many great talks Learn Party  NOT TO SCALE  Apply Heat death of the universe

# data[].attributes.slidedeck.data[].slides[].desc.html
b u H t i G Link Tw i t e dI n y k S Bl ue te r @ Phil Hawksworth.dev he/him Developer Relations, TBD We b

# data[].attributes.slidedeck.data[].slides[].desc.html
In the beginning…

# data[].attributes.slidedeck.data[].slides[].desc.html
May 1995 Brendan Eich creates the first version of JavaScript https://cybercultural.com/p/1995-the-birth-of-javascript/

# data[].attributes.slidedeck.data[].slides[].desc.html
Evolve & e v o r p Im

# data[].attributes.slidedeck.data[].slides[].desc.html
December 1995 Netscape and Sun Microsystems announce JavaScript https://www.tech-insider.org/java/research/1995/1204.html

# data[].attributes.slidedeck.data[].slides[].desc.html
March 1996 Microsoft introduces JScript in Internet Explorer https://cybercultural.com/p/1996-microsoft-activates-the-internet-with-activex-jscript/

# data[].attributes.slidedeck.data[].slides[].desc.html
March 1996 Netscape Navigator 2.0 is released with JavaScript 1.0

# data[].attributes.slidedeck.data[].slides[].desc.html
if (document.layers) { // Do all the Netscape things } else { // Do all the Internet Explorer things }

# data[].attributes.slidedeck.data[].slides[].desc.html
June 1997 Netscape submits JavaScript to ECMA International

# data[].attributes.slidedeck.data[].slides[].desc.html
Technical Committees TC39 TC26 ECMAScript Acoustics

# data[].attributes.slidedeck.data[].slides[].desc.html
Technical Committees having completed their tasks TC14 ✓ Paper sizes TC34 ✓ Office devices

# data[].attributes.slidedeck.data[].slides[].desc.html
March 1999 Microsoft releases Internet Explorer 5

# data[].attributes.slidedeck.data[].slides[].desc.html
April 2001 The first JSON message is sent https://twobithistory.org/2017/09/21/the-rise-and-rise-of-json.html

# data[].attributes.slidedeck.data[].slides[].desc.html
June 2002 JSLint is introduced Ecosystem Enrichment https://web.archive.org/web/20180226015758/https://codekitapp.com/help/jslint/

# data[].attributes.slidedeck.data[].slides[].desc.html
September 2002 Mozilla releases Phoenix 0.1 to compete with Internet Explorer

# data[].attributes.slidedeck.data[].slides[].desc.html
January 2003 Apple introduces Safari and WebKit

# data[].attributes.slidedeck.data[].slides[].desc.html
April 2004 A beta version of Gmail is released

# data[].attributes.slidedeck.data[].slides[].desc.html
February 2005 Jesse James Garrett coins “AJAX” https://designftw.mit.edu/lectures/apis/ajax_adaptive_path.pdf

# data[].attributes.slidedeck.data[].slides[].desc.html
A confession https://unsplash.com/photos/a-man-holds-his-head-while-sitting-on-a-sofa-BuNWp1bL0nc

# data[].attributes.slidedeck.data[].slides[].desc.html
I adore JavaScript but I like to use as little of it as possible. And ideally, no less.  Phil Hawksworth, today (hoping we can still be friends)

# data[].attributes.slidedeck.data[].slides[].desc.html
WEBCONSOLE

# data[].attributes.slidedeck.data[].slides[].desc.html
Library and utility functions. document.getElementById(“some-id”);

# data[].attributes.slidedeck.data[].slides[].desc.html
Library and utility functions. function getById(id) { return document.getElementById(id) || null; }

# data[].attributes.slidedeck.data[].slides[].desc.html
Library and utility functions. function $(id) { return document.getElementById(id) || null; }

# data[].attributes.slidedeck.data[].slides[].desc.html
March 2006 John Resig pushes the first commits to jQuery https://github.com/jquery/jquery/commit/8a4a1edf047f2c272f663866eb7b5fcd644d65b3

# data[].attributes.slidedeck.data[].slides[].desc.html
jquery.com

# data[].attributes.slidedeck.data[].slides[].desc.html
Writing JavaScript should be fun — jQuery.com, 2006

# data[].attributes.slidedeck.data[].slides[].desc.html
An interactivity explosion

# data[].attributes.slidedeck.data[].slides[].desc.html
Flash vs HTML5

# data[].attributes.slidedeck.data[].slides[].desc.html
January 2007 The first Apple iPhone released Reach & Habitats https://www.apple.com/newsroom/2007/01/09Apple-Reinvents-the-Phone-with-iPhone

# data[].attributes.slidedeck.data[].slides[].desc.html
The way we interact with the UI all seems so obvious now

# data[].attributes.slidedeck.data[].slides[].desc.html
OMFG DEVICES @philhawksworth

# data[].attributes.slidedeck.data[].slides[].desc.html
Flash vs HTML5

# data[].attributes.slidedeck.data[].slides[].desc.html
! e ar We c WHY

# data[].attributes.slidedeck.data[].slides[].desc.html
Suddenly, stakeholders gave a shit

# data[].attributes.slidedeck.data[].slides[].desc.html
Awareness and empathy

# data[].attributes.slidedeck.data[].slides[].desc.html
Play

# data[].attributes.slidedeck.data[].slides[].desc.html
PLEASE DON’T TAKE MY FLASH AWAY FROM ME! – My buddy, Steve

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2008 Douglas Crockford publishes “JavaScript: The Good Parts” https://www.oreilly.com/library/view/javascript-the-good/9780596517748

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2008 Google releases the Chrome browser https://googleblog.blogspot.com/2008/12/google-chrome-beta.html

# data[].attributes.slidedeck.data[].slides[].desc.html
January 2009 CommonJS is created (originally named ServerJS

# data[].attributes.slidedeck.data[].slides[].desc.html
March 2009 Ryan Dahl begins work on Node.js Reach & Habitats https://github.com/nodejs/node/blob/1afe6d26dbcf76de15df7e2c8fc3aadbbb8b117d/README

# data[].attributes.slidedeck.data[].slides[].desc.html
https://www.youtube.com/watch?v=jo_B4LTHi3I&list=PPSV

# data[].attributes.slidedeck.data[].slides[].desc.html
April 2009 Oracle acquires Sun Microsystems https://www.oracle.com/corporate/pressrelease/oracle-buys-sun-042009.html

# data[].attributes.slidedeck.data[].slides[].desc.html
™ JavaScript

# data[].attributes.slidedeck.data[].slides[].desc.html
javascript.tm

# data[].attributes.slidedeck.data[].slides[].desc.html
June 2009 The first commit on Express.js is created https://github.com/expressjs/express/commit/9998490f93d3ad3d56c00d23c0aa13fac41c3f6b

# data[].attributes.slidedeck.data[].slides[].desc.html
August 2009 Jeff Atwood coins Atwood’s Law

# data[].attributes.slidedeck.data[].slides[].desc.html
Any application which can be written in javaScript, will eventually be written in JavaScript  Atwood’s Law

# data[].attributes.slidedeck.data[].slides[].desc.html
January 2010 npm 1.0 is released Ecosystem Enrichment https://nodejs.org/en/blog/npm/npm-1-0-released

# data[].attributes.slidedeck.data[].slides[].desc.html
October 2010 AngularJS and Backbone.js are released m e t s y s o Ec t n e m Enrich

# data[].attributes.slidedeck.data[].slides[].desc.html
June 2011 Node.js is ported to Windows Reach & Habitats https://nodejs.org/en/blog/uncategorized/porting-node-to-windows-with-microsofts-help

# data[].attributes.slidedeck.data[].slides[].desc.html
October 2012 Microsoft makes TypeScript 0.8 available for the public m e t s y s o c E t n e m Enrich https://devblogs.microsoft.com/typescript/announcing-typescript-0-8-1

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2013 Facebook releases React Ecosystem t n e m h c i Enr

# data[].attributes.slidedeck.data[].slides[].desc.html
July 2013 Gulp is released Ecosystem Enrichment

# data[].attributes.slidedeck.data[].slides[].desc.html
Hipster tax

# data[].attributes.slidedeck.data[].slides[].desc.html
Over Engineered

# data[].attributes.slidedeck.data[].slides[].desc.html
Over Under Engineered

# data[].attributes.slidedeck.data[].slides[].desc.html
February 2014 Vue.js is released m e t s y s o Ec t n e m h c i r n E https://github.com/vuejs/vue/releases/tag/v0.10.0

# data[].attributes.slidedeck.data[].slides[].desc.html
November 2014 Amazon announces AWS Lambda Reach & Habitats https://press.aboutamazon.com/2014/11/amazon-web-services-announces-aws-lambda

# data[].attributes.slidedeck.data[].slides[].desc.html
Serverless

# data[].attributes.slidedeck.data[].slides[].desc.html
Just write code

# data[].attributes.slidedeck.data[].slides[].desc.html
Just write code

# data[].attributes.slidedeck.data[].slides[].desc.html
July 2015 ECMAScript 6 is released ES2015 Evolve & e v o r p Im

# data[].attributes.slidedeck.data[].slides[].desc.html
March 2016 Azer Koculu removes Leftpad from npm

# data[].attributes.slidedeck.data[].slides[].desc.html
What code are we shipping?

# data[].attributes.slidedeck.data[].slides[].desc.html
April 2016 Microsoft releases VSCode 1.0

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user ’til I die.

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m a user for the time being.

# data[].attributes.slidedeck.data[].slides[].desc.html
September 2016 Angular Angular2 released http://angularjs.blogspot.com/2016/09/angular2-final.html

# data[].attributes.slidedeck.data[].slides[].desc.html
October 2016 Next.js 1.0 released https://vercel.com/blog/next

# data[].attributes.slidedeck.data[].slides[].desc.html
e ov m s g n i Some th Quickly e ov m s g n i Some th Slowly

# data[].attributes.slidedeck.data[].slides[].desc.html
March 2017 The initial commit for the Temporal proposal is created https://github.com/tc39/proposal-temporal/commit/8a171d1661babda716251250fbdb4dd39f2dd1c2

# data[].attributes.slidedeck.data[].slides[].desc.html
Because…

# data[].attributes.slidedeck.data[].slides[].desc.html
Working with time and dates in JavaScript can be a massive pain in the arse  Brendan Eich ( citation needed )

# data[].attributes.slidedeck.data[].slides[].desc.html
March 2017 The initial commit for the Temporal proposal is created https://github.com/tc39/proposal-temporal/commit/8a171d1661babda716251250fbdb4dd39f2dd1c2

# data[].attributes.slidedeck.data[].slides[].desc.html
April 2017 Prettier 1.0 released https://prettier.io/blog/2017/04/13/1.0.0

# data[].attributes.slidedeck.data[].slides[].desc.html
September 2017 Facebook launches Yarn https://engineering.fb.com/2016/10/11/web/yarn-a-new-package-manager-for-javascript

# data[].attributes.slidedeck.data[].slides[].desc.html
September 2017 Cloudflare launches Cloudflare Workers s t a it b a H & h c a e R https://blog.cloudflare.com/introducing-cloudflare-workers

# data[].attributes.slidedeck.data[].slides[].desc.html
June 2018 Ryan Dahl teases a new project in a talk about his regrets about Node

# data[].attributes.slidedeck.data[].slides[].desc.html
“node”.split(“”).sort().join(“”);

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2020 JavaScript makes it into space with SpaceX Dragon Reach & Habitats https://os-system.com/blog/javascript-in-space-spacex-devs-have-shared-crewdragons-tech-stack

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2020 JavaScript makes it into space with SpaceX Dragon Reach & Habitats https://os-system.com/blog/javascript-in-space-spacex-devs-have-shared-crewdragons-tech-stack

# data[].attributes.slidedeck.data[].slides[].desc.html
May 2020 Deno 1.0 released

# data[].attributes.slidedeck.data[].slides[].desc.html
October 2024 Deno 2.0 released and I join Deno

# data[].attributes.slidedeck.data[].slides[].desc.html
So?

# data[].attributes.slidedeck.data[].slides[].desc.html
Heat death of the universe We’re not done

# data[].attributes.slidedeck.data[].slides[].desc.html
e v l o v E & e v o r p Im t a h t o d e W s t a it b a H & h c a e R Ecosystem Enrichment

# data[].attributes.slidedeck.data[].slides[].desc.html
! e ar We c WHY

# data[].attributes.slidedeck.data[].slides[].desc.html
e d o c e t i r Just w

# data[].attributes.slidedeck.data[].slides[].desc.html
e d o c e k a m t s u J

# data[].attributes.slidedeck.data[].slides[].desc.html
? s g n i h t e k a m t s Ju

# data[].attributes.slidedeck.data[].slides[].desc.html
Our next frontier https://unsplash.com/photos/eH_ftJYhaTY

# data[].attributes.slidedeck.data[].slides[].desc.html
l a u t c A Artificial intelligence

# data[].attributes.slidedeck.data[].slides[].desc.html
What if we don’t engage?

# data[].attributes.slidedeck.data[].slides[].desc.html
We are an informed bunch

# data[].attributes.slidedeck.data[].slides[].desc.html
We are an opinionated bunch

# data[].attributes.slidedeck.data[].slides[].desc.html
We are an opinionated bunch

# data[].attributes.slidedeck.data[].slides[].desc.html
Let’s not waste that by choosing not to engage

# data[].attributes.slidedeck.data[].slides[].desc.html
I’m usually slow to adopt abstractions

# data[].attributes.slidedeck.data[].slides[].desc.html
I concede AI is not SASS

# data[].attributes.slidedeck.data[].slides[].desc.html
Why Software Fundamentals Matter More Than Ever — Matt Pocock

# data[].attributes.slidedeck.data[].slides[].desc.html
It feels like Another layer of abstraction

# data[].attributes.slidedeck.data[].slides[].desc.html
™ We own JavaScript

# data[].attributes.slidedeck.data[].slides[].desc.html
We drive it forward

# data[].attributes.slidedeck.data[].slides[].desc.html
We can use it responsibly

# data[].attributes.slidedeck.data[].slides[].desc.html
We can use it whimsically

# data[].attributes.slidedeck.data[].slides[].desc.html
We can use it to do incredible things

# data[].attributes.slidedeck.data[].slides[].desc.html
Thanks. philhawksworth.dev findthat.at / time