SlideShare ist ein Scribd-Unternehmen logo
1 von 36
JavaScript Insights
Tools for Improving JS Code Quality
Ariya Hidayat
@ariyahidayat HTML5 Developer Conference
San Francisco, October 22, 2013
Ann Robson
@arobson
car salesmanAriya
Ann
Why JavaScript code quality tools?
It’s how we work together.
And it’s how we level up.
varied...
JavaScript Tools
some to be developed…. ALL are open source
?
$0
$0
$0
$0
?
Power(ful) tools
Linter
Code Coverage
Cyclomatic Complexity
Linter
JSHint http://jshint.com
Enforces style guide
Team standards: .jshintrc
Code Coverage
Istanbul
http://ariya.ofilabs.com/2012/12/javascript-code-coverage-with-istanbul.html
http://gotwarlost.github.io/istanbul/
If you think JSLint hurts your feelings,
wait until you use Istanbul
@davglass from Yahoo!
Code Complexity
if (true) "foo"; else "bar";
Control Flow Graph
6 edges
6 nodes
1 exit
Cyclomatic Complexity = 2
JSComplexity http://jscomplexity.org
Complexity Visualization
https://github.com/jsoverson/platoPlato
Continuous Delivery for JavaScript Applications
Jarrod Overson
Room E-131 Wed 11.40am
Pre-commit Hooks
May include all tools previously mentioned:
- linting
- code coverage
- code complexity
Also,
- validation: esvalidate
- custom
Demos
Hard Thresholds on Code Coverage
http://ariya.ofilabs.com/2013/05/hard-thresholds-on-javascript-code-coverage.html
istanbul check-coverage --statement -5 --branch -3 --function 100
Pre-commit Hooks Escape!
git commit -n
Composable Tools
Stray logging Strict mode violations
Unused variables Nested ternary conditionals
Polluting variables Boolean traps
{
type: "Program",
body: [
{
type: "VariableDeclaration",
declarations: [
{
type: "VariableDeclarator",
id: {
type: "Identifier",
name: "answer"
},
init: {
type: "Literal",
value: 42,
raw: "42"
}
}
],
kind: "var"
}
]
}
Code → Syntax Tree
var answer = 42;
Esprima http://esprima.org
console.log? debugger?
function detect_console(code) {
function check(node) {
if (node.type === 'CallExpression') {
if (node.callee.type === 'MemberExpression') {
if (node.callee.object.name === 'console') {
alert('console call at line', node.loc.start.line);
}
}
}
}
var tree = esprima.parse(code, { loc: true });
estraverse.traverse(tree, { enter:check });
}
Strict Mode Validator
'use strict';
block = {
color: 'blue',
height: 20,
width: 10,
color: 'red'
};
Duplicate data property in object
literal not allowed in strict mode
http://ariya.ofilabs.com/2012/10/validating-strict-mode.html
Polluting Variables
var height;
// some fancy processing
heigth = 200;
to global
test.js:3
heigth = 200;
^
LeakError: global leak
detected: heigth
https://github.com/kesla/node-leaky
http://ariya.ofilabs.com/2012/11/polluting-and-unused-javascript-variables.html
Unused Variables
http://ariya.ofilabs.com/2012/11/polluting-and-unused-javascript-variables.html
test.js
height - on line
1
https://github.com/Kami/node-unused
var height;
// some fancy processing
heigth = 200;
Declared but not used
Nested Ternary Conditionals
var str = (age < 1) ? "baby" :
(age < 5) ? "toddler" :
(age < 18) ? "child": "adult";
http://ariya.ofilabs.com/2012/10/detecting-nested-ternary-conditionals.html
“Boolean Trap” Finder
Can you make up your mind? treeItem.setState(true, false);
Obfuscated choice var volumeSlider = new
Slider(false);
Double-negative
component.setHidden(false);
filter.setCaseInsensitive(false);
http://ariya.ofilabs.com/2012/06/detecting-boolean-traps-with-esprima.html
The more the merrier
event.initKeyEvent("keypress", true, true,
null, null, false, false, false, false, 9, 0);
Future linting
ESLint
How we might collect the tools we make
https://github.com/nzakas/eslint
Multi-layered Defense
Multi-Layer Defense
Editor: syntax validation, linting
The earlier the better.
Pre-commit hooks: validation, linting, unit tests, code complexity thresholds,
code coverage minimum
CI Server: validation, linting, unit tests, code complexity thresholds, code
coverage minimum
Code Flowers
Application Structure
MyApp.create('MyApp.Person', {
name: 'Joe Sixpack',
age: 42,
constructor: function(name) {},
walk: function(steps) {}
run: function(steps) {}
});
{
objectName: 'MyApp.Person',
functions: ['walk', 'run'],
properties: ['name', 'age']
}
Metadata
Final Words
Tools separate us
Good
Awesome
Even more
awesome
Thank you!!!
@ariyahidayat@arobson
www.htmlhive.com ariya.ofilabs.com
speakerdeck.com/ariya

