WAT
TENYEARS LATER
23 years ago
• 1995, Netscape Navigator
• Brendan Eich wrote a prototype in 10 days
• Mocha
• LiveScript
• JavaScript
• Internet explorer 3 (or was it 2?) in 1996,VBScript and Jscript and JavaScript
• ECMAScript standardization
AJAX
AJAX
• XMLHttpRequest
• IE 5, March 1999
• Thank you Microsoft
• OutlookWeb Access 2000
• IE was great
• AJAX term coined 2005?
jQuery
• January 2006
• Cross-Browser
• DOM abstraction
• Chaining
Ten years ago. GeekMeet #4
• 8 Feb 2009
• JavaScript still sucked
• Changes right around the corner
• http://geekmeet.ro/timisoara/2009/02/03/program/
Now
• JavaScript is Everywhere
• For better or worse
WHO DOWE BLAME?
GOOGLE!
Google Chrome
• September 2, 2008
• Changed everything
SPEED
Make the infrastructure faster, new uses for it will appear
Stability / Process Isolation
• Each tab has its own process
• Crashes only crash tab (SadTab)
• 3 years after Intel Core2 Architecture came out
• 1 year after Nehalem
V8
• JavaScript important enough to get custom-built engine
• V8 team in Denmark
• Lars Bak and Kasper Lund
• Both previous worked on Java HotSpot at Sun Microsystems
• Platform independent
• Modularized
• Hidden ClassTransitions ... well types 
• Dynamic Code Generation
Security/Sandboxing
• Tab = Process = Jail
• Further restrictions on what processes have access to
• Google Safe Browsing list
Embeddable?
• Modular components
• Cross-platform
• New use-cases
Incognito?
• For reasons...
• For developers
PDFs
• Chrome 8, 2010-12-02, built-in PDF viewer inside Sandbox
• Pdf.js: 2 July 2011
• JavaScript + Canvas
• Included in Firefox since 2012/2013
Chrome Eating theWorld
2013: Blink
• Coincidence? Aliens?
• Enough market share to want better control
CEF
• June 1 2009
• You may not know what it is
• You probably have it on your system, at least once
• Steam
• Adobe Acrobat, Adobe Suite
• Battle.net
Node.js
• 27 May 2009
• V8
• libuv for async IO
Node services
Npm
• 12 January 2010
• Good, bad, mixed?
• Necessary evil
15 JULY 2013: ATOM
SHELL NOW ELECTRON
26 FEBRUARY 2014:
ATOM
PERFORMANCE
MATTERS: ATOM /
VSCODE
We love our Electron apps:
• Skype
• Slack
• Discord
• Teams
• WhatsApp
Skype
• Old Skype: 30 MB RAM
• New Skype: 300 MB RAM
• I’ve seen 3 GB ...
• But Skype developers are happier?
• Skype is more consistent across platforms/devices
JAVASCRIPT IS DEAD
Who still programs directly in JS?
New level above:
• CoffeeScript
• TypeScript
• Elm
• Kotlin
asm.js
• Sub-set of JS
• You will NOT write this yourself
• JS but FASTER
Emulation is here
• Games!
• More Games!
• History/Digital Preservation
SIMD.js
• Fun while it lasted, will be re-done in….
WebAssembly
• New bytecode for the web
• Stack-based virtual machine
• Goal: Near-Native Performance
• StillTODO:
• GarbageCollection / DOMAccess
WebAssembly – Use-cases
• Cryptominers
• Games/Emulation
• Hiding your source
• Breaks theView Source advantage
• But that’s already broken with complex frameworks
It’s not just v8
• V8
• JavaScriptCore
• Rhino ... Nashorn (Rhino but in German)
• SpiderMonkey
• Chakra
• GraalVM
WebAssembly source code:
• C,C++
• Rust
• Once GC happens maybe more interesting ones
DISCUSSION

Ten years later

Editor's Notes

  • #2 https://www.destroyallsoftware.com/talks/wat
  • #4 ECMAScript 3 was released in December 1999 and is the modern-day baseline for JavaScript
  • #5 Also, with the release of Microsoft Internet Explorer 5.0, Microsoft released the first version of XMLHttpRequest, giving birth to Ajax
  • #6 XML due to MSXML Also included XSLT for transforming data Both XML and XSLT mostly abandoned for JSON+JS
  • #7 DOJO slightly earlier MooTools slightly later
  • #8 https://www.slideshare.net/deathy/language-barriers slide 31 http://geekmeet.ro/timisoara/2009/02/03/program/
  • #12 http://blogoscoped.com/google-chrome/ Chrome actually for speed, retrofitted for minimal browser chrome/UI
  • #18 https://en.wikipedia.org/wiki/Private_browsing First one was Safari (yay Apple and privacy...)
  • #20 In December 2009, Google released beta versions of Chrome for OS X and Linux. Google Chrome 5.0, announced on May 25, 2010, was the first stable release to support all three platforms. https://gs.statcounter.com/browser-market-share#monthly-200901-201908
  • #21 Wow....see next graph... Blink once they had enough market share to want to control everything?
  • #22 https://en.wikipedia.org/wiki/Chromium_Embedded_Framework https://en.wikipedia.org/wiki/Chromium_Embedded_Framework#Applications_using_CEF
  • #23 Ryan Dahl,
  • #24 https://nodejs.org/en/docs/guides/getting-started-guide/
  • #25 Notable breakages https://en.wikipedia.org/wiki/Npm_(software)#Notable_breakages In March 2016, npm attracted press attention after a package called left-pad, which was a dependency of many popular JavaScript packages, was unpublished as the result of a naming dispute. Although the package was republished 3 hours later, it caused widespread disruption, leading npm to change its policies regarding unpublishing to prevent a similar event in the future. In February 2018, an issue was discovered in version 5.7.0 in which running sudo npm on Linux systems would change the ownership of system files, permanently breaking the operating system. In July 2018, the npm credentials of a maintainer of the popular eslint-scope package were compromised resulting in a malicious release of eslint-scope, version 3.7.2. The malicious code copies the npm credentials of the machine running eslint-scope and uploads them to the attacker. In November 2018, it was discovered that a malicious package had been added as a dependency to version 3.3.6 of the popular package event-stream. The malicious package, called flatmap-stream, contained an encrypted payload that steals bitcoins from certain applications. npm administrators responded by removing the offending package.
  • #32 December 2009 Rails... TypeScript: 1 Oct 2012
  • #33 TODO: Screenshot? Just show web sample
  • #34 Internet Arcade, MS DOS games
  • #38 JS Core: Safari Chakra: IE, but dead?