All tooled up and nowhere to go?

A presentation at Halfstack Online in May 2020 in by Chris Heilmann

Slide 1

Slide 1

All tooled up and nowhere to go? 5/18/20 Chris Heilmann - codepo8 1

Slide 2

Slide 2

Lots of time to spend at home… 5/18/20 Chris Heilmann - codepo8 2

Slide 3

Slide 3

Organising my clothes… 5/18/20 Chris Heilmann - codepo8 3

Slide 4

Slide 4

Tackling that box of cables… 5/18/20 Chris Heilmann - codepo8 4

Slide 5

Slide 5

Tackling that box of cables… 5/18/20 Chris Heilmann - codepo8 5

Slide 6

Slide 6

5/18/20 Chris Heilmann - codepo8 6

Slide 7

Slide 7

Developer Tools Edge(Chromium) PM Team Zoher Ghadyali @ZGhadyali Chris Heilmann @codepo8 Erica Draud @hiamerica Rachel Weil @partytimeHXLNT Brendyn Alexander @webrendyn

Slide 8

Slide 8

A demands gap… Useful, effective and pretty amazing things in devtools 5/18/20 🦄 What we demand of the web… Chris Heilmann - codepo8 8

Slide 9

Slide 9

An assumptions gap… Build it! 5/18/20 Ship it! Great success! Chris Heilmann - codepo8 9

Slide 10

Slide 10

Realities of great software projects… Research 5/18/20 Design Develop Deploy Monitor Chris Heilmann - codepo8 10

Slide 11

Slide 11

A demands gap… 🦄 Useful, effective and pretty amazing things in devtools What we demand of the web… What we use day to day… 5/18/20 Chris Heilmann - codepo8 11

Slide 12

Slide 12

§ Security § Privacy § Performance Why are things “slow”? 5/18/20 § Maintainability § Ownership § Backwards compatibility Chris Heilmann - codepo8 12

Slide 13

Slide 13

Use cases drive new features 5/18/20 Chris Heilmann - codepo8 13

Slide 14

Slide 14

Usage gap Useful, effective and pretty amazing things in devtools What we use day to day… 5/18/20 Chris Heilmann - codepo8 14

Slide 15

Slide 15

5/18/20 Chris Heilmann - codepo8 15

Slide 16

Slide 16

Editor in the browser… 5/18/20 Chris Heilmann - codepo8 16

Slide 17

Slide 17

Editor in the browser… 5/18/20 Chris Heilmann - codepo8 17

Slide 18

Slide 18

Upgrading your dev experience… 5/18/20 Chris Heilmann - codepo8 18

Slide 19

Slide 19

§ You can set breakpoints in the editor in the browser Breakpoints > console.log() 5/18/20 § You can also set breakpoints in your text editor (f.e. Visual Studio Code) § They are more work upfront than a console.log() - but worth it. Chris Heilmann - codepo8 19

Slide 20

Slide 20

§ Your code execution is paused – errors can’t slip though Breakpoints > console.log() 5/18/20 § You get an end-to-end picture of what is happening § You are not likely to litter the web with yet another console message that end users should never see Chris Heilmann - codepo8 20

Slide 21

Slide 21

DOM breakpoints! 5/18/20 Chris Heilmann - codepo8 21

Slide 22

Slide 22

DOM breakpoints? 5/18/20 Chris Heilmann - codepo8 22

Slide 23

Slide 23

Breakpoints > console.log() 5/18/20 Chris Heilmann - codepo8 23

Slide 24

Slide 24

DOM breakpoints! 5/18/20 Chris Heilmann - codepo8 24

Slide 25

Slide 25

DOM breakpoints! 5/18/20 Chris Heilmann - codepo8 25

Slide 26

Slide 26

DOM breakpoints! 5/18/20 Chris Heilmann - codepo8 26

Slide 27

Slide 27

Breakpoints > console.log() 5/18/20 Chris Heilmann - codepo8 27

Slide 28

Slide 28

No need for a mouse! 5/18/20 Chris Heilmann - codepo8 28

Slide 29

Slide 29

More visual tooling? 5/18/20 Chris Heilmann - codepo8 29

Slide 30

Slide 30

