SlideShare a Scribd company logo
Developer Night
Sponsored by
Agenda
1. Integrating Analytics the Right Way
2. Going Deeper with Heap and Optimizely
3. Segmenting results with audiences
4. Experimenting in a DevOps World
5. Server-side testing in a Serverless world
6. Managing Your Full Stack Experiments From Within
Your Own Repository
7. Optimizing the Performance of Client-Side
Experimentation
8. How Optimizely uses Full Stack
9. Q&A
Integrating Analytics the
Right Way
Rocky McGredy
Solutions Engineer, Optimizely
Ali Baker
Technical Support Engineer, Optimizely
1. Why Integrate?
2. How Integrations Work
3. Implementation
Challenges
4. Solutions/Best Practices
Agenda
Why Integrate?
• Our results are best for finding winning
variations
• Analytics platforms contain historical user data
and reporting
• Knowing when a user is in a variation is useful
How Integrations Work
Enable your Integration
Enable your Integration
Integration Methods
Decisions!Decisions!
Implementation
Challenges
Reporting Differences
Implementation Considerations
Timing Differences Tag Managers Tracking Variables
Scoping Differences
User – Experimentation
Session – Personalization
User Scope
Session Scope
Hit Scope
Variables in Reporting
Event Tracking Audience Segments Report Filtering
Solutions &
Best Practices
Troubleshooting Integrations
Adjust Timing Use Debug Tools Add Debug Events
Link User Ids Run an A/A Test Export Raw Data
Validating Data
Support for integrations
SupportDocumentation
Integrating With Full Stack
• Similar to custom
analytics
• Notification listeners
• Use first party data
Key Learnings
• Integrations send experiment decision data
• Consider independent factors: timing, tag
managers, reporting
• Run a test to validate data
• Use your debugging tools
• We’re here to help!
Diving Deeper with Heap
and Optimizely
Taylor Udell
Lead Solutions Architect, Heap
What is Heap? A behavioral analytics platform
that has revolutionized
collecting and managing data
without implementing any
tracking calls
Going Deeper than Your
Goal Metrics
How many of you have seen results like this?
How do you interpret these results?
Why did this variation win or lose?
How are all my metrics connected?
Going Deeper than your Goal Metrics
Heap helps you
understand the why
behind your results
without slowing your
team down
Key Benefits of
using Heap +
Optimizely in
your stack
1. Develop More
Hypotheses
2. Deploy tests and
changes without
delaying for tracking
code
3. Go deeper than goal
metrics
Segmenting results with
Optimizely audiences
Michal Fasanek
Technical Support Engineer, Optimizely
What’s this presentation
about?
Custom Analytics
Integrations
• For building your own analytics
integrations on top of Optimizely
X Web
• Great for sending Optimizely
data to 3rd party analytics
platforms
Custom Analytics
Integrations Extensions
• Build reusable ‘plugins’ that
can be added to your
experiments
• Create visitor segments
based on the pre-defined
Optimizely audiences
• Create custom attributes that
correspond with your audiences
• Add them to an experiment
• Create audiences matching the
segments you care about
How does it work?
• Build the custom analytics
extension and add it to the
experiment
The code sample
Why is this awesome?
• You can re-purpose audiences that
are already used for targeting
• No additional costs
• Works automatically across the
entire project
Resources
• Github repository containing the code sample
used in this presentation:
https://github.com/michal-
optimizely/audience_segment_builder
• Documentation for Custom analytics extensions
• Documentation for Custom Attributes
• How to: Segmenting experiment results
Experimenting in a
DevOps World
Joy Scharmen
Director DevOps, Optimizely
All life DevOps is an experiment.
The more experiments you make
the better.
-Ralph Waldo Emerson, sort of
DevOps is built on a powerful
foundation of experiments.
But first, what is “Infrastructure”?
Infrastructure as Code:
Define your hardware like you write your software
Experiment with your Infrastructure
Build your code & Deploy it to your users
Continuous Integration & Continuous Deployment:
Continuous Experimentation
Canary Deployments:
Testing Experimenting in Production
Feature Flags:
Turning it off and on again
Blue/Green Deployment:
Experiment down to your server layer
Benefits of DevOps Experimentation!
Server-side testing in a
Serverless world
Andreas Bloomquist
Sr. Solutions Engineer
Serverless
Computing
FaaS
• Easier: Run your backend code without concern for provisioning,
managing, or scaling your own server architecture
• Cheaper*: Ephemeral resources - only pay for your event driven
code execution time
• Flexible: Manage functions as microservices
What is serverless (or FaaS) anyway?
How does it work?
Use Case: Image processing
Output
hilarious meme
Function
Contain provisioned,
code executes
Event
image uploaded to
file storage
Serverless: Not just
for hobbyists
Encode media files from S3
Streamline real-time
processing of interdependent
data sets
Lowered costs by ~66% with
serverless vending machine
loyalty service
let’s experiment!
Serverless + Full Stack
Stateless + Stateless
Benefits of full stack
• Stateless - no network
requests for decisioning
• Remote configuration of
variables
• Test anything in code!
Drawbacks when using
FaaS
• Stateless - each run is
basically a new instance
• No easy way to cache
datafile/client object
How does it work w/ Optimizely?
OutputFunction w/
Optimizely
SDK installed
Event
Initialize SDK
sever provisioned and scaled
by cloud provider LATENCY
Overcoming latency in FaaS
Option 1
Option 2
stay in your
network
Option 3
do your
homework
fool me once...
Stateless !== stateless
Put it into practice w/ Alexa
else.. get it from
CDN / API
Alexa event
executes
Send back variation
response
My Puppy Store Daily Deal Alexa Skill
Alexa, ask
Puppy Store for
a daily deal!
Dashboard
1
check if cache
exists
Events sent
back to
Optimizely
Save on
squeaky toys!
upload code to
lambda
JSON Datafile
(Akamai CDN or
REST API)
2
3
4
5
6
Time for a demo...
Optimizing the Performance of
Client-Side Experimentation
Spencer Wilson
Software Engineer, Optimizely
Performance testing is a kind of
experimentation
You have...
hypotheses “Increasing image compression will increase
session length”
independent
variables
Image compression magnitude
dependent variables Session length
results interpretation Should we roll out any variation to 100% of
traffic?
Instrumenting a
page with
Optimizely Web
#1: Placement
<html>
<head>
<link rel=”stylesheet” href=”...url”/>
... <!-- more stylesheets -->
<script src=”...optly1”></script>
<script src=”...url”></script>
... <!-- more scripts -->
</head>
<body>
<header>...</header>
<article>...</article>
<footer>...</footer>
</body>
</html>
#1: Placement
<html>
<head>
<link rel=”stylesheet” href=”...url”/>
... <!-- more stylesheets -->
<script src=”...url”></script>
... <!-- more scripts -->
<script src=”...optly2”></script>
</head>
<body>
<header>...</header>
<article>...</article>
<footer>...</footer>
</body>
</html>
#1: Placement
<html>
<head>
<link rel=”stylesheet” href=”...url”/>
... <!-- more stylesheets -->
<script src=”...url”></script>
... <!-- more scripts -->
</head>
<body>
<header>...</header>
<article>...</article>
<footer>...</footer>
<script src=”...optly3”>
</body>
</html>
#2: Attributes
Some possibilities:
● <script> (synchronous)
● <script async>
● <script defer>
Image credit: Daniel Imms, from https://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html
#3: Resource
Hints
Some possibilities:
● None
● Link: <...url>; rel="dns-prefetch"
● Link: <...url>; rel="preconnect"
● <link rel=”preload” as=”script” href=”...url” >
W3C specs:
● https://www.w3.org/TR/resource-hints/
● https://www.w3.org/TR/preload/
Metrics
● DO: Endeavor to measure impact on users
○ first [contentful] paint, via browser
○ first meaningful paint, via you
○ key business metrics
● DON’T:
○ Use any single metric, like the document’s
load event
L I V E D E M O
Recommended initial configuration.
Test what works best for your product!
Placement ● First script element in the document
● In the <head>
Attributes ● None (synchronous)
Resource
Hints
● If script element is in HTML: none
● Otherwise: <link rel=”preload” as=”script”
href=”...url”>
● If using cross-origin targeting, preload the
iframe document
More #PerfThings
Performance Workshop
Tomorrow, Brera 2, 12pm
Performance Certification
$100 → Free w/code OPTICON18
Performance Whitepaper
/resources/optimizing-performance/
In summary
1. Experimentation is an effective tool for
informing perf-impacting decisions. Use it!
2. Focus on high-level business metrics.
Low-level metrics are supplementary.
3. Attend the perf workshop tomorrow at
noon. It will teach tips for going fast.
References
● Steve Souders, “I <3 image bytes”: https://www.stevesouders.com/blog/2013/04/26/i/
● Ilya Grigorik, “Chrome’s preloader delivers a ~20% speed improvement!”:
https://plus.google.com/+IlyaGrigorik/posts/8AwRUE7wqAE
● Tony Gentilcore, “The WebKit PreloadScanner”: http://gent.ilcore.com/2011/01/webkit-
preloadscanner.html
● Philip Walton, “User-centric Performance Metrics”:
https://developers.google.com/web/fundamentals/performance/user-centric-performance-
metrics
● Addy Osmani, “Preload, Prefetch and Priorities in Chrome”:
https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf
Managing Your Full Stack
Experiments From Within Your
Own Repository
Travis Beck
Software Engineer, Optimizely
Optimizely Full Stack is easy to use
But do Developers want to have to switch
in and out of yet another web app?
Can we make it easier?
A New Feature:
turbo_mode
We want to test it out on low risk users
If it works, then roll it out to everyone
Testing the New Feature
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
What do we have to create in Optimizely?
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
Attributes
What do we have to create in Optimizely?
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
Attributes
Feature
What do we have to create in Optimizely?
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
Attributes
Feature
Events
What do we have to create in Optimizely?
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
Attributes
Feature
Events
+ Experiment (since we’re testing the Feature)
What do we have to create in Optimizely?
attributes = {'plan': 'basic', 'language': 'en'}
enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes)
if enabled:
# feature implementation
... later ...
optimizely_client.track(‘task_complete', user_id, attributes)
tags = {‘value’: 100}
optimizely_client.track(‘completion_time', user_id, attributes, tags)
Attributes
Feature
Events
+ Experiment (since we’re testing the Feature)
+ Audience (for targeting)
Questions you may be asking
Do I have to have constant access to Optimizely to do
basic application development?
Can we keep this metadata that is fundamental to our
code running properly closer to the code itself?
optimizely-cli
A command line tool for managing your Optimizely data
Every serious developer-focused service needs a
command-line interface
Built entirely on top of the Optimizely v2 REST API
Works well for Full Stack. May work for Web.
setup
$ opti init
OAuths with your Optimizely Account once
Links your code with a specific Optimizely project
Pulling Experiment Data
$ opti pull
Pulls all Optimizely data and writes it to an optimizely/
directory as yaml files
Pushing Back Experiment Data
$ opti push
Detects changes to your experiments and pushes back
modified experiments to Optimizely
Advantages
Scriptable - Automate changes to Optimizely in scripts
Code Review - Make important modifications as a Pull
Request in your own repo
Historical Record - Use a webhook or update on a
schedule to track changes over time
Try it out
Install:
pip install optimizely-cli
Repository: https://github.com/optimizely/optimizely-cli
Take a look at the code for good v2 REST API examples
Journey Up Mt. Experimentation
Ali Rizvi, Software Engineer
Mike Ng, Software Engineer
Results
Experiment
management
Optimizely Application
Optimizely Backend
Java SDK
Python
SDK
JS SDK
events
events
results
3 projects
6 datafiles
30+ experiments
400+ features
2 projects
2 datafiles
~ 5 experiments
~ 2 features
BUSINESS VALUE
VELOCITY/VOLUME
LEVEL 1
Executional
Start
LEVEL 2
Foundational Growth
LEVEL 3
Cross-functional
Advancement
LEVEL 4
Operational
Excellence
LEVEL 5
Culture of Experimentation
Experimentation Maturity Curve
Optimizely
How did we get here?
Level 1
Managing the datafile
Datafile caching in memcache
Datafile retrieval from memcache
Level 1
Event dispatching
Async event dispatching using Task Queues
Level 2
Datafile syncing
Consolidating datafile between backend and frontend
App Engine App
(Python)
Frontend
(Browser)
Level 3
Convenience methods
Cache user info for API calls
isFeatureEnabled call in product...
Method proxying
Continued...
Level 3
Consolidating datafiles
Level 3
Implement proper logging
Why isn't my feature enabled?
Level 4
Making QA Easy - Demo
Reaching the next stage
• Consolidate projects
• Use environments across all projects
• Experiments / Feature Flags cleanup
• Increase automated test coverage of all experiment
paths
Takeaways
Performance
- Pass datafile between frontend to backend
- Cache datafile in memcache - can also cache instance of Optimizely if appropriate
Quality
- Make it easy for users to QA your features and tests
- Write automated tests for the different forks/paths created for experiments
Productivity
- Make it easy for developers to run experiments with wrapper/convenience methods
- Always include a logger with the implementation
Q&A
Thank you!Thank You!
Opticon18: Developer Night

More Related Content

What's hot

Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
SmartBear
 
Automated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave SadlonAutomated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave Sadlon
QA or the Highway
 
Azure DevOps for the Data Professional
Azure DevOps for the Data ProfessionalAzure DevOps for the Data Professional
Azure DevOps for the Data Professional
Sarah Dutkiewicz
 
Sustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey ShannahanSustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey Shannahan
QA or the Highway
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
Lars Thorup
 
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
KWizCom Team
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchAtlassian
 
Upgrading SLFE from 2007 to 2010
Upgrading SLFE from 2007 to 2010Upgrading SLFE from 2007 to 2010
Upgrading SLFE from 2007 to 2010
KWizCom Team
 
Automated Integrated Testing with MongoDB
Automated Integrated Testing with MongoDBAutomated Integrated Testing with MongoDB
Automated Integrated Testing with MongoDBMongoDB
 
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Vadym Kazulkin
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminarSSW
 
How Optimizely Scaled its REST API with asyncio
How Optimizely Scaled its REST API with asyncio  How Optimizely Scaled its REST API with asyncio
How Optimizely Scaled its REST API with asyncio
Optimizely
 
The limits of unit testing by Craig Stuntz
The limits of unit testing by Craig StuntzThe limits of unit testing by Craig Stuntz
The limits of unit testing by Craig Stuntz
QA or the Highway
 
Google Play Instant: Improving User Engagement
Google Play Instant: Improving User EngagementGoogle Play Instant: Improving User Engagement
Google Play Instant: Improving User Engagement
Chang John
 
DevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azureDevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azure
Murughan Palaniachari
 
Effective Test Driven Database Development
Effective Test Driven Database DevelopmentEffective Test Driven Database Development
Effective Test Driven Database Developmentelliando dias
 
JavaOne 2015: Top Performance Patterns Deep Dive
JavaOne 2015: Top Performance Patterns Deep DiveJavaOne 2015: Top Performance Patterns Deep Dive
JavaOne 2015: Top Performance Patterns Deep Dive
Andreas Grabner
 

What's hot (17)

Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
 
Automated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave SadlonAutomated Visual Regression Testing by Dave Sadlon
Automated Visual Regression Testing by Dave Sadlon
 
Azure DevOps for the Data Professional
Azure DevOps for the Data ProfessionalAzure DevOps for the Data Professional
Azure DevOps for the Data Professional
 
Sustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey ShannahanSustainable Automation Frameworks by Kelsey Shannahan
Sustainable Automation Frameworks by Kelsey Shannahan
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
 
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
Upgrade to SharePoint 2010, Shai Petel SharePoint Conference Las Vegas Sep 2009
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
 
Upgrading SLFE from 2007 to 2010
Upgrading SLFE from 2007 to 2010Upgrading SLFE from 2007 to 2010
Upgrading SLFE from 2007 to 2010
 
Automated Integrated Testing with MongoDB
Automated Integrated Testing with MongoDBAutomated Integrated Testing with MongoDB
Automated Integrated Testing with MongoDB
 
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminar
 
How Optimizely Scaled its REST API with asyncio
How Optimizely Scaled its REST API with asyncio  How Optimizely Scaled its REST API with asyncio
How Optimizely Scaled its REST API with asyncio
 
The limits of unit testing by Craig Stuntz
The limits of unit testing by Craig StuntzThe limits of unit testing by Craig Stuntz
The limits of unit testing by Craig Stuntz
 
Google Play Instant: Improving User Engagement
Google Play Instant: Improving User EngagementGoogle Play Instant: Improving User Engagement
Google Play Instant: Improving User Engagement
 
DevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azureDevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azure
 
Effective Test Driven Database Development
Effective Test Driven Database DevelopmentEffective Test Driven Database Development
Effective Test Driven Database Development
 
JavaOne 2015: Top Performance Patterns Deep Dive
JavaOne 2015: Top Performance Patterns Deep DiveJavaOne 2015: Top Performance Patterns Deep Dive
JavaOne 2015: Top Performance Patterns Deep Dive
 

Similar to Opticon18: Developer Night

Developer Night - Opticon18
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18
Optimizely
 
Keeping up with PHP
Keeping up with PHPKeeping up with PHP
Keeping up with PHP
Zend by Rogue Wave Software
 
Application Lifecycle Management with Visual Studio 2013
Application Lifecycle Management  with Visual Studio 2013Application Lifecycle Management  with Visual Studio 2013
Application Lifecycle Management with Visual Studio 2013
Mahmoud Samara
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
Rob Jahn
 
How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...
Looker
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
BizTalk360
 
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at ScaleGrokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
Grokking VN
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsFedir RYKHTIK
 
Test Automation you'll actually Like - Gauge by ThoughtWorks
Test Automation you'll actually Like - Gauge by ThoughtWorksTest Automation you'll actually Like - Gauge by ThoughtWorks
Test Automation you'll actually Like - Gauge by ThoughtWorks
Gemunu Priyadarshana
 
Accelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the CloudAccelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the Cloud
Wiiisdom
 
Visual Studio Profiler
Visual Studio ProfilerVisual Studio Profiler
Visual Studio Profiler
Betclic Everest Group Tech Team
 
Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation Engine
Databricks
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
Achievers Tech
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
 
Building a Real-Time Security Application Using Log Data and Machine Learning...
Building a Real-Time Security Application Using Log Data and Machine Learning...Building a Real-Time Security Application Using Log Data and Machine Learning...
Building a Real-Time Security Application Using Log Data and Machine Learning...
Sri Ambati
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Provectus
 
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Binary Studio
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
Thomas Daly
 
Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014
Shelley Lambert
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
Optimizely
 

Similar to Opticon18: Developer Night (20)

Developer Night - Opticon18
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18
 
Keeping up with PHP
Keeping up with PHPKeeping up with PHP
Keeping up with PHP
 
Application Lifecycle Management with Visual Studio 2013
Application Lifecycle Management  with Visual Studio 2013Application Lifecycle Management  with Visual Studio 2013
Application Lifecycle Management with Visual Studio 2013
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
 
How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at ScaleGrokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at Scale
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
 
Test Automation you'll actually Like - Gauge by ThoughtWorks
Test Automation you'll actually Like - Gauge by ThoughtWorksTest Automation you'll actually Like - Gauge by ThoughtWorks
Test Automation you'll actually Like - Gauge by ThoughtWorks
 
Accelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the CloudAccelerate your SAP BusinessObjects to the Cloud
Accelerate your SAP BusinessObjects to the Cloud
 
Visual Studio Profiler
Visual Studio ProfilerVisual Studio Profiler
Visual Studio Profiler
 
Building A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation EngineBuilding A Product Assortment Recommendation Engine
Building A Product Assortment Recommendation Engine
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
 
Building a Real-Time Security Application Using Log Data and Machine Learning...
Building a Real-Time Security Application Using Log Data and Machine Learning...Building a Real-Time Security Application Using Log Data and Machine Learning...
Building a Real-Time Security Application Using Log Data and Machine Learning...
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014
 
Developer Night Opticon 2017
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017
 

More from Optimizely

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
Optimizely
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Optimizely
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
Optimizely
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Optimizely
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Optimizely
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Optimizely
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
Optimizely
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Optimizely
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Optimizely
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Optimizely
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server Side
Optimizely
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
Optimizely
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Optimizely
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
Optimizely
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Optimizely
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Optimizely
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
Optimizely
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
Optimizely
 
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Optimizely
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely
 

More from Optimizely (20)

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server Side
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product Strategy
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
 
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with Experimentation
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 

Opticon18: Developer Night

  • 1.
  • 3. Agenda 1. Integrating Analytics the Right Way 2. Going Deeper with Heap and Optimizely 3. Segmenting results with audiences 4. Experimenting in a DevOps World 5. Server-side testing in a Serverless world 6. Managing Your Full Stack Experiments From Within Your Own Repository 7. Optimizing the Performance of Client-Side Experimentation 8. How Optimizely uses Full Stack 9. Q&A
  • 4. Integrating Analytics the Right Way Rocky McGredy Solutions Engineer, Optimizely Ali Baker Technical Support Engineer, Optimizely
  • 5. 1. Why Integrate? 2. How Integrations Work 3. Implementation Challenges 4. Solutions/Best Practices Agenda
  • 6. Why Integrate? • Our results are best for finding winning variations • Analytics platforms contain historical user data and reporting • Knowing when a user is in a variation is useful
  • 14. Implementation Considerations Timing Differences Tag Managers Tracking Variables
  • 15. Scoping Differences User – Experimentation Session – Personalization User Scope Session Scope Hit Scope
  • 16. Variables in Reporting Event Tracking Audience Segments Report Filtering
  • 18. Troubleshooting Integrations Adjust Timing Use Debug Tools Add Debug Events
  • 19. Link User Ids Run an A/A Test Export Raw Data Validating Data
  • 21. Integrating With Full Stack • Similar to custom analytics • Notification listeners • Use first party data
  • 22. Key Learnings • Integrations send experiment decision data • Consider independent factors: timing, tag managers, reporting • Run a test to validate data • Use your debugging tools • We’re here to help!
  • 23. Diving Deeper with Heap and Optimizely Taylor Udell Lead Solutions Architect, Heap
  • 24. What is Heap? A behavioral analytics platform that has revolutionized collecting and managing data without implementing any tracking calls
  • 25. Going Deeper than Your Goal Metrics
  • 26. How many of you have seen results like this?
  • 27. How do you interpret these results?
  • 28. Why did this variation win or lose?
  • 29. How are all my metrics connected?
  • 30. Going Deeper than your Goal Metrics Heap helps you understand the why behind your results without slowing your team down
  • 31. Key Benefits of using Heap + Optimizely in your stack 1. Develop More Hypotheses 2. Deploy tests and changes without delaying for tracking code 3. Go deeper than goal metrics
  • 32. Segmenting results with Optimizely audiences Michal Fasanek Technical Support Engineer, Optimizely
  • 34. Custom Analytics Integrations • For building your own analytics integrations on top of Optimizely X Web • Great for sending Optimizely data to 3rd party analytics platforms
  • 35. Custom Analytics Integrations Extensions • Build reusable ‘plugins’ that can be added to your experiments • Create visitor segments based on the pre-defined Optimizely audiences
  • 36. • Create custom attributes that correspond with your audiences • Add them to an experiment • Create audiences matching the segments you care about How does it work? • Build the custom analytics extension and add it to the experiment
  • 38.
  • 39. Why is this awesome? • You can re-purpose audiences that are already used for targeting • No additional costs • Works automatically across the entire project
  • 40. Resources • Github repository containing the code sample used in this presentation: https://github.com/michal- optimizely/audience_segment_builder • Documentation for Custom analytics extensions • Documentation for Custom Attributes • How to: Segmenting experiment results
  • 41. Experimenting in a DevOps World Joy Scharmen Director DevOps, Optimizely All life DevOps is an experiment. The more experiments you make the better. -Ralph Waldo Emerson, sort of
  • 42. DevOps is built on a powerful foundation of experiments.
  • 43. But first, what is “Infrastructure”?
  • 44. Infrastructure as Code: Define your hardware like you write your software
  • 45. Experiment with your Infrastructure
  • 46. Build your code & Deploy it to your users
  • 47. Continuous Integration & Continuous Deployment: Continuous Experimentation
  • 49. Feature Flags: Turning it off and on again
  • 51. Benefits of DevOps Experimentation!
  • 52. Server-side testing in a Serverless world Andreas Bloomquist Sr. Solutions Engineer
  • 54. • Easier: Run your backend code without concern for provisioning, managing, or scaling your own server architecture • Cheaper*: Ephemeral resources - only pay for your event driven code execution time • Flexible: Manage functions as microservices What is serverless (or FaaS) anyway?
  • 55. How does it work? Use Case: Image processing Output hilarious meme Function Contain provisioned, code executes Event image uploaded to file storage
  • 56. Serverless: Not just for hobbyists Encode media files from S3 Streamline real-time processing of interdependent data sets Lowered costs by ~66% with serverless vending machine loyalty service
  • 57.
  • 59. Serverless + Full Stack Stateless + Stateless Benefits of full stack • Stateless - no network requests for decisioning • Remote configuration of variables • Test anything in code! Drawbacks when using FaaS • Stateless - each run is basically a new instance • No easy way to cache datafile/client object
  • 60. How does it work w/ Optimizely? OutputFunction w/ Optimizely SDK installed Event Initialize SDK sever provisioned and scaled by cloud provider LATENCY
  • 61.
  • 64.
  • 71.
  • 72. Put it into practice w/ Alexa else.. get it from CDN / API Alexa event executes Send back variation response My Puppy Store Daily Deal Alexa Skill Alexa, ask Puppy Store for a daily deal! Dashboard 1 check if cache exists Events sent back to Optimizely Save on squeaky toys! upload code to lambda JSON Datafile (Akamai CDN or REST API) 2 3 4 5 6
  • 73. Time for a demo...
  • 74. Optimizing the Performance of Client-Side Experimentation Spencer Wilson Software Engineer, Optimizely
  • 75.
  • 76. Performance testing is a kind of experimentation You have... hypotheses “Increasing image compression will increase session length” independent variables Image compression magnitude dependent variables Session length results interpretation Should we roll out any variation to 100% of traffic?
  • 78. #1: Placement <html> <head> <link rel=”stylesheet” href=”...url”/> ... <!-- more stylesheets --> <script src=”...optly1”></script> <script src=”...url”></script> ... <!-- more scripts --> </head> <body> <header>...</header> <article>...</article> <footer>...</footer> </body> </html>
  • 79. #1: Placement <html> <head> <link rel=”stylesheet” href=”...url”/> ... <!-- more stylesheets --> <script src=”...url”></script> ... <!-- more scripts --> <script src=”...optly2”></script> </head> <body> <header>...</header> <article>...</article> <footer>...</footer> </body> </html>
  • 80. #1: Placement <html> <head> <link rel=”stylesheet” href=”...url”/> ... <!-- more stylesheets --> <script src=”...url”></script> ... <!-- more scripts --> </head> <body> <header>...</header> <article>...</article> <footer>...</footer> <script src=”...optly3”> </body> </html>
  • 81. #2: Attributes Some possibilities: ● <script> (synchronous) ● <script async> ● <script defer> Image credit: Daniel Imms, from https://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html
  • 82. #3: Resource Hints Some possibilities: ● None ● Link: <...url>; rel="dns-prefetch" ● Link: <...url>; rel="preconnect" ● <link rel=”preload” as=”script” href=”...url” > W3C specs: ● https://www.w3.org/TR/resource-hints/ ● https://www.w3.org/TR/preload/
  • 83. Metrics ● DO: Endeavor to measure impact on users ○ first [contentful] paint, via browser ○ first meaningful paint, via you ○ key business metrics ● DON’T: ○ Use any single metric, like the document’s load event
  • 84. L I V E D E M O
  • 85. Recommended initial configuration. Test what works best for your product! Placement ● First script element in the document ● In the <head> Attributes ● None (synchronous) Resource Hints ● If script element is in HTML: none ● Otherwise: <link rel=”preload” as=”script” href=”...url”> ● If using cross-origin targeting, preload the iframe document
  • 86. More #PerfThings Performance Workshop Tomorrow, Brera 2, 12pm Performance Certification $100 → Free w/code OPTICON18 Performance Whitepaper /resources/optimizing-performance/
  • 87. In summary 1. Experimentation is an effective tool for informing perf-impacting decisions. Use it! 2. Focus on high-level business metrics. Low-level metrics are supplementary. 3. Attend the perf workshop tomorrow at noon. It will teach tips for going fast.
  • 88. References ● Steve Souders, “I <3 image bytes”: https://www.stevesouders.com/blog/2013/04/26/i/ ● Ilya Grigorik, “Chrome’s preloader delivers a ~20% speed improvement!”: https://plus.google.com/+IlyaGrigorik/posts/8AwRUE7wqAE ● Tony Gentilcore, “The WebKit PreloadScanner”: http://gent.ilcore.com/2011/01/webkit- preloadscanner.html ● Philip Walton, “User-centric Performance Metrics”: https://developers.google.com/web/fundamentals/performance/user-centric-performance- metrics ● Addy Osmani, “Preload, Prefetch and Priorities in Chrome”: https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf
  • 89. Managing Your Full Stack Experiments From Within Your Own Repository Travis Beck Software Engineer, Optimizely
  • 90. Optimizely Full Stack is easy to use
  • 91. But do Developers want to have to switch in and out of yet another web app?
  • 92. Can we make it easier?
  • 93. A New Feature: turbo_mode We want to test it out on low risk users If it works, then roll it out to everyone
  • 94. Testing the New Feature attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags)
  • 95. What do we have to create in Optimizely? attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags) Attributes
  • 96. What do we have to create in Optimizely? attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags) Attributes Feature
  • 97. What do we have to create in Optimizely? attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags) Attributes Feature Events
  • 98. What do we have to create in Optimizely? attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags) Attributes Feature Events + Experiment (since we’re testing the Feature)
  • 99. What do we have to create in Optimizely? attributes = {'plan': 'basic', 'language': 'en'} enabled = optimizely_client.is_feature_enabled('turbo_mode', user_id, attributes) if enabled: # feature implementation ... later ... optimizely_client.track(‘task_complete', user_id, attributes) tags = {‘value’: 100} optimizely_client.track(‘completion_time', user_id, attributes, tags) Attributes Feature Events + Experiment (since we’re testing the Feature) + Audience (for targeting)
  • 100. Questions you may be asking Do I have to have constant access to Optimizely to do basic application development? Can we keep this metadata that is fundamental to our code running properly closer to the code itself?
  • 101. optimizely-cli A command line tool for managing your Optimizely data Every serious developer-focused service needs a command-line interface Built entirely on top of the Optimizely v2 REST API Works well for Full Stack. May work for Web.
  • 102. setup $ opti init OAuths with your Optimizely Account once Links your code with a specific Optimizely project
  • 103. Pulling Experiment Data $ opti pull Pulls all Optimizely data and writes it to an optimizely/ directory as yaml files
  • 104. Pushing Back Experiment Data $ opti push Detects changes to your experiments and pushes back modified experiments to Optimizely
  • 105. Advantages Scriptable - Automate changes to Optimizely in scripts Code Review - Make important modifications as a Pull Request in your own repo Historical Record - Use a webhook or update on a schedule to track changes over time
  • 106. Try it out Install: pip install optimizely-cli Repository: https://github.com/optimizely/optimizely-cli Take a look at the code for good v2 REST API examples
  • 107. Journey Up Mt. Experimentation Ali Rizvi, Software Engineer Mike Ng, Software Engineer
  • 108.
  • 109.
  • 110. Results Experiment management Optimizely Application Optimizely Backend Java SDK Python SDK JS SDK events events results 3 projects 6 datafiles 30+ experiments 400+ features 2 projects 2 datafiles ~ 5 experiments ~ 2 features
  • 111. BUSINESS VALUE VELOCITY/VOLUME LEVEL 1 Executional Start LEVEL 2 Foundational Growth LEVEL 3 Cross-functional Advancement LEVEL 4 Operational Excellence LEVEL 5 Culture of Experimentation Experimentation Maturity Curve Optimizely
  • 112. How did we get here?
  • 113.
  • 114.
  • 115. Level 1 Managing the datafile
  • 116.
  • 117.
  • 118. Datafile caching in memcache
  • 121.
  • 122.
  • 123. Async event dispatching using Task Queues
  • 125. Consolidating datafile between backend and frontend App Engine App (Python) Frontend (Browser)
  • 127. Cache user info for API calls
  • 132.
  • 134. Why isn't my feature enabled?
  • 135. Level 4 Making QA Easy - Demo
  • 136. Reaching the next stage • Consolidate projects • Use environments across all projects • Experiments / Feature Flags cleanup • Increase automated test coverage of all experiment paths
  • 137. Takeaways Performance - Pass datafile between frontend to backend - Cache datafile in memcache - can also cache instance of Optimizely if appropriate Quality - Make it easy for users to QA your features and tests - Write automated tests for the different forks/paths created for experiments Productivity - Make it easy for developers to run experiments with wrapper/convenience methods - Always include a logger with the implementation
  • 138. Q&A