Weitere ähnliche Inhalte

Andere mochten auch

Resume imran ansari ansari
Resume imran ansari ansariResume imran ansari ansari
Resume imran ansari ansariMd Imran Ansari
 
ResumePatGallegos NEW 2015
ResumePatGallegos NEW 2015ResumePatGallegos NEW 2015
ResumePatGallegos NEW 2015Patrick Gallegos
 
NFL Naming Rights Asset Analysis
NFL Naming Rights Asset AnalysisNFL Naming Rights Asset Analysis
NFL Naming Rights Asset Analysisvwanalytics
 
The Naperville Area Humane Society’s 2016 Black Cat Ball
The Naperville Area Humane Society’s 2016 Black Cat BallThe Naperville Area Humane Society’s 2016 Black Cat Ball
The Naperville Area Humane Society’s 2016 Black Cat BallDr. Todd Prince
 
presentation: Synthesis and characterization of nanocomposite polymer membran...
presentation: Synthesis and characterization of nanocomposite polymer membran...presentation: Synthesis and characterization of nanocomposite polymer membran...
presentation: Synthesis and characterization of nanocomposite polymer membran...Giannis Kantanoleon
 
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....Gedocorp | Гедокорп
 
Versions are evil – how to do without in your API
Versions are evil – how to do without in your APIVersions are evil – how to do without in your API
Versions are evil – how to do without in your APISebastien Lambla
 
Dicas para uma boa apresentação
Dicas para uma boa apresentaçãoDicas para uma boa apresentação
Dicas para uma boa apresentaçãoVinicius da Silva
 
Newsletter as an internal communication tool
Newsletter as an internal communication toolNewsletter as an internal communication tool
Newsletter as an internal communication toolArpiné Grigoryan
 
Internal Communications - Part 2
Internal Communications - Part 2Internal Communications - Part 2
Internal Communications - Part 2Estragon
 
Què pots fer per impulsar i promoure l’enginyeria
Què pots fer per impulsar i promoure l’enginyeriaQuè pots fer per impulsar i promoure l’enginyeria
Què pots fer per impulsar i promoure l’enginyeriaEnginyers de Telecomunicació
 

Andere mochten auch (16)

Resume imran ansari ansari
Resume imran ansari ansariResume imran ansari ansari
Resume imran ansari ansari
 
Alok Resume
Alok ResumeAlok Resume
Alok Resume
 
ResumePatGallegos NEW 2015
ResumePatGallegos NEW 2015ResumePatGallegos NEW 2015
ResumePatGallegos NEW 2015
 
NFL Naming Rights Asset Analysis
NFL Naming Rights Asset AnalysisNFL Naming Rights Asset Analysis
NFL Naming Rights Asset Analysis
 
The Naperville Area Humane Society’s 2016 Black Cat Ball
The Naperville Area Humane Society’s 2016 Black Cat BallThe Naperville Area Humane Society’s 2016 Black Cat Ball
The Naperville Area Humane Society’s 2016 Black Cat Ball
 
