SlideShare a Scribd company logo
Adrian Pomilio / @adrianpomilio / www.pomil.io
JavaScript
the
Stack
Javascript - The Stack and Beyond
Javascript - The Stack and Beyond
Javascript - The Stack and Beyond
Javascript - The Stack and Beyond
JavaScript V8 Node
How we got to the stack…
Engines
SpiderMonkey
Chakra - JScript
Nashorn
JavaScriptCore
But there is one more…
Rhino
https://code.google.com/p/v8/
Fast Property Access
Dynamic Machine Code Generation
Efficient Garbage Collection
https://developers.google.com/v8/design
Server?
(aka not the browser)
http://nodejs.org/
https://npmjs.org/
package.json
Note on versioning
1 . 2 . 3
1 – Major Version
2 – Minor Version
3 – Patch Version
List your dependencies via: 1.2.x
http://blog.nodejitsu.com/package-dependencies-done-right
“Abstraction is one of the greatest
visionary tools ever invented by human
beings to imagine, decipher, and depict
the world.” Jerry Saltz
http://expressjs.com/
Data
Javascript - The Stack and Beyond
Workflows
http://yeoman.io/
“A workflow; a collection of tools and best
practices working in harmony to make
developing for the web even better.”
Grunt
Yo
Bower
Task Runners
Gruntfile.js – copy task
gulpfile.js – copy task
http://bower.io/
Client Package
Management
Bower is JUST a package manager
npm install –g bower
bower search …..
bower install …..
bower update …..
bower uninstall …..
bower ls / lookup / info / cache-clean
https://github.com/bower/bower
Testing
http://lm.eways.ph/5bm
Too huge for this preso!
http://jster.net/category/testing-frameworks
Deployment
Javascript - The Stack and Beyond
No disassemble!
JavaScript is alive!
http://nodecopter.com
https://github.com/rwaldron/johnny-five
@adrianpomilio / www.github.com/adrianpomilio / www.pomil.io

More Related Content

PDF
A Modest Introduction To Swift
PDF
Stop Worrying & Love the SQL - A Case Study
PDF
Regex Considered Harmful: Use Rosie Pattern Language Instead
PDF
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
PPTX
Deploying E.L.K stack w Puppet
PDF
Nodejs Explained with Examples
PDF
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
PDF
Apache Cassandra and Go
A Modest Introduction To Swift
Stop Worrying & Love the SQL - A Case Study
Regex Considered Harmful: Use Rosie Pattern Language Instead
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
Deploying E.L.K stack w Puppet
Nodejs Explained with Examples
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Apache Cassandra and Go

What's hot (20)

PDF
Debugging and Testing ES Systems
PPTX
How to Use Cryptography Properly: Common Mistakes People Make When Using Cry...
PDF
HTTP For the Good or the Bad
PDF
Modern tooling to assist with developing applications on FreeBSD
PDF
HTTP For the Good or the Bad - FSEC Edition
PPTX
The State of JavaScript (2015)
ODP
700 Tons of Code Later
PPTX
hacking with node.JS
KEY
PyCon US 2012 - State of WSGI 2
PDF
Building A Poor man’s Fir3Ey3 Mail Scanner
PDF
Our Puppet Story (GUUG FFG 2015)
PPTX
introduction to node.js
PDF
Docker Demo @ IuK Seminar
PDF
React & The Art of Managing Complexity
PDF
Production Readiness Strategies in an Automated World
PDF
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
PDF
ApacheConNA 2015: What's new in Apache httpd 2.4
PDF
Dexador Rises
PDF
ニコニコ動画を検索可能にしてみよう
KEY
PyCon AU 2012 - Debugging Live Python Web Applications
Debugging and Testing ES Systems
How to Use Cryptography Properly: Common Mistakes People Make When Using Cry...
HTTP For the Good or the Bad
Modern tooling to assist with developing applications on FreeBSD
HTTP For the Good or the Bad - FSEC Edition
The State of JavaScript (2015)
700 Tons of Code Later
hacking with node.JS
PyCon US 2012 - State of WSGI 2
Building A Poor man’s Fir3Ey3 Mail Scanner
Our Puppet Story (GUUG FFG 2015)
introduction to node.js
Docker Demo @ IuK Seminar
React & The Art of Managing Complexity
Production Readiness Strategies in an Automated World
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
ApacheConNA 2015: What's new in Apache httpd 2.4
Dexador Rises
ニコニコ動画を検索可能にしてみよう
PyCon AU 2012 - Debugging Live Python Web Applications
Ad

