Hacking the Human Perception Chris DeMars ● @saltnburnem https://pixabay.com/en/brain-icon-human-background-idea-1710293/ Chris DeMars ● @saltnburnem 1 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars Front-End Developer Chris DeMars ● @saltnburnem 2 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

That’s me! Google Developer Expert Microsoft MVP Oracle Groundbreaker Ambassador Internatonal Speaker Founder of Vuetroit Host of Tales From the Script πŸ’š Tattoos & Horror Chris DeMars ● @saltnburnem 3 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Why Are We Here Chris? Chris DeMars ● @saltnburnem 4 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing 2.) Time to First Paint Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing 2.) Time to First Paint 3.) Time to First Byte Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) 2.) 3.) 4.) Auditing & Testing Time to First Paint Time to First Byte Time to First Interactive Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) 2.) 3.) 4.) 5.) Auditing & Testing Time to First Paint Time to First Byte Time to First Interactive Perceived Performance Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing 2.) Time to First Paint 3.) Time to First Byte 4.) Time to First Interactive 5.) Perceived Performance a.) Critical CSS Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing 2.) Time to First Paint 3.) Time to First Byte 4.) Time to First Interactive 5.) Perceived Performance a.) Critical CSS b.) Skeleton Screens Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Let’s Talk! 1.) Auditing & Testing 2.) Time to First Paint 3.) Time to First Byte 4.) Time to First Interactive 5.) Perceived Performance a.) Critical CSS b.) Skeleton Screens c.) Fun Distractions Chris DeMars ● @saltnburnem 5 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Performance? Chris DeMars ● @saltnburnem 6 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Visibility of System Status https://www.nngroup.com/articles/ten-usability-heuristics/ Chris DeMars ● @saltnburnem 7 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Visibility of System Status The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. https://www.nngroup.com/articles/ten-usability-heuristics/ Chris DeMars ● @saltnburnem 7 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Fast? Chris DeMars ● @saltnburnem 8 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Fast? Chris DeMars ● @saltnburnem ! Quick Desktop Load 8 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Fast? Chris DeMars ● @saltnburnem ! Quick Desktop Load ! Quick Mobile Load 8 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Fast? Chris DeMars ● @saltnburnem ! Quick Desktop Load ! Quick Mobile Load ! Time 8 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 9 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 9 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 10 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 10 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Minimal Requests? Chris DeMars ● @saltnburnem 11 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Minimal Requests? Chris DeMars ● @saltnburnem ! How many? 11 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Minimal Requests? Chris DeMars ● @saltnburnem ! How many? ! What does that mean? 11 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Load Time? Chris DeMars ● @saltnburnem 12 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Load Time? Chris DeMars ● @saltnburnem ! Desktop 12 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Load Time? Chris DeMars ● @saltnburnem ! Desktop ! 3G 12 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Load Time? Chris DeMars ● @saltnburnem ! Desktop ! 3G ! 4G 12 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Load Time? Chris DeMars ● @saltnburnem ! Desktop ! 3G ! 4G ! 2G 12 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 13 https://bit.ly/2Uc47xa πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Performance Chris DeMars ● @saltnburnem 14 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Performance on the front end # # Chris DeMars ● @saltnburnem 14 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Addy Osmani @addyosmani #PerfMatters Chris DeMars ● @saltnburnem 15 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

User Centric Metrics Chris DeMars ● @saltnburnem 16 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

User Centric Metrics 1.) Is it happening? Chris DeMars ● @saltnburnem 16 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

User Centric Metrics 1.) Is it happening? 2.) Is it useful? Chris DeMars ● @saltnburnem 16 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

User Centric Metrics 1.) Is it happening? 2.) Is it useful? 3.) Is it useable? Chris DeMars ● @saltnburnem 16 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

User Centric Metrics 1.) Is it happening? 2.) Is it useful? 3.) Is it useable? 4.) Is it delightful? Chris DeMars ● @saltnburnem 16 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Testing & Audits Chris DeMars ● @saltnburnem 17 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Lighthouse Chris DeMars ● @saltnburnem 18 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 19 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 19 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

