SlideShare une entreprise Scribd logo
1  sur  19
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge
Digital Marketing Analytics with a Competitive Edge
Seth Pollack
Async Node Programming with
Streamline.js
February 17, 2015
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge2
 if you use Node, you’d be nuts not to evaluate Streamline
 codebase ~1/3 smaller
 significant overall productivity gain (1.5x?)
 more fun!
My Pitch: Node + Streamline
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge3
 Why do you love Node?
Ask Yourselves
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge4
 Why do you love Node?
 What don’t you like about Node?
Ask Yourselves
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge5
 Key decision point for me is productivity
 Node’s simple concurrency model is a win
 JavaScript (expressiveness; one language everywhere) is a win
My “Why Node?”
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge6
 Control flow with callbacks is clunky
 Error handling is complex
 Correct callback behavior is easy to get wrong
Node-body’s Perfect
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge7
My Path to Enlightenment
Node Rocks!
Control flow, ouch
Async lib!
Still painful…
Streamline!
Great Success!!!
Sadness….
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge8
Imagine If…
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge9
 Streamline lets you use standard control flow primitives for async
work
 You write your control flow as if async functions were sync, and pass
a special token (“_”) as the callback parameter
 Success results are presented as the return value of the function;
error response or exceptions are presented as a thrown exception
What is Streamline?
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge10
 Example 1: user login
 [over to the IDE]
Code example 1
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge11
 Simple control flow
 Unified error handling
 No need for manual callback invocation
 PLUS…
 JS tools work great
 Better debugging
 Logical stack trace
 No wrappers
 Transparent inter-op
Streamline FTW
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge12
 Example 2: processing data
 [over to the IDE]
Code example 2
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge13
 Streamline is its own language, extremely similar to JavaScript
 Streamline source JIT-ed into native JavaScript
 Can target various back-ends (callbacks, fibers, generators)
 Streamline yields and resumes on your behalf
 Under the covers, the Node event loop continues to run; no blocking
or busy-waiting occurs
Under the Hood
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge14
 Be sure to name your files *._js
 You’ll have to use a different variable name than “_” for the
underscore library
 The magic underscore token isn’t a function, it’s a keyword
 It’s important to understand that the underscore means yield, and
when execution hits it, the event loop may run
 Fibers backend to Streamline has best combo of performance and
developer experience
 Many more goodies exist in Streamline that I haven’t covered here
Tips & Tricks
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge15
 Some runtime overhead (very small slowdown, a bit more memory
usage)
• Extra work is only on async calls, we haven’t found it to be material
 Since Streamline needs to keep up to date with JavaScript language
enhancements (current thinking is that new ES6 language features
to be handled by integrating 6to5)
 With ES7 async/await, we may not need Streamline anymore. I can’t
wait ;-)
Streamline Drawbacks
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge16
 Give Streamline a try!
Conclusion
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge17
Questions
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge18
 Streamline repo: https://github.com/Sage/streamlinejs
 Streamline FAQ:
https://github.com/Sage/streamlinejs/blob/master/FAQ.md
 Streamline mailing list:
https://groups.google.com/forum/#!forum/streamlinejs
 My blog post on Streamline: http://blog.rivaliq.com/develop-double-
time-node-plus-streamline/
 Streamline perf tests: https://gist.github.com/bjouhier/5554200
 Bruno Jouhier’s blog: https://bjouhier.wordpress.com/
References
www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge
Digital Marketing Analytics with a Competitive Edge
Thank You

Contenu connexe

Tendances

Leveraging Mobile Apps as a Marketing Channel
Leveraging Mobile Apps as a Marketing Channel Leveraging Mobile Apps as a Marketing Channel
Leveraging Mobile Apps as a Marketing Channel Marketo
 
3 forrester - tag management state of the union
3   forrester - tag management state of the union3   forrester - tag management state of the union
3 forrester - tag management state of the unionEnsighten
 
Predictive Lead Scoring: How to Turn Data into Revenue
Predictive Lead Scoring: How to Turn Data into RevenuePredictive Lead Scoring: How to Turn Data into Revenue
Predictive Lead Scoring: How to Turn Data into RevenueMarketo
 
