SlideShare a Scribd company logo
Effectively Monitoring
Client-Side Performance
MobileTea, Rome | @AndrewRota
1. Client-Side Performance
2. Collect + Monitor
3. Effectively
Andrew Rota
Software Engineer, .
@AndrewRota .
Boston, MA
Web Performance
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Web
Performance
Measuring
Performance
Navigation
Render
Additional
Resources
Interaction
Navigation
Render
Additional
Resources
Interaction
Navigation
Render
Additional
Resources
Interaction
Navigation
Render
Additional
Resources
Interaction
There’s no single metric
for measuring web
performance
Performance Metric Sources
1. Observational data
2. Browser devtools
3. Browser reported metrics
Observational Data
Performance Metric Sources
1. Observational data
2. Browser devtools
3. Browser reported metrics
Browser Profiling Metrics
Performance Metric Sources
1. Observational data
2. Browser devtools
3. Browser reported metrics
Performance Metric Sources
1. Observational data
2. Browser devtools
3. Browser reported metrics
• Navigation Timing API
• Paint metrics
• Custom Metrics
Navigation Timing API
navigationStart
responseStart
responseEnd
domInteractive
domContentLoaded
domComplete
Paint Metrics
window.performance.timing.msFirstPaint
window.chrome.loadTimes().firstPaintTime
Internet Explorer
Chrome
firstPaint
Custom Metrics
window.performance.now()
Custom Metrics
window.performance.mark(‘mainImageLoaded’)
window.performance
.getEntriesByName(‘mainImageLoaded’)[0]
.startTime
mainImageLoaded
tableSorted
Making Metrics
Meaningful
Client-Side Performance Monitoring (MobileTea, Rome)
Traditional Site Visit
Lifecycle
Page
1
Page
2
Page
3
Page
4
But what about single
page applications (SPAs)?
Page
1
Page
2
Page
3
Page
4
SPAs can improve
performance, but complicate
performance metrics
With SPAs,
1) instrument router actions, and
2) know that metrics won’t be 1:1.
Determine meaningful abstract metrics
on top of low-level browser/app metrics
Can we automate, collect,
and monitor these metrics?
1. Client-Side Performance
2. Collect + Monitor
3. Effectively
1. Real User Monitoring (RUM)

2. Synthetic
Collecting Performance Metrics
RUM Performance Metrics
Users Collect Metrics
Sources for RUM Metrics
1. Observational data
2. Browser devtools
3. Browser reported metrics
• Navigation Timing API
• Paint metrics
• Custom Metrics
Tools for RUM Metrics
Browser reported
metrics
Collect Metrics
Send Metrics
(XHR)
Tools for RUM Metrics
• Custom JavaScript
• Open source JS libraries
• github.com/lognormal/boomerang
• Third party monitoring services







Synthetic Performance
Metrics
Automated Test Collect Metrics
Sources for Synthetic Metrics
1. Observational data
2. Browser devtools
3. Browser reported metrics
• Navigation Timing API
• Paint metrics
• Custom Metrics
Tools for Synthetic
Performance Metrics
Scheduler Browser + Test Runner
Schedulers
• Cron













> 0 * * * * /path/to/script.sh
Schedulers
• Cron
• Continuous integration server
• Jenkins







> 0 * * * * /path/to/script.sh
Synthetic test runners
• Phantomas
• Browser-Perf
• WebPagetest
• Lighthouse





