Files
nexus/sreweekly/articles/168/03-ghosts-in-the-machines.html
2026-09-12 17:23:01 +08:00

1915 lines
251 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>
Ghosts in the machines – 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=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/ghosts-in-the-machines/ ><link
rel=shortlink href='https://www.oreilly.com/content/?p=5097'><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="Ghosts in the machines"><meta
property="twitter:description" content="The secret to successful infrastructure automation is people."><meta
property="twitter:url" content="https://www.oreilly.com/content/ghosts-in-the-machines"><meta
property="twitter:image" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.jpg"><meta
property="og:type" content="article"><meta
property="og:site_name" content="O’Reilly Media"><meta
property="og:title" content="Ghosts in the machines"><meta
property="og:description" content="The secret to successful infrastructure automation is people."><meta
property="og:url" content="https://www.oreilly.com/content/ghosts-in-the-machines/"><meta
property="og:image" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.jpg"><meta
name="description" content="The secret to successful infrastructure automation is people."><meta
name="author" content="Courtney Nash"><meta
name="description:site" content="The secret to successful infrastructure automation is people."><meta
property="article:published_time" content="2015-05-12T20:00:00-04:00"><meta
name="article:author" content="Courtney Nash"><meta
name="date" content="2015-05-12"><meta
name="thumbnail" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.jpg"><meta
name="graphic_medium" content="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.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":"Courtney Nash","content.formatType":"article","content.free":"yes","content.identifier":"none","content.parentTopic":"none","content.publisher":"O'Reilly Media Inc.","content.releaseDate":"2015-05-12","content.subTopic":"none","content.subdirectory":"content","content.title":"Ghosts in the machines","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": "Ghosts in the machines",
"item": "https://www.oreilly.com/content/ghosts-in-the-machines/"
}
]
}</script> </head><body
class="wp-singular post-template-default single single-post postid-5097 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%2Fghosts-in-the-machines%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%2Fghosts-in-the-machines%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/ghosts-in-the-machines/#BlogPosting",
"mainEntityOfPage": "https://www.oreilly.com/content/ghosts-in-the-machines/",
"headline": "Ghosts in the machines",
"description": "“The trouble with automation is that it often gives us what we don’t need at the cost of what we do.” —Nicholas Carr, The Glass Cage: Automation and Us Virtualization and cloud hosting platforms have pervasively decoupled infrastructure from its underlying hardware over the past decade. This has led to a massive shift towards what …",
"image": {
"@type": "ImageObject",
"url": "https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.jpg"
},
"author": [
{"@type": "Person", "name": "Courtney Nash", "url": "https://www.oreilly.com/people/courtneyw-nash/"} ],
"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": "2015-05-12",
"dateModified": "2015-05-12",
"wordCount": "1943",
"timeRequired": "PT10M",
"keywords": [],
"genre": ["Operations"],
"isPartOf": {
"@type": "Blog",
"name": "O'Reilly Radar",
"url": "https://www.oreilly.com/radar/"
},
"potentialAction": {
"@type": "ViewAction",
"target": "https://www.oreilly.com/content/ghosts-in-the-machines/",
"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></p><div
class=pageHeaderContent><div
class=title><h1>Ghosts in the machines</h1><div
class=description><p>The secret to successful infrastructure automation is people.</p></div></div><div
class=radar-post-page-meta><figure
class=authorPhotos>
<img
class=people-author-image src=https://www.oreilly.com/content/wp-content/uploads/sites/4/2020/01/courtney-nash-crop-a9cb0b44a4262f20524d171195d6d485-150x150.jpg alt="Courtney Nash"></figure><p
class=text>
<span
class=radar-post-page-author>
By <a
href=https://www.oreilly.com/people/courtneyw-nash/ >Courtney Nash</a> </span><span
class=radar-post-page-date>May 12, 2015 &bull; 10 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-%20Ghosts%20in%20the%20machines%20with%20Courtney%20Nash%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fghosts-in-the-machines%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-%20Ghosts%20in%20the%20machines%20with%20Courtney%20Nash%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fghosts-in-the-machines%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-%20Ghosts%20in%20the%20machines%20with%20Courtney%20Nash%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fghosts-in-the-machines%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-%20Ghosts%20in%20the%20machines%20with%20Courtney%20Nash%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fghosts-in-the-machines%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-%20Ghosts%20in%20the%20machines%20with%20Courtney%20Nash%20-%20https%3A%2F%2Fwww.oreilly.com%2Fcontent%2Fghosts-in-the-machines%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%2Fghosts-in-the-machines%2F&title=O%27Reilly%20Radar%20-%20Ghosts%20in%20the%20machines" 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 "><div
id=post-featured-image class=featuredImage>
<img
width=1950 height=1412 src=https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6.jpg class="attachment- size- wp-post-image" alt="Favorittbilde #15. Ukas bilde" large decoding=async fetchpriority=high srcset="https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6.jpg 1950w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-300x217.jpg 300w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1024x741.jpg 1024w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-768x556.jpg 768w, https://www.oreilly.com/content/wp-content/uploads/sites/2/2020/01/6432099557_bcb0630c3c_o-d762a9dae2918ed0c2a0462c788db0f6-1536x1112.jpg 1536w" sizes="(min-width: 1024px) 800px, 100vw">
<span
class=caption>
Favorittbilde #15. Ukas bilde <span
class=source-name>(source: <a
class=secondary target=_blank href=https://www.flickr.com/photos/national_archives_of_norway/6432099557/ rel="noopener noreferrer">National Archives of Norway</a>)</span> </span></div><div
class=postContent-content id=postContent-content><p><em>“The trouble with automation is that it often gives us what we don’t need at the cost of what we do.” —Nicholas Carr, The Glass Cage: Automation and Us</em></p><p>Virtualization and cloud hosting platforms have pervasively decoupled infrastructure from its underlying hardware over the past decade. This has led to a massive shift towards what many are calling <em>dynamic infrastructure</em>, wherein infrastructure and the tools and services used to manage it are treated as code, allowing operations teams to adopt software approaches that have dramatically changed how they operate. But with automation comes a great deal of fear, uncertainty and doubt.</p><p>Common (mis)perceptions of automation tend to pop up at the extreme ends: It will either liberate your people to never have to worry about mundane tasks and details, running intelligently in the background, or it will make SysAdmins irrelevant and eventually replace all IT jobs (and beyond). Of course, the truth is very much somewhere in between, and relies on a fundamental rethinking of the relationship between humans and automation.</p><p>Dynamic infrastructure offers a host of benefits to infrastructure teams and the other groups in an organization that they support. Bottom line, it moves them from the “Department of No” — the team that constantly denied requests for changes due to concerns over stability — to the “Department of Yes, And…” Using this approach, IT infrastructure teams can quickly respond to changes demanded by either customers or their own organization — on the flip side, they can recover from failure more quickly, too. Automation provides increased reproducibility, efficiency, and reliability to certain tasks and processes.</p><p>Automation also purportedly brings with it the promise of freeing up time for those who’ve implemented the automation to focus on other, possibly higher-level activities. The operative word here is <em>purportedly</em>: the prospect of more free time is often cited as a key benefit of automation, and yet it is often far from the truth. In fact, this misperception has its own name: the Substitution Myth.</p><h2>The Substitution Myth</h2><p>The Substitution Myth is the belief that machines can take on tasks previously done by humans — that automation can be substituted for human action without any larger impact on the system in which that action or task occurs, except to increase output. In particular, it assumes that automation needs no human oversight once implemented. This myth tends to surface in two distinct forms: leftovers or compensation.</p><h3>Managing your leftovers</h3><p>One approach to automation is to have machines do all the things that could possibly be automated, and have humans deal with whatever is “left over.” This implies, however, that whoever designs the automated tasks in the first place can fully and completely specify what they should be up front, so that they run along without ever requiring intervention. Anyone who has ever been involved in developing a product must know how unrealistic this is. The result is that whomever was supposed to be dealing with the leftovers is now also dealing with all the unanticipated things the automation doesn’t do, forcing them to handle all those unintended leftovers before <a
href="https://www.youtube.com/watch?v=HnbNcQlzV-4">getting to their own intended leftovers</a>.</p><h3>Divide and compensate</h3><p>The other philosophy is to say that computers are very good at some things, and humans are good at others. Give the machines the former, the humans the latter, and on your way you go. This approach to <em>functional allocation</em> is heavily influenced by the Fitts list or the <a
href=http://www.humanfactors.lth.se/fileadmin/lusa/Sidney_Dekker/articles/2003_and_before/MABA_MABA.pdf>MABA-MABA</a> (Men Are Better At, Machines Are Better At) theory of human-computer interaction that arose out of theories about allocation of tasks in automated flight systems in the late 70s and early 80s. It feels intuitively right: computers are better at plugging through repetitive information very quickly, humans are better at context-specific, qualitative judgments about that information. But the problem with this approach is that day-to-day tasks in the world we all operate are not so neatly composable in this way — we are constantly moving between a variety of tasks that could be more easily done by either machines or humans.</p><h2>From substitution to cooperation</h2><p>In either case — giving humans the leftovers or having machines compensate for the humans — both humans and computers are consistently treated as separable. Hence the idea that one could potentially substitute for the other, notably machines for humans. But try the mental exercise of imagining all the systems you interact with daily as actual co-workers — it gets somewhat terrifying when you consider the role the cloud has played in expanding any organization’s infrastructure, but it’s not <em>that</em> far from reality. Adding people to your team can increase output, but it also comes with more communication and coordination requirements as well. Just as your co-workers impact how your work proceeds on a daily basis, so too do the machines you work with. But we rarely regard them that way.</p><blockquote><p>“…adding or expanding the machine’s role changes the cooperative architecture, changing the human’s role often in profound ways. Creating partially autonomous machine agents is, in part, like adding a new team member.” —Nadine Sarter</p></blockquote><p>When it comes to how we regard computers, the compensation effect in particular has been most prevalent in airline automation, which remains heavily influenced by the Fitts list and other functional allocation principles. A rather extensive body of research has shown that automated flight management systems (FMS) demonstrate a variety of what Nadine Sarter termed “automation surprises,” or unexpected problems with human-automation interaction. Sarter contends that these surprises — many of which arise during safety-critical moments like takeoff and landing — are due in large part “from the introduction of automated systems that need to engage in, but were not designed for, cooperative activities with humans.”</p><p>Viewing computers as cooperating with humans, and vice versa, is a big shift, and not certainly one embraced by most human mental models of machines. People and computers must be team players, and design automation to best enable their work together.</p><h2>Joint Cognitive Systems</h2><blockquote><p>“Our image… is that of a machine alone rapt in thought and action. But the reality is that automated subtasks exist in a larger context of interconnected tasks and multiple actors. Introducing automated and intelligent agents into a larger system changes the composition of the distributed system… and shifts the human’s role within that cooperative ensemble.” -David Woods</p></blockquote><p>People are neither masters of machines, nor subservient to their machine-learning outcomes — we cannot, and should not, separate the two. We are actors, together, in a very complex system. David Woods calls this “joint cognitive systems,” (JCS) which provides a vastly different model for evaluating the role of automation in our daily work. In Woods’ words, a cognitive system “is goal directed; it uses knowledge about itself and its environment to monitor, plan, and modify its actions in the pursuit of goals.” These are the hallmarks of human cognition, and obviously modern advancements in computation have brought machines into this realm as well. What is most relevant is the emphasis on systems — a change in any part of the system impacts the system as a whole. That is, automation influences the system in which you co-exist with machines and the tasks you are <em>both</em> responsible for. Sidney Dekker takes this notion a bit further, suggesting that not only does automation not simply replace human work with machines, it “changes the task it was meant to support.”</p><p>From a systems-thinking perspective then, automation even changes <em>your own</em> cognitive models of the systems in which you operate, whether you are aware of it or not. And awareness is key. Machines are not aware of the systems or rules by which they operate, and by that token they cannot adapt or improvise — they follow a set of pre-scripted rules (albeit, possibly quite complex ones) and require intervention when required to operate outside those rules. But humans can improvise, and we do so regularly. Despite the bad rap that humans get when things go wrong (just read any article on a plane or train crash and hunt for “human error”), it is people’s fundamental ability to adapt, change, and flex that keep our systems running properly the vast majority of the time. This degree of <em>autonomy</em> — and its fundamental difference from scripted automation — is what differentiates brittle joint cognitive systems from the type that Woods et al aspire to.</p><h3>Automated vs. Autonomous: Kale at Etsy</h3><p>Differentiating between autonomy and automation is important. Automation entails a scripted execution of preconceived actions, whereas autonomous processes allow for, and plan on, some degree of human interaction and decision making. The two words are often used interchangeably but the human role in autonomy is a critical differentiator between systems that flex and those that break in much more unpleasant ways. Let’s look at an example of a joint cognitive system in modern web operations that embraces autonomy.</p><p>Like many modern web companies, Etsy generates an almost inconceivable amount of data just about its own systems. <a
href=https://codeascraft.com/2013/06/11/introducing-kale/ >Kale</a> is their approach to being able to detect events occurring amidst all those data that might point to actual problems with their systems. The first part is called Skyline, which is purely algorithmic anomaly detection — it is automated in the purest sense, running along in the background, flagging anomalous metrics. Skyline takes no actions, it just serves up the anomalies for humans to look at: “Hey, this is weird.”</p><p>However, when dealing with complex, distributed systems, anomalies often don’t come alone, hence the other half of Kale, called Oculus. The key to Oculus is that it is human-centered. It is essentially a search engine for graphs. But humans choose which graphs to give Oculus — either from Skyline or some other source entirely — and it in turn looks for others that are similar. This allows a human to then make decisions and take action — in this case, the human has autonomy, which is a very important distinction. The automation is <em>supporting</em> human decisions and actions, in Kale’s case, diagnosis-driven work. To steal a metaphor directly from <a
href=http://www.kitchensoap.com/2015/05/01/openlettertomonitoringproducts/ >John Allspaw</a>, while traditional views of automation have tended to reflect the relationship between Hal9000 and Dave, a more evolved (and historically successful) model of automation looks much more like Jarvis and Iron Man.</p><h3>Design for cooperation</h3><blockquote><p>“…for any non-trivial level of automation to be successful, the key requirement is to design for fluent, coordinated interaction between the human and machine elements of the system. In other words, automation and intelligent systems must be designed to participate in team play (Malin et al., 1991; Malin, 1999).” Christopherson and Woods, 2002.</p></blockquote><p>Let’s take that Iron Man metaphor and kick it around for one final point. Yes, it’s science fiction, but the real heroes behind Iron Man’s ability to solve problems on the fly and improvise are the interfaces he uses. When Tony Stark is trying to figure something out, he <a
href="https://www.youtube.com/watch?v=Wx7RCJvoCMc">asks Jarvis for various displays and data</a> — they aren’t being pushed on him, and he’s not screaming and pulling his hair out about Jarvis doing weird things he doesn’t understand. There’s a slick Hollywood <em>Minority Report</em> veneer on it all (if only our IT tools really looked like that…) but the intent is true to an autonomous decision making scenario pairing human and machine. And it is the intent and design of those interfaces that really matters. The bottom line: the user experience of automation-related tools (especially those intended to diagnose infrastructure problems) is as important, if not more so, than whatever advanced math and special secret engineering sauce underlie them. People and machines use tools — design those tools for both.</p><p><em>This post is part of our ongoing exploration into <a
href=http://radar.oreilly.com/tag/end-to-end-optimization>end-to-end optimization</a>.</em></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></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_5097'],
});
//Get recommended post data from Miso
client.api.recommendation.productToProducts({
engine_id: 'rec',
product_id: 'radar_5097',
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="99314e8e146de8cc44e573d19792e31e" src="/dQzjK_/d1P/KhO/N2FDVpXC/Ju3VV8wcfrmhrX/Ji1MAQ/IxMQWTo/zew4B"></script><link rel="stylesheet" type="text/css" nonce="99314e8e146de8cc44e573d19792e31e" href="/dQzjK_/d1P/KhO/N2FDVpXC/m4/TnYyAQ/GS8KHik/EWi1Z"><script nonce="99314e8e146de8cc44e573d19792e31e" 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="99314e8e146de8cc44e573d19792e31e" src="/dQzjK_/d1P/KhO/N2FDVpXC/m43VV8a7/Z2ZTAQ/C296AFp/0VQUc?v=c9139e23-03a1-b365-4045-a3aecfc717dc" defer></script></body></html>