Similar to Javascript - The Stack and Beyond (20)

PPTX
Java script the-stack-revisited
PDF
Why NodeJS
PDF
Powerful tools for building web solutions
PDF
JavaScript Libraries: The Big Picture
PDF
End-to-end HTML5 APIs - The Geek Gathering 2013
PDF
Open Innovation means Open Source
PDF
Open innovation in software means Open Source (2011 remix)
PDF
Introduction to Node.js
PPTX
HAXTheWeb @ Apereo 19
PDF
Always on! Or not?
PDF
Open Innovation means Open Source
PDF
Always on! ... or not?
PDF
Get Ahead with HTML5 on Moible
PDF
AFUP Lorraine - Symfony Webpack Encore
PDF
Node.JS briefly introduced
PPTX
Node js introduction
PDF
JavaScript all the things! - FullStack 2017
PDF
Business of Front-end Web Development
PDF
W3 C Intro And Beyond - Eyal Sela
PDF
How to make Ajax Libraries work for you
Java script the-stack-revisited
Why NodeJS
Powerful tools for building web solutions
JavaScript Libraries: The Big Picture
End-to-end HTML5 APIs - The Geek Gathering 2013
Open Innovation means Open Source
Open innovation in software means Open Source (2011 remix)
Introduction to Node.js
HAXTheWeb @ Apereo 19
Always on! Or not?
Open Innovation means Open Source
Always on! ... or not?
Get Ahead with HTML5 on Moible
AFUP Lorraine - Symfony Webpack Encore
Node.JS briefly introduced
Node js introduction
JavaScript all the things! - FullStack 2017
Business of Front-end Web Development
W3 C Intro And Beyond - Eyal Sela
How to make Ajax Libraries work for you
Ad

More from All Things Open (20)

PDF
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
PPTX
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
PDF
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
PDF
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
PDF
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
PDF
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
PDF
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
PPTX
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
PDF
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
PDF
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
PPTX
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
PDF
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
PPTX
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
PDF
The Death of the Browser - Rachel-Lee Nabors, AgentQL
PDF
Making Operating System updates fast, easy, and safe
PDF
Reshaping the landscape of belonging to transform community
PDF
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
PDF
Integrating Diversity, Equity, and Inclusion into Product Design
PDF
The Open Source Ecosystem for eBPF in Kubernetes
PDF
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
The Death of the Browser - Rachel-Lee Nabors, AgentQL
Making Operating System updates fast, easy, and safe
Reshaping the landscape of belonging to transform community
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
Integrating Diversity, Equity, and Inclusion into Product Design
The Open Source Ecosystem for eBPF in Kubernetes
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
Machine Learning_overview_presentation.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Empathic Computing: Creating Shared Understanding
PPTX
sap open course for s4hana steps from ECC to s4
PPT
Teaching material agriculture food technology
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
A Presentation on Artificial Intelligence
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation_ Review paper, used for researhc scholars
Electronic commerce courselecture one. Pdf
Machine Learning_overview_presentation.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Machine learning based COVID-19 study performance prediction
Empathic Computing: Creating Shared Understanding
sap open course for s4hana steps from ECC to s4
Teaching material agriculture food technology
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
A comparative analysis of optical character recognition models for extracting...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
Assigned Numbers - 2025 - Bluetooth® Document
A Presentation on Artificial Intelligence
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Network Security Unit 5.pdf for BCA BBA.
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation_ Review paper, used for researhc scholars

Javascript - The Stack and Beyond

