This document discusses Boomerang, a JavaScript tool that measures web page performance from the end user's perspective. It works by including a small snippet of JavaScript on web pages that measures load time, latency, and bandwidth and sends the results back to the server. It provides more accurate real-world performance metrics than lab testing alone. The document explains how Boomerang specifically measures latency by downloading small images repeatedly, bandwidth by progressively larger images, and load time using timestamps. Contributing code or plugins to the Boomerang open source project on GitHub can help improve it.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
There’s no such thing as fast enough. You can always make your website faster. This talk will show you how. The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.In this talk we’ll start with the basics and get progressively insane. We’ll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they’ve changed over the years. We’ll also look at some great tools to help you.
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
Frontend Performance Beginner to Expert to Crazy Person
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
La performance front-end de débutant, à expert, à fou furieux !
La toute première condition nécessaire à une bonne expérience utilisateur est de pouvoir obtenir les octets de cette expérience avant que l'utilisateur ne se lasse et parte.
Nous débuterons cette conférence avec les bases pour progressivement devenir démentiel. Nous aborderons plusieurs des meilleurs pratiques de la performance front-end, quelques anti-patterns à éviter, le raisonnement derrière les règles, et comment ces dernières ont changé au fil des ans. Nous regarderons d'un peu plus près quelques très bon outils qui peuvent vous aider.
RUM isn’t just for page level metrics anymore. Thanks to modern browser updates and new techniques we can collect real user data at the object level, finding slow page components and keeping third parties honest.
In this talk we will show you how to use Resource Timing, User Timing, and other browser tricks to time the most important components in your page. We’ll also share recipes for several of the web’s most popular third parties. This will give you a head start on measuring object level performance on your own site.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
Boston Web Performance Meetup, April 22, 2014
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave. In this talk we'll start with the basics and get progressively insane. We'll go over several front-end performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
Schedule: 6:30, pizza
7:15: talk
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
When we built boomerang at Yahoo!, we planned on it being a generic beaconing system with different payloads attached by plugins. We published an API, and wrote plugins to measure page roundtrip time, network throughput and latency. We received other plugins from Yahoo! to measure IPv6 and DNS latency, and then nothing happened...
Until one day, a certain Mr. Brewer submitted a NavTiming plugin. As it turns out, people were using boomerang in-house, and creating their own plugins that were never published.
In this talk, we’ll go over the basics of writing a boomerang plugin to measure anything you need, some best practices involved with writing plugins, and examples of third party plugins that others have written.
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Philip Tellis
While building boomerang, we developed many interesting methods to measure network performance characteristics using JavaScript running in the browser. While the W3C's NavigationTiming API provides access to many performance metrics, there's far more you can get at with some creative tweaking and analysis of how the browser reacts to certain requests.
In this talk, I'll go into the details of how boomerang works to measure network throughput, latency, TCP connect time, DNS time and IPv6 connectivity. I'll also touch upon some of the other performance related browser APIs we use to gather useful information.
http://www.nywebperformance.org/events/78566362/
The Statistics of Web Performance AnalysisPhilip Tellis
If you're interested in measuring real user web performance, you'll find tools like boomerang or episodes quite handy. Some popular web frameworks even have modules that make it easy to add them to your site. However, what does one do once one has collected the data? How do you filter out the noise and get meaningful insights from the data?
In this talk, I'll go over the techniques we've picked up by analyzing millions of datapoints daily. I'll cover some simple rules to filter out invalid data, and the statistics to analyze and make sense of what's left. Do you use the mean, median or mode? What about the geometric mean and standard deviation? How confident are we in the results? And finally, why should we care?
This talk should help you gain useful insights from a histogram, or at the very least point you in the right direction for further analysis.
Abusing JavaScript to Measure Web PerformancePhilip Tellis
While building boomerang, we developed many interesting methods to measure network performance characteristics using JavaScript running in the browser. While the W3C's NavigationTiming API provides access to many performance metrics, there's far more you can get at with some creative tweaking and analysis of how the browser reacts to certain requests.
In this talk, I'll go into the details of how boomerang works to measure network throughput, latency, TCP connect time, DNS time and IPv6 connectivity. I'll also touch upon some of the other performance related browser APIs we use to gather useful information. I will NOT be covering the W3C Navigation Timing API since that's been covered by Alois Reitbauer in a previous Boston Web Perf talk.
Real user monitoring is one of the best ways of learning “the truth” about what visitors experience on your web site, but it comes at a cost. The real world is messy and noisy making it hard to know exactly what’s going on. Filtering your data, splitting it along multiple dimensions, and determining what to discard are important second steps on the path to insightful RUM analysis, and in this session, we’ll go into some of the details.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
There’s no such thing as fast enough. You can always make your website faster. This talk will show you how. The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.In this talk we’ll start with the basics and get progressively insane. We’ll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they’ve changed over the years. We’ll also look at some great tools to help you.
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
Frontend Performance Beginner to Expert to Crazy Person
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get tired and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
La performance front-end de débutant, à expert, à fou furieux !
La toute première condition nécessaire à une bonne expérience utilisateur est de pouvoir obtenir les octets de cette expérience avant que l'utilisateur ne se lasse et parte.
Nous débuterons cette conférence avec les bases pour progressivement devenir démentiel. Nous aborderons plusieurs des meilleurs pratiques de la performance front-end, quelques anti-patterns à éviter, le raisonnement derrière les règles, et comment ces dernières ont changé au fil des ans. Nous regarderons d'un peu plus près quelques très bon outils qui peuvent vous aider.
RUM isn’t just for page level metrics anymore. Thanks to modern browser updates and new techniques we can collect real user data at the object level, finding slow page components and keeping third parties honest.
In this talk we will show you how to use Resource Timing, User Timing, and other browser tricks to time the most important components in your page. We’ll also share recipes for several of the web’s most popular third parties. This will give you a head start on measuring object level performance on your own site.
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
Boston Web Performance Meetup, April 22, 2014
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave. In this talk we'll start with the basics and get progressively insane. We'll go over several front-end performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
Schedule: 6:30, pizza
7:15: talk
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
The very first requirement of a great user experience is actually getting the bytes of that experience to the user before they they get fed up and leave.
In this talk we'll start with the basics and get progressively insane. We'll go over several frontend performance best practices, a few anti-patterns, the reasoning behind the rules, and how they've changed over the years. We'll also look at some great tools to help you.
When we built boomerang at Yahoo!, we planned on it being a generic beaconing system with different payloads attached by plugins. We published an API, and wrote plugins to measure page roundtrip time, network throughput and latency. We received other plugins from Yahoo! to measure IPv6 and DNS latency, and then nothing happened...
Until one day, a certain Mr. Brewer submitted a NavTiming plugin. As it turns out, people were using boomerang in-house, and creating their own plugins that were never published.
In this talk, we’ll go over the basics of writing a boomerang plugin to measure anything you need, some best practices involved with writing plugins, and examples of third party plugins that others have written.
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Philip Tellis
While building boomerang, we developed many interesting methods to measure network performance characteristics using JavaScript running in the browser. While the W3C's NavigationTiming API provides access to many performance metrics, there's far more you can get at with some creative tweaking and analysis of how the browser reacts to certain requests.
In this talk, I'll go into the details of how boomerang works to measure network throughput, latency, TCP connect time, DNS time and IPv6 connectivity. I'll also touch upon some of the other performance related browser APIs we use to gather useful information.
http://www.nywebperformance.org/events/78566362/
The Statistics of Web Performance AnalysisPhilip Tellis
If you're interested in measuring real user web performance, you'll find tools like boomerang or episodes quite handy. Some popular web frameworks even have modules that make it easy to add them to your site. However, what does one do once one has collected the data? How do you filter out the noise and get meaningful insights from the data?
In this talk, I'll go over the techniques we've picked up by analyzing millions of datapoints daily. I'll cover some simple rules to filter out invalid data, and the statistics to analyze and make sense of what's left. Do you use the mean, median or mode? What about the geometric mean and standard deviation? How confident are we in the results? And finally, why should we care?
This talk should help you gain useful insights from a histogram, or at the very least point you in the right direction for further analysis.
Abusing JavaScript to Measure Web PerformancePhilip Tellis
While building boomerang, we developed many interesting methods to measure network performance characteristics using JavaScript running in the browser. While the W3C's NavigationTiming API provides access to many performance metrics, there's far more you can get at with some creative tweaking and analysis of how the browser reacts to certain requests.
In this talk, I'll go into the details of how boomerang works to measure network throughput, latency, TCP connect time, DNS time and IPv6 connectivity. I'll also touch upon some of the other performance related browser APIs we use to gather useful information. I will NOT be covering the W3C Navigation Timing API since that's been covered by Alois Reitbauer in a previous Boston Web Perf talk.
Real user monitoring is one of the best ways of learning “the truth” about what visitors experience on your web site, but it comes at a cost. The real world is messy and noisy making it hard to know exactly what’s going on. Filtering your data, splitting it along multiple dimensions, and determining what to discard are important second steps on the path to insightful RUM analysis, and in this session, we’ll go into some of the details.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Epistemic Interaction - tuning interfaces to provide information for AI support
Boomerang at FOSS.IN/2010
1. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Measuring the web with boomerang
Philip Tellis / philip@bluesmoon.info
FOSS.IN/2010 – 2010.12.15
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
2. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
$ finger philip
Philip Tellis
philip@bluesmoon.info
@bluesmoon
geek - paranoid - speedfreak
yahoo
http://bluesmoon.info/
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
3. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
4. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
5. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
6. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Less than 20% of page load time is something we can measure
and fix during development
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
7. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
It’s what we can’t control that bites us
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
8. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
browsers
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
9. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
plugins
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
10. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
OSes
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
11. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
viruses
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
12. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
antiviruses
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
13. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
microwaves
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
14. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
baby monitors
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
15. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
naughty neighbours
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
16. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
file shares
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
17. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
governments
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
18. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
rodents
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
19. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
Too many variations
Try simulating all that in the lab!
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
20. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
We need to measure real end-user performance
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
21. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
We need to measure real end-user performance from the real
end-user’s box
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
22. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
23. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
While this might work, it isn’t necessarily representative
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
24. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
What about JavaScript?
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
25. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
boomerang is...
A piece of javascript that you add to your web page where it
measures and beacons back to you, the end user’s perceived
performance of your page
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
26. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
How?
<script src="boomerang.js" type="text/javascript">
</script>
<script type="text/javascript">
BOOMR.init({
user_ip: "<user’s ip address>",
beacon_url: "http://mysite.com/beacon.php"
});
</script>
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
27. Introduction
Time
How does it work?
The adversary
Contributing to boomerang
Measure twice
Using boomerang
boomerang
Data
What does it do?
Measures user’s network throughput and latency to your
server
Measures the current page’s load time
Beacons these results back to your server
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
28. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
How does boomerang work?
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
29. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
Let’s take that one at a time
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
30. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
Measuring latency
Download a 32 byte gif 10 times in sequence
Measure the time to download each
Discard the first measurement because it’s overpriced
Calculate the arithmetic mean, standard deviation and
margin of error of the rest
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
31. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
Wait, did you say overpriced?
The first image might require a DNS lookup and TCP
handshake
Slow start is not an issue since 32 bytes fit in 1 packet
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
32. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
Measuring throughput
After the latency test is done, we download progressively
larger images
Stop at the first image that times out
Redownload that image a few more times
Calculate the median, standard deviation and margin of
error of the largest images
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
33. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
Measuring latency before throughput helps here
Those 10 latency images do a lot to widen the TCP
window size
The bandwidth images make much better use of available
bandwidth
The image we end with uses the most bandwidth
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
34. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
How do we measure page load time?
In the onbeforeunload event, measure the time and
store it in a cookie
In the onload event, check the cookie, and measure the
difference with the current time
We also make sure that the page that set the cookie is the
referrer of the current page
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
35. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
What? Two pages?
Yes, this needs two pages and cookies. If those aren’t
supported, we try to use the WebTiming API.
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
36. Introduction
Latency
How does it work?
Bandwidth/Throughput
Contributing to boomerang
Load time
Using boomerang
Accuracy
Data
How accurate is it?
Latency measurements are very accurate (±1%)
Bandwidth is to an order of magnitude. For bad
connections can be ±30%
Page load time sometimes has outliers, you need
post-filtering
The margin of error tells you how good your data is
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
37. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Github
https://github.com/yahoo/boomerang/
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
38. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Get the code
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
39. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Get the code
git clone
git@github.com:yourname/boomerang.git
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
40. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Submit code
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
41. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
boomerang.js
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
42. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
plugins
cp plugin.js yourplugin.js
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
43. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
The Makefile
make PLUGINS="plugin list" MINIFIER="/minifier/path"
make usage
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
44. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Include it on your page
<script src="boomerang.js" type="text/javascript">
</script>
<script type="text/javascript">
BOOMR.init({
user_ip: "<user’s ip address>",
beacon_url: "http://mysite.com/beacon.php"
});
</script>
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
45. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
For most sites, that’s about it
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
46. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
You probably want to do more
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
47. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Handle subdomains
Set the site_domain parameter:
BOOMR.init({
user_ip: "<user’s ip address>",
beacon_url: "http://mysite.com/beacon.php",
site_domain: "mysite.com"
});
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
48. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
This lets you measure transitions across *.mysite.com
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
49. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Measure more than just load time
<html><head>
<script>var t_pagestart=new Date().getTime();</scrip
...
<script>var th=new Date().getTime();</script>
</head>
<body>
...
<script>var tj=new Date().getTime();</script>
...
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
50. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
...
<script src="boomerang.js"></script>
...
var te=new Date().getTime();
BOOMR.plugins.RT.setTimer("t_head", th-t_pagestart).
setTimer("t_body", te-th).
setTimer("t_js", te-tj);
</script></body></html>
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
51. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
This adds the t_head, t_body and t_js fields to the beacon
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
52. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Loading dynamic content
BOOMR.init({
user_ip: "<user’s ip address>",
beacon_url: "http://mysite.com/beacon.php",
auto_run: false
});
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
53. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Loading dynamic content
// Just before download starts
BOOMR.plugins.RT.startTimer("t_done");
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
54. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Loading dynamic content
// Just after download finishes
BOOMR.plugins.RT.done();
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
55. Introduction Basic
How does it work? Multi-domain
Contributing to boomerang In-page timers
Using boomerang AJAX
Data
Much more
http://yahoo.github.com/boomerang/doc/howtos/
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
56. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
The beacon
GET request to the beacon URL (response ignored)
All parameters passed in the query string
Extra timers are passed in as a comma separated list in
t_other
before_beacon JavaScript event fired just before the
beacon is sent
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
57. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
What should we do with the data?
Sanity checking to:
Remove fake data
Remove abusive data
Maybe just rate limiting
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
58. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
What can we do with the data?
Statistical analysis to:
Remove outliers
Aggregate based on bandwidth blocks
Measure trends over time and correlate them with code
changes
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
59. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
Bandwidth blocks
Ref: Analysing Bandwidth & Latency – YUI Blog
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
60. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
Bandwidth blocks
Data points from some countries may require narrower bands
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
61. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
Geographic data
Looking at latency from different geographic locations can tell
you where your next mirror should be
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
62. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
ISPs
Grouping data by ISP can tell you who’s behaving badly
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
63. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
More data
Write plugins to get more performance data
We already have a DNS plugin
I’m thinking of an IPv6 v/s IPv4 plugin
What about a full WebTiming plugin?
Can we measure connection setup time?
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
64. Introduction
How does it work? shoulda
Contributing to boomerang coulda
Using boomerang woulda
Data
You decide
Once you have the data, you can do anything with it
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
65. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Thank you
http://github.com/yahoo/boomerang
http://yahoo.github.com/boomerang/doc/
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
66. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Photo credits
flickr.com/photos/21233184@N02/4389412851
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
67. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
Contact me
Philip Tellis
philip@bluesmoon.info
@bluesmoon
geek - paranoid - speedfreak
yahoo
http://bluesmoon.info/
slideshare.net/bluesmoon
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang
68. Introduction
How does it work?
Contributing to boomerang
Using boomerang
Data
References
github.com/yahoo/boomerang
More bandwidth doesn’t matter (much) – Mike Belshe
Analysing Bandwidth & Latency – YUI Blog
It’s the latency, stupid – Stuart Cheshire
The statistics of web performance
FOSS.IN/2010 – 2010.12.15 Measuring the web with boomerang