SlideShare une entreprise Scribd logo
1  sur  100
Télécharger pour lire hors ligne
Discover Pinterest Engineering
Agenda
!
Mobile & Growth:
Monetization & Data:
Deploying & Shipping Code:
Wendy & Dannie
Pawel
Chris & Jeremy
Wendy Lu
Mobile
Scaling User Education on Mobile
The Experience Framework
Dannie Chu
Growth
User Education
Motivation?
User Education leads to Engagement
First Pin Education
Challenges
1. Preserve a great user experience
Conflicting Education
Never-ending Stream of Nags
Nag that never goes away
2. Targeting
Are you a new user? Invite some friends!
Do you have an empty homefeed? Make it better!
3. Rapid Experimentation
Experiment with messaging w/o requiring a release
4. Keep the client code clean
Solution?
The Experience Framework
Conflicting Experiences
Experiences and Placements
Nag Placement Home view Placement
Pin Tutorial Card
Placement
AB Experimentation, Simple Client Code
Experiences are delivered to the client at runtime
Experience Framework
Decision Engine
Configuration
Handlers
Admin
DashboardAPI
Servers
AB Experiments
Framework Kafka
(logging)
HBase
(User States, 

Experience States)
API Servers
API ServersCascading/
MapRed
User State

Batch Loader
Clients
SDK
SDK
What
experience
should the
user see?
Experience Framework
Deep Dive: Nags
What are nags?
•Important information which we
occasionally display at the top of
a user’s feed

•Can be a Call to Action “Confirm
your email” or an announcement
“You can now add a map to any
board!”
Enter: The Experience Framework
Enter: The Experience Framework
•Each time we reload the home
feed, ask the experience
framework: What should I show
in this nag?
Single Nag Manager that relies on the experience
framework to give it the contents to render
Nag Manager
•Experiment with nag messaging, call to actions, images

•Add any new nag dynamically, controlled from the backend.

•Cool-down management - should not see more than one nag in a set
period of time
What does that nag data look like?
Handling actions
"bg_img_url_2x" = "http://mobile-
assets.pinterest.com/iphone/nags/invite-
mail@2x.png"
"title_text" = "Pinspire your friends!"
"detailed_text" = "Know someone who'd like
Pinterest? Invite them along."
"button1_text" = "No, Thanks”!
"button1_uri" = ""!
"button2_text" = "Invite Friends"!
"button2_uri" = "pinterest://invite_friends"
Handling Actions
•All initialization and presentation of view controllers is handled through a
central “Navigation Manager.”

• Centralizes code to create and present view controllers

• Consistency to other platforms for deep links

•Allows dynamic insertion of nags from the backend without having to write
new client code and submit a new release
[[NavigationManager sharedManager]
handleURL:[NSURL
URLWithString:@“pinterest://
invite_friends]];
Navigation Manager
self.presentationDelegate
presentInviteFriends
Deep Dive: New User Experience
New User Experience
What is NUX?
!
•The set of initial tutorials and education presented to a user after they
register
Personalize a user’s content immediately after signup
Connect with Friends Choose Interests
Next, teach users how to Pin
Experiment between classic user ed and NUX
Experiment between classic user ed and NUX
•When doing experiments where we need to call the network to get the
user’s treatment group, need to make sure we’re not adding perceived
latency

• Structure view controllers in a way that you can asynchronously load in the modules
dependent on the treatment group

• If need to transition to different view controllers, set a time out in which we transition
to the control treatment

• “Be Fast or Fail Fast”
1 step vs. 2 steps vs. 3 steps
Experiment with different versions of NUX
Experiment with different versions of NUX
•Backend controls all strings, allowing us to dynamically experiment with
different text (Messaging, titles, calls-to-action)
steps = (
{
"continue_button_text" = Continue;
"detailed_text" = "Tap a network to find people who share your interests.";
"follow_button_text" = "Follow selected people";
step = 1;
"title_text" = "First things first";
"total_steps" = 2;
},
{
"completion_message" = "Finding Pins for you...";
"continue_button_text" = "Tap at least {0} more to continue";
"detailed_text" = "Tap whatever you're interested in these days.";
"finish_text" = Finish;
"num_interests" = 5;
"skip_text" = "Pinterest is much more interesting when you tell us what you like.";
step = 2;
"title_text" = "Pick 5 interests";
"total_steps" = 2;
}
);
After signup, request all data for NUX
Enter: Experience Framework
Supports dynamic number and order of steps
NUXViewController : UINavigationController
•Maps an array of display data to an array of view controllers