WebPageTest Chris DeMars ● @saltnburnem 20 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 21 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 21 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 22 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 23 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 24 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 25 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chrome DevTools Chris DeMars ● @saltnburnem 26 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 27 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 27 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 28 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 28 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Paint Chris DeMars ● @saltnburnem 29 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Paint & Time to First Contentful Paint Chris DeMars ● @saltnburnem 30 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Paint Chris DeMars ● @saltnburnem 31 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Paint The point where the browser renders anything to the screen. Chris DeMars ● @saltnburnem 31 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Contentful Paint Chris DeMars ● @saltnburnem 32 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Contentful Paint The point where the browser renders the first bit of content from the DOM. Chris DeMars ● @saltnburnem 32 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

First Paint 1.4s First Contentful Paint 1.4s Chris DeMars ● @saltnburnem 33 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

First Paint 1.4s First Contentful Paint 1.4s Chris DeMars ● @saltnburnem 33 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 34 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Meaningful Paint Chris DeMars ● @saltnburnem 35 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

https://bit.ly/2HVcwvP Chris DeMars ● @saltnburnem 36 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to First Byte Chris DeMars ● @saltnburnem 37 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 38 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 38 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

https://www.keycdn.com/support/what-is-ttfb/ Chris DeMars ● @saltnburnem 39 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

TTFB 230ms Chris DeMars ● @saltnburnem 40 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Time to Interactive Chris DeMars ● @saltnburnem 41 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 42 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 42 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Why measure DOMContentLoaded? Chris DeMars ● @saltnburnem 43 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Critical Rendering Path Chris DeMars ● @saltnburnem 43 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 44 https://bit.ly/2JazYc6 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Perceived Performance Chris DeMars ● @saltnburnem 45 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Perceived performance is a measure of how quick a user thinks your site is, and that’s often more important than its true speed. - Matt West Chris DeMars ● @saltnburnem 46 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Critical CSS Chris DeMars ● @saltnburnem 47 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

https://www.smashingmagazine.com/2015/08/understanding-critical-css/ Chris DeMars ● @saltnburnem 48 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

https://www.smashingmagazine.com/2015/08/understanding-critical-css/ Chris DeMars ● @saltnburnem 49 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 50 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

🌟 Penthouse criticalCSS 🌟 Critical 🌟 Chris DeMars ● @saltnburnem 50 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Skeleton Screens Chris DeMars ● @saltnburnem 51 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

β€œA skeleton screen is essentially a blank version of a page into which information is gradually loaded.” - Luke Wroblewski Chris DeMars ● @saltnburnem 52 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

β€œUsers don’t care about performance stats in terminal, they do care about what they see in front of them.” - Callum Hart Chris DeMars ● @saltnburnem 53 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 54 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 55 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 56 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 57 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

β€œDesign for operational transparency by providing progress-UX that’s robust and meaningful.” - Nick Babich Chris DeMars ● @saltnburnem 58 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Great Info! https://www.mobify.com/insights/ designing-appearance-speed/ Chris DeMars ● @saltnburnem 59 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Fun Distractions Chris DeMars ● @saltnburnem 60 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Offer distractions so users don’t get bored! Chris DeMars ● @saltnburnem 61 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Offer distractions so users don’t get bored! Chris DeMars ● @saltnburnem 61 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

What did we learn? Chris DeMars ● @saltnburnem 62 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

What did we learn? βœ… Performance matters Chris DeMars ● @saltnburnem 62 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

What did we learn? βœ… Performance matters βœ… How to test performance on the front end Chris DeMars ● @saltnburnem 62 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

What did we learn? βœ… Performance matters βœ… How to test performance on the front end βœ… Different metrics we can measure Chris DeMars ● @saltnburnem 62 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

What did we learn? βœ… Performance matters βœ… How to test performance on the front end βœ… Different metrics we can measure βœ… Perceived performance Chris DeMars ● @saltnburnem 62 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 63 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Chris DeMars ● @saltnburnem 63 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Resources https://goo.gl/dqxsXi Chris DeMars ● @saltnburnem 64 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Jeremy Wagner @malchata Chris DeMars ● @saltnburnem 65 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Jeremy Wagner @malchata Chris DeMars ● @saltnburnem 65 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Responsible JavaScript: Part 1 https://bit.ly/2uwST7U Part 2 https://bit.ly/2K5zZO2 Chris DeMars ● @saltnburnem 66 πŸ’š #DeveloperCommunity πŸ”#AngularDenver

Thanks! Chris DeMars ● @saltnburnem Chris DeMars ● @saltnburnem πŸ’š #DeveloperCommunity πŸ”#AngularDenver