Files
nexus/sreweekly/articles/249/01-generic-mitigations.html
2026-09-12 17:23:01 +08:00

1957 lines
265 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html
lang=en-US><head><meta
charset="UTF-8"><title>
Generic mitigations – O’Reilly</title><meta
name='robots' content='max-image-preview:large'><style id=wp-img-auto-sizes-contain-inline-css>img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */</style><style id=wp-emoji-styles-inline-css>img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
/*# sourceURL=wp-emoji-styles-inline-css */</style><style id=wp-block-library-inline-css>/*<![CDATA[*/:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css *//*]]>*/</style><style id=wp-block-heading-inline-css>h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
/*# sourceURL=https://www.oreilly.com/content/wp-includes/blocks/heading/style.min.css */</style><style id=wp-block-image-inline-css>/*<![CDATA[*/.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns=http://www.w3.org/2000/svg><circle cx=50 cy=50 r=50 /></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns=http://www.w3.org/2000/svg><circle cx=50 cy=50 r=50 /></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
/*# sourceURL=https://www.oreilly.com/content/wp-includes/blocks/image/style.min.css *//*]]>*/</style><style id=wp-block-list-inline-css>ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em}
/*# sourceURL=https://www.oreilly.com/content/wp-includes/blocks/list/style.min.css */</style><style id=wp-block-paragraph-inline-css>.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://www.oreilly.com/content/wp-includes/blocks/paragraph/style.min.css */</style><style id=wp-block-separator-inline-css>@charset "UTF-8";.wp-block-separator{border:none;border-top:2px solid}:root :where(.wp-block-separator.is-style-dots){height:auto;line-height:1;text-align:center}:root :where(.wp-block-separator.is-style-dots):before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}.wp-block-separator.is-style-dots{background:none!important;border:none!important}
/*# sourceURL=https://www.oreilly.com/content/wp-includes/blocks/separator/style.min.css */</style><style id=classic-theme-styles-inline-css>/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */</style><style id=global-styles-inline-css>/*<![CDATA[*/:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
/*# sourceURL=global-styles-inline-css *//*]]>*/</style><link
rel=stylesheet id=mytheme-style-css href='https://www.oreilly.com/content/wp-content/themes/signal/style.css?ver=1787760808' media=all> <script src=https://www.oreilly.com/content/wp-content/cache/minify/2/2b57e.js></script> <link
rel=canonical href=https://www.oreilly.com/content/generic-mitigations/ ><link
rel=shortlink href='https://www.oreilly.com/content/?p=9922'><link
rel=alternate type=application/rss+xml title="Podcast RSS feed" href=https://www.oreilly.com/content/feed/podcast><link
rel=icon href=https://www.oreilly.com/content/wp-content/uploads/sites/2/2025/04/cropped-favicon_512x512-32x32.png sizes=32x32><link
rel=icon href=https://www.oreilly.com/content/wp-content/uploads/sites/2/2025/04/cropped-favicon_512x512-192x192.png sizes=192x192><link
rel=apple-touch-icon href=https://www.oreilly.com/content/wp-content/uploads/sites/2/2025/04/cropped-favicon_512x512-180x180.png><meta
name="msapplication-TileImage" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2025/04/cropped-favicon_512x512-270x270.png"><meta
http-equiv="X-UA-Compatible" content="IE=edge"><meta
name="viewport" content="width=device-width, initial-scale=1"><meta
name="language_name" content="English"><meta
name="native_language_name" content="English"><meta
name="format-detection" content="telephone=no"><link
rel=icon type=image/png href=//www.oreilly.com/favicon.ico><!--[if lte IE 9]> <script>'article aside footer header main nav section time'.replace(/\w+/g,function(n){document.createElement(n)})</script> <![endif]--><!--[if IE 9]><style>#menu-toggle:checked ~ .mobile-nav { display:block; }
.mobile-nav { display: none; }</style><![endif]--><meta
property="twitter:card" content="summary_large_image"><meta
property="twitter:site" content="@OReillyMedia"><meta
property="twitter:title" content="Generic mitigations"><meta
property="twitter:description" content="A philosophy of duct-tape outage resolution"><meta
property="twitter:url" content="https://www.oreilly.com/content/generic-mitigations"><meta
property="twitter:image" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg"><meta
property="og:type" content="article"><meta
property="og:site_name" content="O’Reilly Media"><meta
property="og:title" content="Generic mitigations"><meta
property="og:description" content="A philosophy of duct-tape outage resolution"><meta
property="og:url" content="https://www.oreilly.com/content/generic-mitigations/"><meta
property="og:image" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg"><meta
name="description" content="A philosophy of duct-tape outage resolution"><meta
name="author" content="Jennifer Mace"><meta
name="description:site" content="A philosophy of duct-tape outage resolution"><meta
property="article:published_time" content="2020-12-15T09:29:49-05:00"><meta
name="article:author" content="Jennifer Mace"><meta
name="date" content="2020-12-15"><meta
name="thumbnail" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg"><meta
name="graphic_medium" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg"><meta
name="oreilly:content_type" content="text"> <script>loggedInObject = new Object();
var dataLayer = window.dataLayer || [];
//Check for O'Reilly Unified logged-in status
if (document.cookie.split(';').filter(function(item) {
return item.indexOf('orm-jwt=') >= 0;
}).length) {
loggedInObject.loggedIn = 'yes';
dataLayer.push(loggedInObject);
//Add 'loggedIn class to html tag
const htmlTag = document.querySelector('html');
if (htmlTag !== null) {
htmlTag.classList.add('loggedIn');
}
}</script> <script>dataLayer = [{"content.author":"Jennifer Mace","content.formatType":"article","content.free":"yes","content.identifier":"none","content.parentTopic":"Operations","content.publisher":"O'Reilly Media Inc.","content.releaseDate":"2020-12-15","content.subTopic":"none","content.subdirectory":"content","content.title":"Generic mitigations","product.identifier":"none","product.title":"none","product.type":"none"}];</script> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5P4V6Z');</script> <link
rel=preconnect href=https://dev.visualwebsiteoptimizer.com> <script id=vwoCode>window._vwo_code || (function() {
var account_id=27087,
version=2.1,
settings_tolerance=2000,
hide_element='body',
hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important',
/* DO NOT EDIT BELOW THIS LINE */
f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var i=this.getSettings(),n=d.createElement('script'),r=this;t=t||{};if(i){n.textContent=i;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var i=this.hide_element(),n=i?i+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=n;else t.appendChild(d.createTextNode(n));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var n=d.createElement('div');n.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';n.setAttribute('id','_vis_opt_path_hides');n.classList.add('_vis_hide_layer');t.parentNode.insertBefore(n,t.nextSibling)}var o='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:o})}else{this.load(o+'&x=true')}}};w._vwo_code=code;code.init();})();</script> <script type=application/ld+json>{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "O'Reilly",
"item": "https://www.oreilly.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Radar",
"item": "https://www.oreilly.com/radar/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Generic mitigations",
"item": "https://www.oreilly.com/content/generic-mitigations/"
}
]
}</script> </head><body
class="wp-singular post-template-default single single-post postid-9922 single-format-standard wp-theme-signal multisite-content"><noscript><iframe
src="https://www.googletagmanager.com/ns.html?id=GTM-5P4V6Z" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a
class=skipToMain id=skipToMain href=#maincontent>Skip to main content</a><header
class=orm-global-site-header--auth id=orm-global-site-banner role=banner data-testid=site-header-auth><nav
id=orm-global-marketing-nav data-hidden=sm><ul
id=orm-global-marketing-nav__list role=menu>
<li
class=orm-global-marketing-nav-list__item role=presentation><a
class=orm-global-marketing-nav-list-item__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for enterprise" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/teams.html>For Enterprise</a></li><li
class=orm-global-marketing-nav-list__item role=presentation><a
class=orm-global-marketing-nav-list-item__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for government" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/government.html>For Government</a></li><li
class=orm-global-marketing-nav-list__item role=presentation><a
class=orm-global-marketing-nav-list-item__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for higher ed" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/academic.html>For Higher Ed</a></li><li
class=orm-global-marketing-nav-list__item role=presentation><a
class=orm-global-marketing-nav-list-item__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for individuals" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/individuals.html>For Individuals</a></li><li
class=orm-global-marketing-nav-list__item role=presentation><a
class=orm-global-marketing-nav-list-item__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for content marketing" }' data-gtm-event=mousedown href=https://www.oreilly.com/content-marketing-solutions.html>For Content Marketing</a></li></ul></nav><div
id=orm-global-site-banner__content><div
class=orm-global-site-banner__block>
<button
aria-expanded=false class=orm-global-mobile-toggle data-mobile-toggle=true data-testid=navigation-toggle id=orm-global-site-menu-toggle aria-label="Toggle site menu" aria-controls=orm-global-mobile-pane--navigation>
<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 16 16" fill=none stroke=var(--orm-modern-dark) data-closed-icon=true>
<path
d="M1 3H15M1 8H15M1 13H15" stroke-width=2 stroke-linecap=round></path>
</svg>
<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 8 8" fill=none data-open-icon=true>
<path
fill-rule=evenodd clip-rule=evenodd d="M0.948112 0C0.408563 0 4.11814e-06 0.431923 4.11814e-06 0.95467C4.11814e-06 1.22411 0.111261 1.45183 0.267234 1.61743L2.58966 4.00047L0.27598 6.37752C0.108619 6.54684 0 6.77982 0 7.04533C0 7.56808 0.408558 8 0.948108 8C1.20588 8 1.43872 7.89659 1.60824 7.73661L1.61715 7.7282L3.99833 5.28676L6.37456 7.71975L6.37891 7.72411C6.5552 7.90088 6.79692 8 7.05189 8C7.59144 8 8 7.56808 8 7.04533C8 6.77589 7.88874 6.54817 7.73277 6.38257L5.41034 3.99953L7.72402 1.62247C7.89138 1.45316 8 1.22017 8 0.95467C8 0.431923 7.59144 0 7.05189 0C6.79412 0 6.56126 0.10342 6.39175 0.263408L6.38285 0.27181L4.00167 2.71324L1.62544 0.280255L1.62109 0.275892C1.4448 0.099117 1.20308 0 0.948112 0Z" fill=var(--orm-modern-r500)></path>
</svg>
</button>
<a
id=orm-global-site-logo-link href=https://www.oreilly.com title="home page" aria-current=page>
<svg
id=orm-global-site-logo viewBox="0 0 137 26" fill=none xmlns=http://www.w3.org/2000/svg>
<path
fill-rule=evenodd clip-rule=evenodd d="M27.2625 6.503C28.875 6.503 30.1875 5.17607 30.1875 3.54584C30.1875 1.91561 28.9125 0.626596 27.2625 0.588684C25.65 0.588684 24.3375 1.91561 24.3375 3.54584C24.3375 5.17607 25.65 6.503 27.2625 6.503ZM3.9375 13.1376C3.9375 10.7871 4.875 8.66399 6.4125 7.10958C7.95 5.55518 10.0125 4.60737 12.3375 4.60737C14.6625 4.60737 16.7625 5.55518 18.3 7.10958C19.8375 8.66399 20.775 10.7871 20.775 13.1376C20.775 15.4882 19.8375 17.5734 18.3375 19.1657C16.8 20.7201 14.7 21.6679 12.375 21.6679C10.05 21.6679 7.95 20.7201 6.4125 19.1657C4.875 17.6113 3.9375 15.4882 3.9375 13.1376ZM12.375 0.626584C5.55 0.626584 0 6.2376 0 13.1376C0 20.0377 5.5125 25.6108 12.375 25.6487C19.2 25.6487 24.75 20.0377 24.75 13.1376C24.75 6.2376 19.2 0.626584 12.375 0.626584ZM36.975 10.9709V4.98079H44.9625C46.6125 4.98079 47.925 6.30772 47.925 7.97586C47.925 9.644 46.6125 10.9709 44.9625 10.9709H36.975ZM46.9125 14.7242C49.7625 13.8523 51.8625 11.1984 51.8625 8.01377C51.8625 4.14672 48.75 1 44.925 1H33V24.9985H36.975V14.9896H42.4875L48.45 24.9985H53.0625L46.9125 14.7242ZM72.375 1V4.98079H59.8125V11.0088H71.7375V14.9896H59.8125V21.0177H72.375V24.9985H55.8375V1H72.375ZM80.475 1H76.5V24.9985H80.475V1ZM84.6 1V24.9985H100.012V21.0177H88.575V1H84.6ZM103.238 24.9985V1H107.175V21.0177H118.613V24.9985H103.238ZM131.437 1H136.237L127.312 14.0797V24.9985H123.375V14.0418L114.45 1H119.25L125.362 9.90939L131.437 1Z"></path>
</svg>
</a><nav
data-hidden=sm><ul
class=orm-global-site-banner__list role=menu id=orm-global-site-navigation-list>
<li
class=orm-global-site-banner__list-item role=presentation id=orm-global-site-menu-item--desktop-explore-skills-0 data-level=0><button
class=orm-global-site-banner__link role=menuitem id=orm-global-site-menu-item-button--desktop-explore-skills-0 data-level=0 data-testid=header-link-0 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-explore-skills-0>Explore Skills </button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-explore-skills-0 aria-labelledby=orm-global-site-menu-item-button--desktop-explore-skills-0 data-level=1><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-cloud-computing-0 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-cloud-computing-0 data-level=1 data-testid=menu-link|parent-header:0|item:0 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-cloud-computing-0>Cloud Computing <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-cloud-computing-0 aria-labelledby=orm-global-site-menu-item-button--desktop-cloud-computing-0 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-microsoft-azure-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-microsoft-azure-0 data-testid=menu-link|parent-header:0|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|microsoft azure" }' data-gtm-event=mousedown href=/search/skills/microsoft-azure/ >Microsoft Azure</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-amazon-web-services-aws-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-amazon-web-services-aws-1 data-testid=menu-link|parent-header:0|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|amazon web services (aws)" }' data-gtm-event=mousedown href=/search/skills/amazon-web-services-aws/ >Amazon Web Services (AWS)</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-google-cloud-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-google-cloud-2 data-testid=menu-link|parent-header:0|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|google cloud" }' data-gtm-event=mousedown href=/search/skills/google-cloud/ >Google Cloud</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-cloud-migration-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-cloud-migration-3 data-testid=menu-link|parent-header:0|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|cloud migration" }' data-gtm-event=mousedown href=/search/skills/cloud-migration/ >Cloud Migration</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-cloud-deployment-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-cloud-deployment-4 data-testid=menu-link|parent-header:0|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|cloud deployment" }' data-gtm-event=mousedown href=/search/skills/cloud-deployment/ >Cloud Deployment</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-cloud-platforms-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-cloud-platforms-5 data-testid=menu-link|parent-header:0|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|cloud computing|cloud platforms" }' data-gtm-event=mousedown href=/search/skills/cloud-platforms/ >Cloud Platforms</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all cloud computing" }' data-gtm-event=mousedown href=/search/skills/cloud-computing/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-data-engineering-1 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-data-engineering-1 data-level=1 data-testid=menu-link|parent-header:0|item:1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-data-engineering-1>Data Engineering <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-data-engineering-1 aria-labelledby=orm-global-site-menu-item-button--desktop-data-engineering-1 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-data-warehouse-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-data-warehouse-0 data-testid=menu-link|parent-header:1|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|data warehouse" }' data-gtm-event=mousedown href=/search/skills/data-warehouse/ >Data Warehouse</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-sql-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-sql-1 data-testid=menu-link|parent-header:1|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|sql" }' data-gtm-event=mousedown href=/search/skills/sql/ >SQL</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-apache-spark-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-apache-spark-2 data-testid=menu-link|parent-header:1|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|apache spark" }' data-gtm-event=mousedown href=/search/skills/apache-spark/ >Apache Spark</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-microsoft-sql-server-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-microsoft-sql-server-3 data-testid=menu-link|parent-header:1|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|microsoft sql server" }' data-gtm-event=mousedown href=/search/skills/microsoft-sql-server/ >Microsoft SQL Server</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-mysql-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-mysql-4 data-testid=menu-link|parent-header:1|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|mysql" }' data-gtm-event=mousedown href=/search/skills/mysql/ >MySQL</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-kafka-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-kafka-5 data-testid=menu-link|parent-header:1|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|kafka" }' data-gtm-event=mousedown href=/search/skills/kafka/ >Kafka</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-data-lake-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-data-lake-6 data-testid=menu-link|parent-header:1|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|data lake" }' data-gtm-event=mousedown href=/search/skills/data-lake/ >Data Lake</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-streaming-messaging-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-streaming-messaging-7 data-testid=menu-link|parent-header:1|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|streaming &amp; messaging" }' data-gtm-event=mousedown href=/search/skills/streaming-messaging/ >Streaming &amp; Messaging</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-nosql-databases-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-nosql-databases-8 data-testid=menu-link|parent-header:1|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|nosql databases" }' data-gtm-event=mousedown href=/search/skills/nosql-databases/ >NoSQL Databases</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-relational-databases-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-relational-databases-9 data-testid=menu-link|parent-header:1|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data engineering|relational databases" }' data-gtm-event=mousedown href=/search/skills/relational-databases/ >Relational Databases</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all data engineering" }' data-gtm-event=mousedown href=/search/skills/data-engineering/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-data-science-2 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-data-science-2 data-level=1 data-testid=menu-link|parent-header:0|item:2 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-data-science-2>Data Science <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-data-science-2 aria-labelledby=orm-global-site-menu-item-button--desktop-data-science-2 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-pandas-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-pandas-0 data-testid=menu-link|parent-header:2|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|pandas" }' data-gtm-event=mousedown href=/search/topics/pandas/ >Pandas</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-r-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-r-1 data-testid=menu-link|parent-header:2|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|r" }' data-gtm-event=mousedown href=/search/topics/r/ >R</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-matlab-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-matlab-2 data-testid=menu-link|parent-header:2|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|matlab" }' data-gtm-event=mousedown href=/search/topics/matlab/ >MATLAB</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-sas-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-sas-3 data-testid=menu-link|parent-header:2|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|sas" }' data-gtm-event=mousedown href=/search/topics/sas/ >SAS</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-d3-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-d3-4 data-testid=menu-link|parent-header:2|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|d3" }' data-gtm-event=mousedown href=/search/topics/d3/ >D3</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-power-bi-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-power-bi-5 data-testid=menu-link|parent-header:2|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|power bi" }' data-gtm-event=mousedown href=/search/topics/power-bi/ >Power BI</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-tableau-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-tableau-6 data-testid=menu-link|parent-header:2|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|tableau" }' data-gtm-event=mousedown href=/search/topics/tableau/ >Tableau</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-statistics-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-statistics-7 data-testid=menu-link|parent-header:2|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|statistics" }' data-gtm-event=mousedown href=/search/topics/statistics/ >Statistics</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-exploratory-data-analysis-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-exploratory-data-analysis-8 data-testid=menu-link|parent-header:2|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|exploratory data analysis" }' data-gtm-event=mousedown href=/search/topics/exploratory-data-analysis/ >Exploratory Data Analysis</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-data-visualization-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-data-visualization-9 data-testid=menu-link|parent-header:2|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|data science|data visualization" }' data-gtm-event=mousedown href=/search/topics/data-visualization/ >Data Visualization</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all data science" }' data-gtm-event=mousedown href=/search/skills/data-science/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-ai-ml-3 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-ai-ml-3 data-level=1 data-testid=menu-link|parent-header:0|item:3 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-ai-ml-3>AI &amp; ML <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-ai-ml-3 aria-labelledby=orm-global-site-menu-item-button--desktop-ai-ml-3 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-generative-ai-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-generative-ai-0 data-testid=menu-link|parent-header:3|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|generative ai" }' data-gtm-event=mousedown href=/search/skills/generative-ai/ >Generative AI</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-machine-learning-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-machine-learning-1 data-testid=menu-link|parent-header:3|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|machine learning" }' data-gtm-event=mousedown href=/search/skills/machine-learning/ >Machine Learning</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-artificial-intelligence-ai-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-artificial-intelligence-ai-2 data-testid=menu-link|parent-header:3|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|artificial intelligence (ai)" }' data-gtm-event=mousedown href=/search/skills/artificial-intelligence-ai/ >Artificial Intelligence (AI)</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-deep-learning-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-deep-learning-3 data-testid=menu-link|parent-header:3|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|deep learning" }' data-gtm-event=mousedown href=/search/skills/deep-learning/ >Deep Learning</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-reinforcement-learning-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-reinforcement-learning-4 data-testid=menu-link|parent-header:3|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|reinforcement learning" }' data-gtm-event=mousedown href=/search/skills/reinforcement-learning/ >Reinforcement Learning</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-natural-language-processing-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-natural-language-processing-5 data-testid=menu-link|parent-header:3|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|natural language processing" }' data-gtm-event=mousedown href=/search/skills/natural-language-processing/ >Natural Language Processing</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-tensorflow-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-tensorflow-6 data-testid=menu-link|parent-header:3|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|tensorflow" }' data-gtm-event=mousedown href=/search/skills/tensorflow/ >TensorFlow</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-scikit-learn-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-scikit-learn-7 data-testid=menu-link|parent-header:3|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|scikit-learn" }' data-gtm-event=mousedown href=/search/skills/scikit-learn/ >Scikit-Learn</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-hyperparameter-tuning-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-hyperparameter-tuning-8 data-testid=menu-link|parent-header:3|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|hyperparameter tuning" }' data-gtm-event=mousedown href=/search/skills/hyperparameter-tuning/ >Hyperparameter Tuning</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-mlops-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-mlops-9 data-testid=menu-link|parent-header:3|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|ai &amp; ml|mlops" }' data-gtm-event=mousedown href=/search/skills/mlops/ >MLOps</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all ai &amp; ml" }' data-gtm-event=mousedown href=/search/skills/ai-ml/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-programming-languages-4 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-programming-languages-4 data-level=1 data-testid=menu-link|parent-header:0|item:4 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-programming-languages-4>Programming Languages <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-programming-languages-4 aria-labelledby=orm-global-site-menu-item-button--desktop-programming-languages-4 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-java-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-java-0 data-testid=menu-link|parent-header:4|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|java" }' data-gtm-event=mousedown href=/search/skills/java/ >Java</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-javascript-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-javascript-1 data-testid=menu-link|parent-header:4|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|javascript" }' data-gtm-event=mousedown href=/search/skills/javascript/ >JavaScript</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-spring-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-spring-2 data-testid=menu-link|parent-header:4|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|spring" }' data-gtm-event=mousedown href=/search/skills/spring/ >Spring</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-python-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-python-3 data-testid=menu-link|parent-header:4|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|python" }' data-gtm-event=mousedown href=/search/skills/python/ >Python</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-go-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-go-4 data-testid=menu-link|parent-header:4|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|go" }' data-gtm-event=mousedown href=/search/skills/go/ >Go</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-c-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-c-5 data-testid=menu-link|parent-header:4|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|c#" }' data-gtm-event=mousedown href=/search/skills/c-sharp/ >C#</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-c-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-c-6 data-testid=menu-link|parent-header:4|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|c++" }' data-gtm-event=mousedown href=/search/skills/c-plus-plus/ >C++</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-c-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-c-7 data-testid=menu-link|parent-header:4|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|c" }' data-gtm-event=mousedown href=/search/skills/c/ >C</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-swift-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-swift-8 data-testid=menu-link|parent-header:4|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|swift" }' data-gtm-event=mousedown href=/search/skills/swift/ >Swift</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-rust-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-rust-9 data-testid=menu-link|parent-header:4|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|rust" }' data-gtm-event=mousedown href=/search/skills/rust/ >Rust</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-functional-programming-10 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-functional-programming-10 data-testid=menu-link|parent-header:4|item:10 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|programming languages|functional programming" }' data-gtm-event=mousedown href=/search/skills/functional-programming/ >Functional Programming</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all programming languages" }' data-gtm-event=mousedown href=/search/skills/programming-languages/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-software-architecture-5 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-software-architecture-5 data-level=1 data-testid=menu-link|parent-header:0|item:5 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-software-architecture-5>Software Architecture <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-software-architecture-5 aria-labelledby=orm-global-site-menu-item-button--desktop-software-architecture-5 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-object-oriented-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-object-oriented-0 data-testid=menu-link|parent-header:5|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|software architecture|object-oriented" }' data-gtm-event=mousedown href=/search/skills/object-oriented-architecture/ >Object-Oriented</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-distributed-systems-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-distributed-systems-1 data-testid=menu-link|parent-header:5|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|software architecture|distributed systems" }' data-gtm-event=mousedown href=/search/skills/distributed-systems/ >Distributed Systems</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-domain-driven-design-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-domain-driven-design-2 data-testid=menu-link|parent-header:5|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|software architecture|domain-driven design" }' data-gtm-event=mousedown href=/search/skills/domain-driven-design/ >Domain-Driven Design</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-architectural-patterns-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-architectural-patterns-3 data-testid=menu-link|parent-header:5|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|software architecture|architectural patterns" }' data-gtm-event=mousedown href=/search/skills/architectural-patterns/ >Architectural Patterns</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all software architecture" }' data-gtm-event=mousedown href=/search/skills/software-architecture/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-itops-6 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-itops-6 data-level=1 data-testid=menu-link|parent-header:0|item:6 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-itops-6>IT/Ops <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-itops-6 aria-labelledby=orm-global-site-menu-item-button--desktop-itops-6 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-kubernetes-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-kubernetes-0 data-testid=menu-link|parent-header:6|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|kubernetes" }' data-gtm-event=mousedown href=/search/topics/kubernetes/ >Kubernetes</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-docker-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-docker-1 data-testid=menu-link|parent-header:6|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|docker" }' data-gtm-event=mousedown href=/search/topics/docker/ >Docker</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-github-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-github-2 data-testid=menu-link|parent-header:6|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|github" }' data-gtm-event=mousedown href=/search/topics/github/ >GitHub</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-terraform-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-terraform-3 data-testid=menu-link|parent-header:6|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|terraform" }' data-gtm-event=mousedown href=/search/topics/terraform/ >Terraform</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-continuous-delivery-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-continuous-delivery-4 data-testid=menu-link|parent-header:6|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|continuous delivery" }' data-gtm-event=mousedown href=/search/topics/continuous-delivery/ >Continuous Delivery</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-continuous-integration-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-continuous-integration-5 data-testid=menu-link|parent-header:6|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|continuous integration" }' data-gtm-event=mousedown href=/search/topics/continuous-integration/ >Continuous Integration</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-database-administration-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-database-administration-6 data-testid=menu-link|parent-header:6|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|database administration" }' data-gtm-event=mousedown href=/search/topics/database-administration/ >Database Administration</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-computer-networking-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-computer-networking-7 data-testid=menu-link|parent-header:6|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|computer networking" }' data-gtm-event=mousedown href=/search/topics/computer-networking/ >Computer Networking</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-operating-systems-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-operating-systems-8 data-testid=menu-link|parent-header:6|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|operating systems" }' data-gtm-event=mousedown href=/search/topics/operating-systems/ >Operating Systems</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-it-certifications-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-it-certifications-9 data-testid=menu-link|parent-header:6|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|it/ops|it certifications" }' data-gtm-event=mousedown href=/search/topics/it-certifications/ >IT Certifications</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all it/ops" }' data-gtm-event=mousedown href=/search/skills/it-operations/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-security-7 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-security-7 data-level=1 data-testid=menu-link|parent-header:0|item:7 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-security-7>Security <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-security-7 aria-labelledby=orm-global-site-menu-item-button--desktop-security-7 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-network-security-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-network-security-0 data-testid=menu-link|parent-header:7|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|network security" }' data-gtm-event=mousedown href=/search/skills/network-security/ >Network Security</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-application-security-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-application-security-1 data-testid=menu-link|parent-header:7|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|application security" }' data-gtm-event=mousedown href=/search/skills/application-security/ >Application Security</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-incident-response-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-incident-response-2 data-testid=menu-link|parent-header:7|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|incident response" }' data-gtm-event=mousedown href=/search/skills/incident-response/ >Incident Response</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-zero-trust-model-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-zero-trust-model-3 data-testid=menu-link|parent-header:7|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|zero trust model" }' data-gtm-event=mousedown href=/search/skills/zero-trust-model/ >Zero Trust Model</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-disaster-recovery-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-disaster-recovery-4 data-testid=menu-link|parent-header:7|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|disaster recovery" }' data-gtm-event=mousedown href=/search/skills/disaster-recovery/ >Disaster Recovery</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-penetration-testing-ethical-hacking-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-penetration-testing-ethical-hacking-5 data-testid=menu-link|parent-header:7|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|penetration testing / ethical hacking" }' data-gtm-event=mousedown href=/search/skills/penetration-testing-ethical-hacking/ >Penetration Testing / Ethical Hacking</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-governance-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-governance-6 data-testid=menu-link|parent-header:7|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|governance" }' data-gtm-event=mousedown href=/search/skills/governance/ >Governance</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-malware-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-malware-7 data-testid=menu-link|parent-header:7|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|malware" }' data-gtm-event=mousedown href=/search/skills/malware/ >Malware</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-security-architecture-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-security-architecture-8 data-testid=menu-link|parent-header:7|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|security architecture" }' data-gtm-event=mousedown href=/search/skills/security-architecture/ >Security Architecture</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-security-engineering-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-security-engineering-9 data-testid=menu-link|parent-header:7|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|security engineering" }' data-gtm-event=mousedown href=/search/skills/security-engineering/ >Security Engineering</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-security-certifications-10 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-security-certifications-10 data-testid=menu-link|parent-header:7|item:10 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|security|security certifications" }' data-gtm-event=mousedown href=/search/skills/security-certifications/ >Security Certifications</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all security" }' data-gtm-event=mousedown href=/search/skills/security/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-design-8 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-design-8 data-level=1 data-testid=menu-link|parent-header:0|item:8 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-design-8>Design <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-design-8 aria-labelledby=orm-global-site-menu-item-button--desktop-design-8 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-web-design-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-web-design-0 data-testid=menu-link|parent-header:8|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|web design" }' data-gtm-event=mousedown href=/search/skills/web-design/ >Web Design</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-graphic-design-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-graphic-design-1 data-testid=menu-link|parent-header:8|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|graphic design" }' data-gtm-event=mousedown href=/search/skills/graphic-design/ >Graphic Design</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-interaction-design-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-interaction-design-2 data-testid=menu-link|parent-header:8|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|interaction design" }' data-gtm-event=mousedown href=/search/skills/interaction-design/ >Interaction Design</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-film-video-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-film-video-3 data-testid=menu-link|parent-header:8|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|film &amp; video" }' data-gtm-event=mousedown href=/search/skills/film-video/ >Film &amp; Video</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-user-experience-ux-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-user-experience-ux-4 data-testid=menu-link|parent-header:8|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|user experience (ux)" }' data-gtm-event=mousedown href=/search/skills/user-experience-ux/ >User Experience (UX)</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-design-process-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-design-process-5 data-testid=menu-link|parent-header:8|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|design process" }' data-gtm-event=mousedown href=/search/skills/design-process/ >Design Process</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-design-tools-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-design-tools-6 data-testid=menu-link|parent-header:8|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|design|design tools" }' data-gtm-event=mousedown href=/search/skills/design-tools/ >Design Tools</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all design" }' data-gtm-event=mousedown href=/search/skills/design/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-business-9 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-business-9 data-level=1 data-testid=menu-link|parent-header:0|item:9 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-business-9>Business <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-business-9 aria-labelledby=orm-global-site-menu-item-button--desktop-business-9 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-agile-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-agile-0 data-testid=menu-link|parent-header:9|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|agile" }' data-gtm-event=mousedown href=/search/skills/agile/ >Agile</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-project-management-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-project-management-1 data-testid=menu-link|parent-header:9|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|project management" }' data-gtm-event=mousedown href=/search/skills/project-management/ >Project Management</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-product-management-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-product-management-2 data-testid=menu-link|parent-header:9|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|product management" }' data-gtm-event=mousedown href=/search/skills/product-management/ >Product Management</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-marketing-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-marketing-3 data-testid=menu-link|parent-header:9|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|marketing" }' data-gtm-event=mousedown href=/search/skills/marketing/ >Marketing</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-human-resources-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-human-resources-4 data-testid=menu-link|parent-header:9|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|human resources" }' data-gtm-event=mousedown href=/search/skills/human-resources/ >Human Resources</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-finance-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-finance-5 data-testid=menu-link|parent-header:9|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|finance" }' data-gtm-event=mousedown href=/search/skills/finance/ >Finance</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-team-management-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-team-management-6 data-testid=menu-link|parent-header:9|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|team management" }' data-gtm-event=mousedown href=/search/skills/team-management/ >Team Management</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-business-strategy-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-business-strategy-7 data-testid=menu-link|parent-header:9|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|business strategy" }' data-gtm-event=mousedown href=/search/skills/business-strategy/ >Business Strategy</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-digital-transformation-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-digital-transformation-8 data-testid=menu-link|parent-header:9|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|digital transformation" }' data-gtm-event=mousedown href=/search/skills/digital-transformation/ >Digital Transformation</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-organizational-leadership-9 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-organizational-leadership-9 data-testid=menu-link|parent-header:9|item:9 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|business|organizational leadership" }' data-gtm-event=mousedown href=/search/skills/organizational-leadership/ >Organizational Leadership</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all business" }' data-gtm-event=mousedown href=/search/skills/business/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-soft-skills-10 data-level=1><button
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-soft-skills-10 data-level=1 data-testid=menu-link|parent-header:0|item:10 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-soft-skills-10>Soft Skills <svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-soft-skills-10 aria-labelledby=orm-global-site-menu-item-button--desktop-soft-skills-10 data-level=2><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-professional-communication-0 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-professional-communication-0 data-testid=menu-link|parent-header:10|item:0 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|professional communication" }' data-gtm-event=mousedown href=/search/skills/professional-communication/ >Professional Communication</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-emotional-intelligence-1 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-emotional-intelligence-1 data-testid=menu-link|parent-header:10|item:1 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|emotional intelligence" }' data-gtm-event=mousedown href=/search/skills/emotional-intelligence/ >Emotional Intelligence</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-presentation-skills-2 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-presentation-skills-2 data-testid=menu-link|parent-header:10|item:2 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|presentation skills" }' data-gtm-event=mousedown href=/search/skills/presentation-skills/ >Presentation Skills</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-innovation-3 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-innovation-3 data-testid=menu-link|parent-header:10|item:3 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|innovation" }' data-gtm-event=mousedown href=/search/skills/innovation/ >Innovation</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-critical-thinking-4 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-critical-thinking-4 data-testid=menu-link|parent-header:10|item:4 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|critical thinking" }' data-gtm-event=mousedown href=/search/skills/critical-thinking/ >Critical Thinking</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-public-speaking-5 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-public-speaking-5 data-testid=menu-link|parent-header:10|item:5 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|public speaking" }' data-gtm-event=mousedown href=/search/skills/public-speaking/ >Public Speaking</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-collaboration-6 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-collaboration-6 data-testid=menu-link|parent-header:10|item:6 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|collaboration" }' data-gtm-event=mousedown href=/search/skills/collaboration/ >Collaboration</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-personal-productivity-7 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-personal-productivity-7 data-testid=menu-link|parent-header:10|item:7 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|personal productivity" }' data-gtm-event=mousedown href=/search/skills/personal-productivity/ >Personal Productivity</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-confidence-motivation-8 data-level=2><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-confidence-motivation-8 data-testid=menu-link|parent-header:10|item:8 data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"explore skills|soft skills|confidence / motivation" }' data-gtm-event=mousedown href=/search/skills/confidence-motivation/ >Confidence / Motivation</a></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all soft skills" }' data-gtm-event=mousedown href=/search/skills/soft-skills/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li></ul><footer
class=orm-global-site-menu__footer><a
role=menuItem class=orm-global-site-menu__view-all data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"topics|view all topics" }' data-gtm-event=mousedown href=/search/skills/ ><div><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-tvi28v" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></div>View all</a></footer></dialog></li><li
class=orm-global-site-banner__list-item role=presentation id=orm-global-site-menu-item--desktop-features-1 data-level=0><button
class=orm-global-site-banner__link role=menuitem id=orm-global-site-menu-item-button--desktop-features-1 data-level=0 data-testid=header-link-1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-menu-popover--desktop-features-1>Features </button><dialog
class=orm-global-site-menu__popover id=orm-global-site-menu-popover--desktop-features-1 aria-labelledby=orm-global-site-menu-item-button--desktop-features-1 data-level=1><ul
class=orm-global-site-menu><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-all-features-0 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-all-features-0 data-testid=menu-link|parent-header:1|item:0 href=/online-learning/features.html>All features</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-verifiable-skills-1 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-verifiable-skills-1 data-testid=menu-link|parent-header:1|item:1 href=/online-learning/verifiable-skills.html>Verifiable skills</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-academies-2 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-academies-2 data-testid=menu-link|parent-header:1|item:2 href=/online-learning/academies.html>Academies</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-courses-3 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-courses-3 data-testid=menu-link|parent-header:1|item:3 href=/online-learning/courses.html>Courses</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-certifications-4 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-certifications-4 data-testid=menu-link|parent-header:1|item:4 href=/online-learning/feature-certification.html>Certifications</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-interactive-learning-5 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-interactive-learning-5 data-testid=menu-link|parent-header:1|item:5 href=/online-learning/intro-interactive-learning.html>Interactive learning</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-live-events-6 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-live-events-6 data-testid=menu-link|parent-header:1|item:6 href=/online-learning/live-events.html>Live events</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-superstreams-7 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-superstreams-7 data-testid=menu-link|parent-header:1|item:7 href=/products/superstreams.html>Superstreams</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-answers-8 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-answers-8 data-testid=menu-link|parent-header:1|item:8 href=/online-learning/feature-answers.html>Answers</a></li><li
class=orm-global-site-menu__item role=presentation id=orm-global-site-menu-item--desktop-insights-reporting-9 data-level=1><a
class=orm-global-site-menu__link role=menuitem id=orm-global-site-menu-item-button--desktop-insights-reporting-9 data-testid=menu-link|parent-header:1|item:9 href=/online-learning/insights-dashboard.html>Insights reporting</a></li></ul></dialog></li><li
class=orm-global-site-banner__list-item role=presentation id=orm-global-site-menu-item--desktop-radar-blog-2 data-level=0><a
class=orm-global-site-banner__link role=menuitem id=orm-global-site-menu-item-button--desktop-radar-blog-2 data-testid=header-link-2 href=/radar/ >Radar Blog</a></li><li
class=orm-global-site-banner__list-item role=presentation id=orm-global-site-menu-item--desktop-live-3 data-level=0><a
class=orm-global-site-banner__link role=menuitem id=orm-global-site-menu-item-button--desktop-live-3 data-testid=header-link-3 href=/live/ >Live</a></li></ul></nav></div><div
class=orm-global-site-banner__block data-hidden=sm><form
action=https://www.oreilly.com/search/ class=orm-global-site-search-form method=get data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"keyboard|enter" }' data-gtm-event=submit id=orm-global-site-search-form--desktop><div
class=orm-global-site-search-icon><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 12 12" fill=none><path
fill-rule=evenodd clip-rule=evenodd d="M10.6645 12L6.2575 7.59302L7.59302 6.2575L12 10.6645L10.6645 12Z" fill=currentColor></path><path
fill-rule=evenodd clip-rule=evenodd d="M4.5 9C6.98528 9 9 6.98528 9 4.5C9 2.01472 6.98528 0 4.5 0C2.01472 0 0 2.01472 0 4.5C0 6.98528 2.01472 9 4.5 9ZM7 4.5C7 5.88071 5.88071 7 4.5 7C3.11929 7 2 5.88071 2 4.5C2 3.11929 3.11929 2 4.5 2C5.88071 2 7 3.11929 7 4.5Z" fill=currentColor></path></svg></div><label
class=orm-global-site-search-label><span
class=orm-global-site-search-label__text>Search for books, courses, events, and more</span><input
class=orm-global-site-search-input placeholder="Search for books, courses, events, and more" type=search name=q></label></form></div><div
class=orm-global-site-banner__block data-hidden=sm><nav><ul
class=orm-global-site-banner__list role=menu id=orm-global-site-navigation-list--signin>
<li
id=orm-global-site-banner__list-item role=presentation><a
class=orm-global-site-banner__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"plans" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/pricing.html>Plans</a></li><li
class=orm-global-site-banner__list-item data-hidden=auth role=presentation><a
class=orm-global-site-banner__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"sign in" }' data-gtm-event=mousedown href="https://www.oreilly.com/member/login/?next=%2Fcontent%2Fgeneric-mitigations%2F">Sign In</a></li><li
class=orm-global-site-banner__list-item data-hidden=auth role=presentation><a
class="orm-global-site-banner__link orm-global-site--link-as-button" role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"try now" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/try-now.html>Try Now<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=inherit></path></svg></a></li><li
class="menu__item menu-item" data-hidden=notauth><a
class="orm-global-site-banner__link orm-global-site--link-as-button" role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"oreilly platform" }' data-gtm-event=mousedown href=https://www.oreilly.com/member/login/ >O'Reilly Platform<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=inherit></path></svg></a></li></ul></nav></div><button
class=orm-global-mobile-toggle type=button aria-expanded=false aria-label="Toggle search input visible" data-mobile-toggle=true data-testid=mobile-search-toggle aria-controls=orm-global-mobile-pane--search>
<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 12 12" fill=none data-closed-icon=true>
<path
fill-rule=evenodd clip-rule=evenodd d="M10.6645 12L6.2575 7.59302L7.59302 6.2575L12 10.6645L10.6645 12Z" fill=var(--orm-modern-dark)></path>
<path
fill-rule=evenodd clip-rule=evenodd d="M4.5 9C6.98528 9 9 6.98528 9 4.5C9 2.01472 6.98528 0 4.5 0C2.01472 0 0 2.01472 0 4.5C0 6.98528 2.01472 9 4.5 9ZM7 4.5C7 5.88071 5.88071 7 4.5 7C3.11929 7 2 5.88071 2 4.5C2 3.11929 3.11929 2 4.5 2C5.88071 2 7 3.11929 7 4.5Z" fill=var(--orm-modern-dark)></path>
</svg>
<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 8 8" fill=none data-open-icon=true>
<path
fill-rule=evenodd clip-rule=evenodd d="M0.948112 0C0.408563 0 4.11814e-06 0.431923 4.11814e-06 0.95467C4.11814e-06 1.22411 0.111261 1.45183 0.267234 1.61743L2.58966 4.00047L0.27598 6.37752C0.108619 6.54684 0 6.77982 0 7.04533C0 7.56808 0.408558 8 0.948108 8C1.20588 8 1.43872 7.89659 1.60824 7.73661L1.61715 7.7282L3.99833 5.28676L6.37456 7.71975L6.37891 7.72411C6.5552 7.90088 6.79692 8 7.05189 8C7.59144 8 8 7.56808 8 7.04533C8 6.77589 7.88874 6.54817 7.73277 6.38257L5.41034 3.99953L7.72402 1.62247C7.89138 1.45316 8 1.22017 8 0.95467C8 0.431923 7.59144 0 7.05189 0C6.79412 0 6.56126 0.10342 6.39175 0.263408L6.38285 0.27181L4.00167 2.71324L1.62544 0.280255L1.62109 0.275892C1.4448 0.099117 1.20308 0 0.948112 0Z" fill=var(--orm-modern-r500)></path>
</svg>
</button></div></header><nav
class=orm-global-mobile-pane aria-hidden=true inert hidden id=orm-global-mobile-pane--navigation data-testid=mobile-menu-pane><ul
class=orm-global-site-mobile-menu role=menu>
<li
class=orm-global-site-mobile-menu__item data-level=0 role=presentation><a
class=orm-global-site-mobile-menu__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for enterprise" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/teams.html>For Enterprise</a></li><li
class=orm-global-site-mobile-menu__item data-level=0 role=presentation><a
class=orm-global-site-mobile-menu__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for government" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/government.html>For Government</a></li><li
class=orm-global-site-mobile-menu__item data-level=0 role=presentation><a
class=orm-global-site-mobile-menu__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for higher ed" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/academic.html>For Higher Ed</a></li><li
class=orm-global-site-mobile-menu__item data-level=0 role=presentation><a
class=orm-global-site-mobile-menu__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for individuals" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/individuals.html>For Individuals</a></li><li
class=orm-global-site-mobile-menu__item data-level=0 role=presentation><a
class=orm-global-site-mobile-menu__link role=menuitem data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"for content marketing" }' data-gtm-event=mousedown href=https://www.oreilly.com/content-marketing-solutions.html>For Content Marketing</a></li></ul><hr
class=orm-global-site-menu__divider><ul
class=orm-global-site-mobile-menu role=menu>
<li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-explore-skills-0 data-level=0><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-explore-skills-0 data-level=0 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-explore-skills-0>Explore Skills<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-explore-skills-0 aria-labelledby=orm-global-site-mobile-menu__link--mobile-explore-skills-0 data-level=1><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Explore Skills</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=1><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-cloud-computing-0 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-cloud-computing-0 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-cloud-computing-0>Cloud Computing<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-cloud-computing-0 aria-labelledby=orm-global-site-mobile-menu__link--mobile-cloud-computing-0 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Cloud Computing</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-microsoft-azure-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-microsoft-azure-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|microsoft azure" }' data-gtm-event=mousedown href=/search/skills/microsoft-azure/ >Microsoft Azure</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-amazon-web-services-aws-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-amazon-web-services-aws-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|amazon web services (aws)" }' data-gtm-event=mousedown href=/search/skills/amazon-web-services-aws/ >Amazon Web Services (AWS)</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-google-cloud-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-google-cloud-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|google cloud" }' data-gtm-event=mousedown href=/search/skills/google-cloud/ >Google Cloud</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-cloud-migration-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-cloud-migration-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|cloud migration" }' data-gtm-event=mousedown href=/search/skills/cloud-migration/ >Cloud Migration</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-cloud-deployment-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-cloud-deployment-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|cloud deployment" }' data-gtm-event=mousedown href=/search/skills/cloud-deployment/ >Cloud Deployment</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-cloud-platforms-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-cloud-platforms-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|cloud computing|cloud platforms" }' data-gtm-event=mousedown href=/search/skills/cloud-platforms/ >Cloud Platforms</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-cloud-computing-0><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-data-engineering-1 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-data-engineering-1 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-data-engineering-1>Data Engineering<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-data-engineering-1 aria-labelledby=orm-global-site-mobile-menu__link--mobile-data-engineering-1 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Data Engineering</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-data-warehouse-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-data-warehouse-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|data warehouse" }' data-gtm-event=mousedown href=/search/skills/data-warehouse/ >Data Warehouse</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-sql-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-sql-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|sql" }' data-gtm-event=mousedown href=/search/skills/sql/ >SQL</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-apache-spark-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-apache-spark-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|apache spark" }' data-gtm-event=mousedown href=/search/skills/apache-spark/ >Apache Spark</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-microsoft-sql-server-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-microsoft-sql-server-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|microsoft sql server" }' data-gtm-event=mousedown href=/search/skills/microsoft-sql-server/ >Microsoft SQL Server</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-mysql-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-mysql-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|mysql" }' data-gtm-event=mousedown href=/search/skills/mysql/ >MySQL</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-kafka-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-kafka-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|kafka" }' data-gtm-event=mousedown href=/search/skills/kafka/ >Kafka</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-data-lake-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-data-lake-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|data lake" }' data-gtm-event=mousedown href=/search/skills/data-lake/ >Data Lake</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-streaming-messaging-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-streaming-messaging-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|streaming &amp; messaging" }' data-gtm-event=mousedown href=/search/skills/streaming-messaging/ >Streaming &amp; Messaging</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-nosql-databases-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-nosql-databases-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|nosql databases" }' data-gtm-event=mousedown href=/search/skills/nosql-databases/ >NoSQL Databases</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-relational-databases-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-relational-databases-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data engineering|relational databases" }' data-gtm-event=mousedown href=/search/skills/relational-databases/ >Relational Databases</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-data-engineering-1><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-data-science-2 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-data-science-2 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-data-science-2>Data Science<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-data-science-2 aria-labelledby=orm-global-site-mobile-menu__link--mobile-data-science-2 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Data Science</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-pandas-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-pandas-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|pandas" }' data-gtm-event=mousedown href=/search/topics/pandas/ >Pandas</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-r-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-r-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|r" }' data-gtm-event=mousedown href=/search/topics/r/ >R</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-matlab-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-matlab-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|matlab" }' data-gtm-event=mousedown href=/search/topics/matlab/ >MATLAB</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-sas-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-sas-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|sas" }' data-gtm-event=mousedown href=/search/topics/sas/ >SAS</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-d3-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-d3-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|d3" }' data-gtm-event=mousedown href=/search/topics/d3/ >D3</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-power-bi-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-power-bi-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|power bi" }' data-gtm-event=mousedown href=/search/topics/power-bi/ >Power BI</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-tableau-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-tableau-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|tableau" }' data-gtm-event=mousedown href=/search/topics/tableau/ >Tableau</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-statistics-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-statistics-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|statistics" }' data-gtm-event=mousedown href=/search/topics/statistics/ >Statistics</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-exploratory-data-analysis-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-exploratory-data-analysis-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|exploratory data analysis" }' data-gtm-event=mousedown href=/search/topics/exploratory-data-analysis/ >Exploratory Data Analysis</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-data-visualization-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-data-visualization-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|data science|data visualization" }' data-gtm-event=mousedown href=/search/topics/data-visualization/ >Data Visualization</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-data-science-2><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-ai-ml-3 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-ai-ml-3 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-ai-ml-3>AI &amp; ML<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-ai-ml-3 aria-labelledby=orm-global-site-mobile-menu__link--mobile-ai-ml-3 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">AI &amp; ML</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-generative-ai-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-generative-ai-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|generative ai" }' data-gtm-event=mousedown href=/search/skills/generative-ai/ >Generative AI</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-machine-learning-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-machine-learning-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|machine learning" }' data-gtm-event=mousedown href=/search/skills/machine-learning/ >Machine Learning</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-artificial-intelligence-ai-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-artificial-intelligence-ai-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|artificial intelligence (ai)" }' data-gtm-event=mousedown href=/search/skills/artificial-intelligence-ai/ >Artificial Intelligence (AI)</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-deep-learning-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-deep-learning-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|deep learning" }' data-gtm-event=mousedown href=/search/skills/deep-learning/ >Deep Learning</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-reinforcement-learning-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-reinforcement-learning-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|reinforcement learning" }' data-gtm-event=mousedown href=/search/skills/reinforcement-learning/ >Reinforcement Learning</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-natural-language-processing-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-natural-language-processing-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|natural language processing" }' data-gtm-event=mousedown href=/search/skills/natural-language-processing/ >Natural Language Processing</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-tensorflow-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-tensorflow-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|tensorflow" }' data-gtm-event=mousedown href=/search/skills/tensorflow/ >TensorFlow</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-scikit-learn-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-scikit-learn-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|scikit-learn" }' data-gtm-event=mousedown href=/search/skills/scikit-learn/ >Scikit-Learn</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-hyperparameter-tuning-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-hyperparameter-tuning-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|hyperparameter tuning" }' data-gtm-event=mousedown href=/search/skills/hyperparameter-tuning/ >Hyperparameter Tuning</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-mlops-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-mlops-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|ai &amp; ml|mlops" }' data-gtm-event=mousedown href=/search/skills/mlops/ >MLOps</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-ai-ml-3><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-programming-languages-4 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-programming-languages-4 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-programming-languages-4>Programming Languages<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-programming-languages-4 aria-labelledby=orm-global-site-mobile-menu__link--mobile-programming-languages-4 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Programming Languages</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-java-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-java-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|java" }' data-gtm-event=mousedown href=/search/skills/java/ >Java</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-javascript-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-javascript-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|javascript" }' data-gtm-event=mousedown href=/search/skills/javascript/ >JavaScript</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-spring-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-spring-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|spring" }' data-gtm-event=mousedown href=/search/skills/spring/ >Spring</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-python-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-python-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|python" }' data-gtm-event=mousedown href=/search/skills/python/ >Python</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-go-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-go-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|go" }' data-gtm-event=mousedown href=/search/skills/go/ >Go</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-c-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-c-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|c#" }' data-gtm-event=mousedown href=/search/skills/c-sharp/ >C#</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-c-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-c-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|c++" }' data-gtm-event=mousedown href=/search/skills/c-plus-plus/ >C++</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-c-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-c-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|c" }' data-gtm-event=mousedown href=/search/skills/c/ >C</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-swift-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-swift-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|swift" }' data-gtm-event=mousedown href=/search/skills/swift/ >Swift</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-rust-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-rust-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|rust" }' data-gtm-event=mousedown href=/search/skills/rust/ >Rust</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-functional-programming-10 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-functional-programming-10 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|programming languages|functional programming" }' data-gtm-event=mousedown href=/search/skills/functional-programming/ >Functional Programming</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-programming-languages-4><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-software-architecture-5 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-software-architecture-5 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-software-architecture-5>Software Architecture<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-software-architecture-5 aria-labelledby=orm-global-site-mobile-menu__link--mobile-software-architecture-5 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Software Architecture</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-object-oriented-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-object-oriented-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|software architecture|object-oriented" }' data-gtm-event=mousedown href=/search/skills/object-oriented-architecture/ >Object-Oriented</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-distributed-systems-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-distributed-systems-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|software architecture|distributed systems" }' data-gtm-event=mousedown href=/search/skills/distributed-systems/ >Distributed Systems</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-domain-driven-design-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-domain-driven-design-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|software architecture|domain-driven design" }' data-gtm-event=mousedown href=/search/skills/domain-driven-design/ >Domain-Driven Design</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-architectural-patterns-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-architectural-patterns-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|software architecture|architectural patterns" }' data-gtm-event=mousedown href=/search/skills/architectural-patterns/ >Architectural Patterns</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-software-architecture-5><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-itops-6 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-itops-6 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-itops-6>IT/Ops<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-itops-6 aria-labelledby=orm-global-site-mobile-menu__link--mobile-itops-6 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">IT/Ops</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-kubernetes-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-kubernetes-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|kubernetes" }' data-gtm-event=mousedown href=/search/topics/kubernetes/ >Kubernetes</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-docker-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-docker-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|docker" }' data-gtm-event=mousedown href=/search/topics/docker/ >Docker</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-github-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-github-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|github" }' data-gtm-event=mousedown href=/search/topics/github/ >GitHub</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-terraform-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-terraform-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|terraform" }' data-gtm-event=mousedown href=/search/topics/terraform/ >Terraform</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-continuous-delivery-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-continuous-delivery-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|continuous delivery" }' data-gtm-event=mousedown href=/search/topics/continuous-delivery/ >Continuous Delivery</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-continuous-integration-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-continuous-integration-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|continuous integration" }' data-gtm-event=mousedown href=/search/topics/continuous-integration/ >Continuous Integration</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-database-administration-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-database-administration-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|database administration" }' data-gtm-event=mousedown href=/search/topics/database-administration/ >Database Administration</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-computer-networking-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-computer-networking-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|computer networking" }' data-gtm-event=mousedown href=/search/topics/computer-networking/ >Computer Networking</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-operating-systems-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-operating-systems-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|operating systems" }' data-gtm-event=mousedown href=/search/topics/operating-systems/ >Operating Systems</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-it-certifications-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-it-certifications-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|it/ops|it certifications" }' data-gtm-event=mousedown href=/search/topics/it-certifications/ >IT Certifications</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-itops-6><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-security-7 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-security-7 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-security-7>Security<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-security-7 aria-labelledby=orm-global-site-mobile-menu__link--mobile-security-7 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Security</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-network-security-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-network-security-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|network security" }' data-gtm-event=mousedown href=/search/skills/network-security/ >Network Security</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-application-security-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-application-security-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|application security" }' data-gtm-event=mousedown href=/search/skills/application-security/ >Application Security</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-incident-response-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-incident-response-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|incident response" }' data-gtm-event=mousedown href=/search/skills/incident-response/ >Incident Response</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-zero-trust-model-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-zero-trust-model-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|zero trust model" }' data-gtm-event=mousedown href=/search/skills/zero-trust-model/ >Zero Trust Model</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-disaster-recovery-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-disaster-recovery-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|disaster recovery" }' data-gtm-event=mousedown href=/search/skills/disaster-recovery/ >Disaster Recovery</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-penetration-testing-ethical-hacking-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-penetration-testing-ethical-hacking-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|penetration testing / ethical hacking" }' data-gtm-event=mousedown href=/search/skills/penetration-testing-ethical-hacking/ >Penetration Testing / Ethical Hacking</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-governance-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-governance-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|governance" }' data-gtm-event=mousedown href=/search/skills/governance/ >Governance</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-malware-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-malware-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|malware" }' data-gtm-event=mousedown href=/search/skills/malware/ >Malware</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-security-architecture-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-security-architecture-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|security architecture" }' data-gtm-event=mousedown href=/search/skills/security-architecture/ >Security Architecture</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-security-engineering-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-security-engineering-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|security engineering" }' data-gtm-event=mousedown href=/search/skills/security-engineering/ >Security Engineering</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-security-certifications-10 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-security-certifications-10 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|security|security certifications" }' data-gtm-event=mousedown href=/search/skills/security-certifications/ >Security Certifications</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-security-7><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-design-8 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-design-8 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-design-8>Design<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-design-8 aria-labelledby=orm-global-site-mobile-menu__link--mobile-design-8 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Design</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-web-design-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-web-design-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|web design" }' data-gtm-event=mousedown href=/search/skills/web-design/ >Web Design</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-graphic-design-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-graphic-design-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|graphic design" }' data-gtm-event=mousedown href=/search/skills/graphic-design/ >Graphic Design</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-interaction-design-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-interaction-design-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|interaction design" }' data-gtm-event=mousedown href=/search/skills/interaction-design/ >Interaction Design</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-film-video-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-film-video-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|film &amp; video" }' data-gtm-event=mousedown href=/search/skills/film-video/ >Film &amp; Video</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-user-experience-ux-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-user-experience-ux-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|user experience (ux)" }' data-gtm-event=mousedown href=/search/skills/user-experience-ux/ >User Experience (UX)</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-design-process-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-design-process-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|design process" }' data-gtm-event=mousedown href=/search/skills/design-process/ >Design Process</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-design-tools-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-design-tools-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|design|design tools" }' data-gtm-event=mousedown href=/search/skills/design-tools/ >Design Tools</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-design-8><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-business-9 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-business-9 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-business-9>Business<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-business-9 aria-labelledby=orm-global-site-mobile-menu__link--mobile-business-9 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Business</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-agile-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-agile-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|agile" }' data-gtm-event=mousedown href=/search/skills/agile/ >Agile</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-project-management-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-project-management-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|project management" }' data-gtm-event=mousedown href=/search/skills/project-management/ >Project Management</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-product-management-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-product-management-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|product management" }' data-gtm-event=mousedown href=/search/skills/product-management/ >Product Management</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-marketing-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-marketing-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|marketing" }' data-gtm-event=mousedown href=/search/skills/marketing/ >Marketing</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-human-resources-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-human-resources-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|human resources" }' data-gtm-event=mousedown href=/search/skills/human-resources/ >Human Resources</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-finance-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-finance-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|finance" }' data-gtm-event=mousedown href=/search/skills/finance/ >Finance</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-team-management-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-team-management-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|team management" }' data-gtm-event=mousedown href=/search/skills/team-management/ >Team Management</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-business-strategy-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-business-strategy-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|business strategy" }' data-gtm-event=mousedown href=/search/skills/business-strategy/ >Business Strategy</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-digital-transformation-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-digital-transformation-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|digital transformation" }' data-gtm-event=mousedown href=/search/skills/digital-transformation/ >Digital Transformation</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-organizational-leadership-9 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-organizational-leadership-9 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|business|organizational leadership" }' data-gtm-event=mousedown href=/search/skills/organizational-leadership/ >Organizational Leadership</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-business-9><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-soft-skills-10 data-level=1><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-soft-skills-10 data-level=1 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-soft-skills-10>Soft Skills<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-soft-skills-10 aria-labelledby=orm-global-site-mobile-menu__link--mobile-soft-skills-10 data-level=2><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Soft Skills</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=2><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-professional-communication-0 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-professional-communication-0 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|professional communication" }' data-gtm-event=mousedown href=/search/skills/professional-communication/ >Professional Communication</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-emotional-intelligence-1 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-emotional-intelligence-1 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|emotional intelligence" }' data-gtm-event=mousedown href=/search/skills/emotional-intelligence/ >Emotional Intelligence</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-presentation-skills-2 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-presentation-skills-2 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|presentation skills" }' data-gtm-event=mousedown href=/search/skills/presentation-skills/ >Presentation Skills</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-innovation-3 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-innovation-3 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|innovation" }' data-gtm-event=mousedown href=/search/skills/innovation/ >Innovation</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-critical-thinking-4 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-critical-thinking-4 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|critical thinking" }' data-gtm-event=mousedown href=/search/skills/critical-thinking/ >Critical Thinking</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-public-speaking-5 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-public-speaking-5 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|public speaking" }' data-gtm-event=mousedown href=/search/skills/public-speaking/ >Public Speaking</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-collaboration-6 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-collaboration-6 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|collaboration" }' data-gtm-event=mousedown href=/search/skills/collaboration/ >Collaboration</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-personal-productivity-7 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-personal-productivity-7 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|personal productivity" }' data-gtm-event=mousedown href=/search/skills/personal-productivity/ >Personal Productivity</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-confidence-motivation-8 data-level=2><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-confidence-motivation-8 data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"explore skills|soft skills|confidence / motivation" }' data-gtm-event=mousedown href=/search/skills/confidence-motivation/ >Confidence / Motivation</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-soft-skills-10><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-explore-skills-0><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-features-1 data-level=0><button
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-features-1 data-level=0 aria-expanded=false aria-haspopup=true aria-controls=orm-global-site-mobile-menu-drawer--mobile-features-1>Features<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=currentColor></path></svg></button><div
class=orm-global-mobile-drawer hidden inert id=orm-global-site-mobile-menu-drawer--mobile-features-1 aria-labelledby=orm-global-site-mobile-menu__link--mobile-features-1 data-level=1><header
class=orm-global-site-mobile-menu__header><h3 class="orm-global-site-mobile-menu__title">Features</h3></header><ul
class=orm-global-site-mobile-menu role=menu data-level=1><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-all-features-0 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-all-features-0 href=/online-learning/features.html>All features</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-verifiable-skills-1 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-verifiable-skills-1 href=/online-learning/verifiable-skills.html>Verifiable skills</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-academies-2 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-academies-2 href=/online-learning/academies.html>Academies</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-courses-3 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-courses-3 href=/online-learning/courses.html>Courses</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-certifications-4 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-certifications-4 href=/online-learning/feature-certification.html>Certifications</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-interactive-learning-5 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-interactive-learning-5 href=/online-learning/intro-interactive-learning.html>Interactive learning</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-live-events-6 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-live-events-6 href=/online-learning/live-events.html>Live events</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-superstreams-7 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-superstreams-7 href=/products/superstreams.html>Superstreams</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-answers-8 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-answers-8 href=/online-learning/feature-answers.html>Answers</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-insights-reporting-9 data-level=1><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-insights-reporting-9 href=/online-learning/insights-dashboard.html>Insights reporting</a></li></ul><footer
class=orm-global-site-mobile-menu__footer><button
role=menuItem class=orm-global-site-mobile-menu__back-button aria-label="Back to previous menu" type=button data-back-button-for=orm-global-site-mobile-menu-drawer--mobile-features-1><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M15 16.7142C15 17.4465 14.3897 18 13.6295 18C13.2484 18 12.9211 17.8528 12.6718 17.6304L5.42447 10.9405L5.42017 10.9365C5.15388 10.6849 5 10.3615 5 9.99568C5 9.65583 5.14145 9.30318 5.43187 9.05271L12.6726 2.37726C12.9196 2.14511 13.2517 2 13.6295 2C14.3897 2 15 2.55348 15 3.28584C15 3.63671 14.8514 3.95598 14.6184 4.18983L14.6109 4.19737L8.33405 9.99593L14.6034 15.7956L14.6073 15.7993C14.8552 16.0335 15 16.3602 15 16.7142Z" fill=currentColor></path></svg>Back</button></footer></div></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-radar-blog-2 data-level=0><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-radar-blog-2 href=/radar/ >Radar Blog</a></li><li
class=orm-global-site-mobile-menu__item role=presentation id=orm-global-site-menu-item--mobile-live-3 data-level=0><a
class=orm-global-site-mobile-menu__link role=menuitem id=orm-global-site-mobile-menu__link--mobile-live-3 href=/live/ >Live</a></li></ul><hr
class=orm-global-site-menu__divider><ul
class=orm-global-site-mobile-menu role=menu>
<li
class=orm-global-site-mobile-menu__item role=presentation><a
role=menuitem class=orm-global-site-mobile-menu__link data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"plans" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/pricing.html>Plans</a></li><li
class=orm-global-site-mobile-menu__item data-hidden=auth role=presentation><a
role=menuitem class=orm-global-site-mobile-menu__link data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"sign in" }' data-gtm-event=mousedown href="https://www.oreilly.com/member/login/?next=%2Fcontent%2Fgeneric-mitigations%2F">Sign In</a></li><li
class=orm-global-site-mobile-menu__item data-hidden=auth role=presentation><a
role=menuitem class="orm-global-site-mobile-menu__link orm-global-site--link-as-button" data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"try now" }' data-gtm-event=mousedown href=https://www.oreilly.com/online-learning/try-now.html>Try Now<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=inherit></path></svg></a></li><li
class="menu__item menu-item" data-hidden=notauth><a
role=menuitem class="orm-global-site-mobile-menu__link orm-global-site--link-as-button" data-gtm='{ "eventCat":"marketing", "eventAct":"nav", "eventLbl":"oreilly platform" }' data-gtm-event=mousedown href=https://www.oreilly.com/member/login/ >O'Reilly Platform<svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 20 20" fill=none><path
d="M5.5 16.7142C5.5 17.4465 6.11034 18 6.87045 18C7.25163 18 7.57887 17.8528 7.82823 17.6304L15.0755 10.9405L15.0798 10.9365C15.3461 10.6849 15.5 10.3615 15.5 9.99568C15.5 9.65583 15.3585 9.30318 15.0681 9.05271L7.82738 2.37726C7.58041 2.14511 7.24835 2 6.87045 2C6.11034 2 5.5 2.55348 5.5 3.28584C5.5 3.63671 5.64856 3.95598 5.88158 4.18983L5.88909 4.19737L12.166 9.99593L5.89664 15.7956L5.89275 15.7993C5.64484 16.0335 5.5 16.3602 5.5 16.7142Z" fill=inherit></path></svg></a></li></ul></nav><div
class=orm-global-mobile-pane aria-hidden=true inert hidden id=orm-global-mobile-pane--search data-testid=mobile-search-pane><form
class=orm-global-site-search-form data-gtm='{ "eventCat":"global nav", "eventAct":"navigation", "eventLbl":"keyboard|enter" }' data-gtm-event=submit id=orm-global-site-search-form--mobile action=https://www.oreilly.com/search/ method=get><div
class=orm-global-site-search-icon><svg
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1s0hah4" focusable=false aria-hidden=true viewBox="0 0 12 12" fill=none><path
fill-rule=evenodd clip-rule=evenodd d="M10.6645 12L6.2575 7.59302L7.59302 6.2575L12 10.6645L10.6645 12Z" fill=currentColor></path><path
fill-rule=evenodd clip-rule=evenodd d="M4.5 9C6.98528 9 9 6.98528 9 4.5C9 2.01472 6.98528 0 4.5 0C2.01472 0 0 2.01472 0 4.5C0 6.98528 2.01472 9 4.5 9ZM7 4.5C7 5.88071 5.88071 7 4.5 7C3.11929 7 2 5.88071 2 4.5C2 3.11929 3.11929 2 4.5 2C5.88071 2 7 3.11929 7 4.5Z" fill=currentColor></path></svg></div><label
class=orm-global-site-search-label><span
class=orm-global-site-search-label__text>Search for books, courses, events, and more</span><input
class=orm-global-site-search-input type=search placeholder="Search for books, courses, events, and more" name=q></label></form></div><div
class=headerBranding><div
class=content>
<a
class=hero-content href=/content/ title=Content></a>
<button
id=themeToggle class=themeToggle aria-pressed=false>
<span
class=srOnly>Toggle dark mode</span>
<span
class=dark></span>
<span
class=light></span>
</button></div></div><main
role=main id=maincontent> <script type=application/ld+json>{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://www.oreilly.com/content/generic-mitigations/#BlogPosting",
"mainEntityOfPage": "https://www.oreilly.com/content/generic-mitigations/",
"headline": "Generic mitigations",
"description": "Greetings, fellow reader of articles on the internet! Do you work on a service that you (and, presumably, your users) would like to keep working? Well, if so, I’m here to convince you that your service should have at least one or two generic mitigations ready to go. If it doesn’t, you’re in for a …",
"image": {
"@type": "ImageObject",
"url": "https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg"
},
"author": [
{"@type": "Person", "name": "Jennifer Mace", "url": "https://www.oreilly.com/people/jennifer-mace/"} ],
"publisher": {
"@type": "Organization",
"name": "O'Reilly Media",
"url": "https://www.oreilly.com/",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg",
"width": 200,
"height": 50
}
},
"datePublished": "2020-12-15",
"dateModified": "2026-08-04",
"wordCount": "1256",
"timeRequired": "PT7M",
"keywords": [],
"genre": ["Operations","Performance"],
"isPartOf": {
"@type": "Blog",
"name": "O'Reilly Radar",
"url": "https://www.oreilly.com/radar/"
},
"potentialAction": {
"@type": "ViewAction",
"target": "https://www.oreilly.com/content/generic-mitigations/",
"name": "Read Full Article"
}
}</script> <div
class=pageLayout><div
class=sidebar id=right-rail><div
class="module open"><form
id=searchForm class=search role=search method=get action=https://www.oreilly.com/content/ >
<input
type=search name=s placeholder=Search value></form><div
class=topics>
<a
href=/radar/topics/ai-ml/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label="ai & ml">AI &amp; ML</a>
<a
href=/radar/topics/business/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label=business>Business</a>
<a
href=/radar/topics/data/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label=data>Data</a>
<a
href=/radar/topics/innovation-and-disruption/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label=innovation>Innovation</a>
<a
href=/radar/tag/research/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label=research>Research</a>
<a
href=/radar/topics/security/ class=topicChip data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=topic data-ga-label=security>Security</a></div></div><div
class="module mobileMove"><h2>Try the O’Reilly learning platform</h2><p>With the O’Reilly learning platform, you get the resources and guidance to keep your skills sharp and stay ahead. Try it free for up to 14 days.</p><a
href="https://www.oreilly.com/start-trial/?type=team" class=ctaLink data-ga-event-name=eventTracker data-ga-category=radar data-ga-event=promo data-ga-label="start trial">Start trial</a></div><div
class="module mobileMove"><h2>Try a course for free</h2><p>Join a live online event on the O’Reilly platform to learn from the experts shaping tech.</p><a
href=https://www.oreilly.com/live/free.html class=ctaLink data-ga-event-name=eventTracker data-ga-category=radar data-ga-event="live event" data-ga-label="see whats coming soon">See what’s coming soon</a></div><div
class="module mobileMove"><link
rel=stylesheet type=text/css
href=https://www.oreilly.com/content/wp-content/themes/signal/files/marketing-cloud-subscribe-20220726.css><form
id=marketingCloudForm class=mc-form action=https://cl.exct.net/DEManager.aspx name=subscribeForm
method=post><h2>Get the Radar Trends newsletter</h2><input
type=hidden name=_clientID value=7200351>
<input
type=hidden name=_deExternalKey value=3559B084-4962-47D6-AD05-DAA2DE51CF45>
<input
type=hidden name=_action value=add>
<input
type=hidden name=_returnXML value=0>
<input
type=hidden name=_successURL value="https://www.oreilly.com/radar/?success=true">
<input
type=hidden name=_errorURL value="https://www.oreilly.com/radar/?error=true">
<input
type=hidden name=NewsletterTopic value=RadarTrends>
<input
type=hidden name=Marketing_Context value="email signup at https://www.oreilly.com/emails/newsletters/"><div
id=marketingCloudForm-errorMessage class=mc-form-errorMessage></div><div
class=mc-form-group><div
class=mc-form-item><label
for=emailaddress>Your email</label><input
type=email name=emailaddress
id=emailaddress data-text="email address" autocomplete=email aria-required=true></div><div
class=mc-form-item>
<label
for=country>Country</label>
<select
name=country id=country data-text=country autocomplete=country-name aria-required=true><option
value>- Select country -</option><option
value="United States">United States</option><option
value=Afghanistan>Afghanistan</option><option
value=Albania>Albania</option><option
value=Algeria>Algeria</option><option
value=Andorra>Andorra</option><option
value=Angola>Angola</option><option
value="Antigua and Barbuda">Antigua and Barbuda</option><option
value=Argentina>Argentina</option><option
value=Armenia>Armenia</option><option
value=Aruba>Aruba</option><option
value=Australia>Australia</option><option
value=Austria>Austria</option><option
value=Azerbaijan>Azerbaijan</option><option
value=Bahamas>The Bahamas</option><option
value=Bahrain>Bahrain</option><option
value=Bangladesh>Bangladesh</option><option
value=Barbados>Barbados</option><option
value=Belarus>Belarus</option><option
value=Belgium>Belgium</option><option
value=Belize>Belize</option><option
value=Benin>Benin</option><option
value=Bermuda>Bermuda</option><option
value=Bhutan>Bhutan</option><option
value="Bolivia, Plurinational State of">Bolivia</option><option
value="Bosnia and Herzegovina">Bosnia and Herzegovina</option><option
value=Botswana>Botswana</option><option
value=Brazil>Brazil</option><option
value="Brunei Darussalam">Brunei</option><option
value=Bulgaria>Bulgaria</option><option
value="Burkina Faso">Burkina Faso</option><option
value=Burundi>Burundi</option><option
value=Cambodia>Cambodia</option><option
value=Cameroon>Cameroon</option><option
value=Canada>Canada</option><option
value="Cape Verde">Cape Verde</option><option
value="Central African Republic">Central African Republic</option><option
value=Chad>Chad</option><option
value=Chile>Chile</option><option
value=China>People's Republic of China</option><option
value=Colombia>Colombia</option><option
value=Comoros>Comoros</option><option
value=Congo>Congo, Republic of the</option><option
value="Congo, the Democratic Republic of the">Congo, Democratic Republic of the</option><option
value="Cook Islands">Cook Islands</option><option
value="Costa Rica">Costa Rica</option><option
value="Cote d'Ivoire">C&ocirc;te d'Ivoire (Ivory Coast)</option><option
value=Croatia>Croatia</option><option
value=Cuba>Cuba</option><option
value=Cyprus>Cyprus</option><option
value="Czech Republic">Czechia</option><option
value=Denmark>Denmark</option><option
value=Djibouti>Djibouti</option><option
value=Dominica>Dominica</option><option
value="Dominican Republic">Dominican Republic</option><option
value=Ecuador>Ecuador</option><option
value=Egypt>Egypt</option><option
value="El Salvador">El Salvador</option><option
value="Equatorial Guinea">Equatorial Guinea</option><option
value=Eritrea>Eritrea</option><option
value=Estonia>Estonia</option><option
value=Swaziland>Eswatini (formerly Swaziland)</option><option
value=Ethiopia>Ethiopia</option><option
value="Federated States of Micronesia">Federated States of Micronesia</option><option
value=Fiji>Fiji</option><option
value=Finland>Finland</option><option
value=France>France</option><option
value=Gabon>Gabon</option><option
value=Gambia>The Gambia</option><option
value=Georgia>Georgia</option><option
value=Germany>Germany</option><option
value=Ghana>Ghana</option><option
value=Greece>Greece</option><option
value=Grenada>Grenada</option><option
value=Guatemala>Guatemala</option><option
value=Guinea>Guinea</option><option
value=Guinea-Bissau>Guinea-Bissau</option><option
value=Guyana>Guyana</option><option
value=Haiti>Haiti</option><option
value=Honduras>Honduras</option><option
value=Hungary>Hungary</option><option
value=Iceland>Iceland</option><option
value=India>India</option><option
value=Indonesia>Indonesia</option><option
value="Iran, Islamic Republic of">Iran</option><option
value=Iraq>Iraq</option><option
value=Ireland>Ireland</option><option
value=Israel>Israel</option><option
value=Italy>Italy</option><option
value=Jamaica>Jamaica</option><option
value=Japan>Japan</option><option
value=Jordan>Jordan</option><option
value=Kazakhstan>Kazakhstan</option><option
value=Kenya>Kenya</option><option
value=Kiribati>Kiribati</option><option
value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option><option
value="Korea, Republic of">Korea, Republic of</option><option
value=Kuwait>Kuwait</option><option
value=Kyrgyzstan>Kyrgyzstan</option><option
value="Lao People's Democratic Republic">Laos</option><option
value=Latvia>Latvia</option><option
value=Lebanon>Lebanon</option><option
value=Lesotho>Lesotho</option><option
value=Liberia>Liberia</option><option
value="Libyan Arab Jamahiriya">Libya</option><option
value=Liechtenstein>Liechtenstein</option><option
value=Lithuania>Lithuania</option><option
value=Luxembourg>Luxembourg</option><option
value="Macedonia, the former Yugoslav Republic of">Macedonia, Republic of</option><option
value=Madagascar>Madagascar</option><option
value=Malawi>Malawi</option><option
value=Malaysia>Malaysia</option><option
value=Maldives>Maldives</option><option
value=Mali>Mali</option><option
value=Malta>Malta</option><option
value=Mauritania>Mauritania</option><option
value=Mauritius>Mauritius</option><option
value=Mexico>Mexico</option><option
value="Moldova, Republic of">Moldova</option><option
value=Monaco>Monaco</option><option
value=Mongolia>Mongolia</option><option
value=Montenegro>Montenegro</option><option
value=Morocco>Morocco</option><option
value=Mozambique>Mozambique</option><option
value=Myanmar>Myanmar</option><option
value=Namibia>Namibia</option><option
value=Nauru>Nauru</option><option
value=Nepal>Nepal</option><option
value=Netherlands>Netherlands</option><option
value="New Zealand">New Zealand</option><option
value=Nicaragua>Nicaragua</option><option
value=Niger>Niger</option><option
value=Nigeria>Nigeria</option><option
value=Niue>Niue</option><option
value=Norway>Norway</option><option
value=Oman>Oman</option><option
value=Pakistan>Pakistan</option><option
value="Palestinian Territory, Occupied">Palestine, State of</option><option
value=Panama>Panama</option><option
value="Papua New Guinea">Papua New Guinea</option><option
value=Paraguay>Paraguay</option><option
value=Peru>Peru</option><option
value=Philippines>Philippines</option><option
value=Poland>Poland</option><option
value=Portugal>Portugal</option><option
value=Qatar>Qatar</option><option
value=Romania>Romania</option><option
value="Russian Federation">Russia</option><option
value=Rwanda>Rwanda</option><option
value="Saint Kitts and Nevis">Saint Kitts and Nevis</option><option
value="Saint Lucia">Saint Lucia</option><option
value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option><option
value=Samoa>Samoa</option><option
value="San Marino">San Marino</option><option
value="Sao Tome and Principe">S&atilde;o Tom&eacute; and Pr&iacute;ncipe</option><option
value="Saudi Arabia">Saudi Arabia</option><option
value=Senegal>Senegal</option><option
value=Serbia>Serbia</option><option
value=Seychelles>Seychelles</option><option
value="Sierra Leone">Sierra Leone</option><option
value=Singapore>Singapore</option><option
value=Slovakia>Slovakia</option><option
value=Slovenia>Slovenia</option><option
value="Solomon Islands">Solomon Islands</option><option
value=Somalia>Somalia</option><option
value="South Africa">South Africa</option><option
value="South Sudan">South Sudan</option><option
value=Spain>Spain</option><option
value="Sri Lanka">Sri Lanka</option><option
value=Sudan>Sudan</option><option
value=Suriname>Suriname</option><option
value=Sweden>Sweden</option><option
value=Switzerland>Switzerland</option><option
value="Syrian Arab Republic">Syria</option><option
value="Chinese Taipei">Taiwan</option><option
value=Tajikistan>Tajikistan</option><option
value="Tanzania, United Republic of">Tanzania</option><option
value=Thailand>Thailand</option><option
value=Timor-Leste>Timor-Leste (East Timor)</option><option
value=Togo>Togo</option><option
value=Tonga>Tonga</option><option
value="Trinidad and Tobago">Trinidad and Tobago</option><option
value=Tunisia>Tunisia</option><option
value=Turkey>Turkey</option><option
value=Turkmenistan>Turkmenistan</option><option
value=Tuvalu>Tuvalu</option><option
value=Uganda>Uganda</option><option
value=Ukraine>Ukraine</option><option
value="United Arab Emirates">United Arab Emirates</option><option
value="United Kingdom">United Kingdom</option><option
value="United States">United States</option><option
value=Uruguay>Uruguay</option><option
value=Uzbekistan>Uzbekistan</option><option
value=Vanuatu>Vanuatu</option><option
value="Holy See (Vatican City State)">Vatican City</option><option
value="Venezuela, Bolivarian Republic of">Venezuela</option><option
value="Viet Nam">Vietnam</option><option
value=Yemen>Yemen</option><option
value=Zambia>Zambia</option><option
value=Zimbabwe>Zimbabwe</option>
</select></div><div
class=mc-form-item><div
class="consentGroup hidden" id=consentGroup></div></div><div
class=mc-form-item><button
type=submit onclick="return verifMCForm();">Subscribe</button></div><div
class=mc-form-item><p
class=privacy>Please read our <a
href=https://oreilly.com/oreilly/privacy.html target=_blank>privacy policy</a>.</p></div></div></form><div
id=marketingCloudForm-thankyou class="marketingCloudForm-thankyou hidden"><h2>Thank you for subscribing to the O’Reilly Radar Trends to Watch newsletter.</h2></div> <script src=https://cdn.oreillystatic.com/assets/js/marketingCloudForm-20250502.js></script> <script src=https://www.oreilly.com/content/wp-content/cache/minify/2/52453.js></script> </div></div><div
class=blogPost><div
class=pageHeader><p
class=breadcrumbs>
<a
href=https://www.oreilly.com/content>Content</a>
&gt; <a
href=https://www.oreilly.com/content/topics/ >Topics</a>
&gt; <a
href=https://www.oreilly.com/content/topics/operations/ >Operations</a></p><div
class=pageHeaderContent><div
class=title><h1>Generic mitigations</h1><div
class=description><p>A philosophy of duct-tape outage resolution</p></div></div><div
class=radar-post-page-meta><p
class=text>
<span
class=radar-post-page-author>
By <a
href=https://www.oreilly.com/people/jennifer-mace/ >Jennifer Mace</a> </span><span
class=radar-post-page-date>December 15, 2020 &bull; 7 minute read</span></p></div><div
class=radar-post-page-actions>
<button
class=share id=share><span
class=icon></span><span
class=text>Share</span></button><div
class=shareOverlay id=shareOverlay><div
class=shareItems id=shareItems>
<button
class=close><span
class=reader>Close</span></button><a
href="https://www.linkedin.com/feed/?shareActive=true&text=O%27Reilly%20-%20Generic%20mitigations%20with%20Jennifer%20Mace%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F" class=linkedin rel="noopener nofollow noreferrer" aria-label="Share on LinkedIn" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;linkedin&quot; }" data-gtm-event=mousedown><span
class=reader>LinkedIn</span></a><a
href="https://x.com/intent/tweet?original_referer=https%3A%2F%2Fwww.oreilly.com%2F&text=O%27Reilly%20-%20Generic%20mitigations%20with%20Jennifer%20Mace%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F" class=x rel="noopener nofollow noreferrer" aria-label="Share on X" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;x&quot; }" data-gtm-event=mousedown><span
class=reader>X</span></a><a
href="https://www.facebook.com/sharer/sharer.php?quote=O%27Reilly%20-%20Generic%20mitigations%20with%20Jennifer%20Mace%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F" class=facebook rel="noopener nofollow noreferrer" aria-label="Share on Facebook" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;facebook&quot; }" data-gtm-event=mousedown><span
class=reader>Facebook</span></a><a
href="https://threads.net/intent/post?text=O%27Reilly%20-%20Generic%20mitigations%20with%20Jennifer%20Mace%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F" class=threads rel="noopener nofollow noreferrer" aria-label="Share on Threads" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;threads&quot; }" data-gtm-event=mousedown><span
class=reader>Threads</span></a><a
href="https://bsky.app/intent/compose?text=O%27Reilly%20-%20Generic%20mitigations%20with%20Jennifer%20Mace%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F" class=bluesky rel="noopener nofollow noreferrer" aria-label="Share on Bluesky" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;bluesky&quot; }" data-gtm-event=mousedown><span
class=reader>Bluesky</span></a><a
href="https://www.reddit.com/submit?url=https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fgeneric-mitigations%2F&title=O%27Reilly%20Radar%20-%20Generic%20mitigations" class=reddit rel="noopener nofollow noreferrer" aria-label="Share on Reddit" target=_blank data-gtm="{ &quot;eventCat&quot;:&quot;marketing&quot;, &quot;eventAct&quot;:&quot;share&quot;, &quot;eventLbl&quot;:&quot;reddit&quot; }" data-gtm-event=mousedown><span
class=reader>Reddit</span></a></div></div> <script>// Show share overlay when share button is clicked
document.getElementById('share').addEventListener('click', (e) => {
shareItems.classList.remove('hidden');
shareOverlay.classList.add('over');
document.querySelector('body').classList.add('fixed');
});
function hideShareOverlay() {
shareOverlay.classList.remove('over');
shareItems.classList.add('hidden');
document.querySelector('body').classList.remove('fixed');
}
const shareItemsClose = shareItems.querySelector('.close');
shareItemsClose.addEventListener('click', (e) => {
hideShareOverlay();
});
shareOverlay.addEventListener('click', (e) => {
hideShareOverlay();
});
shareItems.addEventListener('click', (e) => {
e.stopPropagation();
});</script> </div></div></div><section
class="postContent post-format-radar"><div
id=post-featured-image class=featuredImage>
<img
width=472 height=315 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg class="attachment- size- wp-post-image" alt="History of Jujutsu" large decoding=async fetchpriority=high srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf.jpg 472w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/historyofjiujitsu-crop-5e383f5820228b8670fc15c27bf8b8cf-300x200.jpg 300w" sizes="(min-width: 1024px) 800px, 100vw">
<span
class=caption>
History of Jujutsu <span
class=source-name>(source: <a
class=secondary target=_blank href=http://www.studymartialarts.com/a-history-and-style-guide-of-jujutsu/ rel="noopener noreferrer">Robert Rousseau</a>)</span> </span></div><div
class=postContent-content id=postContent-content><p
class=wp-block-paragraph>Greetings, fellow reader of articles on the internet! Do you work on a service that you (and, presumably, your users) would like to keep working? Well, if so, I’m here to convince you that your service should have at least one or two generic mitigations ready to go. If it doesn’t, you’re in for a bad time. If it does, treasure them, maintain them, and <em>use</em> them, lest they rot beneath your feet.<br></p><h2 class="wp-block-heading"><strong>Hold up, hang on, what’s a generic mitigation?</strong></h2><p
class=wp-block-paragraph>Alrighty. From the top: a <em>mitigation</em> is any action you might take to reduce the impact of a breakage, generally in production. A hotfix is a mitigation. SSHing into an instance and clearing the cache is a mitigation. Duct-taping a spare battery to a shoddy laptop counts, too. Cutting off power to a datacenter to close down a vulnerability is a mitigation, I guess, in the same way a guillotine cures the common cold.</p><figure
class="wp-block-image size-large"><img
decoding=async width=1024 height=1024 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-1024x1024.png alt="Cartoon oncall Macey cuts the cable to a datacenter rack with a comically giant pair of scissors while giving a thumbs-up." class=wp-image-9931 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-1024x1024.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-300x300.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-150x150.png 150w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-768x768.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1-1536x1536.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/01-1.png 2000w" sizes="(min-width: 1024px) 800px, 100vw"></figure><p
class=wp-block-paragraph>A <em>generic mitigation</em>, then, is one that is useful in mitigating a wide variety of outages.</p><p
class=wp-block-paragraph>For example, a binary rollback is probably the most common generic mitigation. Many multi-homed services will have an emergency drain-the-traffic-off-the-broken-replica button, which is a good generic mitigation for query-based services. Others might have separate data rollbacks, or a tool to quickly add a whole bunch of additional capacity.</p><p
class=wp-block-paragraph>The most important characteristic of a generic mitigation is this: <em>You don’t need to fully understand your outage to use it.</em><br></p><h2 class="wp-block-heading"><strong>I mean, don’t we want to understand our outages?</strong></h2><p
class=wp-block-paragraph>No.</p><p
class=wp-block-paragraph>Okay, let me expand on that: you want to understand your outage <em>after it is mitigated</em>. Let’s draw a quick picture of a typical outage.</p><figure
class="wp-block-image size-large"><img
decoding=async width=1024 height=563 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-1024x563.png alt="A timeline diagram of two different approaches to handling an outage. The timeline begins the same, going from 'problem created' to 'damage starts' (where a red 'user impact' bar begins) to 'oncall paged,' but it splits at a decision point: if you choose 'Apply a generic mitigation', the user impact halts, and the timeline continues to 'investigate', 'final fix', and 'apply fix'. If you choose not to mitigate, user impact continues - through 'investigate', 'find perfect fix', and finally halts at 'apply fix'. Illustrations of a volcanic island exploding decorate the timelines; it is clear that the islander is much happier in the 'mitigate early' timeline, whereas if you choose to investigate first, the island ends up covered in ash and sad residents." class=wp-image-9933 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-1024x563.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-300x165.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-768x422.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-1536x845.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/02-2048x1126.png 2048w" sizes="(min-width: 1024px) 800px, 100vw"></figure><p
class=wp-block-paragraph>The goal of building good generic mitigations is to have a weapon ready to wield as early in the timeline as possible. If the only mitigations available to you are problem-specific, then you will be unable to help your users until you understand the problem in detail. It is very difficult to decrease the time it takes to understand a problem; if we could easily find problems, then we most likely wouldn’t have caused them in the first place.<br></p><p
class=wp-block-paragraph>So let’s assume that the measure of success for a team’s incident management is not &#8220;time to fix,&#8221; but &#8220;time to mitigate,&#8221; and that the thing we want to minimize is the time our users spend utterly broken. <em>It is far easier to build mitigations with broad application than it is to make root-causing faster.</em></p><figure
class="wp-block-image size-large"><img
loading=lazy decoding=async width=1024 height=1024 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-1024x1024.png alt="Cartoon Macey holds a sword labelled 'not too problem specific!!!' triumphantly aloft. She is standing on a Gordian Knot of power cables." class=wp-image-9935 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-1024x1024.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-300x300.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-150x150.png 150w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-768x768.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03-1536x1536.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/03.png 2000w" sizes="auto, (min-width: 1024px) 800px, 100vw"></figure><h2 class="wp-block-heading"><strong>Sure. I’m with you. What’s stopping us?</strong></h2><p
class=wp-block-paragraph>Ironically, the difficulty is that <em>generic mitigations are highly specific.</em></p><p
class=wp-block-paragraph>That’s a nonsense sentence. Let’s try again. A good, generic something-terrible-is-happening fix-it-quick button is simple (and safe!) to use in an emergency; a solid generic mitigation tool takes a lot of work beforehand to create and needs to be carefully tailored to the service it is mitigating.&nbsp;</p><p
class=wp-block-paragraph>There are, however, some very good <em>general patterns</em> for generic mitigations that we can learn from, though these will need careful tweaking to make them fit your specific service.<br></p><h2 class="wp-block-heading"><strong>Okay, I’ll bite. What’re some generic mitigation patterns?</strong></h2><p
class=wp-block-paragraph>Glad you asked! Here’s a handful to get you started.<br></p><ul
class=wp-block-list><li><strong>Rollback</strong><br>This reverts your service—most commonly, your binary, but there are other options—to a known-good state. Almost every service can implement a version of this strategy. Far too many <em>think</em> they have safe rollbacks, only to learn otherwise during an outage.</li><li><strong>Data rollback</strong> <br>This is a sub-case of the previous one—it reverts just your data. Content-heavy services are more likely to find this useful, particularly those building data from pipelines.</li><li><strong>Degrade</strong> <br>Is your service overloaded? Having a way to do less work but stay up is a huge improvement over crashing. Attempts to create a new degradation mechanism while your system burns will always bite you.</li><li><strong>Upsize</strong> <br>Got too much traffic? Or is everything running hot for no reason? Add more replicas. It’s expensive, but cheaper than pissing off users with an outage. Note that this is rarely as simple as &#8220;scale up one binary&#8221;; system scaling is complex.</li><li><strong>Block list</strong> <br>Got a query of death? Single spammy user taking out a zone? Block them.</li><li><strong>Drain</strong> <br>Move your traffic to a different place. This one works great if you’re multi-homed and traffic driven: if one region sees high errors, move the requests elsewhere.&nbsp;</li><li><strong>Quarantine</strong> <br>A good way to address the &#8220;bad instance&#8221; problem is to enforce a quarantine. Isolate a given unit of your usage—a hot DB row, a spammy user, a poisoned traffic stream—so whatever bug it is hitting stops breaking others.</li></ul><figure
class="wp-block-image size-large"><img
loading=lazy decoding=async width=1024 height=1024 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-1024x1024.png alt="oncall Macey, looking thoughtful with 'hmmm' above her head, contemplates four possible mitigation options in thought bubbles. Clockwise from top left, the bubbles contain: Macey pouring a small fishbowl into a fishtank; Macey rolling a giant boulder up a hill; a big red stop sign with 'NOPE!' written on it; and an ambulance speeding away." class=wp-image-9937 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-1024x1024.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-300x300.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-150x150.png 150w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-768x768.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04-1536x1536.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/04.png 2000w" sizes="auto, (min-width: 1024px) 800px, 100vw"></figure><h2 class="wp-block-heading"><strong>Those&#8230;aren’t really all that generic</strong></h2><p
class=wp-block-paragraph>Yeah, you’d look pretty silly if you drained an instance because a recent release triggered errors, only to see the same errors 30 minutes later when the next instance upgrades. None of these are magic: you need to diagnose to the level of understanding the <em>kind</em> of failure scenario you’re dealing with.</p><figure
class="wp-block-image size-large"><img
loading=lazy decoding=async width=1024 height=1024 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-1024x1024.png alt="A datacenter server rack, looking distressed, says 'ummm...' while on fire. A small bandaid has been applied to its front. The solution is clearly insufficient." class=wp-image-9939 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-1024x1024.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-300x300.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-150x150.png 150w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-768x768.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05-1536x1536.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/05.png 2000w" sizes="auto, (min-width: 1024px) 800px, 100vw"></figure><p
class=wp-block-paragraph>These patterns are also not all equally useful to all services. For example, draining is nonsense for a lot of localized products whose users are pinned to a single physical zone. Quarantining is no use when your workloads are inseparable or when they’re already perfectly isolated. Degraded mode isn’t always an option.</p><p
class=wp-block-paragraph>So ask yourself what strategies make sense for your service. Make that part of your <a
href=https://landing.google.com/sre/sre-book/chapters/evolving-sre-engagement-model/ >production readiness review</a>—write down existing generic mitigations, and plan to add more if you’re falling short. (But not too many! Quality over quantity!) The better and more standardized your mitigations, the easier it is to scale support; there’ll be no need to page an expert awake at 2 AM if the mitigation will hold ‘til the morning.</p><p
class=wp-block-paragraph>Also? If you don’t use them, they won’t work.</p><p
class=wp-block-paragraph>Unfamiliar tooling is dangerous even in the hands of skilled oncallers. Whatever means you choose—running drills, adding automated tests, writing little checklists new team members must complete to gain production credentials—make <em>certain</em> your team has touched your mitigations. After all: tape backups no one’s ever practiced restoring might as well be fancy paperweights, for all the help they’ll be the first time someone runs <code>rm -r /*</code> in prod.</p><figure
class="wp-block-image size-large"><img
loading=lazy decoding=async width=1024 height=1024 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-1024x1024.png alt="A pile of four tape backups labeled 'ancient backup #1' through 'backup 2020' sits on top of papers on a messy desk. A post-it note nearby reads 'restore your backups!'" class=wp-image-9941 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-1024x1024.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-300x300.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-150x150.png 150w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-768x768.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06-1536x1536.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/06.png 2000w" sizes="auto, (min-width: 1024px) 800px, 100vw"></figure><p
class=wp-block-paragraph>There’s a secondary benefit, too: by exercising your mitigations regularly, you validate their behaviors. Our systems are complex enough that you cannot know the knock-on effects of actually using your generic mitigation until you’ve used it for real.<br></p><p
class=wp-block-paragraph>The goal is to create easy, safe, frictionless panic buttons for your service that any oncall feels comfortable using at the slightest suspicion they might help. That’s not easy to build. But it is far, far cheaper to build them in advance than it is to endure the lengthy, unmitigatable outages you’ll see without.</p><h2 class="wp-block-heading"><strong>Alright, boil it down for me</strong></h2><p
class=wp-block-paragraph>In brief: <em>The most expensive stretch of an outage is the time when users can see it.</em> A quick path to &#8220;mostly working&#8221; is far better for the user than waiting for &#8220;perfectly fixed.&#8221; If you’re driving a majestic old Toyota Corolla, sometimes the best tactic is making sure there’s duct tape in the glove box so you can make it to the mechanic when the wing mirror falls off.</p><p
class=wp-block-paragraph><em>Know what your duct tape is.</em> You’re gonna need it.</p><figure
class="wp-block-image size-large"><img
loading=lazy decoding=async width=1024 height=512 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-1024x512.png alt="A happy oncall Macey waves out the window of an extremely battered red sedan as she drives away. The car is held together with duct tape, and has a custom number plate which reads 'MTIG8'." class=wp-image-9943 srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-1024x512.png 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-300x150.png 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-768x384.png 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-1536x768.png 1536w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/12/07-2048x1024.png 2048w" sizes="auto, (min-width: 1024px) 800px, 100vw"></figure><hr
class=wp-block-separator><p
class=wp-block-paragraph><em>This post is a collaboration between O’Reilly and Google.&nbsp;<a
rel="noreferrer noopener" target=_blank href=http://www.oreilly.com/about/editorial_independence.html>See our statement of editorial independence</a>.</em></p><p
class=wp-block-paragraph>All images by <a
href=https://www.daybrighten.com/ >Emily Griffin</a>.<br></p></div><div
class=postContent-end><div
class=radar-post-page-meta >
Post topics: <a
href=https://www.oreilly.com/content/topics/operations/ title=Operations>Operations</a>&bull;<a
href=https://www.oreilly.com/content/topics/performance/ title=Performance>Performance</a></div></div><div
id=postContent-related class=postContent-related></div></section></div></div> <script async src=https://cdn.jsdelivr.net/npm/@miso.ai/client-sdk@1.12.5/dist/umd/miso.min.js></script> <script>function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
return null;
}
function connectToMiso() {
if (typeof MisoClient !== "undefined") {
const token = getCookie('orm-jwt');
const client = new MisoClient('La8iqtxogTm6Zq3rHtGB7PGqcrNsopypjyPIVPGE');
// Decode JWT token and set user_id in context
try {
if (token) {
const decoded = jwt_decode(token).sub;
if (decoded) {
client.context.user_hash = decoded;
}
}
} catch (error) {
console.error('JWT Decode Error:', error);
}
//Send page view data to Miso
client.api.interactions.upload({
type: 'product_detail_page_view',
product_ids: ['radar_9922'],
});
//Get recommended post data from Miso
client.api.recommendation.productToProducts({
engine_id: 'rec',
product_id: 'radar_9922',
rows: 2,
fl: ["*"],
})
.then(response => {
// Check if products exist and render recommendations
if (response.products && response.products.length >= 2) {
renderMisoRecommendations(response.products);
} else {
console.log('No recommendations found or fewer than 2 products returned.');
}
})
.catch(error => {
console.error('Miso Recommendation Error:', error);
});
} else {
// Retry after a short delay if MisoClient is not yet loaded
setTimeout(connectToMiso, 100);
}
}
function renderMisoRecommendations(products) {
const relatedDiv = document.getElementById('postContent-related');
const fetchedData = []; // Temporary storage for fetched data
let fetchCount = 0; // Counter to track completed fetches
if (products && products.length > 0 && relatedDiv) {
// Fetch author and date for each post
products.forEach(product => {
fetchAuthorAndDate(product.product_id)
.then(data => {
if (data) {
// Add the fetched data to the product object
fetchedData.push({
...product,
author: data.author,
date: data.date,
});
} else {
console.error('Failed to fetch author and date:', data.message);
}
})
.catch(error => {
console.error('Error fetching author and date:', error);
})
.finally(() => {
fetchCount++;
// Render the posts only after all fetches are complete
if (fetchCount === products.length) {
renderPosts(fetchedData, relatedDiv);
}
});
});
}
}
function renderPosts(products, relatedDiv) {
if (products.length > 0) {
let html = '<div class=recommendedPosts><h3>Explore related articles</h3><div class=posts>';
products.forEach(product => {
if (product.type === 'post') {
product.type = 'article';
}
html += `
<a class=item href=${product.url} data-id=${product.product_id}>
<figure class=${product.type}><img src=${product.cover_image} alt></figure>
<div class=inner>
<div class=item-text>
<p class="post-type ${product.type}">
<span>${product.type}</span>
<span>${product.categories[0][0]}</span>
</p>
<h2>${product.title}</h2>
<div class=metaWrap>
<p class=meta>By ${product.author} | </p>
<p class=meta>${product.date}</p>
</div>
</div>
</div>
</a>
`;
});
html += '</div></div>';
// Insert the generated HTML into the #postContent-related div
relatedDiv.innerHTML = html;
} else {
console.warn('No recommendations to display.');
}
}
function fetchAuthorAndDate(postId) {
//Clean string
postId = postId.replace(/^radar_/, '');
return fetch(feed_ajax.ajaxurl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
action: 'get_post_author_and_date',
post_id: postId,
}),
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
if (!data || typeof data !== 'object' || !data.success) {
throw new Error('Invalid or unsuccessful JSON response');
}
return data.data; // Return the nested data object
})
.catch(error => {
console.error('Error fetching author and date:', error);
return { success: false }; // Return a failure response
});
}
// Initialize the Miso connection
connectToMiso();</script> <div
id=bottomModules class=bottomModules></div></main><footer
id=site-footer><div
id=site-footer-container class=content><section
class=site-footer__section id=site-footer-social><p>Follow us</p><ul
id=site-footer-social-list>
<li><a
class=site-footer-social-list__link href=https://www.linkedin.com/company/oreilly-media target=_blank title="O&#039;Reilly on LinkedIn"><svg
xmlns=http://www.w3.org/2000/svg width=20 height=20 viewBox="0 0 24 24" fill=#444444><path
d="M20.447 20.452H16.893V14.883C16.893 13.555 16.866 11.846 15.041 11.846C13.188 11.846 12.905 13.291 12.905 14.785V20.452H9.351V9H12.765V10.561H12.811C13.288 9.661 14.448 8.711 16.181 8.711C19.782 8.711 20.448 11.081 20.448 14.166L20.447 20.452ZM5.337 7.433C4.193 7.433 3.274 6.507 3.274 5.368C3.274 4.23 4.194 3.305 5.337 3.305C6.477 3.305 7.401 4.23 7.401 5.368C7.401 6.507 6.476 7.433 5.337 7.433ZM7.119 20.452H3.555V9H7.119V20.452ZM22.225 0H1.771C0.792 0 0 0.774 0 1.729V22.271C0 23.227 0.792 24 1.771 24H22.222C23.2 24 24 23.227 24 22.271V1.729C24 0.774 23.2 0 22.222 0H22.225Z"></path></svg></a></li><li><a
class=site-footer-social-list__link href=https://www.youtube.com/user/OreillyMedia target=_blank title="O&#039;Reilly on YouTube"><svg
xmlns=http://www.w3.org/2000/svg width=20 height=20 viewBox="0 0 24 24" fill=none><path
d="M23.495 6.20498C23.356 5.70674 23.0907 5.2528 22.725 4.88703C22.3592 4.52126 21.9052 4.25603 21.407 4.11698C19.537 3.61598 12.011 3.61598 12.011 3.61598C12.011 3.61598 4.50401 3.60598 2.61501 4.11698C2.11677 4.25603 1.66283 4.52126 1.29706 4.88703C0.931287 5.2528 0.666058 5.70674 0.527007 6.20498C0.172528 8.11949 -0.0022322 10.0629 0.00500725 12.01C-0.000863617 13.9497 0.173891 15.8857 0.527007 17.793C0.666058 18.2912 0.931287 18.7452 1.29706 19.1109C1.66283 19.4767 2.11677 19.7419 2.61501 19.881C4.48301 20.383 12.011 20.383 12.011 20.383C12.011 20.383 19.517 20.383 21.407 19.881C21.9052 19.7419 22.3592 19.4767 22.725 19.1109C23.0907 18.7452 23.356 18.2912 23.495 17.793C23.8407 15.885 24.0081 13.949 23.995 12.01C24.0095 10.0636 23.8421 8.12018 23.495 6.20498ZM9.60901 15.601V8.40798L15.873 12.01L9.60901 15.601Z" fill=#444444></path></svg></a></li></ul></section><section
class=site-footer__section id=site-footer-company-info aria-label="company info"><div
class=site-footer-company-info__column id=site-footer-company-info-column-left><div
class=site-footer__list id=site-footer-approach><h2 class="site-footer__heading"><a
href=/about/ >About O&#039;Reilly</a></h2><ul
class=site-footer-list__ul><li><a
href=/work-with-us.html>Teach/Write/Train</a></li><li><a
href=/careers/ >Careers</a></li><li><a
href=/press/ >O&#039;Reilly News</a></li><li><a
href=/press/media-coverage.html>Media Coverage</a></li><li><a
href=/partner/signup.csp>Community Partners</a></li><li><a
href=/affiliates/ >Affiliate Program</a></li><li><a
href=/diversity/ >Diversity</a></li><li><a
href=/content-marketing-solutions.html>Content Sponsorship</a></li></ul></div><div
class=site-footer__list id=site-footer-contact><h2 class="site-footer__heading"><a
href=/online-learning/support/ >Support</a></h2><ul
class=site-footer-list__ul><li><a
href=/about/contact.html>Contact Us</a></li><li><a
href=/emails/newsletters/ >Newsletters</a></li><li><a
href=/privacy.html>Privacy Policy</a></li><li><a
href=/about/oreilly-approach-to-generative-ai.html>AI Policy</a></li></ul></div><div
class=site-footer__list id=site-footer-international><h2 class="site-footer__heading">International</h2><ul
class=site-footer-list__ul><li><a
href=/online-learning/anz.html>Australia &amp; New Zealand</a></li><li><a
href=https://www.oreilly.co.jp/index.shtml>Japan</a></li></ul></div></div><div
class=site-footer-company-info__column id=site-footer-company-info-column-right><div
class="site-footer__list site-footer-company-info-right-column__item" id=site-footer-mobile-download><h2 class="site-footer__heading">Download the O'Reilly App</h2><p>Take O'Reilly with you and learn anywhere, anytime on your phone and tablet.</p><ul
class="site-footer-list__ul site-footer-list__ul--horizontal"> <li><a
href=https://itunes.apple.com/us/app/safari-to-go/id881697395 title="Download in the Apple App Store" data-testid=app-store-link><img
class=site-footer__image alt="Apple app store" src=https://cdn.oreillystatic.com/oreilly/images/app-store-logo.png></a></li> <li><a
href="https://play.google.com/store/apps/details?id=com.safariflow.queue"><img
class=site-footer__image alt="Google play store" src=https://cdn.oreillystatic.com/oreilly/images/google-play-logo.png></a></li></ul></div></div></section><section
class=site-footer__section id=site-footer-subfooter>
<a
class=footer-subfooterLogo href=https://www.oreilly.com title="home page" aria-current=page>
<img
id=site-footer-subfooter-logo alt="O'Reilly home"
srcset="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png 2x"
src=https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg>
</a><div
id=site-footer-subfooter-donotsell><p>
<a
href="https://www.oreilly.com/privacy.html?donotsell=show" id=site-footer-subfooter-donotsell-link>
Do not sell or share my personal information
</a>.</p></div><div
id=site-footer-subfooter-copyright><p>
&copy; 2026, O'Reilly Media, Inc. All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.</p><ul
class="site-footer-list__ul--horizontal site-footer-list__ul--wrap" id=site-footer-subfooter-copyright-links>
<li><a
href=https://www.oreilly.com/terms/ >Terms of Service</a></li><li><a
href=/privacy>Privacy Policy</a></li><li><a
href=/about/editorial_independence.html>Editorial Independence</a></li><li><a
href=https://www.oreilly.com/modern-slavery-act-transparency-statement.html>Modern Slavery Act Statement</a></li></ul></div></section></div></footer> <script type=speculationrules>{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/content/*"},{"not":{"href_matches":["/content/wp-*.php","/content/wp-admin/*","/content/wp-content/uploads/sites/2/*","/content/wp-content/*","/content/wp-content/plugins/*","/content/wp-content/themes/signal/*","/content/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <script id=feed-loader-js-extra>var feed_ajax = {"ajaxurl":"https://www.oreilly.com/content/wp-admin/admin-ajax.php","siteName":"signal"};
//# sourceURL=feed-loader-js-extra</script> <script src=https://www.oreilly.com/content/wp-content/cache/minify/2/afccc.js></script> <script id=wp-emoji-settings type=application/json>
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.oreilly.com/content/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}}
</script> <script type=module>/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://www.oreilly.com/content/wp-includes/js/wp-emoji-loader.min.js</script> <script>// Handle the reading mode toggle
const siteId = 2;
let siteName = "";
if (siteId === 3) {
siteName = "radar";
} else if (siteId === 5) {
siteName = "resources";
}
const themeToggleBtn = document.getElementById('themeToggle');
let savedTheme = localStorage.getItem('theme');
const prefersDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
const prefersLightTheme = window.matchMedia('(prefers-color-scheme: light)').matches;
const theme = savedTheme || (prefersDarkTheme ? 'dark' : (prefersLightTheme ? 'light' : 'dark'));
document.documentElement.setAttribute('data-theme', theme);
themeToggleBtn.setAttribute('aria-pressed', theme === 'light');
document.addEventListener("DOMContentLoaded", () => {
themeToggleBtn.addEventListener('click', () => {
const isDark = document.documentElement.getAttribute('data-theme') === 'dark';
const newTheme = isDark ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
themeToggleBtn.setAttribute('aria-pressed', newTheme === 'light');
if (typeof dataLayer !== "undefined" && Array.isArray(dataLayer)) {
dataLayer.push({
'event': "eventTracker",
'eventCat': siteName,
'eventAct': "reading mode",
'eventLbl': newTheme,
'eventVal': 0,
'nonInteraction': 0
});
} else {
console.warn("dataLayer is not defined. Reading mode event not tracked.");
}
});
// Enable transitions only after initial setup
requestAnimationFrame(() => {
document.documentElement.classList.add('enableTransitions');
});
});
window.addEventListener("scroll", function () {
document.body.classList.toggle("scrolling", window.scrollY > 50);
});
(() => {
/* Navigation UI and tracking script */
// EVENTS
const EVENT_CLOSE_MENUS = 'closemenus';
function dispatchCloseAllMenus() {
const customEvent = new CustomEvent(EVENT_CLOSE_MENUS);
document.dispatchEvent(customEvent);
}
// OBSERVE MOBILE MENU
function observeMobileMenu() {
const toggles = Array.from(document.querySelectorAll('[data-mobile-toggle]'));
if (!toggles.length) return;
const mobileQuery = window.matchMedia('(width < 1370px)');
toggles.forEach(observeToggle);
mobileQuery.addEventListener('change', onMediaQueryChange);
function observeToggle(toggle) {
toggle.addEventListener('click', onToggle);
}
return function cleanup() {
toggles.forEach((toggle) => toggle.removeEventListener('click', onToggle));
mobileQuery.removeEventListener('change', onMediaQueryChange);
};
function onToggle(event) {
const toggle = event.currentTarget;
if (isOpen(toggle)) {
closeMenu(toggle);
dispatchCloseAllMenus();
} else {
closeAllMenus();
openMenu(toggle);
}
}
function onMediaQueryChange() {
closeAllMenus();
dispatchCloseAllMenus();
}
function closeAllMenus() {
toggles.forEach(closeMenu);
}
function closeMenu(toggle) {
const menu = selectMenu(toggle);
document.documentElement.classList.remove('menu-open');
toggle.setAttribute('aria-expanded', 'false');
menu.setAttribute('hidden', '');
menu.setAttribute('aria-hidden', 'true');
menu.setAttribute('inert', '');
}
function openMenu(toggle) {
const menu = selectMenu(toggle);
document.documentElement.classList.add('menu-open');
toggle.setAttribute('aria-expanded', 'true');
menu.removeAttribute('hidden');
menu.setAttribute('aria-hidden', 'false');
menu.removeAttribute('inert');
}
function isOpen(toggle) {
return toggle.getAttribute('aria-expanded') === 'true';
}
function selectMenu(toggle) {
return document.getElementById(toggle.getAttribute('aria-controls'));
}
}
// OBSERVE MOBILE POPOVERS
function observeMobilePopovers() {
const mobileNav = document.getElementById(
'orm-global-mobile-pane--navigation',
);
const toggles = mobileNav.querySelectorAll('[aria-haspopup="true"]');
if (!toggles.length) return;
document.addEventListener(EVENT_CLOSE_MENUS, closeDrawers);
toggles.forEach(observeToggle);
function observeToggle(toggle) {
toggle.addEventListener('click', onToggle);
}
return function cleanup() {
document.removeEventListener(EVENT_CLOSE_MENUS, closeDrawers);
toggles.forEach((toggle) => toggle.removeEventListener('click', onToggle));
};
function onToggle(event) {
const toggle = event.currentTarget;
const drawerId = toggle.getAttribute('aria-controls');
const drawer = document.getElementById(drawerId);
const back = document.querySelector(
`[data-back-button-for="${drawer.id}"]`,
);
if (isDrawerOpen(drawer)) {
closeDrawer(drawer, toggle);
} else {
openDrawer(drawer, toggle);
back.addEventListener('click', closeDrawer.bind(null, drawer, toggle), {
once: true,
});
}
}
function closeDrawer(drawer, toggle) {
drawer.setAttribute('hidden', '');
drawer.setAttribute('inert', '');
toggle.setAttribute('aria-expanded', false);
}
function closeDrawers() {
toggles.forEach((toggle) => {
const drawerId = toggle.getAttribute('aria-controls');
const drawer = document.getElementById(drawerId);
closeDrawer(drawer, toggle);
});
}
function isDrawerOpen(drawer) {
return !drawer.hasAttribute('hidden');
}
function openDrawer(drawer, toggle) {
drawer.removeAttribute('hidden');
drawer.removeAttribute('inert');
toggle.setAttribute('aria-expanded', true);
}
}
// OBSERVE POPOVERS
function observePopovers() {
const header = document.getElementById('orm-global-site-banner');
const navigationList = document.getElementById(
'orm-global-site-navigation-list',
);
const dialogs = header.querySelectorAll('dialog');
const toggles = header.querySelectorAll('[aria-haspopup="true"]');
const module = { header, navigationList };
const boundObservePopoverToggle = observePopoverToggle.bind(this, module);
const boundObserveDialog = observeDialog.bind(this, module);
toggles.forEach(boundObservePopoverToggle);
dialogs.forEach(boundObserveDialog);
}
function observePopoverToggle(module, toggle) {
const popoverId = toggle.getAttribute('aria-controls');
const popover = document.getElementById(popoverId);
toggle.addEventListener('click', togglePopover);
function togglePopover() {
const isOpen = popover.hasAttribute('open');
if (isOpen) {
closePopover(toggle, popover, module.navigationList, module.header);
} else {
openPopover(
toggle,
popover,
module.navigationList,
module.header,
Number(toggle.dataset.level),
);
}
}
}
function observeDialog(module, dialog) {
const observer = new MutationObserver(onMutation);
observer.observe(dialog, { attributes: true, attributeFilter: ['open'] });
return function cleanup() {
observer.disconnect();
};
function onMutation(list) {
const dialog = list?.[0]?.target;
const toggle = document.querySelector(`[aria-controls="${dialog.id}"]`);
const isOpen = dialog.hasAttribute('open');
if (isOpen) {
document.addEventListener('click', closeOnClickOutside);
document.addEventListener('keydown', closeOnEscape);
} else {
document.removeEventListener('click', closeOnClickOutside);
document.removeEventListener('keydown', closeOnEscape);
}
function closeOnClickOutside(event) {
if (module.header.contains(event.target)) return;
closePopover(toggle, dialog, module.navigationList, module.header);
}
function closeOnEscape(event) {
if (event.key !== 'Escape') return;
closePopover(toggle, dialog, module.navigationList, module.header);
}
}
}
function closePopover(toggle, popover, list, header) {
toggle.setAttribute('aria-expanded', 'false');
popover.removeAttribute('open');
const openDialogs = Array.from(header.querySelectorAll('dialog[open]'));
if (!openDialogs.length) {
list.classList.remove('orm-global-site-banner-list--open');
}
}
function openPopover(toggle, popover, list, header, level) {
console.log('openPopover');
header
.querySelectorAll(`dialog[data-level="${level + 1}"][open]`)
.forEach((dialog) => {
dialog.removeAttribute('open');
dialog?.parentElement
?.querySelector('button')
?.setAttribute('aria-expanded', 'false');
});
toggle.setAttribute('aria-expanded', 'true');
popover.setAttribute('open', '');
if (level >= 1) {
list.classList.add('orm-global-site-banner-list--open');
} else {
list.classList.remove('orm-global-site-banner-list--open');
}
}
// TRACK FUNCTION
function track(properties) {
const GTM_DEFAULTS = {
event: 'eventTracker',
eventVal: 0,
nonInteraction: 0,
};
try {
// eslint-disable-next-line no-undef
dataLayer.push({ ...GTM_DEFAULTS, ...properties });
} catch (error) {
console.error('Error tracking event:', error);
}
}
// OBSERVE GTM FUNCTION
function observeGTM() {
const elements = document.querySelectorAll('[data-gtm]');
if (!elements.length) return;
elements.forEach(observeElement);
return () => {
elements.forEach(unObserveElement);
};
function observeElement(element) {
element.addEventListener(element.dataset.gtmEvent, trackGTMEvent);
}
function unObserveElement(element) {
element.removeEventListener(element.dataset.gtmEvent, trackGTMEvent);
}
function trackGTMEvent() {
const properties = JSON.parse(this.dataset.gtm);
track(properties);
}
}
// Initialize the observers
observeMobileMenu();
observeMobilePopovers();
observePopovers();
observeGTM();
})();</script> <script id=MathJax-script>var math = document.getElementsByClassName('math-tex');
if (math.length > 0) includeMathJax();
function includeMathJax() {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js";
script.type = 'text/javascript';
script.async = 'async';
head.appendChild(script)
}</script> <script type="text/javascript" nonce="4f4b5d5e40e157a3322675b7959972dd" src="/dQzjK_/d1P/KhO/N2FDVpXC/Ju3VV8wcfrmhrX/Ji1MAQ/IxMQWTo/zew4B"></script><link rel="stylesheet" type="text/css" nonce="4f4b5d5e40e157a3322675b7959972dd" href="/dQzjK_/d1P/KhO/N2FDVpXC/m4/TnYyAQ/GS8KHik/EWi1Z"><script nonce="4f4b5d5e40e157a3322675b7959972dd" src="/dQzjK_/d1P/KhO/N2FDVpXC/m4/TnYyAQ/DCY4FiA/tN1op" async defer></script><div id="sec-overlay" style="display:none;"><div id="sec-container"></div></div><script type="text/javascript" nonce="4f4b5d5e40e157a3322675b7959972dd" src="/dQzjK_/d1P/KhO/N2FDVpXC/m43VV8a7/Z2ZTAQ/CmhlXDZ/fTgQc?v=cde15f7a-f155-04e7-b75a-aa05696b17d2" defer></script></body></html>