Tag Management: The Glue that Brings IT and Marketing Together
Tag Management: The Glue that Brings IT and Marketing TogetherTag Management: The Glue that Brings IT and Marketing Together
Tag Management: The Glue that Brings IT and Marketing TogetherEnsighten
 
Find the Right Marketing Automation Solution
Find the Right Marketing Automation SolutionFind the Right Marketing Automation Solution
Find the Right Marketing Automation SolutionMarketo
 
Infuse Marketing Automation with Dynamic Purchase Intent Data from Bombora
Infuse Marketing Automation with Dynamic Purchase Intent Data from BomboraInfuse Marketing Automation with Dynamic Purchase Intent Data from Bombora
Infuse Marketing Automation with Dynamic Purchase Intent Data from BomboraMarketo
 
Navigating Modern Marketing, Digital Transformation and Innovation
Navigating Modern Marketing, Digital Transformation and InnovationNavigating Modern Marketing, Digital Transformation and Innovation
Navigating Modern Marketing, Digital Transformation and InnovationFred Isbell
 
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce Drive Your B2B Digital Transformation and Revenue with SaaS Commerce
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce CloudCraze
 
Hacking Marketing: The Amazing Convergence of Marketing & Software
Hacking Marketing: The Amazing Convergence of Marketing & SoftwareHacking Marketing: The Amazing Convergence of Marketing & Software
Hacking Marketing: The Amazing Convergence of Marketing & SoftwareEnsighten
 
9 web analytics demystified - turning it up to 11 advanced website optimiza...
9   web analytics demystified - turning it up to 11 advanced website optimiza...9   web analytics demystified - turning it up to 11 advanced website optimiza...
9 web analytics demystified - turning it up to 11 advanced website optimiza...Ensighten
 
Conversion Optimization: Fighting the Most Common Roadblocks
Conversion Optimization: Fighting the Most Common RoadblocksConversion Optimization: Fighting the Most Common Roadblocks
Conversion Optimization: Fighting the Most Common RoadblocksiProspect Canada
 
The marketing automation manual part 1
The marketing automation manual part 1The marketing automation manual part 1
The marketing automation manual part 1Tocquigny
 
Predicting the Top Web Personalization Use Cases in 2016
Predicting the Top Web Personalization Use Cases in 2016Predicting the Top Web Personalization Use Cases in 2016
Predicting the Top Web Personalization Use Cases in 2016Marketo
 
Hacking Marketing: Marketing Management in a Software World
Hacking Marketing: Marketing Management in a Software WorldHacking Marketing: Marketing Management in a Software World
Hacking Marketing: Marketing Management in a Software WorldEnsighten
 
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer View
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer ViewData-Driven Marketing: Transform B2B Data For A 360-Degree Customer View
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer ViewG3 Communications
 
Optimize Your Funnel with Account-Based Marketing
Optimize Your Funnel with Account-Based MarketingOptimize Your Funnel with Account-Based Marketing
Optimize Your Funnel with Account-Based MarketingMarketo
 
Getting To What Matters: Driving Conversions Through B2B Personalization
Getting To What Matters: Driving Conversions Through B2B Personalization Getting To What Matters: Driving Conversions Through B2B Personalization
Getting To What Matters: Driving Conversions Through B2B Personalization G3 Communications
 
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & Lattice
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & LatticeAccount-Based Marketing: Scaling B2B’s New Strategy with Marketo & Lattice
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & LatticeMarketo
 
Content Marketing Boot Camp
Content Marketing Boot CampContent Marketing Boot Camp
Content Marketing Boot CampMarketo
 

Tendances (20)

Leveraging Mobile Apps as a Marketing Channel
Leveraging Mobile Apps as a Marketing Channel Leveraging Mobile Apps as a Marketing Channel
Leveraging Mobile Apps as a Marketing Channel
 
3 forrester - tag management state of the union
3   forrester - tag management state of the union3   forrester - tag management state of the union
3 forrester - tag management state of the union
 