•Protocol method advanceToNextStep called by each child view controller

• Checks the array it keeps for the next view controller to push
JSON dict for Intro
JSON dict for Friend Selector
JSON dict for Interests Selector
NUXIntroViewController
NUXConnectViewController
NUXInterestsViewController
Wins from Experience Framework
•Single place in the backend that manages all experiences for all platforms

•Dynamically trigger display of content

•Conflict resolution for educations that touch the same views

•Experiment with flows, messaging, and images
engineering.pinterest.com
Pawel Garbacki
Software Engineer, Monetization
Pinterest Secor
Zero-data-loss log persistence service
Pinterest is a data driven company
•Data matters

• 100+ experiments active at a given point in time

• 1500+ tracked metrics

• 200+ log types
We produce a lot of data
•We produce a lot of data

• PBs of data in S3, growing by Tens of TB a day

• Hundreds of production hadoop jobs, processing about half a PB of data each day
Singer 

(logging
agent)
App
Data pipeline
Local
Disk
S3Kafka 

(log collector)
Secor 

(log saver)
Storm
(realtime
stats)
Hive (hadoop
analytics)
Redshift (ad
hoc queries)
Singer 

(logging
agent)
App
Local
Disk
S3
Kafka (log
collector)
Secor (log
saver)
Storm
(realtime
stats)
Hive (hadoop
analytics)
Redshift (ad
hoc queries)
Data pipeline
20B messages/day
Kafka 101
•Distributed pub-sub service

•Designed for high throughput
Producer Producer Producer
Consumer Consumer Consumer
Kafka
cluster
Anatomy of a topic
•Topic is a category to which messages are published

•Partition is a ‘shard’ of a topic controlling the level of consumption parallelism

•Messages are assigned unique identifiers called offsets
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 11 12
Writes
Partition 0
Partition 1
Partition 2
Save the day
•Kafka is optimized for local writes

•Local disk capacity is good for a few
days worth of data

•Data needs to be saved (at least) daily
to long term storage - Amazon S3
How soon is “eventually”
•Amazon S3 is a cloud file system

•Eventual consistency model

• No guarantees on when uploaded data will become visible to the readers

• No monotonicity - data available in the past may magically disappear
Secor design guidelines
•Objectives:

• Persist Kafka logs to S3

• Cause no data loss

• Work properly with eventual consistency model

•Properties:

• Horizontal scalability

• Fault tolerance

• Customizability
No-S3-reads principle
•Secor never reads data from S3

• Lightweight metadata is stored in strongly
consistent state repository

•Strategic choice of file names

• s3n://logs/<topic>/
<generation>_<partition>_<start_offset>

• <generation> represents software compatibility
version

• Inconsistencies introduced by consumer failures
get fixed automatically by file overwrites
Date clustering
•Data processing tools rely on date-
partitioned directory structure

• s3n://logs/event/dt=2014-04-04/

•Timestamps extracted from messages on
the fly

•Support for pluggable parsers for thrift,
json, etc.
https://github.com/pinterest/secor
Chris Danford (@chrisdanford)
Jeremy Stanley (@rouxbot)
Web Team
From Development to Production
The life of web features
Develop Review Deploy Measure
Develop Review Deploy Measure
Developing - Ideal state
•able to iterate quickly

•easy errors caught automatically

•easy-to-understand and powerful abstractions
Fast iteration
Developing
•Build tasks and dependencies modeled as a graph

•“cumberbatch” watches for changes of file contents

•“orchestrator” knows tasks and dependencies

•build the minimum tasks to heal damage in the graph

•maximize parallelization of tasks