Editor's Notes

  • #4: The good old days
  • #5: Now the battle continues
  • #6: Chuck Norris didn’t use semicolons… Douglas got mad… Chuck Norris isn’t allowed to write JavaScript anymore…
  • #7: Discovery of Fire – Brenden Eich – JavaScript - what year? The printing press - Lars Bak – creator of V8 – what year? To the moon - Ryan Dahl – Node - what year?
  • #8: Engines…..
  • #9: SpiderMonkey – Mozilla – C/C++ - ships with Firefox Rhino – Mozilla – Java – embedded into Java applications to provide scripting JavaScriptCore (aka squirrell fish) – WebKit JS renderer… except for Chrome Chakra – IE9 – allows for GPU, JIT compiles on a separate CPU core in parrallel with the browser Nashorn – in Java 8
  • #10: V8 engine developed for Chrome Written in C++ (runs standalone or embedded into a C++ program)
  • #11: V8 does not use dynamic lookup on properties – it creates Hidden Classes behind the scenes Most engines use a dictionary lookup for properties V8 creates hidden classes behind the scenes, v8 changes its hidden class when a property is added – THINK MAPS That means a new hidden class is created for each new property… The trick is that when you create a new instance of the same class it uses the hidden classes, not creating new ones V8 compiles JavaScript directly into machine code when its first executed V8 employs a “stop-the-world” approach to garbage collection: This means program execution is stopped when garbage collection takes place Process only part of the object heap to minimize impact on application knows exact location of objects and pointers in memory Object heap is divided into two parts, space for new objects old space for objects surviving garbage collection.
  • #12: The Server…. And infrastructure.
  • #13: Node is influenced by Ruby EventMachine and Python Twisted But Node is different it presents the event loop as a language construct and not a library This is key as Node does not block on entering the Event Loop like the aforementioned influencers HTTP is a first class protocol You can have your CoffeeScript too… and TypeScript
  • #14: NPM is NOT node package manager, it’s never capitalized (geek humor: https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-) Powered by couchDB Registry url: npm has global installs but really wants you to do local. Golobal has caused issues, think Ruby and the need for RVM Npm install Npm json –help Node_modules - http://www.futurealoof.com/posts/nodemodules-in-git.html Npm-shrinkwrap (locks down dependency tree) Npm init Npm rm npm NPM as a build tool
  • #15: Package.JSON file Point out: Engines Dependencies Using ‘x’ for 1.0.x Talk about devDependencies and how its used for items you do not want installed in production. --- think tests
  • #16: Package.JSON file Point out: Engines Dependencies Using ‘x’ for 1.0.x
  • #17: It started with Node and creating an http server Then Connect Then Express It is just a layer of abstraction to help you create a web server to build applications easier. Jerry Saltz is a senior art critic, won a Pulitzer for Criticism
  • #18: Hapi js Express 4 removes the connect middleware The E in Mean Stack
  • #19: Data – storage Files, databases, etc… Relational and NoSQL
  • #20: MongoDB CouchDB Redis And More …
  • #22: A workflow A collection of tools and best practices
  • #23: Yo – is the scaffolding tool Grunt – used to test and preview – they built special features into it Bower – dependency management…
  • #24: GruntJS Build tool Task Runner – think ant, composer (maybe) Gulp Streams Code over configuration Broccoli Filesystem is the API Allows for chaining of plugins (Grunt does not) Backend agnostic
  • #25: Gulp – Code over configuration Uses STREAMS so it doesn’t write intermediary files to disk Npm install –g gulp Npm install –save-dev gulp Create a gulpfile.js at the root of the project
  • #26: Gulp – Code over configuration Uses STREAMS so it doesn’t write intermediary files to disk BUT with streams PLUGINS have to worry about race conditions and deadlock GULP has only 5 functions to learn .src – creates a readable stream .dest – creates a writable stream Only provides streams and a basic task system Npm install –g gulp Npm install –save-dev gulp Create a gulpfile.js at the root of the project
  • #27: Manage dependencies Manages any package (JavaScript, CSS, HTML) any third party code
  • #28: To install it: npm install –g bower Search: wo a keyword and you get all the packages, narrow it down with a package Bower install jquery Can include version numbers Can install other things too Install your own package: bower install ~/dev/mylibrary Saves a copy to ~/.bower/<package>
  • #30: Protractor Mocha On and on Test Runners vs Test Suites
  • #33: Hardware – JavaScript is showing up as a native language on many hardware devices, and there are dozens of ports going on.
  • #34: Embedded systems Flight Robotics https://www.youtube.com/watch?v=1xtvRCmk3qY