Predictive Lead Scoring: How to Turn Data into Revenue
Predictive Lead Scoring: How to Turn Data into RevenuePredictive Lead Scoring: How to Turn Data into Revenue
Predictive Lead Scoring: How to Turn Data into Revenue
 
Tag Management: The Glue that Brings IT and Marketing Together
Tag Management: The Glue that Brings IT and Marketing TogetherTag Management: The Glue that Brings IT and Marketing Together
Tag Management: The Glue that Brings IT and Marketing Together
 
Find the Right Marketing Automation Solution
Find the Right Marketing Automation SolutionFind the Right Marketing Automation Solution
Find the Right Marketing Automation Solution
 
Infuse Marketing Automation with Dynamic Purchase Intent Data from Bombora
Infuse Marketing Automation with Dynamic Purchase Intent Data from BomboraInfuse Marketing Automation with Dynamic Purchase Intent Data from Bombora
Infuse Marketing Automation with Dynamic Purchase Intent Data from Bombora
 
Navigating Modern Marketing, Digital Transformation and Innovation
Navigating Modern Marketing, Digital Transformation and InnovationNavigating Modern Marketing, Digital Transformation and Innovation
Navigating Modern Marketing, Digital Transformation and Innovation
 
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce Drive Your B2B Digital Transformation and Revenue with SaaS Commerce
Drive Your B2B Digital Transformation and Revenue with SaaS Commerce
 
Hacking Marketing: The Amazing Convergence of Marketing & Software
Hacking Marketing: The Amazing Convergence of Marketing & SoftwareHacking Marketing: The Amazing Convergence of Marketing & Software
Hacking Marketing: The Amazing Convergence of Marketing & Software
 
9 web analytics demystified - turning it up to 11 advanced website optimiza...
9   web analytics demystified - turning it up to 11 advanced website optimiza...9   web analytics demystified - turning it up to 11 advanced website optimiza...
9 web analytics demystified - turning it up to 11 advanced website optimiza...
 
Conversion Optimization: Fighting the Most Common Roadblocks
Conversion Optimization: Fighting the Most Common RoadblocksConversion Optimization: Fighting the Most Common Roadblocks
Conversion Optimization: Fighting the Most Common Roadblocks
 
The marketing automation manual part 1
The marketing automation manual part 1The marketing automation manual part 1
The marketing automation manual part 1
 
Future marketing!
Future marketing!Future marketing!
Future marketing!
 
Predicting the Top Web Personalization Use Cases in 2016
Predicting the Top Web Personalization Use Cases in 2016Predicting the Top Web Personalization Use Cases in 2016
Predicting the Top Web Personalization Use Cases in 2016
 
Hacking Marketing: Marketing Management in a Software World
Hacking Marketing: Marketing Management in a Software WorldHacking Marketing: Marketing Management in a Software World
Hacking Marketing: Marketing Management in a Software World
 
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer View
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer ViewData-Driven Marketing: Transform B2B Data For A 360-Degree Customer View
Data-Driven Marketing: Transform B2B Data For A 360-Degree Customer View
 
Optimize Your Funnel with Account-Based Marketing
Optimize Your Funnel with Account-Based MarketingOptimize Your Funnel with Account-Based Marketing
Optimize Your Funnel with Account-Based Marketing
 
Getting To What Matters: Driving Conversions Through B2B Personalization
Getting To What Matters: Driving Conversions Through B2B Personalization Getting To What Matters: Driving Conversions Through B2B Personalization
Getting To What Matters: Driving Conversions Through B2B Personalization
 
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & Lattice
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & LatticeAccount-Based Marketing: Scaling B2B’s New Strategy with Marketo & Lattice
Account-Based Marketing: Scaling B2B’s New Strategy with Marketo & Lattice
 
Content Marketing Boot Camp
Content Marketing Boot CampContent Marketing Boot Camp
Content Marketing Boot Camp
 

Similaire à Streamline.js and Node

Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...
Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...
Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...Meet Magento Italy
 
Google Analytics 101 Webinar
Google Analytics 101 WebinarGoogle Analytics 101 Webinar
Google Analytics 101 Webinarwebucatordemo
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at MyplanetDaniel Zivkovic
 
MuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led ConnectivityMuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led ConnectivityJitendra Bafna
 
