SlideShare a Scribd company logo
1 of 78
Download to read offline
DELIVERING
RESPONSIBLY
SCOTT JEHL
Responding
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
https://www.flickr.com/photos/adactio/6153522068/
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Basic Enhanced
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Foremost:
We Must Deliver.
Speed broadens access.
Performance Priorities
Speed broadens access.
Not just a matter of empathy.
Access is our job.
More people access Facebook
over 2G than 4G.
https://twitter.com/BenedictEvans/status/513017790920290304
Benedict Evans
https://www.flickr.com/photos/lacantine/6234723672/
https://fbnewsroomus.files.wordpress.com/2015/02/state-of-connectivity1.pdf
Average webpage: 2 Megabytes!
5%
61kb
152kb
61kb
318kb
1,297kb
IMG JS CSS OTHER HTML FONTS
http://httparchive.org/interesting.php?a=All&l=Apr%2015%202015
Lightening our load
Optimizing everything that you can.
Easy, classic performance optimizations:
Optimize, Minify, Gzip
Don’t just optimize images;
Make them responsive!
<img src="small.jpg" srcset="large.png 2x" alt="…">
!
!
<picture>
<source srcset="large.png" media="(min-width: 800px)">
<source srcset="medium.jpg" media="(min-width: 400px)">
<img src="small.jpg" alt="…">
</picture>
Srcset & Picture
http://scottjehl.github.io/picturefill/
Reduce Framework Bloat
Reduce dependencies, make custom library builds, and UnCSS what you can.
Optimizing Assets:
A Lesser Concern?
“when it comes to your web browsing experience,
it turns out that latency, not bandwidth, is
likely the constraining factor today.
Ilya Grigorik
https://www.igvita.com/2012/07/19/latency-the-new-web-performance-bottleneck/
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Prioritizing for progressive rendering
The Critical Path
Heading Heading
<link rel="stylesheet" href="a.css">
<link rel="stylesheet" href="fonts.css">
<script src="a.js"></script>
<script src="b.js"></script>
Detours on the path to a usable render
...
</head>
<head>
...
Detours on the path to a usable render
HTML CSS
JS
CSS
JS
Blank page
}
Stay on that
critical path!
http://webpagetest.org
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
Sub-1 Second Render:
Cram your initial view into the first 14kb of your HTML
“
Identify and “inline” the CSS necessary for
rendering the above-the-fold content
PageSpeed Insights
https://developers.google.com/speed/pagespeed/insights/
“The fold”
varies across devices...
http://paul.kinlan.me/detecting-critical-above-the-fold-css/
Original CSS
h1 { font-size: 1.2em; col… }
h2 { margin: 0; }
ol { color: red; }
li { color: blue; backgrou… }
li:hover { color: purple; … }
li:first-child { color: gr… }
li:last-child { color: pin… }
.footer { border-top: 1px … }
.copyright { font-size: 1.… }
h1 { font-size: 1.2em; col… }
h2 { margin: 0; }
ol { color: red; }
li { color: blue; backgrou… }
li:first-child { color: gr… }
Critical CSS
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
https://github.com/filamentgroup/grunt-criticalcss
criticalcss: {
home: {
options: {
outputfile : 'css/critical/critical-home.css',
filename : 'all.css',
url : 'http://fgwebsite.local'
}
},
services: {
options: {
outputfile : 'css/critical/critical-services.css',
filename : 'all.css',
url : 'http://fgwebsite.local/services/'
}
Critical CSS Configuration
Inlining your “critical” code
Load the rest in a non-blocking manner
First the CSS
<style>
body {
font-family: sans-serif;
}
div.foo {
…
</style>
Inlining critical CSS
...
</head>
<head>
...
<style>
<% include “path/to/critical/template.css” %>
</style>
Inlining critical CSS
...
</head>
<head>
...
<link rel=”preload” href=“all.css”>
Fetching the full CSS
<link rel=”preload” href=“all.css”
onload=“this.rel=‘stylesheet’”>
Applying the full CSS
Next, inline the critical JavaScript
If you have any...
<style>
<% include "critical.css" %>
</style>
<script>
<% include "initial.js" %>
</script>
Critical JS, inlined
...
</head>
<head>
...
Which JavaScript is “critical?”
• Ideally, none!
• functions for loading additional assets
• Feature tests? Important polyfills?
• Conditional logic for loading files
function loadCSS( href ){
var ss = window.document.createElement( "link" );
var ref = window.document.getElementsByTagName( "script" )[ 0 ];
ss.rel = "stylesheet";
ss.href = href;
ss.media = "only x";
ref.parentNode.insertBefore( ss, ref );
setTimeout( function(){
ss.media = "all";
} );
}
loadCSS( “/path/to/all.css” );
!
An async CSS loader for non-critical CSS
function preloadSupport(){
var link = document.createElement('link');
link.rel = 'PRELOAD';
return link.rel == 'preload';
}
Detecting rel=preload support
<link rel=”preload” href=“all.css” id=“allCSS”
onload=“this.rel=‘stylesheet’”>
<script>
function loadCSS(){ … }
function preloadSupport(){ … }
if( !preloadSupport() ){
loadCSS( document.getElementById( "allCSS" ).href );
}
</script>
<noscript><link href=“all.css” rel=“stylesheet”></noscript>
Polyfilling rel=preload with loadCSS
function loadJS( src ){
var js = document.createElement( "script" ),
ref = document.getElementsByTagName( "script" )[ 0 ];
js.src = src;
js.async = true;
ref.parentNode.insertBefore( js, ref );
}
// load a script!
loadJS( “/path/to/enhancements.js” );
A simple async. script file loader
<script src=”enhancements.js” async defer></script>
Or, async/defer is a good option…
!
if( document.querySelector && document.addEventListener ){
loadJS( "enhancements.js" );
}
…but dynamic loaders let you cut the mustard
...
</script>
</head>
<head>
<script>
...
<style>/* Critical styles go here */ </style>
<link rel=”preload” href=“all.css” as=“stylesheet” id=“allCSS”
onload=“this.rel=‘stylesheet’”>
<script>
/* some functions go here… */
if( !preloadSupport() ){
loadCSS( document.getElementById( "allCSS" ).href );
}
if( browserCutsTheMustard ){
loadJS( "enhancements.js" );
}
</script>
<noscript><link href=“all.css” rel=“stylesheet”></noscript>
Avoiding the FOIT.
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
http://www.filamentgroup.com/lab/font-events.html
Enabling fonts once loaded
h2 {
font-family: sans-serif;
}
.fonts-loaded h2 {
font-family: “Source Sans Pro", sans-serif;
}
Enabling fonts once loaded
new w.FontFaceObserver( "Source Sans Pro” )
.check()
.then( function(){
document.documentElement.className += " fonts-loaded";
});
Progressive font rendering
Standard
Optimized
Coming soon: CSS-based font-rendering!
@font-face {
font-family: foo;
...
}
body > h1 {
font-family: foo;
font-rendering: swap 3s;
}
Perceived Performance
Case Study
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
3G/Chrome First Usable Render: ~12.5 secs
Optimizations Made:
• Extract and Inline “Critical” CSS
• Load full CSS asynchronously
• Load scripts asynchronously (ads too!)
• Load fonts asynchronously
• Style fallback fonts to match custom font sizes
• Use font loading APIs to swap-in custom fonts once
loaded (allow fallback text to show first)
3G/Chrome First Usable Render: 3.9 secs
Wired.com rendering: before & after
3.9 secs 12.5 secs
weight does not need to increase wait
How we load stuff matters more than how much stuff we load
http://www.filamentgroup.com/lab/weight-wait.html
Looking Ahead
“if you have ever inlined a resource
(CSS, JS, or an image), you've been
"simulating" server push
Ilya Grigorik
https://www.igvita.com/2013/06/12/innovating-with-http-2.0-server-push/
HTTP/2 means no more:
• Inlining CSS, JS, or images
• Concatenating CSS & JavaScript files
• Domain Sharding
• Image sprites
Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015
This won’t happen
overnight.
Delivering responsibly
is our job.
Thanks!
@scottjehl, http://filamentgroup.com

More Related Content

What's hot

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesVitaly Friedman
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaksColdFusionConference
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it allCriciúma Dev
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Holger Bartel
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web componentsJarrod Overson
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)Zoe Gillenwater
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social PluginsStoyan Stefanov
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimizationStevie T
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Raymond Camden
 
Speak The Web: The HTML5 Experiments
Speak The Web: The HTML5 ExperimentsSpeak The Web: The HTML5 Experiments
Speak The Web: The HTML5 Experimentsguestd427df
 
Responsive Web Design: Tips and Tricks
Responsive Web Design: Tips and TricksResponsive Web Design: Tips and Tricks
Responsive Web Design: Tips and TricksGautam Krishnan
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tipSteve Yu
 

What's hot (20)

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and Techniques
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
[edUi] HTML5 Workshop
[edUi] HTML5 Workshop[edUi] HTML5 Workshop
[edUi] HTML5 Workshop
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it all
 
[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design
 
[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover[heweb11] HTML5 Makeover
[heweb11] HTML5 Makeover
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web components
 
Css3
Css3Css3
Css3
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social Plugins
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
Front end performance optimization
Front end performance optimizationFront end performance optimization
Front end performance optimization
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!
 
Speak The Web: The HTML5 Experiments
Speak The Web: The HTML5 ExperimentsSpeak The Web: The HTML5 Experiments
Speak The Web: The HTML5 Experiments
 
Front End Performance
Front End PerformanceFront End Performance
Front End Performance
 
Responsive Web Design: Tips and Tricks
Responsive Web Design: Tips and TricksResponsive Web Design: Tips and Tricks
Responsive Web Design: Tips and Tricks
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Front end performance tip
Front end performance tipFront end performance tip
Front end performance tip
 

Similar to Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015

Build Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićBuild Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićMeetMagentoNY2014
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)Steve Souders
 
JavaScript Perfomance
JavaScript PerfomanceJavaScript Perfomance
JavaScript PerfomanceAnatol Alizar
 
EnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend CodeEnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend CodeMarcel Birkner
 
Website Performance Basics
Website Performance BasicsWebsite Performance Basics
Website Performance Basicsgeku
 
The new static resources framework
The new static resources frameworkThe new static resources framework
The new static resources frameworkmarcplmer
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 
Building Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit MavenBuilding Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit MavenOliver Ochs
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Ontico
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucksTim Wright
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版Joseph Chiang
 
Faster Frontends
Faster FrontendsFaster Frontends
Faster FrontendsAndy Davies
 
10 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 201210 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 2012Bastian Grimm
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Erin M. Kidwell
 
Packing it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to nowPacking it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to nowDerek Willian Stavis
 
Prioritize your critical css and images to render your site fast velocity ny...
Prioritize your critical css and images to render your site fast  velocity ny...Prioritize your critical css and images to render your site fast  velocity ny...
Prioritize your critical css and images to render your site fast velocity ny...Jan-Willem Maessen
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Andy Davies
 

Similar to Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015 (20)

Build Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje JurišićBuild Better Responsive websites. Hrvoje Jurišić
Build Better Responsive websites. Hrvoje Jurišić
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
JavaScript Perfomance
JavaScript PerfomanceJavaScript Perfomance
JavaScript Perfomance
 
EnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend CodeEnterJS 2015 - Continuous Integration for Frontend Code
EnterJS 2015 - Continuous Integration for Frontend Code
 
Website Performance Basics
Website Performance BasicsWebsite Performance Basics
Website Performance Basics
 
The new static resources framework
The new static resources frameworkThe new static resources framework
The new static resources framework
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
Building Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit MavenBuilding Performance - ein Frontend-Build-Prozess für Java mit Maven
Building Performance - ein Frontend-Build-Prozess für Java mit Maven
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
 
Faster Frontends
Faster FrontendsFaster Frontends
Faster Frontends
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
10 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 201210 Tips to make your Website lightning-fast - SMX Stockholm 2012
10 Tips to make your Website lightning-fast - SMX Stockholm 2012
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
 
Packing it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to nowPacking it all: JavaScript module bundling from 2000 to now
Packing it all: JavaScript module bundling from 2000 to now
 
Prioritize your critical css and images to render your site fast velocity ny...
Prioritize your critical css and images to render your site fast  velocity ny...Prioritize your critical css and images to render your site fast  velocity ny...
Prioritize your critical css and images to render your site fast velocity ny...
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
Class15
Class15Class15
Class15
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
 

More from beyond tellerrand

Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015beyond tellerrand
 
Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015beyond tellerrand
 
Connecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian SudaConnecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian Sudabeyond tellerrand
 
The Icon Design Process – Jon Hicks
The Icon Design Process – Jon HicksThe Icon Design Process – Jon Hicks
The Icon Design Process – Jon Hicksbeyond tellerrand
 
CSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe GillenwaterCSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe Gillenwaterbeyond tellerrand
 
Dealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay StocksDealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay Stocksbeyond tellerrand
 

More from beyond tellerrand (6)

Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015Chip Kidd - ! Or ? - btconfBER2015
Chip Kidd - ! Or ? - btconfBER2015
 
Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015Content amid Chaos - beyond tellerrand Dusseldorf 2015
Content amid Chaos - beyond tellerrand Dusseldorf 2015
 
Connecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian SudaConnecting The Digital To Analog - Brian Suda
Connecting The Digital To Analog - Brian Suda
 
The Icon Design Process – Jon Hicks
The Icon Design Process – Jon HicksThe Icon Design Process – Jon Hicks
The Icon Design Process – Jon Hicks
 
CSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe GillenwaterCSS Lessons Learned The Hard Way – Zoe Gillenwater
CSS Lessons Learned The Hard Way – Zoe Gillenwater
 
Dealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay StocksDealing with the fall-out – Elliot Jay Stocks
Dealing with the fall-out – Elliot Jay Stocks
 

Recently uploaded

WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024Jan Löffler
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfmchristianalwyn
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...APNIC
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsRoxana Stingu
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdfShreedeep Rayamajhi
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSedrianrheine
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteMavein
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSlesteraporado16
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Shubham Pant
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilitiesalihassaah1994
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxnaveenithkrishnan
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpressssuser166378
 

Recently uploaded (12)

WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a Website
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilities
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptx
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpress
 

Scott Jehl - Delivering Responsibly - beyond tellerrand Düsseldorf 2015