Phantomas
Headless Browsers
Phantomas
> phantomas http://reddit.com
{

"metrics": {

"requests": 73,

"bodySize": 580491,

"contentLength": 629382,

"timeToFirstByte": 94,

"timeToLastByte": 105,

"DOMqueries": 247,

"firstPaint": 0,

"domInteractive": 215,

"domContentLoaded": 213,

"domContentLoadedEnd": 355,

"domComplete": 792,

"httpsRequests": [

"https://www.reddit.com/",

"https://www.redditstatic.com/reddit-init.en.qq9nT0inXvw.js",

"https://www.redditstatic.com/reddit.en.xlHlxcJziiU.js",

"https://www.redditstatic.com/reddit.ooBJpEoO9vY.css",

"https://www.google-analytics.com/analytics.js"

]

// … and more!

}

}
Phantomas
> phantomas http://reddit.com
{

"metrics": {

"requests": 73,

"bodySize": 580491,

"contentLength": 629382,

"timeToFirstByte": 94,

"timeToLastByte": 105,

"DOMqueries": 247,

"firstPaint": 0,

"domInteractive": 215,

"domContentLoaded": 213,

"domContentLoadedEnd": 355,

"domComplete": 792,

"httpsRequests": [

"https://www.reddit.com/",

"https://www.redditstatic.com/reddit-init.en.qq9nT0inXvw.js",

"https://www.redditstatic.com/reddit.en.xlHlxcJziiU.js",

"https://www.redditstatic.com/reddit.ooBJpEoO9vY.css",

"https://www.google-analytics.com/analytics.js"

]

// … and more!

}

}
Phantomas
> phantomas http://reddit.com
{

"metrics": {

"requests": 73,

"bodySize": 580491,

"contentLength": 629382,

"timeToFirstByte": 94,

"timeToLastByte": 105,

"DOMqueries": 247,

"firstPaint": 0,

"domInteractive": 215,

"domContentLoaded": 213,

"domContentLoadedEnd": 355,

"domComplete": 792,

"httpsRequests": [

"https://www.reddit.com/",

"https://www.redditstatic.com/reddit-init.en.qq9nT0inXvw.js",

"https://www.redditstatic.com/reddit.en.xlHlxcJziiU.js",

"https://www.redditstatic.com/reddit.ooBJpEoO9vY.css",

"https://www.google-analytics.com/analytics.js"

]

// … and more!

}

}
Phantomas
> phantomas http://reddit.com
{

"metrics": {

"requests": 73,

"bodySize": 580491,

"contentLength": 629382,

"timeToFirstByte": 94,

"timeToLastByte": 105,

"DOMqueries": 247,

"firstPaint": 0,

"domInteractive": 215,

"domContentLoaded": 213,

"domContentLoadedEnd": 355,

"domComplete": 792,

"httpsRequests": [

"https://www.reddit.com/",

"https://www.redditstatic.com/reddit-init.en.qq9nT0inXvw.js",

"https://www.redditstatic.com/reddit.en.xlHlxcJziiU.js",

"https://www.redditstatic.com/reddit.ooBJpEoO9vY.css",

"https://www.google-analytics.com/analytics.js"

]

// … and more!

}

}
Browser-Perf
Browser-Perf
> browser-perf http://reddit.com
--selenium=selenium.example.com
Browser-Perf
> browser-perf http://reddit.com
--selenium=selenium.example.com
Browser-Perf
> browser-perf http://reddit.com
--selenium=selenium.example.com
Browser-Perf
> browser-perf http://reddit.com
--selenium=selenium.example.com
WebPagetest
http://www.webpagetest.org/
WebPagetest
http://www.webpagetest.org/
WebPagetest
Can run on mobile devices
WPT: Speed Index
Paint Time of “Above the Fold” Content
( )
Source: WebPagetest
Calculating Speed Index
1. Take the duration until the page is visually
complete, above the fold
2. Separate it into 100ms intervals
3. For each interval, assign it a “percent
visually complete”
4. Invert that percentage so it’s “percent
incomplete” or “percent remaining”
5. Multiply that by the interval length (100ms)
6. Sum all of the intervals. Speed Index!
Mobile viewport size
will affect this metric!
Lighthouse
Client-Side Performance Monitoring (MobileTea, Rome)
Lighthouse
Lighthouse + WPT?!
https://github.com/WPO-Foundation/webpagetest/pull/825
Storage and Monitoring
• Aggregation
• Data storage + queries
• Visualization
• Alerts + Notification
Storing and Monitoring
Aggregation via StatsD
Storage + Queries with Graphite
mySite.homepage.phantomas.domComplete
Visualization with Grafana
Visualization with Grafana
Source: play.grafana.org/
1. Client-Side Performance
2. Collect + Monitor
3. Effectively
Effective Monitoring
• Reduce noise
• Be aware of environment differences
• Beware skewed data
• Make data actionable
• Utilize data
Reduce Noise
• Isolate third party scripts and
external services

• Control conditional code paths (A/B
tests, etc.)
Be aware of environment
differences
• Especially in mobile

• Bandwidth differences
• CPU/memory differences
Pyramid of Environment Parity
Mock user agent
Throttle network connection, CPU
Device simulator
Real device
Pyramid of Environment Parity
Mock user agent
Throttle network connection, CPU
Device simulator
Real device
Accuracy
Ease/Speed
Beware Skewed Data
• Observer effect