Apache Flink Adoption at Shopify
Apache Flink Adoption at ShopifyApache Flink Adoption at Shopify
Apache Flink Adoption at ShopifyYaroslav Tkachenko
 
From Data Science to MLOps
From Data Science to MLOpsFrom Data Science to MLOps
From Data Science to MLOpsCarl W. Handlin
 
An In-Depth Look at SAP SQL Anywhere Performance Features
An In-Depth Look at SAP SQL Anywhere Performance FeaturesAn In-Depth Look at SAP SQL Anywhere Performance Features
An In-Depth Look at SAP SQL Anywhere Performance FeaturesSAP Technology
 
Toronto Anypoint DataGraph (1).pptx
Toronto Anypoint DataGraph (1).pptxToronto Anypoint DataGraph (1).pptx
Toronto Anypoint DataGraph (1).pptxAnurag Dwivedi
 
Globalize Software Products with Zero Investment
Globalize Software Products with Zero InvestmentGlobalize Software Products with Zero Investment
Globalize Software Products with Zero Investmentpjain65
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"LogeekNightUkraine
 
Accelerate ML Deployment with H2O Driverless AI on AWS
Accelerate ML Deployment with H2O Driverless AI on AWSAccelerate ML Deployment with H2O Driverless AI on AWS
Accelerate ML Deployment with H2O Driverless AI on AWSSri Ambati
 
BDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterBDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterCarlos Ble
 
01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Projectharsh mehta
 
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...Edge AI and Vision Alliance
 
Back to Basics: Embedded Analytics 101
Back to Basics: Embedded Analytics 101Back to Basics: Embedded Analytics 101
Back to Basics: Embedded Analytics 101TIBCO Jaspersoft
 
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & ProcessesRakuten Group, Inc.
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Veselin Pizurica
 
A differnt Type of Supermarket Delivery
A differnt Type of Supermarket DeliveryA differnt Type of Supermarket Delivery
A differnt Type of Supermarket DeliveryThoughtworks
 
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...Spark Solutions
 
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanel
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanelA Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanel
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanelData Science Club
 

Similaire à Streamline.js and Node (20)

Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...
Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...
Guillaume Thibaux - Can we win the fight against performance bottlenecks? Les...
 
Google Analytics 101 Webinar
Google Analytics 101 WebinarGoogle Analytics 101 Webinar
Google Analytics 101 Webinar
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at Myplanet
 
MuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led ConnectivityMuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
 
Apache Flink Adoption at Shopify
Apache Flink Adoption at ShopifyApache Flink Adoption at Shopify
Apache Flink Adoption at Shopify
 
From Data Science to MLOps
From Data Science to MLOpsFrom Data Science to MLOps
From Data Science to MLOps
 
An In-Depth Look at SAP SQL Anywhere Performance Features
An In-Depth Look at SAP SQL Anywhere Performance FeaturesAn In-Depth Look at SAP SQL Anywhere Performance Features
An In-Depth Look at SAP SQL Anywhere Performance Features
 
Toronto Anypoint DataGraph (1).pptx
Toronto Anypoint DataGraph (1).pptxToronto Anypoint DataGraph (1).pptx
Toronto Anypoint DataGraph (1).pptx
 
Globalize Software Products with Zero Investment
Globalize Software Products with Zero InvestmentGlobalize Software Products with Zero Investment
Globalize Software Products with Zero Investment
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
 
Accelerate ML Deployment with H2O Driverless AI on AWS
Accelerate ML Deployment with H2O Driverless AI on AWSAccelerate ML Deployment with H2O Driverless AI on AWS
Accelerate ML Deployment with H2O Driverless AI on AWS
 
BDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills MatterBDD for RIAs with JavaScript - Skills Matter
BDD for RIAs with JavaScript - Skills Matter
 
01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Project
 
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...
“An Industry Standard Performance Benchmark Suite for Machine Learning,” a Pr...
 
Back to Basics: Embedded Analytics 101
Back to Basics: Embedded Analytics 101Back to Basics: Embedded Analytics 101
Back to Basics: Embedded Analytics 101
 
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes
[Rakuten TechConf2014] [C-6] Japan ICHIBA Daily Work - Tools & Processes
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?
 