Animation Editor 5/18/20 Chris Heilmann - codepo8 30

Slide 31

Slide 31

3D View 5/18/20 Chris Heilmann - codepo8 31

Slide 32

Slide 32

3D View 5/18/20 Chris Heilmann - codepo8 32

Slide 33

Slide 33

Easy to miss extra features… 5/18/20 Chris Heilmann - codepo8 33

Slide 34

Slide 34

Colour Picker 5/18/20 Chris Heilmann - codepo8 34

Slide 35

Slide 35

Shadow Editor 5/18/20 Chris Heilmann - codepo8 35

Slide 36

Slide 36

§ CSS Grid tooling § Font tooling Currently in production: 5/18/20 § Service Worker lifecycle visualization § ??? (you decide) Chris Heilmann - codepo8 36

Slide 37

Slide 37

Emulation 5/18/20 Chris Heilmann - codepo8 37

Slide 38

Slide 38

Device Mode 5/18/20 Chris Heilmann - codepo8 38

Slide 39

Slide 39

Device Mode 5/18/20 Chris Heilmann - codepo8 39

Slide 40

Slide 40

More features of Device Emulation 5/18/20 Chris Heilmann - codepo8 40

Slide 41

Slide 41

Media Queries 5/18/20 Chris Heilmann - codepo8 41

Slide 42

Slide 42

Screen Ruler 5/18/20 Chris Heilmann - codepo8 42

Slide 43

Slide 43

Interaction emulation 5/18/20 Chris Heilmann - codepo8 43

Slide 44

Slide 44

Breakpoints > console.log() 5/18/20 Chris Heilmann - codepo8 44

Slide 45

Slide 45

Rendering menu 5/18/20 Chris Heilmann - codepo8 45

Slide 46

Slide 46

Rendering menu 5/18/20 Chris Heilmann - codepo8 46

Slide 47

Slide 47

5/18/20 Chris Heilmann - codepo8 47

Slide 48

Slide 48

Accessibility concerns 5/18/20 Chris Heilmann - codepo8 48

Slide 49

Slide 49

§ Developer tools are keyboard and screenreader accessible Already shipped: 5/18/20 § Developer tools work in high contrast mode Chris Heilmann - codepo8 49

Slide 50

Slide 50

Pro tip: CMD+SHIFT+P 5/18/20 Chris Heilmann - codepo8 50

Slide 51

Slide 51

5/18/20 Chris Heilmann - codepo8 51

Slide 52

Slide 52

5/18/20 Chris Heilmann - codepo8 52

Slide 53

Slide 53

5/18/20 Chris Heilmann - codepo8 53

Slide 54

Slide 54

§ High Contrast simulation § Simpler accessible interfaces Currently in production: 5/18/20 § Accessibility error reporting in context § Dual Screen Emulation Chris Heilmann - codepo8 54

Slide 55

Slide 55

§ High Contrast simulation § Simpler accessible interfaces Currently in production: 5/18/20 § Accessibility error reporting in context § Dual Screen Emulation Chris Heilmann - codepo8 55

Slide 56

Slide 56

Need for speed? 5/18/20 Chris Heilmann - codepo8 56

Slide 57

Slide 57

5/18/20 Chris Heilmann - codepo8 57

Slide 58

Slide 58

Browser task manager! 5/18/20 Chris Heilmann - codepo8 58

Slide 59

Slide 59

Where did my resources go? 5/18/20 Chris Heilmann - codepo8 59

Slide 60

Slide 60

Hat tip: also in Firefox! 5/18/20 Chris Heilmann - codepo8 60

Slide 61

Slide 61

How the sausage is made… 5/18/20 Chris Heilmann - codepo8 61

Slide 62

Slide 62

Innovation in the open… https://github.com/MicrosoftEdge/MSEdgeExplainers 5/18/20 Chris Heilmann - codepo8 62

Slide 63

Slide 63

Detailed developer tools explainers https://github.com/MicrosoftEdge/MSEdgeExplainers 5/18/20 Chris Heilmann - codepo8 63

Slide 64

Slide 64

Discussion amongst browser makers 5/18/20 Chris Heilmann - codepo8 64

Slide 65

Slide 65