•built on Grunt - access to large library of build tasks
Self-healing build graph
sprite/*.png
sprite task
sprite.png sprite.scss
Sass task
component/*.scss
components.css
imagemin task Autoprefixer task CSSlint task
Self-healing build graph
sprite/*.png
sprite task
sprite.png sprite.scss
Sass task
component/*.scss
components.css
imagemin task Autoprefixer task CSSlint task
Self-healing build graph
sprite/*.png
sprite task
sprite.png sprite.scss
Sass task
component/*.scss
components.css
imagemin task Autoprefixer task CSSlint task
Self-healing build graph, example 2
sprite/*.png
sprite task
sprite.png sprite.scss
Sass task
component/*.scss
components.css
imagemin task Autoprefixer task CSSlint task
Self-healing build graph, example 2
sprite/*.png
sprite task
sprite.png sprite.scss
Sass task
component/*.scss
components.css
imagemin task Autoprefixer task CSSlint task
Linting
Developing
•catches easy bugs

•enforces consistent style

•pyflakes

•pep8

•jshint

•CSSLint

•custom RegEx linting
RegEx-based linter
$(‘.item’).addClass(‘selected’);
BoardPicker.js
this.$(‘.item’).addClass(‘selected’);
Static analysis / type safety
Developing
•Google Closure Compiler

•template static analysis

• validation of template inheritance

• extract used option variable names

•Thrift clients for service calls (Python) and shared constants (JavaScript)
Closure Compiler - type safety
Generated constants from Thrift
Abstractions
Developing
•component framework

• styles are scoped to the component

• DOM access is scoped to the component’s DOM

• “events up, methods down” 

• scaffolding script

•live component catalog - discovery of existing components

•autoprefixer, spriting - remove boilerplate
component catalog
spriting
.thumbsUpButton {!
@include inline-image(‘sprites/main/thumbUp');!
}
Usage
Develop Review Deploy Measure
Reviewing - Ideal state
•the most-relevant person is reviewing changes

•integration-type issues are caught
Code Reviews
Reviewing
•local test runner script runs Jasmine and Node tests parallelized

•“PR watcher” tool - visibility of relevant PRs

•code review process - R+, E+
Parallelized Jasmine tests in PhantomJS
Github Watcher tool
Integration problems are caught
Reviewing
•PRs trigger a build and tests - 3 minutes

•latest.pinterest.com is continuously deployed from “head”

•Selenium integration tests run against every deploy
Pull request builds
Selenium
Develop Review Deploy Measure
Deploying - Ideal state
•code deploys are invisible to users

•frequent and non-disruptive to developers

•immediate rollback when there’s a problem
User experience
Deploying
•stickiness to a version

•flip nearly instantaneously between builds

• reduce version thrashing

• worry less about (style mismatches, JS errors due to data format mismatch with
server)

•asset versioning
Serving multiple application versions
new!
sessions
old!
sticky!
sessions
A B
all!
sessions
B
1 2
Serving multiple application versions, cont’d
3 4
new!
canary!
sessions
all!
non-canary!
sessions
B C
new!
sessions
old!
sticky!
sessions
B C
Asset versioning
logo.png
rename
hash file!
contents
logo.59aa9183.png
bundle.css
background-image: logo.png
background-image: logo.59aa9183.png
update references
bundle.css
bundle.907389d8.css
rename
hash file!
contents
When things go wrong
Deploying
•experiments dashboard - turn off experiments instantaneously

•version rollback is nearly instantaneous
Develop Review Deploy Measure
Monitoring health
A/B Dashboard
•A/B dashboard key metrics

•Sentry 

•Stats dashboard

•Alarms - Monit, PagerDuty
A/B Dashboard
Sentry
Sentry error emails
Results
Results
•5 engineers on web team

•all teams at Pinterest developing their own web features on our platform

•components re-used across teams

•2 scheduled deploys a day

•anomalies in key metrics surfaced immediately

•100s of simultaneous experiments
F8 tech talk_pinterest_v4

Contenu connexe

Tendances

BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
BlueHat Security Conference
 

Tendances (8)

BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
BlueHat v17 || A Lustrum of Malware Network Communication: Evolution and Insi...
 
Covert Attack Mystery Box: A few novel techniques for exploiting Microsoft “f...
Covert Attack Mystery Box: A few novel techniques for exploiting Microsoft “f...Covert Attack Mystery Box: A few novel techniques for exploiting Microsoft “f...
Covert Attack Mystery Box: A few novel techniques for exploiting Microsoft “f...
 
Undine: Turnkey Drupal Development Environments
Undine: Turnkey Drupal Development EnvironmentsUndine: Turnkey Drupal Development Environments
Undine: Turnkey Drupal Development Environments
 
Making Session Stores More Intelligent
Making Session Stores More IntelligentMaking Session Stores More Intelligent
Making Session Stores More Intelligent
 
So you want to be a security expert
So you want to be a security expertSo you want to be a security expert
So you want to be a security expert
 
Searching Chinese Patents Presentation at Enterprise Data World
Searching Chinese Patents Presentation at Enterprise Data WorldSearching Chinese Patents Presentation at Enterprise Data World
Searching Chinese Patents Presentation at Enterprise Data World
 
Billions of hits: Scaling Twitter (Web 2.0 Expo, SF)
Billions of hits: Scaling Twitter (Web 2.0 Expo, SF)Billions of hits: Scaling Twitter (Web 2.0 Expo, SF)
Billions of hits: Scaling Twitter (Web 2.0 Expo, SF)
 
Reactive Supply To Changing Demand
Reactive Supply To Changing DemandReactive Supply To Changing Demand
Reactive Supply To Changing Demand
 

En vedette

Configurando o Geany para Python - 03/2012
Configurando o Geany para Python - 03/2012Configurando o Geany para Python - 03/2012
Configurando o Geany para Python - 03/2012
Marco Mendes
 
Configurando o geany_para_python
Configurando o geany_para_pythonConfigurando o geany_para_python
Configurando o geany_para_python
Marco Mendes
 
Presto: Distributed Machine Learning and Graph Processing with Sparse Matrices
Presto: Distributed Machine Learning and Graph Processing with Sparse MatricesPresto: Distributed Machine Learning and Graph Processing with Sparse Matrices
Presto: Distributed Machine Learning and Graph Processing with Sparse Matrices
Qian Lin
 
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
DataStax
 
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
DataWorks Summit
 
Cassandra Virtual Node talk
Cassandra Virtual Node talkCassandra Virtual Node talk
Cassandra Virtual Node talk
Patrick McFadin
 

En vedette (20)

Seda an architecture for well-conditioned scalable internet services
Seda   an architecture for well-conditioned scalable internet servicesSeda   an architecture for well-conditioned scalable internet services
Seda an architecture for well-conditioned scalable internet services
 
Data Driven Growth
Data Driven GrowthData Driven Growth
Data Driven Growth
 
IDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizadosIDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizados
 
Configurando o Geany para Python - 03/2012
Configurando o Geany para Python - 03/2012Configurando o Geany para Python - 03/2012
Configurando o Geany para Python - 03/2012
 
Configurando o geany_para_python
Configurando o geany_para_pythonConfigurando o geany_para_python
Configurando o geany_para_python
 
HBaseCon 2015 General Session: Zen - A Graph Data Model on HBase
HBaseCon 2015 General Session: Zen - A Graph Data Model on HBaseHBaseCon 2015 General Session: Zen - A Graph Data Model on HBase
HBaseCon 2015 General Session: Zen - A Graph Data Model on HBase
 
Facebook's TAO & Unicorn data storage and search platforms
Facebook's TAO & Unicorn data storage and search platformsFacebook's TAO & Unicorn data storage and search platforms
Facebook's TAO & Unicorn data storage and search platforms
 
Presto: Distributed Machine Learning and Graph Processing with Sparse Matrices
Presto: Distributed Machine Learning and Graph Processing with Sparse MatricesPresto: Distributed Machine Learning and Graph Processing with Sparse Matrices
Presto: Distributed Machine Learning and Graph Processing with Sparse Matrices
 
Cassandra Summit - What's New In Apache TinkerPop?
Cassandra Summit - What's New In Apache TinkerPop?Cassandra Summit - What's New In Apache TinkerPop?
Cassandra Summit - What's New In Apache TinkerPop?
 
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandr...
 
Introduction to cassandra 2014
Introduction to cassandra 2014Introduction to cassandra 2014
Introduction to cassandra 2014
 
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
Epiphany: Connecting Millions of Events to Thirty Billion Data Points in Real...
 
The Gremlin Graph Traversal Language
The Gremlin Graph Traversal LanguageThe Gremlin Graph Traversal Language
The Gremlin Graph Traversal Language
 
Quantum Processes in Graph Computing
Quantum Processes in Graph ComputingQuantum Processes in Graph Computing
Quantum Processes in Graph Computing
 
Deletes Without Tombstones or TTLs (Eric Stevens, ProtectWise) | Cassandra Su...
Deletes Without Tombstones or TTLs (Eric Stevens, ProtectWise) | Cassandra Su...Deletes Without Tombstones or TTLs (Eric Stevens, ProtectWise) | Cassandra Su...
Deletes Without Tombstones or TTLs (Eric Stevens, ProtectWise) | Cassandra Su...
 
Cassandra Virtual Node talk
Cassandra Virtual Node talkCassandra Virtual Node talk
Cassandra Virtual Node talk
 
Gremlin's Graph Traversal Machinery
Gremlin's Graph Traversal MachineryGremlin's Graph Traversal Machinery
Gremlin's Graph Traversal Machinery
 
HBaseCon 2015: S2Graph - A Large-scale Graph Database with HBase
HBaseCon 2015: S2Graph - A Large-scale Graph Database with HBaseHBaseCon 2015: S2Graph - A Large-scale Graph Database with HBase
HBaseCon 2015: S2Graph - A Large-scale Graph Database with HBase
 
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
 
PagerDuty: Span the WAN? Yes you can!
PagerDuty: Span the WAN? Yes you can!PagerDuty: Span the WAN? Yes you can!
PagerDuty: Span the WAN? Yes you can!
 

Similaire à F8 tech talk_pinterest_v4

First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNAFirst Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
Tomas Cervenka
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
Acquia
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
Mohammad Qureshi
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
Patrick Chanezon
 

Similaire à F8 tech talk_pinterest_v4 (20)

Case study
Case studyCase study
Case study
 
Reactive Development: Commands, Actors and Events. Oh My!!
Reactive Development: Commands, Actors and Events.  Oh My!!Reactive Development: Commands, Actors and Events.  Oh My!!
Reactive Development: Commands, Actors and Events. Oh My!!
 
BSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad GuysBSIDES-PR Keynote Hunting for Bad Guys
BSIDES-PR Keynote Hunting for Bad Guys
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
 
Apache Spark™ + IBM Watson + Twitter DataPalooza SF 2015
Apache Spark™ + IBM Watson + Twitter DataPalooza SF 2015Apache Spark™ + IBM Watson + Twitter DataPalooza SF 2015
Apache Spark™ + IBM Watson + Twitter DataPalooza SF 2015
 
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNAFirst Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
First Hive Meetup London 2012-07-10 - Tomas Cervenka - VisualDNA
 
Filar seymour oreilly_bot_story_
Filar seymour oreilly_bot_story_Filar seymour oreilly_bot_story_
Filar seymour oreilly_bot_story_
 
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
 
Deep Dive into Amazon ElastiCache Architecture and Design Patterns (DAT307) |...
Deep Dive into Amazon ElastiCache Architecture and Design Patterns (DAT307) |...Deep Dive into Amazon ElastiCache Architecture and Design Patterns (DAT307) |...
Deep Dive into Amazon ElastiCache Architecture and Design Patterns (DAT307) |...
 
Rakuten openstack
Rakuten openstackRakuten openstack
Rakuten openstack
 
Basic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 sessionBasic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 session
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Apache Spark the Hard Way: Challenges with Building an On-Prem Spark Analytic...
Apache Spark the Hard Way: Challenges with Building an On-Prem Spark Analytic...Apache Spark the Hard Way: Challenges with Building an On-Prem Spark Analytic...
Apache Spark the Hard Way: Challenges with Building an On-Prem Spark Analytic...
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
1,2,3 … testing : is this thing on(line)? Meet your new Microsoft Testing tools
1,2,3 … testing : is this thing on(line)? Meet your new Microsoft Testing tools1,2,3 … testing : is this thing on(line)? Meet your new Microsoft Testing tools
1,2,3 … testing : is this thing on(line)? Meet your new Microsoft Testing tools
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
 

Dernier

Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Christo Ananth
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
rknatarajan
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Dr.Costas Sachpazis
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 

Dernier (20)

Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICSUNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 

F8 tech talk_pinterest_v4