A differnt Type of Supermarket Delivery
A differnt Type of Supermarket DeliveryA differnt Type of Supermarket Delivery
A differnt Type of Supermarket Delivery
 
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store pr...
 
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanel
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanelA Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanel
A Big (Query) Frog in a Small Pond, Jakub Motyl, BuffPanel
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
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 - 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
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%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
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%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
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%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
 
%+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 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 

Dernier (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
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...
 
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
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%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
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%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
 
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...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%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
 
%+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 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 

Streamline.js and Node

  • 1. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge Digital Marketing Analytics with a Competitive Edge Seth Pollack Async Node Programming with Streamline.js February 17, 2015
  • 2. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge2  if you use Node, you’d be nuts not to evaluate Streamline  codebase ~1/3 smaller  significant overall productivity gain (1.5x?)  more fun! My Pitch: Node + Streamline
  • 3. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge3  Why do you love Node? Ask Yourselves
  • 4. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge4  Why do you love Node?  What don’t you like about Node? Ask Yourselves
  • 5. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge5  Key decision point for me is productivity  Node’s simple concurrency model is a win  JavaScript (expressiveness; one language everywhere) is a win My “Why Node?”
  • 6. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge6  Control flow with callbacks is clunky  Error handling is complex  Correct callback behavior is easy to get wrong Node-body’s Perfect
  • 7. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge7 My Path to Enlightenment Node Rocks! Control flow, ouch Async lib! Still painful… Streamline! Great Success!!! Sadness….
  • 8. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge8 Imagine If…
  • 9. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge9  Streamline lets you use standard control flow primitives for async work  You write your control flow as if async functions were sync, and pass a special token (“_”) as the callback parameter  Success results are presented as the return value of the function; error response or exceptions are presented as a thrown exception What is Streamline?
  • 10. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge10  Example 1: user login  [over to the IDE] Code example 1
  • 11. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge11  Simple control flow  Unified error handling  No need for manual callback invocation  PLUS…  JS tools work great  Better debugging  Logical stack trace  No wrappers  Transparent inter-op Streamline FTW
  • 12. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge12  Example 2: processing data  [over to the IDE] Code example 2
  • 13. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge13  Streamline is its own language, extremely similar to JavaScript  Streamline source JIT-ed into native JavaScript  Can target various back-ends (callbacks, fibers, generators)  Streamline yields and resumes on your behalf  Under the covers, the Node event loop continues to run; no blocking or busy-waiting occurs Under the Hood
  • 14. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge14  Be sure to name your files *._js  You’ll have to use a different variable name than “_” for the underscore library  The magic underscore token isn’t a function, it’s a keyword  It’s important to understand that the underscore means yield, and when execution hits it, the event loop may run  Fibers backend to Streamline has best combo of performance and developer experience  Many more goodies exist in Streamline that I haven’t covered here Tips & Tricks
  • 15. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge15  Some runtime overhead (very small slowdown, a bit more memory usage) • Extra work is only on async calls, we haven’t found it to be material  Since Streamline needs to keep up to date with JavaScript language enhancements (current thinking is that new ES6 language features to be handled by integrating 6to5)  With ES7 async/await, we may not need Streamline anymore. I can’t wait ;-) Streamline Drawbacks
  • 16. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge16  Give Streamline a try! Conclusion
  • 17. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge17 Questions
  • 18. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge18  Streamline repo: https://github.com/Sage/streamlinejs  Streamline FAQ: https://github.com/Sage/streamlinejs/blob/master/FAQ.md  Streamline mailing list: https://groups.google.com/forum/#!forum/streamlinejs  My blog post on Streamline: http://blog.rivaliq.com/develop-double- time-node-plus-streamline/  Streamline perf tests: https://gist.github.com/bjouhier/5554200  Bruno Jouhier’s blog: https://bjouhier.wordpress.com/ References
  • 19. www.RivalIQ.comDigital Marketing Analytics with a Competitive Edge Digital Marketing Analytics with a Competitive Edge Thank You