Others join, too! https://github.com/WebKit/explainers 5/18/20 Chris Heilmann - codepo8 65

Slide 66

Slide 66

Popping the hood… 5/18/20 Chris Heilmann - codepo8 66

Slide 67

Slide 67

What are developer tools made of? 5/18/20 Chris Heilmann - codepo8 67

Slide 68

Slide 68

Open Developer Tools (CMD+SHIFT+I on Mac or F12/CTRL+SHIFT+I on Windows) 5/18/20 Chris Heilmann - codepo8 68

Slide 69

Slide 69

Activate the … menu and Select “Undock into separate window” 5/18/20 Chris Heilmann - codepo8 69

Slide 70

Slide 70

Developer Tools Are now “fullscreen” Open Developer Tools again… (CMD+SHIFT+I on Mac or F12/CTRL+SHIFT+I on Windows) 5/18/20 Chris Heilmann - codepo8 70

Slide 71

Slide 71

You now can debug the developer tools with developer tools (I changed to light mode to make it obvious which are which) while(🐢){go(deeper)} 5/18/20 Chris Heilmann - codepo8 71

Slide 72

Slide 72

Lots of fun bits to discover (and report if you find a problem) 5/18/20 Chris Heilmann - codepo8 72

Slide 73

Slide 73

§ Web Content? § Extensions? In-built reporting tool… 5/18/20 § Memory Leaks? § Long running processes? Chris Heilmann - codepo8 73

Slide 74

Slide 74

What makes me happy? 5/18/20 Chris Heilmann - codepo8 74

Slide 75

Slide 75

§ I like that we use web technology to build developer tools § This makes them embeddable into other software (VS Code is an Electron shell with Monaco inside) What are developer tools made of? 5/18/20 § It also allows us to build for the web on the web (CodePen, JSBin, Code Sandbox, Workspaces for GitHub) § It is fun to work in them as you have a predictable environment – we can test upcoming web tech there. Chris Heilmann - codepo8 75

Slide 76

Slide 76

Little touches that go a long way… 5/18/20 Chris Heilmann - codepo8 76

Slide 77

Slide 77

Little touches that go a long way… 5/18/20 Chris Heilmann - codepo8 77

Slide 78

Slide 78

§ Testing tool to check web projects for: § Accessibility issues § Performance problems § App readiness § Compatibility with standards Webhint: testing and best practices § Common pitfalls to avoid § Security issues § Online service (webhint.io) or node package to integrate in other tools § Highly customisable 5/18/20 Chris Heilmann - codepo8 78

Slide 79

Slide 79

§ Testing tool to check web projects for: § Accessibility issues § Performance problems § App readiness § Compatibility with standards Webhint in VS Code § Common pitfalls to avoid § Security issues § Online service (webhint.io) or node package to integrate in other tools § Highly customisable 5/18/20 Chris Heilmann - codepo8 79

Slide 80

Slide 80

§ Testing tool to check web projects for: § Accessibility issues § Performance problems § App readiness § Compatibility with standards Webhint: testing and best practices § Common pitfalls to avoid § Security issues § Online service (webhint.io) or node package to integrate in other tools § Highly customisable 5/18/20 Chris Heilmann - codepo8 80

Slide 81

Slide 81

§ VS Code is not only an editor, it also includes version control and a terminal Merging of tools 5/18/20 § This means I don’t have to jump from one context to another to debug § However… wouldn’t it me cool to have Devtools in VS Code? Chris Heilmann - codepo8 81

Slide 82

Slide 82

§ Edge/Chromium developer tools inside VS Code Devtools for Code § No need to switch to the browser to try a few things out § No need to replicate the same functionality in both places aka.ms/elements4code 5/18/20 Chris Heilmann - codepo8 82

Slide 83

Slide 83

§ Edge/Chromium developer tools inside VS Code Devtools for Code § No need to switch to the browser to try a few things out § No need to replicate the same functionality in both places aka.ms/elements4code 5/18/20 Chris Heilmann - codepo8 83

Slide 84

Slide 84

Thanks – your voice matters! Chris Heilmann @codepo8 @EdgeDevTools christianheilmann.com Click the feedback in Edge developer tools! 5/18/20 Chris Heilmann - codepo8 84