• Noisy neighbors
Make Data Actionable
Know what changes will
affect each of your metrics
Do something with this data!
Utilize Data
• Agree on performance metrics
• Agree on performance goals
• Allocate time and resources
to achieving these goals
Performance is a means
to an end:
Remember
Performance is a means
to an end:
user experience
Remember
Andrew Rota, .
@AndrewRota .
Thanks!
Recommend Resources
• bit.ly/google_rails
• bit.ly/webpagetest_docs
• bit.ly/browser_perf
• bit.ly/statsdcc
• bit.ly/phantomas_js
• graphite.readthedocs.io
Ad

More Related Content

Viewers also liked (18)

Component Based UI Architectures for the Web
Component Based UI Architectures for the WebComponent Based UI Architectures for the Web
Component Based UI Architectures for the Web
Andrew Rota
 
meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8
Filipe Portes
 
Resultaten serious game who is john galt
Resultaten serious game who is john galtResultaten serious game who is john galt
Resultaten serious game who is john galt
Rob Oostdam
 
The Street Kids of Calabar: A Punitive Approach is Not Enough
 The Street Kids of Calabar: A Punitive Approach is Not Enough The Street Kids of Calabar: A Punitive Approach is Not Enough
The Street Kids of Calabar: A Punitive Approach is Not Enough
PIND Foundation
 
SAPI Solutions for Distribution
SAPI Solutions for DistributionSAPI Solutions for Distribution
SAPI Solutions for Distribution
Eric Thornell
 
Iapmei incentivos industria 4.0 apt v4
Iapmei   incentivos industria 4.0 apt v4Iapmei   incentivos industria 4.0 apt v4
Iapmei incentivos industria 4.0 apt v4
Pedro Cilínio
 
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Carina C. Zona
 
Par30 led spotlight 12w
Par30 led spotlight 12wPar30 led spotlight 12w
Par30 led spotlight 12w
Luminhome Lighting
 
DevLOVE仙台の野望
DevLOVE仙台の野望DevLOVE仙台の野望
DevLOVE仙台の野望
chachaki chachaki
 
Onde é que nos encontramos para aonde estamos a ir e onde devemos estar
Onde é que nos encontramos para aonde estamos a ir e onde devemos estarOnde é que nos encontramos para aonde estamos a ir e onde devemos estar
Onde é que nos encontramos para aonde estamos a ir e onde devemos estar
Jorge Moreira
 
専修大学文学部50年小史
専修大学文学部50年小史専修大学文学部50年小史
専修大学文学部50年小史
LettersSU
 
Un Kano pour Mammy
Un Kano pour MammyUn Kano pour Mammy
Un Kano pour Mammy
Eric Pringels
 
Commerce 2.x lessons learned
Commerce 2.x  lessons learnedCommerce 2.x  lessons learned
Commerce 2.x lessons learned
Bojan Živanović
 
25 Quotes to Inspire your Operational Excellence Initiatives
25 Quotes to Inspire your Operational Excellence Initiatives25 Quotes to Inspire your Operational Excellence Initiatives
25 Quotes to Inspire your Operational Excellence Initiatives
Carla Gregory
 
Los presupuestos públicos en estados y municipios
Los presupuestos públicos en estados y municipiosLos presupuestos públicos en estados y municipios
Los presupuestos públicos en estados y municipios
Instituto Sonorense de Administración Pública, A.C.
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
Michael Castillo Granados
 
Int64
Int64Int64
Int64
Brendan Eich
 
Nomination de hervé le caignec
Nomination de hervé le caignecNomination de hervé le caignec
Nomination de hervé le caignec
LISEA
 
Component Based UI Architectures for the Web
Component Based UI Architectures for the WebComponent Based UI Architectures for the Web
Component Based UI Architectures for the Web
Andrew Rota
 
meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8
Filipe Portes
 
Resultaten serious game who is john galt
Resultaten serious game who is john galtResultaten serious game who is john galt
Resultaten serious game who is john galt
Rob Oostdam
 
The Street Kids of Calabar: A Punitive Approach is Not Enough
 The Street Kids of Calabar: A Punitive Approach is Not Enough The Street Kids of Calabar: A Punitive Approach is Not Enough
The Street Kids of Calabar: A Punitive Approach is Not Enough
PIND Foundation
 
