1915 lines
251 KiB
HTML
1915 lines
251 KiB
HTML
<!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 & messaging" }' data-gtm-event=mousedown href=/search/skills/streaming-messaging/ >Streaming & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & video" }' data-gtm-event=mousedown href=/search/skills/film-video/ >Film & 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 & messaging" }' data-gtm-event=mousedown href=/search/skills/streaming-messaging/ >Streaming & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & video" }' data-gtm-event=mousedown href=/search/skills/film-video/ >Film & 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 & 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ô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ão Tomé and Prí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>
|
||
> <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 • 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"linkedin" }" 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"x" }" 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"facebook" }" 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"threads" }" 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"bluesky" }" 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="{ "eventCat":"marketing", "eventAct":"share", "eventLbl":"reddit" }" 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'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'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'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'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 & 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>
|
||
© 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> |