Ass c of UOA
Ass c of UOAAss c of UOA
Ass c of UOA
 
presentation: Synthesis and characterization of nanocomposite polymer membran...
presentation: Synthesis and characterization of nanocomposite polymer membran...presentation: Synthesis and characterization of nanocomposite polymer membran...
presentation: Synthesis and characterization of nanocomposite polymer membran...
 
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....
Федеральная программа «Ты – предприниматель» (Самарская область). Модуль-8....
 
GDE_JE_16.05
GDE_JE_16.05GDE_JE_16.05
GDE_JE_16.05
 
Versions are evil – how to do without in your API
Versions are evil – how to do without in your APIVersions are evil – how to do without in your API
Versions are evil – how to do without in your API
 
Mba 2nd sem 010616
Mba 2nd sem 010616Mba 2nd sem 010616
Mba 2nd sem 010616
 
Chapter 07
Chapter 07Chapter 07
Chapter 07
 
Dicas para uma boa apresentação
Dicas para uma boa apresentaçãoDicas para uma boa apresentação
Dicas para uma boa apresentação
 
Newsletter as an internal communication tool
Newsletter as an internal communication toolNewsletter as an internal communication tool
Newsletter as an internal communication tool
 
Internal Communications - Part 2
Internal Communications - Part 2Internal Communications - Part 2
Internal Communications - Part 2
 
Què pots fer per impulsar i promoure l’enginyeria
Què pots fer per impulsar i promoure l’enginyeriaQuè pots fer per impulsar i promoure l’enginyeria
Què pots fer per impulsar i promoure l’enginyeria
 

Ähnlich wie HTML5 Developer Conference 2013: Javascript Insights

Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018Codemotion
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008Association Paris-Web
 
Static Analysis in IDEA
Static Analysis in IDEAStatic Analysis in IDEA
Static Analysis in IDEAHamletDRC
 
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinJava User Group Latvia
 
GraalVM and MicroProfile - A Polyglot Microservices Solution
GraalVM and MicroProfile - A Polyglot Microservices SolutionGraalVM and MicroProfile - A Polyglot Microservices Solution
GraalVM and MicroProfile - A Polyglot Microservices SolutionRoberto Cortez
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsLewis Ardern
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationAndrew Rota
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Matt Raible
 
Scout xss csrf_security_presentation_chicago
Scout xss csrf_security_presentation_chicagoScout xss csrf_security_presentation_chicago
Scout xss csrf_security_presentation_chicagoknaddison
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...César Hernández
 
JavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersJavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersAK Deep Knowledge
 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyDavid Padbury
 

Ähnlich wie HTML5 Developer Conference 2013: Javascript Insights (20)

Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
Davide Cerbo - Kotlin loves React - Codemotion Milan 2018
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Static Analysis in IDEA
Static Analysis in IDEAStatic Analysis in IDEA
Static Analysis in IDEA
 
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
 
GraalVM and MicroProfile - A Polyglot Microservices Solution
GraalVM and MicroProfile - A Polyglot Microservices SolutionGraalVM and MicroProfile - A Polyglot Microservices Solution
GraalVM and MicroProfile - A Polyglot Microservices Solution
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript Applications
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
GWT Extreme!
GWT Extreme!GWT Extreme!
GWT Extreme!
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
lecture5
lecture5lecture5
lecture5
 
lecture5
lecture5lecture5
lecture5
 
Scout xss csrf_security_presentation_chicago
Scout xss csrf_security_presentation_chicagoScout xss csrf_security_presentation_chicago
Scout xss csrf_security_presentation_chicago
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
 
JavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersJavaScript Interview Questions with Answers
JavaScript Interview Questions with Answers
 
hacking with node.JS
hacking with node.JShacking with node.JS
hacking with node.JS
 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight Guy
 

Kürzlich hochgeladen

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 

Kürzlich hochgeladen (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 

HTML5 Developer Conference 2013: Javascript Insights