SAPI Solutions for Distribution
SAPI Solutions for DistributionSAPI Solutions for Distribution
SAPI Solutions for Distribution
Eric Thornell
 
Iapmei incentivos industria 4.0 apt v4
Iapmei   incentivos industria 4.0 apt v4Iapmei   incentivos industria 4.0 apt v4
Iapmei incentivos industria 4.0 apt v4
Pedro Cilínio
 
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Carina C. Zona
 
Onde é que nos encontramos para aonde estamos a ir e onde devemos estar
Onde é que nos encontramos para aonde estamos a ir e onde devemos estarOnde é que nos encontramos para aonde estamos a ir e onde devemos estar
Onde é que nos encontramos para aonde estamos a ir e onde devemos estar
Jorge Moreira
 
専修大学文学部50年小史
専修大学文学部50年小史専修大学文学部50年小史
専修大学文学部50年小史
LettersSU
 
Commerce 2.x lessons learned
Commerce 2.x  lessons learnedCommerce 2.x  lessons learned
Commerce 2.x lessons learned
Bojan Živanović
 
25 Quotes to Inspire your Operational Excellence Initiatives
25 Quotes to Inspire your Operational Excellence Initiatives25 Quotes to Inspire your Operational Excellence Initiatives
25 Quotes to Inspire your Operational Excellence Initiatives
Carla Gregory
 
Nomination de hervé le caignec
Nomination de hervé le caignecNomination de hervé le caignec
Nomination de hervé le caignec
LISEA
 

Similar to Client-Side Performance Monitoring (MobileTea, Rome) (20)

Effectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side PerformanceEffectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side Performance
Andrew Rota
 
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Akamai Technologies
 
Measuring web performance
Measuring web performanceMeasuring web performance
Measuring web performance
Patrick Meenan
 
Performance on a budget
Performance on a budgetPerformance on a budget
Performance on a budget
Dimitry Ushakov
 
Using Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web ApplicationsUsing Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web Applications
Nicholas Jansma
 
End user-experience monitoring
End user-experience monitoring End user-experience monitoring
End user-experience monitoring
Site24x7
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
Agile Testing Alliance
 
Edge 2014: A Modern Approach to Performance Monitoring
Edge 2014: A Modern Approach to Performance MonitoringEdge 2014: A Modern Approach to Performance Monitoring
Edge 2014: A Modern Approach to Performance Monitoring
Akamai Technologies
 
How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...
Paul Brebner
 
Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
SmartBear
 
Azure Application insights - An Introduction
Azure Application insights - An IntroductionAzure Application insights - An Introduction
Azure Application insights - An Introduction
Matthias Güntert
 
JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31 JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31
Omnilogy
 
Prometheus - Utah Software Architecture Meetup - Clint Checketts
Prometheus - Utah Software Architecture Meetup - Clint CheckettsPrometheus - Utah Software Architecture Meetup - Clint Checketts
Prometheus - Utah Software Architecture Meetup - Clint Checketts
clintchecketts
 
Performance Monitoring at Spreadshirt
Performance Monitoring at SpreadshirtPerformance Monitoring at Spreadshirt
Performance Monitoring at Spreadshirt
Martin Breest
 
Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015
Wolfgang Gottesheim
 
Add observability to your django application - PyCon FR 2019
Add observability to your django application - PyCon FR 2019Add observability to your django application - PyCon FR 2019
Add observability to your django application - PyCon FR 2019
Bleemeo
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
Ido Flatow
 
Measuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrongMeasuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrong
Fastly
 
Browserscope oscon 2011
Browserscope oscon 2011Browserscope oscon 2011
Browserscope oscon 2011
lsimon
 
Tool it Up! - Session #2 - NetPanel
Tool it Up! - Session #2 - NetPanelTool it Up! - Session #2 - NetPanel
Tool it Up! - Session #2 - NetPanel
toolitup
 
Effectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side PerformanceEffectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side Performance
Andrew Rota
 
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Real User Monitoring: Getting Real Data from Real Users in the Real World - S...
Akamai Technologies
 
Measuring web performance
Measuring web performanceMeasuring web performance
Measuring web performance
Patrick Meenan
 
Using Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web ApplicationsUsing Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web Applications
Nicholas Jansma
 
End user-experience monitoring
End user-experience monitoring End user-experience monitoring
End user-experience monitoring
Site24x7
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
Agile Testing Alliance
 
Edge 2014: A Modern Approach to Performance Monitoring
Edge 2014: A Modern Approach to Performance MonitoringEdge 2014: A Modern Approach to Performance Monitoring
Edge 2014: A Modern Approach to Performance Monitoring
Akamai Technologies
 
How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...
Paul Brebner
 
Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
SmartBear
 
Azure Application insights - An Introduction
Azure Application insights - An IntroductionAzure Application insights - An Introduction
Azure Application insights - An Introduction
Matthias Güntert
 
JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31 JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31
Omnilogy
 
Prometheus - Utah Software Architecture Meetup - Clint Checketts
Prometheus - Utah Software Architecture Meetup - Clint CheckettsPrometheus - Utah Software Architecture Meetup - Clint Checketts
Prometheus - Utah Software Architecture Meetup - Clint Checketts
clintchecketts
 
Performance Monitoring at Spreadshirt
Performance Monitoring at SpreadshirtPerformance Monitoring at Spreadshirt
Performance Monitoring at Spreadshirt
Martin Breest
 
Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015Industry Keynote at Large Scale Testing Workshop 2015
Industry Keynote at Large Scale Testing Workshop 2015
Wolfgang Gottesheim
 
Add observability to your django application - PyCon FR 2019
Add observability to your django application - PyCon FR 2019Add observability to your django application - PyCon FR 2019
Add observability to your django application - PyCon FR 2019
Bleemeo
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
Ido Flatow
 
Measuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrongMeasuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrong
Fastly
 
Browserscope oscon 2011
Browserscope oscon 2011Browserscope oscon 2011
Browserscope oscon 2011
lsimon
 
Tool it Up! - Session #2 - NetPanel
Tool it Up! - Session #2 - NetPanelTool it Up! - Session #2 - NetPanel
Tool it Up! - Session #2 - NetPanel
toolitup
 
Ad

More from Andrew Rota (16)

Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
Andrew Rota
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Andrew Rota
 
Getting Started with GraphQL && PHP
Getting Started with GraphQL && PHPGetting Started with GraphQL && PHP
Getting Started with GraphQL && PHP
Andrew Rota
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
Andrew Rota
 
Building a GraphQL API in PHP
Building a GraphQL API in PHPBuilding a GraphQL API in PHP
Building a GraphQL API in PHP
Andrew Rota
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
Andrew Rota
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
 
UI Rendering at Wayfair
UI Rendering at WayfairUI Rendering at Wayfair
UI Rendering at Wayfair
Andrew Rota
 
Better PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.jsBetter PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.js
Andrew Rota
 
Tungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular FrameworkTungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular Framework
Andrew Rota
 
Why Static Type Checking is Better
Why Static Type Checking is BetterWhy Static Type Checking is Better
Why Static Type Checking is Better
Andrew Rota
 
An Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our OwnAn Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our Own
Andrew Rota
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing CombinationWeb Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Bem methodology
Bem methodologyBem methodology
Bem methodology
Andrew Rota
 
Web Components and Modular CSS
Web Components and Modular CSSWeb Components and Modular CSS
Web Components and Modular CSS
Andrew Rota
 
Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
Andrew Rota
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Andrew Rota
 
Getting Started with GraphQL && PHP
Getting Started with GraphQL && PHPGetting Started with GraphQL && PHP
Getting Started with GraphQL && PHP
Andrew Rota
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
Andrew Rota
 
Building a GraphQL API in PHP
Building a GraphQL API in PHPBuilding a GraphQL API in PHP
Building a GraphQL API in PHP
Andrew Rota
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
Andrew Rota
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
 
UI Rendering at Wayfair
UI Rendering at WayfairUI Rendering at Wayfair
UI Rendering at Wayfair
Andrew Rota
 
Better PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.jsBetter PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.js
Andrew Rota
 
Tungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular FrameworkTungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular Framework
Andrew Rota
 
Why Static Type Checking is Better
Why Static Type Checking is BetterWhy Static Type Checking is Better
Why Static Type Checking is Better
Andrew Rota
 
An Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our OwnAn Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our Own
Andrew Rota
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing CombinationWeb Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Web Components and Modular CSS
Web Components and Modular CSSWeb Components and Modular CSS
Web Components and Modular CSS
Andrew Rota
 
Ad

Recently uploaded (20)

Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 

Client-Side Performance Monitoring (MobileTea, Rome)