CINXE.COM

Mitch Ashley Articles and Insights

<!DOCTYPE html> <html lang="en-US"> <head > <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- Google Tag Manager for WordPress by gtm4wp.com --> <script data-cfasync="false" data-pagespeed-no-defer> var gtm4wp_datalayer_name = "dataLayer"; var dataLayer = dataLayer || []; </script> <!-- End Google Tag Manager for WordPress by gtm4wp.com --> <!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https://yoast.com/wordpress/plugins/seo/ --> <title>Mitch Ashley Articles and Insights</title> <meta name="description" content="Mitch Ashley lends us insights and views on DevOps in the following articles" /> <link rel="canonical" href="https://devops.com/author/mitchellashley/" /> <link rel="next" href="https://devops.com/author/mitchellashley/page/2/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="profile" /> <meta property="og:title" content="Mitch Ashley Articles and Insights" /> <meta property="og:description" content="Mitch Ashley lends us insights and views on DevOps in the following articles" /> <meta property="og:url" content="https://devops.com/author/mitchellashley/" /> <meta property="og:site_name" content="DevOps.com" /> <meta property="og:image" content="https://secure.gravatar.com/avatar/6b1d210c1118d60381f47f945e22703a?s=500&d=mm&r=g" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"ProfilePage","@id":"https://devops.com/author/mitchellashley/","url":"https://devops.com/author/mitchellashley/","name":"Mitch Ashley Articles and Insights","isPartOf":{"@id":"https://devops.com/#website"},"primaryImageOfPage":{"@id":"https://devops.com/author/mitchellashley/#primaryimage"},"image":{"@id":"https://devops.com/author/mitchellashley/#primaryimage"},"thumbnailUrl":"https://devops.com/wp-content/uploads/2024/10/typing.jpg","description":"Mitch Ashley lends us insights and views on DevOps in the following articles","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://devops.com/author/mitchellashley/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/author/mitchellashley/#primaryimage","url":"https://devops.com/wp-content/uploads/2024/10/typing.jpg","contentUrl":"https://devops.com/wp-content/uploads/2024/10/typing.jpg","width":770,"height":332,"caption":"typing"},{"@type":"WebSite","@id":"https://devops.com/#website","url":"https://devops.com/","name":"DevOps.com","description":"Where the world meets DevOps","publisher":{"@id":"https://devops.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://devops.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://devops.com/#organization","name":"DevOps.com","url":"https://devops.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/#/schema/logo/image/","url":"https://devops.com/wp-content/uploads/2019/05/DO-symbol-Transparent.png","contentUrl":"https://devops.com/wp-content/uploads/2019/05/DO-symbol-Transparent.png","width":250,"height":250,"caption":"DevOps.com"},"image":{"@id":"https://devops.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/devopscom","https://x.com/devopsdotcom","https://www.linkedin.com/company/4826138?trk=tyah&amp;amp;amp;trkInfo=clickedVertical:company,idx:1-1-1,tarId:1433442870536,tas:DevOps.com","https://www.youtube.com/c/Devopsdotcom"]},{"@type":"Person","@id":"https://devops.com/#/schema/person/af4d59899f0b36e69724425a2a5b47d0","name":"Mitch Ashley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/#/schema/person/image/c0b308e55aeaa340f3cee3ea6028d4e2","url":"https://secure.gravatar.com/avatar/6b1d210c1118d60381f47f945e22703a?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/6b1d210c1118d60381f47f945e22703a?s=96&d=mm&r=g","caption":"Mitch Ashley"},"mainEntityOfPage":{"@id":"https://devops.com/author/mitchellashley/"}}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel='dns-prefetch' href='//www.googletagmanager.com' /> <link rel='dns-prefetch' href='//pagead2.googlesyndication.com' /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Feed" href="https://devops.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Comments Feed" href="https://devops.com/comments/feed/" /> <link rel="alternate" type="text/calendar" title="DevOps.com &raquo; iCal Feed" href="https://devops.com/webinars/?ical=1" /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Posts by Mitch Ashley Feed" href="https://devops.com/author/mitchellashley/feed/" /> <!-- This site uses the Google Analytics by MonsterInsights plugin v9.3.0 - Using Analytics tracking - https://www.monsterinsights.com/ --> <script src="//www.googletagmanager.com/gtag/js?id=G-T8FTPKY5SV" data-cfasync="false" data-wpfc-render="false" type="text/javascript" async></script> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript"> var mi_version = '9.3.0'; var mi_track_user = true; var mi_no_track_reason = ''; var MonsterInsightsDefaultLocations = {"page_location":"https:\/\/devops.com\/author\/mitchellashley\/"}; if ( typeof MonsterInsightsPrivacyGuardFilter === 'function' ) { var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsPrivacyGuardFilter( MonsterInsightsExcludeQuery ) : MonsterInsightsPrivacyGuardFilter( MonsterInsightsDefaultLocations ); } else { var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsExcludeQuery : MonsterInsightsDefaultLocations; } var disableStrs = [ 'ga-disable-G-T8FTPKY5SV', ]; /* Function to detect opted out users */ function __gtagTrackerIsOptedOut() { for (var index = 0; index < disableStrs.length; index++) { if (document.cookie.indexOf(disableStrs[index] + '=true') > -1) { return true; } } return false; } /* Disable tracking if the opt-out cookie exists. */ if (__gtagTrackerIsOptedOut()) { for (var index = 0; index < disableStrs.length; index++) { window[disableStrs[index]] = true; } } /* Opt-out function */ function __gtagTrackerOptout() { for (var index = 0; index < disableStrs.length; index++) { document.cookie = disableStrs[index] + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStrs[index]] = true; } } if ('undefined' === typeof gaOptout) { function gaOptout() { __gtagTrackerOptout(); } } window.dataLayer = window.dataLayer || []; window.MonsterInsightsDualTracker = { helpers: {}, trackers: {}, }; if (mi_track_user) { function __gtagDataLayer() { dataLayer.push(arguments); } function __gtagTracker(type, name, parameters) { if (!parameters) { parameters = {}; } if (parameters.send_to) { __gtagDataLayer.apply(null, arguments); return; } if (type === 'event') { parameters.send_to = monsterinsights_frontend.v4_id; var hookName = name; if (typeof parameters['event_category'] !== 'undefined') { hookName = parameters['event_category'] + ':' + name; } if (typeof MonsterInsightsDualTracker.trackers[hookName] !== 'undefined') { MonsterInsightsDualTracker.trackers[hookName](parameters); } else { __gtagDataLayer('event', name, parameters); } } else { __gtagDataLayer.apply(null, arguments); } } __gtagTracker('js', new Date()); __gtagTracker('set', { 'developer_id.dZGIzZG': true, }); if ( MonsterInsightsLocations.page_location ) { __gtagTracker('set', MonsterInsightsLocations); } __gtagTracker('config', 'G-T8FTPKY5SV', {"forceSSL":"true","link_attribution":"true"} ); window.gtag = __gtagTracker; (function () { /* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */ /* ga and __gaTracker compatibility shim. */ var noopfn = function () { return null; }; var newtracker = function () { return new Tracker(); }; var Tracker = function () { return null; }; var p = Tracker.prototype; p.get = noopfn; p.set = noopfn; p.send = function () { var args = Array.prototype.slice.call(arguments); args.unshift('send'); __gaTracker.apply(null, args); }; var __gaTracker = function () { var len = arguments.length; if (len === 0) { return; } var f = arguments[len - 1]; if (typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function') { if ('send' === arguments[0]) { var hitConverted, hitObject = false, action; if ('event' === arguments[1]) { if ('undefined' !== typeof arguments[3]) { hitObject = { 'eventAction': arguments[3], 'eventCategory': arguments[2], 'eventLabel': arguments[4], 'value': arguments[5] ? arguments[5] : 1, } } } if ('pageview' === arguments[1]) { if ('undefined' !== typeof arguments[2]) { hitObject = { 'eventAction': 'page_view', 'page_path': arguments[2], } } } if (typeof arguments[2] === 'object') { hitObject = arguments[2]; } if (typeof arguments[5] === 'object') { Object.assign(hitObject, arguments[5]); } if ('undefined' !== typeof arguments[1].hitType) { hitObject = arguments[1]; if ('pageview' === hitObject.hitType) { hitObject.eventAction = 'page_view'; } } if (hitObject) { action = 'timing' === arguments[1].hitType ? 'timing_complete' : hitObject.eventAction; hitConverted = mapArgs(hitObject); __gtagTracker('event', action, hitConverted); } } return; } function mapArgs(args) { var arg, hit = {}; var gaMap = { 'eventCategory': 'event_category', 'eventAction': 'event_action', 'eventLabel': 'event_label', 'eventValue': 'event_value', 'nonInteraction': 'non_interaction', 'timingCategory': 'event_category', 'timingVar': 'name', 'timingValue': 'value', 'timingLabel': 'event_label', 'page': 'page_path', 'location': 'page_location', 'title': 'page_title', 'referrer' : 'page_referrer', }; for (arg in args) { if (!(!args.hasOwnProperty(arg) || !gaMap.hasOwnProperty(arg))) { hit[gaMap[arg]] = args[arg]; } else { hit[arg] = args[arg]; } } return hit; } try { f.hitCallback(); } catch (ex) { } }; __gaTracker.create = newtracker; __gaTracker.getByName = newtracker; __gaTracker.getAll = function () { return []; }; __gaTracker.remove = noopfn; __gaTracker.loaded = true; window['__gaTracker'] = __gaTracker; })(); } else { console.log(""); (function () { function __gtagTracker() { return null; } window['__gtagTracker'] = __gtagTracker; window['gtag'] = __gtagTracker; })(); } </script> <!-- / Google Analytics by MonsterInsights --> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript"> if (window.hasOwnProperty('MonsterInsightsDualTracker')){ window.MonsterInsightsDualTracker.trackers['form:impression'] = function (parameters) { __gtagDataLayer('event', 'form_impression', { form_id: parameters.event_label, content_type: 'form', non_interaction: true, send_to: parameters.send_to, }); }; window.MonsterInsightsDualTracker.trackers['form:conversion'] = function (parameters) { __gtagDataLayer('event', 'generate_lead', { form_id: parameters.event_label, send_to: parameters.send_to, }); }; } </script> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/devops.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=1fdc173ed44ea313992d83dbd85d2021"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!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!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));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(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link rel='stylesheet' id='pt-cv-public-style-css' href='https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/css/cv.css' type='text/css' media='all' /> <link rel='stylesheet' id='pt-cv-public-pro-style-css' href='https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/css/cvpro.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='tribe-events-pro-mini-calendar-block-styles-css' href='https://devops.com/wp-content/plugins/events-calendar-pro/src/resources/css/tribe-events-pro-mini-calendar-block.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='devops-css' href='https://devops.com/wp-content/themes/genesis-devops/style.css' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css' type='text/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; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://devops.com/wp-includes/css/dist/block-library/style.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='mediaelement-css' href='https://devops.com/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wp-mediaelement-css' href='https://devops.com/wp-includes/js/mediaelement/wp-mediaelement.min.css' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css' type='text/css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <style id='classic-theme-styles-inline-css' type='text/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} </style> <style id='global-styles-inline-css' type='text/css'> :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,rgba(6,147,227,1) 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,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 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 rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}: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;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.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;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='chain-wire-css' href='https://devops.com/wp-content/plugins/chainwire-integration/public/css/chainwire-public.css' type='text/css' media='all' /> <link rel='stylesheet' id='owl-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='owl-theme-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.theme.default.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wppopups-pro-css' href='https://devops.com/wp-content/plugins/wppopups/pro/assets/css/wppopups.css' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-css' href='https://devops.com/wp-content/uploads/maxmegamenu/style.css' type='text/css' media='all' /> <link rel='stylesheet' id='dashicons-css' href='https://devops.com/wp-includes/css/dashicons.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-google-fonts-css' href='//fonts.googleapis.com/css?family=Raleway%3A400%2C700&#038;ver=1fdc173ed44ea313992d83dbd85d2021' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-fontawesome6-css' href='https://devops.com/wp-content/plugins/megamenu-pro/icons/fontawesome6/css/all.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wppopups-base-css' href='https://devops.com/wp-content/plugins/wppopups/src/assets/css/wppopups-base.css' type='text/css' media='all' /> <link rel='stylesheet' id='my-theme-extra-style-css' href='https://devops.com/wp-content/themes/genesis-devops/extra-style.css' type='text/css' media='all' /> <link rel='stylesheet' id='genesis-webinars-style-css' href='https://devops.com/wp-content/themes/genesis-devops/webinars.css' type='text/css' media='all' /> <link rel='stylesheet' id='genesis-any-style-css' href='https://devops.com/wp-content/themes/genesis-devops/js/slider/any/css/anythingslider.css' type='text/css' media='all' /> <link rel='stylesheet' id='meks-ads-widget-css' href='https://devops.com/wp-content/plugins/meks-easy-ads-widget/css/style.css' type='text/css' media='all' /> <link rel='stylesheet' id='fontawesome-css' href='https://devops.com/wp-content/themes/genesis-devops/css/font-awesome.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='devops-google-fonts-css' href='https://fonts.googleapis.com/css?family=Raleway%3A500%2C600%2C700&#038;ver=1.0.6' type='text/css' media='all' /> <link rel='stylesheet' id='bdt-uikit-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/bdt-uikit.css' type='text/css' media='all' /> <link rel='stylesheet' id='ep-helper-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/ep-helper.css' type='text/css' media='all' /> <script type="text/javascript" src="https://devops.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" id="wp-hooks-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/google-analytics-premium/assets/js/frontend-gtag.min.js?ver=9.3.0" id="monsterinsights-frontend-script-js" async="async" data-wp-strategy="async"></script> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript" id='monsterinsights-frontend-script-js-extra'>/* <![CDATA[ */ var monsterinsights_frontend = {"js_events_tracking":"true","download_extensions":"doc,pdf,ppt,zip,xls,docx,pptx,xlsx","inbound_paths":"[{\"path\":\"\\\/go\\\/\",\"label\":\"affiliate\"},{\"path\":\"\\\/recommend\\\/\",\"label\":\"affiliate\"}]","home_url":"https:\/\/devops.com","hash_tracking":"false","v4_id":"G-T8FTPKY5SV"};/* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/list.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="list-min-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="owl-min-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/isotope.pkgd.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="isotope-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/custom.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="j-custom-js-js"></script> <script type="text/javascript" id="wppopups-pro-js-js-extra"> /* <![CDATA[ */ var wppopups_pro_vars = {"enable_stats":"1","m_id":"","data_sampling":"","post_id":"2499","l18n":{"wait":"Please wait","seconds":"seconds"}}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/wppopups/pro/assets/js/wppopups.js?ver=2.2.0.3" id="wppopups-pro-js-js"></script> <!--[if lt IE 9]> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis/lib/js/html5shiv.min.js?ver=3.7.3" id="html5shiv-js"></script> <![endif]--> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/scripts.js?ver=1.0.6" id="devops-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/sticky-menu.js?ver=1.0.6" id="devops-sticky-menu-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/responsive-menu.js?ver=1.0.6" id="devops-responsive-menu-js"></script> <link rel="https://api.w.org/" href="https://devops.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://devops.com/wp-json/wp/v2/users/2499" /><style type="text/css"> .feedzy-rss-link-icon:after { content: url("https://devops.com/wp-content/plugins/feedzy-rss-feeds/img/external-link.png"); margin-left: 3px; } </style> <meta name="generator" content="Site Kit by Google 1.140.0" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.73--> <script class="hsq-set-content-id" data-content-id="listing-page"> var _hsq = _hsq || []; _hsq.push(["setContentType", "listing-page"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://devops.com"><link rel="alternate" href="https://devops.com/wp-json/tribe/events/v1/" /> <style>img#wpstats{display:none}</style> <!-- Google Tag Manager for WordPress by gtm4wp.com --> <!-- GTM Container placement set to footer --> <script data-cfasync="false" data-pagespeed-no-defer type="text/javascript"> var dataLayer_content = {"pageTitle":"Mitch Ashley Articles and Insights","pagePostType":"post","pagePostType2":"author-post","pagePostAuthor":"Mitch Ashley"}; dataLayer.push( dataLayer_content ); </script> <script data-cfasync="false"> (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= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NZLPNQS'); </script> <!-- End Google Tag Manager for WordPress by gtm4wp.com --> <script> jQuery(window).on('elementor/frontend/init', function () { //wait for elementor to load elementorFrontend.on('components:init', function () { //wait for elementor pro to load setTimeout(() => { elementorProFrontend.modules.popup.showPopup({id: 0 }); }, 500); // Delay half a second. Elementor document doesn't fully load sometimes. }); }); </script> <link rel="pingback" href="https://devops.com/xmlrpc.php" /> <style type="text/css">.site-title a { background: url(https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png) no-repeat !important; }</style> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script> googletag.cmd.push(function() { var mapb=googletag.sizeMapping(). addSize([770, 0], [728, 90]). addSize([0, 0], [320, 50]). build(); var desk=googletag.sizeMapping(). addSize([1450, 0], [160, 600]). addSize([0, 0], [0, 0]). build(); //googletag.defineSlot('/80877830/DO_after-entry', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Article-Medium-1', [300, 250], 'div-gpt-ad-1494536589535-1').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Article-Medium-2', [300, 250], 'div-gpt-ad-1494536589535-2').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home_Bottom_Ad', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-3').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home-Medium', [300, 250], 'div-gpt-ad-1494536589535-4').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_header-right', [[728, 90], [320, 50]], 'div-gpt-ad-1494599233432-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineOutOfPageSlot('/80877830/DevOps.com_OOP', 'div-gpt-ad-1494947147258-0').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home_Bottom_Ad_2', [728, 90], 'div-gpt-ad-1519910493553-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_SkyScraper_Left', [160, 600], 'div-gpt-ad-1542202470575-0').defineSizeMapping(desk).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_SkyScraper_Right', [160, 600], 'div-gpt-ad-1542202633557-0').defineSizeMapping(desk).addService(googletag.pubads()); googletag.pubads().setTargeting("category", ["sponsored-content", "", "", "", "", ""]); googletag.pubads().setTargeting("homepage","no"); googletag.pubads().setTargeting("test", ""); googletag.pubads().setTargeting("articleID", "175755"); googletag.enableServices(); }); </script> <!-- Google AdSense meta tags added by Site Kit --> <meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236"> <meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com"> <!-- End Google AdSense meta tags added by Site Kit --> <meta name="generator" content="Elementor 3.24.7; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto"> <style> .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } @media screen and (max-height: 1024px) { .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } @media screen and (max-height: 640px) { .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } </style> <!-- Google AdSense snippet added by Site Kit --> <script type="text/javascript" async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865&amp;host=ca-host-pub-2644536267352236" crossorigin="anonymous"></script> <!-- End Google AdSense snippet added by Site Kit --> <!-- MonsterInsights Form Tracking --> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript"> function monsterinsights_forms_record_impression(event) { monsterinsights_add_bloom_forms_ids(); var monsterinsights_forms = document.getElementsByTagName("form"); var monsterinsights_forms_i; for (monsterinsights_forms_i = 0; monsterinsights_forms_i < monsterinsights_forms.length; monsterinsights_forms_i++) { var monsterinsights_form_id = monsterinsights_forms[monsterinsights_forms_i].getAttribute("id"); var skip_conversion = false; /* Check to see if it's contact form 7 if the id isn't set */ if (!monsterinsights_form_id) { monsterinsights_form_id = monsterinsights_forms[monsterinsights_forms_i].parentElement.getAttribute("id"); if (monsterinsights_form_id && monsterinsights_form_id.lastIndexOf('wpcf7-f', 0) === 0) { /* If so, let's grab that and set it to be the form's ID*/ var tokens = monsterinsights_form_id.split('-').slice(0, 2); var result = tokens.join('-'); monsterinsights_forms[monsterinsights_forms_i].setAttribute("id", result);/* Now we can do just what we did above */ monsterinsights_form_id = monsterinsights_forms[monsterinsights_forms_i].getAttribute("id"); } else { monsterinsights_form_id = false; } } /* Check if it's Ninja Forms & id isn't set. */ if (!monsterinsights_form_id && monsterinsights_forms[monsterinsights_forms_i].parentElement.className.indexOf('nf-form-layout') >= 0) { monsterinsights_form_id = monsterinsights_forms[monsterinsights_forms_i].parentElement.parentElement.parentElement.getAttribute('id'); if (monsterinsights_form_id && 0 === monsterinsights_form_id.lastIndexOf('nf-form-', 0)) { /* If so, let's grab that and set it to be the form's ID*/ tokens = monsterinsights_form_id.split('-').slice(0, 3); result = tokens.join('-'); monsterinsights_forms[monsterinsights_forms_i].setAttribute('id', result); /* Now we can do just what we did above */ monsterinsights_form_id = monsterinsights_forms[monsterinsights_forms_i].getAttribute('id'); skip_conversion = true; } } if (monsterinsights_form_id && monsterinsights_form_id !== 'commentform' && monsterinsights_form_id !== 'adminbar-search') { __gtagTracker('event', 'impression', { event_category: 'form', event_label: monsterinsights_form_id, value: 1, non_interaction: true }); /* If a WPForms Form, we can use custom tracking */ if (monsterinsights_form_id && 0 === monsterinsights_form_id.lastIndexOf('wpforms-form-', 0)) { continue; } /* Formiddable Forms, use custom tracking */ if (monsterinsights_forms_has_class(monsterinsights_forms[monsterinsights_forms_i], 'frm-show-form')) { continue; } /* If a Gravity Form, we can use custom tracking */ if (monsterinsights_form_id && 0 === monsterinsights_form_id.lastIndexOf('gform_', 0)) { continue; } /* If Ninja forms, we use custom conversion tracking */ if (skip_conversion) { continue; } var custom_conversion_mi_forms = false; if (custom_conversion_mi_forms) { continue; } if (window.jQuery) { (function (form_id) { jQuery(document).ready(function () { jQuery('#' + form_id).on('submit', monsterinsights_forms_record_conversion); }); })(monsterinsights_form_id); } else { var __gaFormsTrackerWindow = window; if (__gaFormsTrackerWindow.addEventListener) { document.getElementById(monsterinsights_form_id).addEventListener("submit", monsterinsights_forms_record_conversion, false); } else { if (__gaFormsTrackerWindow.attachEvent) { document.getElementById(monsterinsights_form_id).attachEvent("onsubmit", monsterinsights_forms_record_conversion); } } } } else { continue; } } } function monsterinsights_forms_has_class(element, className) { return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1; } function monsterinsights_forms_record_conversion(event) { var monsterinsights_form_conversion_id = event.target.id; var monsterinsights_form_action = event.target.getAttribute("miforms-action"); if (monsterinsights_form_conversion_id && !monsterinsights_form_action) { document.getElementById(monsterinsights_form_conversion_id).setAttribute("miforms-action", "submitted"); __gtagTracker('event', 'conversion', { event_category: 'form', event_label: monsterinsights_form_conversion_id, value: 1, }); } } /* Attach the events to all clicks in the document after page and GA has loaded */ function monsterinsights_forms_load() { if (typeof (__gtagTracker) !== 'undefined' && __gtagTracker) { var __gtagFormsTrackerWindow = window; if (__gtagFormsTrackerWindow.addEventListener) { __gtagFormsTrackerWindow.addEventListener("load", monsterinsights_forms_record_impression, false); } else { if (__gtagFormsTrackerWindow.attachEvent) { __gtagFormsTrackerWindow.attachEvent("onload", monsterinsights_forms_record_impression); } } } else { setTimeout(monsterinsights_forms_load, 200); } } /* Custom Ninja Forms impression tracking */ if (window.jQuery) { jQuery(document).on('nfFormReady', function (e, layoutView) { var label = layoutView.el; label = label.substring(1, label.length); label = label.split('-').slice(0, 3).join('-'); __gtagTracker('event', 'impression', { event_category: 'form', event_label: label, value: 1, non_interaction: true }); }); } /* Custom Bloom Form tracker */ function monsterinsights_add_bloom_forms_ids() { var bloom_forms = document.querySelectorAll('.et_bloom_form_content form'); if (bloom_forms.length > 0) { for (var i = 0; i < bloom_forms.length; i++) { if ('' === bloom_forms[i].id) { var form_parent_root = monsterinsights_find_parent_with_class(bloom_forms[i], 'et_bloom_optin'); if (form_parent_root) { var classes = form_parent_root.className.split(' '); for (var j = 0; j < classes.length; ++j) { if (0 === classes[j].indexOf('et_bloom_optin')) { bloom_forms[i].id = classes[j]; } } } } } } } function monsterinsights_find_parent_with_class(element, className) { if (element.parentNode && '' !== className) { if (element.parentNode.className.indexOf(className) >= 0) { return element.parentNode; } else { return monsterinsights_find_parent_with_class(element.parentNode, className); } } return false; } monsterinsights_forms_load(); </script> <!-- End MonsterInsights Form Tracking --> <!-- MonsterInsights Media Tracking --> <script data-cfasync="false" data-wpfc-render="false" type="text/javascript"> var monsterinsights_tracked_video_marks = {}; var monsterinsights_youtube_percentage_tracking_timeouts = {}; /* Works for YouTube and Vimeo */ function monsterinsights_media_get_id_for_iframe( source, service ) { var iframeUrlParts = source.split('?'); var stripedUrl = iframeUrlParts[0].split('/'); var videoId = stripedUrl[ stripedUrl.length - 1 ]; return service + '-player-' + videoId; } function monsterinsights_media_record_video_event( provider, event, label, parameters = {} ) { __gtagTracker('event', event, { event_category: 'video-' + provider, event_label: label, non_interaction: event === 'impression', ...parameters }); } function monsterinsights_media_maybe_record_video_progress( provider, label, videoId, videoParameters ) { var progressTrackingAllowedMarks = [10,25,50,75]; if ( typeof monsterinsights_tracked_video_marks[ videoId ] == 'undefined' ) { monsterinsights_tracked_video_marks[ videoId ] = []; } var { video_percent } = videoParameters; if ( progressTrackingAllowedMarks.includes( video_percent ) && !monsterinsights_tracked_video_marks[ videoId ].includes( video_percent ) ) { monsterinsights_media_record_video_event( provider, 'video_progress', label, videoParameters ); /* Prevent multiple records for the same percentage */ monsterinsights_tracked_video_marks[ videoId ].push( video_percent ); } } /* --- Vimeo --- */ var monsterinsights_media_vimeo_plays = {}; function monsterinsights_setup_vimeo_events_for_iframe(iframe, title, player) { var playerId = iframe.getAttribute('id'); var videoLabel = title || iframe.title || iframe.getAttribute('src'); if ( !playerId ) { playerId = monsterinsights_media_get_id_for_iframe( iframe.getAttribute('src'), 'vimeo' ); iframe.setAttribute( 'id', playerId ); } monsterinsights_media_vimeo_plays[playerId] = 0; var videoParameters = { video_provider: 'vimeo', video_title: title, video_url: iframe.getAttribute('src') }; /** * Record Impression **/ monsterinsights_media_record_video_event( 'vimeo', 'impression', videoLabel, videoParameters ); /** * Record video start **/ player.on('play', function(data) { let playerId = this.element.id; if ( monsterinsights_media_vimeo_plays[playerId] === 0 ) { monsterinsights_media_vimeo_plays[playerId]++; videoParameters.video_duration = data.duration; videoParameters.video_current_time = data.seconds; videoParameters.video_percent = 0; monsterinsights_media_record_video_event( 'vimeo', 'video_start', videoLabel, videoParameters ); } }); /** * Record video progress **/ player.on('timeupdate', function(data) { var progress = Math.floor(data.percent * 100); videoParameters.video_duration = data.duration; videoParameters.video_current_time = data.seconds; videoParameters.video_percent = progress; monsterinsights_media_maybe_record_video_progress( 'vimeo', videoLabel, playerId, videoParameters ); }); /** * Record video complete **/ player.on('ended', function(data) { videoParameters.video_duration = data.duration; videoParameters.video_current_time = data.seconds; videoParameters.video_percent = 100; monsterinsights_media_record_video_event( 'vimeo', 'video_complete', videoLabel, videoParameters ); }); } function monsterinsights_on_vimeo_load() { var vimeoIframes = document.querySelectorAll("iframe[src*='vimeo']"); vimeoIframes.forEach(function( iframe ) { // Set up the player var player = new Vimeo.Player(iframe); // The getVideoTitle function returns a promise player.getVideoTitle().then(function(title) { /* * Binding the events inside this callback guarantees that we * always have the correct title for the video */ monsterinsights_setup_vimeo_events_for_iframe(iframe, title, player) }); }); } function monsterinsights_media_init_vimeo_events() { var vimeoIframes = document.querySelectorAll("iframe[src*='vimeo']"); if ( vimeoIframes.length ) { /* Maybe load Vimeo API */ if ( window.Vimeo === undefined ) { var tag = document.createElement("script"); tag.src = "https://player.vimeo.com/api/player.js"; tag.setAttribute("onload", "monsterinsights_on_vimeo_load()"); document.body.append(tag); } else { /* Vimeo API already loaded, invoke callback */ monsterinsights_on_vimeo_load(); } } } /* --- End Vimeo --- */ /* --- YouTube --- */ function monsterinsights_media_on_youtube_load() { var monsterinsights_media_youtube_plays = {}; function __onPlayerReady(event) { monsterinsights_media_youtube_plays[event.target.h.id] = 0; var videoParameters = { video_provider: 'youtube', video_title: event.target.videoTitle, video_url: event.target.playerInfo.videoUrl }; monsterinsights_media_record_video_event( 'youtube', 'impression', videoParameters.video_title, videoParameters ); } /** * Record progress callback **/ function __track_youtube_video_progress( player, videoLabel, videoParameters ) { var { playerInfo } = player; var playerId = player.h.id; var duration = playerInfo.duration; /* player.getDuration(); */ var currentTime = playerInfo.currentTime; /* player.getCurrentTime(); */ var percentage = (currentTime / duration) * 100; var progress = Math.floor(percentage); videoParameters.video_duration = duration; videoParameters.video_current_time = currentTime; videoParameters.video_percent = progress; monsterinsights_media_maybe_record_video_progress( 'youtube', videoLabel, playerId, videoParameters ); } function __youtube_on_state_change( event ) { var state = event.data; var player = event.target; var { playerInfo } = player; var playerId = player.h.id; var videoParameters = { video_provider: 'youtube', video_title: player.videoTitle, video_url: playerInfo.videoUrl }; /** * YouTube's API doesn't offer a progress or timeupdate event. * We have to track progress manually by asking the player for the current time, every X milliseconds, using an interval **/ if ( state === YT.PlayerState.PLAYING) { if ( monsterinsights_media_youtube_plays[playerId] === 0 ) { monsterinsights_media_youtube_plays[playerId]++; /** * Record video start **/ videoParameters.video_duration = playerInfo.duration; videoParameters.video_current_time = playerInfo.currentTime; videoParameters.video_percent = 0; monsterinsights_media_record_video_event( 'youtube', 'video_start', videoParameters.video_title, videoParameters ); } monsterinsights_youtube_percentage_tracking_timeouts[ playerId ] = setInterval( __track_youtube_video_progress, 500, player, videoParameters.video_title, videoParameters ); } else if ( state === YT.PlayerState.PAUSED ) { /* When the video is paused clear the interval */ clearInterval( monsterinsights_youtube_percentage_tracking_timeouts[ playerId ] ); } else if ( state === YT.PlayerState.ENDED ) { /** * Record video complete **/ videoParameters.video_duration = playerInfo.duration; videoParameters.video_current_time = playerInfo.currentTime; videoParameters.video_percent = 100; monsterinsights_media_record_video_event( 'youtube', 'video_complete', videoParameters.video_title, videoParameters ); clearInterval( monsterinsights_youtube_percentage_tracking_timeouts[ playerId ] ); } } var youtubeIframes = document.querySelectorAll("iframe[src*='youtube'],iframe[src*='youtu.be']"); youtubeIframes.forEach(function( iframe ) { var playerId = iframe.getAttribute('id'); if ( !playerId ) { playerId = monsterinsights_media_get_id_for_iframe( iframe.getAttribute('src'), 'youtube' ); iframe.setAttribute( 'id', playerId ); } new YT.Player(playerId, { events: { onReady: __onPlayerReady, onStateChange: __youtube_on_state_change } }); }); } function monsterinsights_media_load_youtube_api() { if ( window.YT ) { return; } var youtubeIframes = document.querySelectorAll("iframe[src*='youtube'],iframe[src*='youtu.be']"); if ( 0 === youtubeIframes.length ) { return; } var tag = document.createElement("script"); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); } function monsterinsights_media_init_youtube_events() { /* YouTube always looks for a function called onYouTubeIframeAPIReady */ window.onYouTubeIframeAPIReady = monsterinsights_media_on_youtube_load; } /* --- End YouTube --- */ /* --- HTML Videos --- */ function monsterinsights_media_init_html_video_events() { var monsterinsights_media_html_plays = {}; var videos = document.querySelectorAll('video'); var videosCount = 0; videos.forEach(function( video ) { var videoLabel = video.title; if ( !videoLabel ) { var videoCaptionEl = video.nextElementSibling; if ( videoCaptionEl && videoCaptionEl.nodeName.toLowerCase() === 'figcaption' ) { videoLabel = videoCaptionEl.textContent; } else { videoLabel = video.getAttribute('src'); } } var videoTitle = videoLabel; var playerId = video.getAttribute('id'); if ( !playerId ) { playerId = 'html-player-' + videosCount; video.setAttribute('id', playerId); } monsterinsights_media_html_plays[playerId] = 0 var videoSrc = video.getAttribute('src') if ( ! videoSrc && video.currentSrc ) { videoSrc = video.currentSrc; } var videoParameters = { video_provider: 'html', video_title: videoTitle ? videoTitle : videoSrc, video_url: videoSrc, }; /** * Record Impression **/ monsterinsights_media_record_video_event( 'html', 'impression', videoLabel, videoParameters ); /** * Record video start **/ video.addEventListener('play', function(event) { let playerId = event.target.id; if ( monsterinsights_media_html_plays[playerId] === 0 ) { monsterinsights_media_html_plays[playerId]++; videoParameters.video_duration = video.duration; videoParameters.video_current_time = video.currentTime; videoParameters.video_percent = 0; monsterinsights_media_record_video_event( 'html', 'video_start', videoLabel, videoParameters ); } }, false ); /** * Record video progress **/ video.addEventListener('timeupdate', function() { var percentage = (video.currentTime / video.duration) * 100; var progress = Math.floor(percentage); videoParameters.video_duration = video.duration; videoParameters.video_current_time = video.currentTime; videoParameters.video_percent = progress; monsterinsights_media_maybe_record_video_progress( 'html', videoLabel, playerId, videoParameters ); }, false ); /** * Record video complete **/ video.addEventListener('ended', function() { var percentage = (video.currentTime / video.duration) * 100; var progress = Math.floor(percentage); videoParameters.video_duration = video.duration; videoParameters.video_current_time = video.currentTime; videoParameters.video_percent = progress; monsterinsights_media_record_video_event( 'html', 'video_complete', videoLabel, videoParameters ); }, false ); videosCount++; }); } /* --- End HTML Videos --- */ function monsterinsights_media_init_video_events() { /** * HTML Video - Attach events & record impressions */ monsterinsights_media_init_html_video_events(); /** * Vimeo - Attach events & record impressions */ monsterinsights_media_init_vimeo_events(); monsterinsights_media_load_youtube_api(); } /* Attach events */ function monsterinsights_media_load() { if ( typeof(__gtagTracker) === 'undefined' ) { setTimeout(monsterinsights_media_load, 200); return; } if ( document.readyState === "complete" ) { // Need this for cookie plugin. monsterinsights_media_init_video_events(); } else if ( window.addEventListener ) { window.addEventListener( "load", monsterinsights_media_init_video_events, false ); } else if ( window.attachEvent ) { window.attachEvent( "onload", monsterinsights_media_init_video_events); } /** * YouTube - Attach events & record impressions. * We don't need to attach this into page load event * because we already use YT function "onYouTubeIframeAPIReady" * and this will help on using onReady event with the player instantiation. */ monsterinsights_media_init_youtube_events(); } monsterinsights_media_load(); </script> <!-- End MonsterInsights Media Tracking --> <style type="text/css" id="spu-css-174203" class="spu-css"> #spu-bg-174203 { background-color: rgba(0,0,0,0.5); } #spu-174203 .spu-close { font-size: 30px; color: rgb(255, 255, 255); text-shadow: 0 1px 0 #000; } #spu-174203 .spu-close:hover { color: rgb(204, 204, 204); } #spu-174203 { background-color: rgb(29, 29, 33); max-width: 650px; border-radius: 0px; height: auto; box-shadow: 0px 0px 0px 0px #ccc; } #spu-174203 .spu-container { padding: 0px; height: calc(100% - 0px); } .spu-content .hs-form { display: flex; align-items: flex-start; justify-content: center; padding-bottom: 20px; } .spu-content .hs_email { width: 75%; } .spu-content .hs-input { height: 46px; } .hs-error-msgs { color: #fff; } .spu-content .hs_submit { width: 20%; } </style> <link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-130x130.png" sizes="32x32" /> <link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" /> <meta name="msapplication-TileImage" content="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1.png" /> <style type="text/css" id="pt-cv-custom-style-0704113s52">.pt-cv-social-buttons a{-webkit-filter:grayscale(0.9);filter:gray;filter:grayscale(0.9)}.pt-cv-social-buttons a:hover{-webkit-filter:grayscale(0);filter:gray;filter:grayscale(0)} .pt-cv-meta-fields .avatar{width:30px;height:auto} .pt-cv-meta-fields .screen-reader-text {display:none} </style> <style type="text/css" id="wp-custom-css"> .header-image .site-title a { background: url(https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png) no-repeat !important; background-position-x: 0%; background-position-y: 0%; height: 92px; } #pt-cv-view-04fc8fd3b4 .pt-cv-content-item:first-child { padding-right: 5px !important; } #pt-cv-view-04fc8fd3b4 .pt-cv-content-item:last-child { padding-left: 5px !important; } #pt-cv-view-adef981o1p .pt-cv-oothers { padding: 0; } .page-id-173698 { font-family: "Inter"; } .page-id-173698 #speaker-name { margin-bottom: 0; } .page-id-173698 #speaker-title p { margin: 0; color: #747474; } .page-id-173698 #speaker-description { font-size: 14px; } #pt-cv-view-ee38785r0s .pt-cv-content-item { border-bottom: 1px solid #ddd !important; margin-bottom: 20px; } #pt-cv-view-ee38785r0s .pt-cv-thumbnail { object-fit: cover; width: 100%; } .elementor-element-e999656 { margin-bottom: 0 !important; } #pt-cv-view-adef981o1p { margin-right: 0px !important; margin-left: 0px !important; } #pt-cv-view-adef981o1p .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding: 0 !important; } #pt-cv-view-adef981o1p .pt-cv-thumbnail, #pt-cv-view-adef981o1p .pt-cv-thumbnail { width: 100%; } #pt-cv-view-adef981o1p .pt-cv-content { padding: 20px; } /* Gregs Page */ .page-id-172604 .site-header, .page-id-172604 .nav-primary > .wrap { display: none; } /*AWS Serverless On Demand Webinars*/ #pt-cv-view-1776e8aal6 { margin: 0 !important; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:first-child { padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(2), #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(4) { padding-right: 0; padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(3) { padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:last-child { padding-left: 0; } .page-template-aws-builder-hub-partners .sgpb-popup-dialog-main-div-wrapper { display: none; } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-44af0c3, .elementor-161310 .elementor-element.elementor-element-c1d27f2, .elementor-161310 .elementor-element.elementor-element-807b75f{ width: 26.653%; } } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-0239c2e, .elementor-161310 .elementor-element.elementor-element-92ac4b4, .elementor-161310 .elementor-element.elementor-element-3e37e91{ width: 48.695%; } } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-05c7d51, .elementor-161310 .elementor-element.elementor-element-f8206b8, .elementor-161310 .elementor-element.elementor-element-1228b53{ width: 24.316%; } } .elementor-129505 .elementor-element.elementor-element-2fefd07 > .elementor-widget-container { background-color: #333; background-image: none !important; } .elementor-129505 .elementor-element.elementor-element-20c9085 > .elementor-widget-container { background-color: #333; background-image: none !important; margin: 0 12px 0 1px; padding: 5px; } .elementor-129505 .elementor-element.elementor-element-20c9085 .elementor-heading-title { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,.3); } @media screen and (max-width: 480px) { #tribe-events .webinars-heading { margin-top: 30px; } } .page-template-ecotech-insights .site-inner { background: #fff; padding-left: 0 !important; } @media screen and (min-width: 1024px) { .elementor-160146 .elementor-element.elementor-element-5875a83 { width: 80% !important; } .elementor-160146 .elementor-element.elementor-element-c5257e6 { width: 18%; } } /* .gform_legacy_markup_wrapper table.gsurvey-likert th.gsurvey-likert-choice-label, .gform_legacy_markup_wrapper table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label, .gform_legacy_markup_wrapper table.gsurvey-likert .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert .gsurvey-likert-row-label { font-size: 10px; } .gravity-theme table.gsurvey-likert th.gsurvey-likert-choice-label { font-size: 8px; } */ .page-template-aws-builder-hub .marquee-outer-container { display: none !important; } /*PODCAST SIDEBAR */ #text-89, #text-89 p { margin: 0; padding: 0; } /* SPONSORED CONTENT SIDEBAR WIDGET */ .category-sponsored-content .content, .category-analyst-corner .content { width: 98% !important; } #featured-post-14 { background: #333; padding: 10px; } #featured-post-14 .entry { background: #333 !important; } #featured-post-14 .widget-title { margin-bottom: 10px !important; background: #DC2E2A; font-weight: 600; text-transform: uppercase !important; } #featured-post-14 .entry-title { margin-bottom: 3px !important; line-height: 1em !important; display: block; } #featured-post-14 .entry-title a { color: #fff !important; font-weight: 600 !important; font-size: 15px; text-transform: none; line-height: 1em; } #featured-post-14 .entry-meta, #featured-post-14 .entry-author-link { color: rgba(255,255,255,.6); float: none; display: inline; font-size: 13px; text-transform: none; } .sponsored-content article { padding: 0 15px !important; } .sponsored-content .content-sidebar-wrap, .cyberwire .content-sidebar-wrap { margin-top: 12px; } .elementor-129505 .elementor-element.elementor-element-ab012a6 > .elementor-widget-container { margin: 0 10px 0 2px; padding: 5px; background-color: #333; background-image: url(https://devops.com/wp-content/uploads/2019/04/DevOpsArrow_241.png); background-position: center right; background-repeat: no-repeat; background-size: auto; } .elementor-129505 .elementor-element.elementor-element-ab012a6 .elementor-heading-title { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,.3); } /*MENU FIX */ #mega-menu-wrap-topmenu #mega-menu-topmenu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator::after { margin: 0 0 0 2px; } /* SAFARI SEARCH FIX*/ @media not all and (min-resolution:.001dpcm) { @supports (-webkit-appearance:none) and (display:flow-root) { html { overflow-x: visible !important; } } } /*Newsletter */ #custom_html-70 { padding: 20px; background: #DC2E2A; } #custom_html-70 .widget-title, .hs_submit input:hover[type="submit"] { text-align: center; font-weight: bold; background: #000; } .hs-button { text-align: center; display: block; margin: auto; } .hs-richtext.hs-main-font-element { margin: 20px auto; } .hbspt-form p { color: #fff; text-align: center; } /* POLL */ .mega-search-wrap { z-index: 0!important; } .page-id-148327 #custom_html-71{ display: none; } #mks_ads_widget-2 .widget-wrap { background: #DC2E2A; } .mks_adswidget_ul.custom li { margin-top: 0 !important; } /*QUIZ */ #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-129582 .mega-search-wrap { z-index: 1; } /* UNBOUND */ .elementor-element-a2539c2 .elementor-widget-container, .elementor-element-634a6f3 .elementor-widget-container { padding: 10px; background-color: #000; background-image: url(https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png); background-position: center right; background-repeat: no-repeat; } .elementor-element-52ddf69 .elementor-heading-title a, .elementor-element-a2539c2 .elementor-heading-title a, .elementor-element-634a6f3 .elementor-heading-title a{ color: #fff; } #pt-cv-view-68732b26od .pt-cv-ctf-list, #pt-cv-view-68732b26od .pt-cv-ctf-column { display: flex; } .elementor-element-e98917f .pt-cv-content-item, .elementor-element-0c4bd9e .pt-cv-content-item{ border: solid 4px #333; margin: 20px; width: calc(100% - 40px); padding: 10px; } /*NEW HOME FEATURE */ .elementor-129505 .elementor-element.elementor-element-7a99144 > .elementor-column-wrap > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute) { margin-bottom: 0; } #pt-cv-view-b007d672b1 .carousel-control.left { margin: 10px 10px 0 0; } #pt-cv-view-b007d672b1 .carousel-control.right { margin: 10px 10px 0 0; } #pum-144000, .pum { display: none!important; } /**AWS BB Page **/ .page-template-awsbb-microsite .sidebar-primary { padding-right: 0 !important; padding-left: 10px !important; } @media only screen and (min-width: 768px) { .page-template-awsbb-microsite .sidebar-primary { padding-right: 0 !important; padding-left: 0px !important; } } .bb-swag { border: solid 2px #69E4AF; padding: 10px; } .first.video { display: inline-block; background: linear-gradient(#234C4F, #233A44); padding: 40px; margin-top: 20px; } @media only screen and (min-width: 768px) { .first.video .image-video { width: 382px; float: left; } } .first.video .text-video { color: #fff; padding-top: 20px; } @media only screen and (min-width: 768px) { .first.video .text-video { padding-left: 420px; color: #fff; padding-top: 40px } } .page-template-awsbb-microsite .site-inner { padding-top: 20px; } #media_image-6 { padding-top: 0; } #media_image-7 img { border: solid 2px #69E4AF; } .page-template-awsbb-microsite .title-bar-bg { background: #161E2D; background-image: url("https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png"); background-position: center right; background-repeat: no-repeat; margin: 20px 0px 5px 0px; padding: 10px 10px 10px 10px; display: block; } .page-template-awsbb-microsite .title-bar-bg a, .page-template-awsbb-microsite .title-bar-bg a:hover, .page-template-awsbb-microsite .title-bar-bg a:active, .page-template-awsbb-microsite .title-bar-bg a:focus { display: block; color: #fff; text-decoration: none; font-size: 16px; } .page-template-awsbb-microsite .featured-latest-title { margin: 20px 0 10px 0; } .page-template-awsbb-microsite .featured-small { margin: 0 20px 10px 0; } .page-template-awsbb-microsite .featured-small a, .page-template-awsbb-microsite .featured-latest a { color: #333333 !important; font-weight: 600 !important; line-height: 1.3 !important; font-size: 15px; } .page-template-awsbb-microsite .banner { background: url("https://devops.com/wp-content/uploads/2021/06/aws-bugbust-hero-rs.jpg") no-repeat; height: 267px; width: 883px; } .page-template-awsbb-microsite .banner h1{ padding: 130px 20px 0; font-size: 18px; color: #fff; width: auto; } @media only screen and (min-width: 768px) { .page-template-awsbb-microsite .banner h1{ padding: 130px 0 0 50px; font-size: 18px; color: #fff; width: 420px; line-height: 1.4em; } } .page-template-awsbb-microsite .thumb { width: 100px; } .page-template-awsbb-microsite .cartoon { margin: 0 auto 0; text-align: center; } /** CUSTOM AD **/ .custom-ad { padding: 10px; border-top: solid 1px #ccc; border-bottom: solid 1px #ccc; margin: 10px auto; position: relative; display: flex; align-items: center; } .custom-ad-image { float: left; margin-right: 20px; width: 300px; /*height: 169px;*/ overflow: hidden; } .custom-ad-sponsored { font-weight: bold; color: #ff0000; font-style: italic; } .custom-ad-text a { text-decoration: none; color: #000; } .custom-ad-text a:hover { text-decoration: none!important; color: #ff0000; } .clear-custom-ad { clear: both; } /* ROCKET MICRO SITE STYLES & SITE OVERRIDES */ #spotlight .elementor-author-box__avatar img { border-radius: 0; width: auto !important; object-fit: contain; } #pt-cv-view-ffab038v81 .left.carousel-control, #pt-cv-view-ffab038v81 .right.carousel-control { display: none; } #custom_html-66 h4.widget-title { display: none; } .page-template-rocket .widget-title, .rocket-microsite .widget-title, .rocket-analyst-reports-white-papers .widget-title, .rocket-microsite-latest .widget-title, .rocket-oss-tools-for-ibm-z .widget-title, .page-template-page_rocket_archive .widget-title, .category-54621 .widget-title, .category-54622 .widget-title, .category-54623 .widget-title, .category-54624 .widget-title { background-color: #027468; } div#pt-cv-view-4080038g2k.pt-cv-colsys, div#pt-cv-view-ffab038v81.pt-cv-colsys { margin: 0 !important; } div#pt-cv-view-ab46290ema .col-md-6.pt-cv-content-item.pt-cv-1-col, div#pt-cv-view-582ed10nx7 .col-md-12.pt-cv-content-item.pt-cv-1-col, { padding: 0 !important; } .page-template-rocket .addtoany_list, .rocket-microsite .addtoany_list, .rocket-analyst-reports-white-papers .addtoany_list, .rocket-microsite-latest .addtoany_list, .rocket-oss-tools-for-ibm-z .addtoany_list { margin-top: 20px; display: flex; justify-content: center; } #pt-cv-view-16aa7cbary .pt-cv-ifield { display: flex; margin-bottom: 10px !important; } #pt-cv-view-16aa7cbary .pt-cv-thumb-left.cvp-responsive-image { margin-bottom: 0; } #pt-cv-view-16aa7cbary .pt-cv-title { display: flex; align-self: center; align-items: center; margin-bottom: 0; } #pt-cv-view-16aa7cbary .pt-cv-title::before { content: ""; background: url(https://devopsdevwork.wpengine.com/wp-content/uploads/2021/03/podium.svg) no-repeat; height: 20px; width: 20px; margin-right: 10px; display: flex; } .page-template-rocket .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-analyst-reports-white-papers .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite-latest .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-oss-tools-for-ibm-z .su-image-carousel-crop .su-image-carousel-item-content img { object-fit: contain; } #a2a_follow_widget-2 .widget-title { margin-bottom: 10px; } /* END MICROSITE CUSTOMIZATIONS */ /*EDITORIAL CALENDAR LAYOUT FIX */ .elementor-129505 .elementor-element.elementor-element-4ad8438 > .elementor-widget-container { margin: 0px 10px 0px 3px !important; } /* PLUGIN UPDATE FIX 4-3-21 */ .bdt-news-ticker .bdt-news-ticker-label::after { display: none; } .bdt-news-ticker .bdt-news-ticker-content ul li a { padding: 4px 0px 10px 16px !important; } .bdt-news-ticker-controls button { padding: 0; } /* AUTHORS PAGE IMAGE FIX */ .dir-listing{ position: relative; } /** HCL BADGE **/ .pt-cv-custom-fields.pt-cv-ctf-sponsored_content .pt-cv-ctf-value { display: none; } /* SINGLE POST DISPLAY */ .entry-title.sponsored { position: relative; } /* .entry-title.sponsored::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0; height: 35px; width: 35px; display: inline-block; float: left; margin-right: 10px; position: relative; top: 6px; }*/ /*LOW CODE ARCHIVE PAGE */ #pt-cv-view-8d86a75u5j .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -20px; margin-top: -20px; } /* #pt-cv-view-8d86a75u5j .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0; height: 30px; width: 30px; float: right; } */ /*HOME PAGE RIGHT RAIL LATEST */ #pt-cv-view-cee3219m65 .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -30px; } #pt-cv-view-cee3219m65 .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-dgray.svg) no-repeat 0 0; height: 27px; width: 27px; } #pt-cv-view-cee3219m65 .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -13px; } .page-id-140470 .entry-title { display:none !important; } /* This for removing extra padding on microsite widget pages. Find the pt-cv-view-???? specific to the widget and duplicate and copy that. */ div#pt-cv-view-9f39fc9rjh .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; } div#pt-cv-view-117ab7a3lp .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; } div#pt-cv-view-4beabaflfs.pt-cv-view.pt-cv-scrollable.pt-cv-colsys { padding-left: 12px !important; } div#pt-cv-view-4beabaflfs.pt-cv-scrollable .pt-cv-thumbnail { width: 200px; } div#pt-cv-view-62221e39gi.pt-cv-scrollable .pt-cv-thumbnail { width: 200px; } div#pt-cv-view-91a13a0apm .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-98fbdec2ao .col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-3dc2d7dn8d .col-md-6.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; padding-left: 20px !important; } ul#menu-csc-main-navigation.menu.genesis-nav-menu.menu-primary.responsive-menu { padding-bottom:0px !important; } .genesis-nav-menu a:hover { color:#dc2e2a !important; } .genesis-nav-menu a { color:#fff !important; padding: 10px 10px; } .genesis-nav-menu .sub-menu a { color:#fff; } .genesis-nav-menu .sub-menu { background-color: #333333; color: #000; } .genesis-nav-menu .sub-menu a:hover { background-color: #333333; } //////// .page-id-136679 .tribe-mini-calendar-event .list-info { padding-right: 5px; } .page-id-136679 .tribe-events-widget-link { display:none !important; } .page-id-136679 .tribe-events-widget-link2 { display:none !important; } .page-id-138296 .tribe-mini-calendar-event .list-info { padding-right: 5px; } .page-id-138296 .tribe-events-widget-link { display:none !important; } .page-id-138296 .tribe-events-widget-link2 { display:none !important; } div#pt-cv-view-791beb34b0.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-9d06d2e8f4.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-12.pt-cv-ocol div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } .wpforms-confirmation-container-full, div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) { background: #e9e9f1; border: 1px solid #b4d39b; } html,body { width: 100%; height: 100%; margin: 0px; padding: 0px; overflow-x: hidden; } .content { width: 100% !important; display: flex; flex-direction: column; } .after-entry.widget-area { order: 3; } .adjacent-entry-pagination.pagination { order: 2; } aside.sidebar.sidebar-primary { display: none !important; } @media (min-width: 1000px) { .content { width: 70% !important; } aside.sidebar.sidebar-primary { width: 25% !important; display: block !important; } } @media (max-width: 600px) { .content { width: 100% !important; } aside.sidebar.sidebar-primary { width: 100% !important; display: block !important; } } /* @media only screen and (min-width: 1600px) { .pum-overlay, html.pum-open.pum-open-overlay-disabled.pum-open-fixed .pum-container, html.pum-open.pum-open-overlay.pum-open-fixed .pum-container { left: 1800px !important; } } */ .webinarslider { margin-top:10px; } #pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { color: #fff; } #pt-cv-view-2466c21qxe .pt-cv-custom-fields * { color: #fff; } #pt-cv-view-cc5c992qah .pt-cv-custom-fields * { color: #fff; } aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_4.gfield.gsection.newsletter-privacy-policy.field_sublabel_below.field_description_above.gfield_visibility_visible { margin-right:0px !important; padding-right:0px !important; } div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_3.gfield.sidebar-signup-form.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible { margin-right:0px !important; padding-right:0px!important; } div.gform_body ul#gform_fields_39.gform_fields.top_label.form_sublabel_below.description_above li#field_39_6.gfield.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible div.ginput_container.ginput_container_text input#input_39_6.medium { margin-top:12px; } .gform_wrapper.gf_browser_chrome span.address_country { /* margin-top: -2px; */ padding-top: 16px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery { margin-bottom: 0px !important; } aside.sidebar.sidebar-primary.widget-area section#custom_html-17.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery { margin-bottom: 0px !important; } .tribe-events-loop .tribe-events-event-meta { font-size: 12px !important; } .tribe-mini-calendar-event .list-info h2 { font-size: 14px !important; font-weight: bold !important; line-height: 18px !important; margin-top: 0px !important; margin-bottom: 10px !important; } .elementor-129505 .elementor-element.elementor-element-cfcb608 { display:none; } @media only screen and (max-width: 1024px) { .bdt-news-ticker-content { text-overflow: ellipsis !important; white-space: nowrap !important; width: 90%; overflow: hidden !important; } } div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-next.bdt-slidenav { color: #fff; } div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-previous.bdt-slidenav { color: #fff; } .bdt-news-ticker { height: 35px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .bdt-news-ticker-content { padding-top: 3px; } .bdt-flex-middle { align-items: flex-start; } .bdt-grid-collapse { padding-left: 40px !important; padding-top: 3px !important; } .elementor-129505 .elementor-element.elementor-element-e2b0874 > .elementor-widget-container { margin: 0px 12px 0px 1px; padding: 5px 5px 5px 5px; background-image: url(https://3ovyg21t17l11k49tk1oma21-wpengine.netdna-ssl.com/wp-content/uploads/2019/04/DevOpsArrow_892.png); background-position: center right; background-repeat: no-repeat; background-size: auto; } .elementor-129505 .elementor-element.elementor-element-e2b0874.elementor-widget-heading .elementor-heading-title { color: #ffffff; } div#pt-cv-view-e43592dbt0.pt-cv-view.pt-cv-grid.pt-cv-colsys.pt-cv-sharp-buttons div.pt-cv-page div.col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right:0px; } #mega-menu-topmenu > li.mega-menu-megamenu > ul.mega-sub-menu { left:-7px !important; width: 101% !important; } #mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu { left:-7px !important; width: 101% !important; } .su-pullquote-align-right { border-left: 5px solid #dc2e2a !important; } .su-pullquote-align-left { border-right: 5px solid #dc2e2a !important; } .do_blockquote { max-width: 600px; text-align: center !important; margin: 20px !important; padding: 20px !important; font-size: 20px !important; color: #333333; border-left: 4px solid #dc2e2a !important; border-top-left-radius: 30px !important; border-bottom-left-radius: 30px !important; border-right: 4px solid #dc2e2a !important; border-top-right-radius: 30px !important; border-bottom-right-radius: 30px !important; } p#breadcrumbs { margin-bottom: 0px !important; } .header-image .site-title a { background-position: top left !important; } .site-description { padding-bottom: 10px !important; text-align: left; } .site-title { padding-bottom: 5px !important; } div.elementor-widget-container ul li { margin-top: 0px !important; margin-bottom: 12px !important; } @media only screen and (max-width: 1024px) { #pt-cv-view-117ab7a3lp .pt-cv-content { color: #ffffff !important; display: none; } #pt-cv-view-91a13a0apm .pt-cv-content { color: #ffffff !important; display: none; } } @media only screen and (max-width: 768px) { #pt-cv-view-117ab7a3lp .pt-cv-content { color: #ffffff !important; display: none; } #pt-cv-view-91a13a0apm .pt-cv-content { color: #ffffff !important; display: none; } .widget-area.header-widget-area { display: none; } } @media (max-width: 639px) { .bdt-visible\@s { display: flex !important; } .bdt-news-ticker .bdt-news-ticker-content { padding-left: 14px !important } .bdt-news-ticker-label-inner { padding-left: 5px !important; padding-right: 10px !important; } } .widget-title { text-transform: capitalize !important; } .elementor-heading-title { text-transform:none !important; } .single .post img.attachment-post-image { width: 900px; } .single .category-roelbob img.attachment-post-image { width: auto; } .post-118516 .pt-cv-scrollable .pt-cv-cap-w-img { margin-left: 22.0% !important; padding-right: 5%; padding-left: 3%; height: 100%; width: 75%; z-index: -5; } .post-129336 .pt-cv-scrollable .pt-cv-cap-w-img { margin-left: 22.0% !important; padding-right: 5%; padding-left: 3%; height: 100%; width: 75%; z-index: -5; } div.cvp-replayout div.pt-cv-wrapper div#pt-cv-view-8d86a75u5j.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered div.pt-cv-pinmas a._self.pt-cv-href-thumbnail.pt-cv-thumb-right.cvplbd img.pt-cv-thumbnail.img-none.pull-right.cvp-substitute.cvplazy { width: 30% !important; } div#pt-cv-view-117ab7a3lp.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } article.post-15.page.type-page.status-publish.has-post-thumbnail.entry div.entry-content div { float: left !important; } @media (max-width: 768px) { #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item { display: inline-flex; } #mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item { display: inline-flex; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (max-width: 768px) { #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item { display: inline-flex; } #mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item { display: inline-flex; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } .nav-primary { background-color: #333333 !important; } .site-header .wrap { padding-bottom: 0px !important; } #mega-menu-wrap-topmenu { padding-top:25px; height:60px !important; } @media (max-width: 600px) { .nav-primary { display:none !important; } #mega-menu-wrap-primary { display:none !important; } .nav.nav-primary.cloned { display:none; } div#mega-menu-wrap-topmenu.mega-menu-wrap { padding-top:20px; } div.site-container header.site-header div.wrap { padding-bottom: 0px; margin-bottom:0px; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (min-width: 1000px) { h6.pt-cv-title { font-size:15px; } } div.site-inner div.content-sidebar-wrap div.author-header { float: left; width: 900px !important; } div.pt-cv-meta-fields { font-size:13px !important; padding-bottom:7px !important; margin-bottom:0px !important; } #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link { font-weight: 500 !important; color: #fff; } /* @media (min-width: 1000px) { .page-id-129505 .site-container { background-color:#000; } .page-id-129505 .site-header { max-width: 1280px; margin-left: auto; margin-right: auto; padding-top:10px; } .page-id-129505 .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; } .page-id-129505 .site-inner { max-width: 1280px; background-color:white; padding-left:15px !important; } .page-id-129505 .nav-primary { max-width: 1280px; margin-left: auto; margin-right: auto; margin-bottom:0px; } .page-id-129505 .site-inner { max-width: 1280px; } .page-id-129505 .content { width: 900px; } .page-id-129505 .wrap { max-width: 1240px; } .page-id-129505 .sidebar-primary { margin-right:20px; width:300px !important; } */ @media (min-width: 1000px) { .site-header div.wrap div.widget-area.header-widget-area { padding-top: 20px; } .site-container { background-color:#fff; } .site-header { max-width: 100%; margin-left: auto; margin-right: auto; padding-top:0px; } .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; } .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; padding-top: 5px; } .nav-primary { max-width: 100%; margin-left: auto; margin-right: auto; margin-bottom:0px; } .site-inner { max-width: 1280px; } .content { width: 900px; } .wrap { max-width: 1240px; padding-left: 0 !important; } .sidebar-primary { margin-right:20px; width:300px !important; } .site-footer { max-width: 100%; margin-left: auto; margin-right: auto; padding-top: 20px !important; padding-bottom: 0px; } .site-description { padding-left:10px } .title-area { margin-left: -10px !important; padding-top: 20px; } } article.post-123566.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_42.gf_browser_chrome.gform_wrapper form#gform_42 div.gform_footer.top_label input#gform_submit_button_42.gform_button.button { margin-left: 0px !important; } article.post-793.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_39.gf_browser_gecko.gform_wrapper form#gform_39 div.gform_footer.top_label input#gform_submit_button_39.gform_button.button { margin-left: 0px !important; } div.gform_wrapper .gform_footer input[type="submit"] { margin-left: 0px !important; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-wrap { background: #DC2E2A; padding: 10px; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-title { font-weight: bold; background-color: #000; padding: 5px 40px 2px 40px; margin: auto; text-transform: uppercase !important; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gform_wrapper_21 { background: #DC2E2A; border: 0 none; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gfield_description_21_4 a { color: #000; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .gform_footer input[type="submit"] { background-color: #000; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button { margin-left: 0px !important; margin-right: 0px !important; } section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button { margin-left: auto !important; margin-right: auto !important; } div.gform_wrapper .gform_footer input[type="submit"] { margin: 0px 0px 0px; } @media (max-width: 768px) { body.downloads-template-default.single.single-downloads .alignright { display:block !important; float:none !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { margin-left: 0px !important; margin-right: 0px !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-6.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-1-col.shuffle-item.filtered { padding-left: 0px; padding-right: 0px; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { margin-right: 0px !important; } } @media (max-width: 1240px) { #mega-menu-wrap-topmenu #mega-menu-topmenu { margin-left:20px !important; padding-right: 10px !important; } #mega-menu-wrap-primary { margin-left:20px !important; } } @media (min-width: 1240px) { .site-header .widget-area { width: 800px !important; } } .title-area { margin-left: 10px !important; } @media (min-width: 1240px) { .title-area { margin-left: -10px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-primary { margin-left:10px !important; } } ul.mega-sub-menu { z-index: 9999999 !important; } .post-118516 .pt-cv-scrollable .pt-cv-cap-w-img { width: 100% !important; margin-left: 190px !important; padding-right: 230px !important; } .post-118516 .pt-cv-wrapper .col-xs-6 { width: 100% !important; } @media (max-width: 600px) { .post-118516 .pt-cv-wrapper .col-xs-6 { width: 50% !important; } } .pum-content .pt-cv-wrapper .carousel-control .glyphicon { width: 0px; height: 30px; margin-top: 108px; margin-right: 20px; margin-left: 0px; } .pum-theme-126813 .pum-title, .pum-theme-default-theme .pum-title { text-align: center; font-size: 16px; } .pum-content .pt-cv-textbelow .pt-cv-carousel-caption { position: relative; margin: 0; top: 0; left: 0; right: 0; padding-top: 0px; padding-bottom: 5px; color: inherit; } .pum-content img { margin-bottom: 10px !important; } .pum-container { } .pum-theme-126813 .pum-container, .pum-theme-default-theme .pum-container { border: 0px !important; box-shadow: none !important; padding-right: 20px !important; } </style> <style type="text/css">/** Mega Menu CSS: fs **/</style> </head> <body class="archive author author-mitchellashley author-2499 tribe-no-js mega-menu-topmenu custom-header header-image header-full-width content-sidebar not-guest-author elementor-default elementor-kit-134475" itemscope itemtype="https://schema.org/WebPage"><div class="header-ad" class="widget-area"><section id="text-101" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="new-header"> <div class="logo-area"><a href="https://devops.com/"><img decoding="async" src="https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png" /></a></div> <div class="widget-area header-widget-area"><!-- /80877830/DO_header-right --></p> <div id="div-gpt-ad-1494599233432-0" style="min-width: 320px; min-height: 50px;"><script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494599233432-0'); }); </script></div> </div> <p><!-- end widget area--></p> </div> <p><!-- end header--></p> </div> </div></section> <section id="custom_html-92" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><h1 class="newsletter"> Sign up for our newsletter!<br /><span class="news-text">Stay informed on the latest DevOps news</span> </h1> <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script> <script> hbspt.forms.create({ portalId: "1628905", formId: "d9434e0c-c51c-4ccd-9ea5-54509a040161" }); </script></div></div></section> </div><!-- /80877830/DevOps.com_OOP --> <div id='div-gpt-ad-1494947147258-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494947147258-0'); }); </script> </div><div class="site-container"><header class="site-header" itemscope itemtype="https://schema.org/WPHeader"><div class="wrap"><div class="title-area"><p class="site-title" itemprop="headline"><a href="https://devops.com/">DevOps.com</a></p></div><div id="mega-menu-wrap-topmenu" class="mega-menu-wrap"><div class="mega-menu-toggle"><div class="mega-toggle-blocks-left"><div class='mega-toggle-block mega-menu-toggle-block mega-toggle-block-1' id='mega-toggle-block-1' tabindex='0'><span class='mega-toggle-label' role='button' aria-expanded='false'><span class='mega-toggle-label-closed'></span><span class='mega-toggle-label-open'></span></span></div><div class='mega-toggle-block mega-spacer-block mega-toggle-block-2' id='mega-toggle-block-2'></div><div class='mega-toggle-block mega-search-block mega-toggle-block-3' id='mega-toggle-block-3'><div class='mega-search-wrap'><form class='mega-search expand-to-right mega-search-closed' action='https://devops.com/'> <span class='dashicons dashicons-search search-icon'></span> <input type='submit' value='Search'> <input type='text' aria-label='Search' data-placeholder='Search' name='s' /> </form></div></div></div><div class="mega-toggle-blocks-center"></div><div class="mega-toggle-blocks-right"></div></div><ul id="mega-menu-topmenu" class="mega-menu max-mega-menu mega-menu-horizontal mega-no-js" data-event="hover_intent" data-effect="fade_up" data-effect-speed="200" data-effect-mobile="disabled" data-effect-speed-mobile="0" data-panel-width=".wrap" data-mobile-force-width="body" data-second-click="close" data-document-click="collapse" data-vertical-behaviour="accordion" data-breakpoint="600" data-unbind="true" data-mobile-state="collapse_all" data-mobile-direction="vertical" data-hover-intent-timeout="300" data-hover-intent-interval="100" data-overlay-desktop="false" data-overlay-mobile="false"><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129359' id='mega-menu-item-129359'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Latest<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129361' id='mega-menu-item-129361'><a class="mega-menu-link" href="https://devops.com/category/blogs/">Articles</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129362' id='mega-menu-item-129362'><a class="mega-menu-link" href="https://devops.com/category/features/">Features</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-130105' id='mega-menu-item-130105'><a class="mega-menu-link" href="https://devops.com/most-read/">Most Read</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129363' id='mega-menu-item-129363'><a class="mega-menu-link" href="https://devops.com/category/news/">News</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129364' id='mega-menu-item-129364'><a class="mega-menu-link" href="https://devops.com/category/press-releases/">News Releases</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-hide-on-desktop mega-menu-item-129549' id='mega-menu-item-129549'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Topics<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129550' id='mega-menu-item-129550'><a class="mega-menu-link" href="https://devops.com/category/blogs/ai/">AI</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129551' id='mega-menu-item-129551'><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-delivery/">Continuous Delivery</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129552' id='mega-menu-item-129552'><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-testing/">Continuous Testing</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129554' id='mega-menu-item-129554'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-in-the-cloud/">Cloud</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129553' id='mega-menu-item-129553'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-culture/">Culture</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-155962' id='mega-menu-item-155962'><a class="mega-menu-link" href="https://devops.com/category/blogs/data-ops/">DataOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129557' id='mega-menu-item-129557'><a class="mega-menu-link" href="https://devops.com/category/blogs/devsecops/">DevSecOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129558' id='mega-menu-item-129558'><a class="mega-menu-link" href="https://devops.com/category/blogs/enterprise-devops/">Enterprise DevOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129559' id='mega-menu-item-129559'><a class="mega-menu-link" href="https://devops.com/category/blogs/leadership-suite/">Leadership Suite</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129555' id='mega-menu-item-129555'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-practice/">DevOps Practice</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129560' id='mega-menu-item-129560'><a class="mega-menu-link" href="https://devops.com/category/blogs/roelbob/">ROELBOB</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129556' id='mega-menu-item-129556'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-toolbox/">DevOps Toolbox</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-134328' id='mega-menu-item-134328'><a class="mega-menu-link" href="https://devops.com/it-as-code/">IT as Code</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-148119' id='mega-menu-item-148119'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Videos/Podcasts<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156208' id='mega-menu-item-156208'><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157038' id='mega-menu-item-157038'><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-148118' id='mega-menu-item-148118'><a class="mega-menu-link" href="https://devops.com/devops-unbound/">DevOps Unbound</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129366' id='mega-menu-item-129366'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Webinars<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129367' id='mega-menu-item-129367'><a class="mega-menu-link" href="https://devops.com/webinars/">Upcoming</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-159824' id='mega-menu-item-159824'><a class="mega-menu-link" href="https://devops.com/webinars/month/">Calendar View</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-129368' id='mega-menu-item-129368'><a class="mega-menu-link" href="https://devops.com/on-demand-webinars/">On-Demand Webinars</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-129369' id='mega-menu-item-129369'><a class="mega-menu-link" href="https://devops.com/library" tabindex="0">Library</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129373' id='mega-menu-item-129373'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Events<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143358' id='mega-menu-item-143358'><a class="mega-menu-link" href="https://www.techstrongevents.com/">Upcoming Events</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143359' id='mega-menu-item-143359'><a class="mega-menu-link" href="https://www.techstrongevents.com/virtual/recent-events">On-Demand Events</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-158236' id='mega-menu-item-158236'><a class="mega-menu-link" href="https://devops.com/category/sponsored-content" tabindex="0">Sponsored Content</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129382' id='mega-menu-item-129382'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Related Sites<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129383' id='mega-menu-item-129383'><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com">Techstrong Group</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129384' id='mega-menu-item-129384'><a target="_blank" class="mega-menu-link" href="https://cloudnativenow.com/">Cloud Native Now</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129385' id='mega-menu-item-129385'><a target="_blank" class="mega-menu-link" href="https://securityboulevard.com">Security Boulevard</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-174294' id='mega-menu-item-174294'><a class="mega-menu-link" href="https://platformengineering.com/">Platform Engineering</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129386' id='mega-menu-item-129386'><a target="_blank" class="mega-menu-link" href="https://techstrongresearch.com/">Techstrong Research</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129391' id='mega-menu-item-129391'><a target="_blank" class="mega-menu-link" href="https://devopsdozen.com">DevOps Dozen</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129388' id='mega-menu-item-129388'><a target="_blank" class="mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ">DevOps TV</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156209' id='mega-menu-item-156209'><a target="_blank" class="mega-menu-link" href="https://techstrong.tv/">Techstrong TV</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129387' id='mega-menu-item-129387'><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157037' id='mega-menu-item-157037'><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-134553' id='mega-menu-item-134553'><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com/assets/techstrong-media-kit.pdf" tabindex="0">Media Kit</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-align-bottom-left mega-menu-flyout mega-menu-item-146059' id='mega-menu-item-146059'><a class="mega-menu-link" href="https://devops.com/about/" tabindex="0">About</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-155727' id='mega-menu-item-155727'><a class="mega-menu-link" href="https://techstronggroup.com/tellmemore/" tabindex="0">Sponsor</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-has-icon mega-icon-left mega-hide-text mega-item-align-right mega-menu-item-129582' id='mega-menu-item-129582'><div class='mega-search-wrap mega-static'> <form class='mega-search mega-search-open' role='search' action='https://devops.com/'><input type='submit' value='Search'><input type='text' role='searchbox' id='mega-search-129582' aria-label='Search...' name='s' autocomplete='off' placeholder='Search...' /><span tabindex='0' role='button' class='dashicons dashicons-search search-icon' aria-controls='mega-search-129582' aria-label='Search'></span> </form></div></li></ul></div></div></header><nav class="nav-primary" aria-label="Main" itemscope itemtype="https://schema.org/SiteNavigationElement"><div class="wrap"><ul id="menu-csc-main-navigation" class="menu genesis-nav-menu menu-primary"><li id="menu-item-129432" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129432"><a href="https://devops.com/category/blogs/ai/" itemprop="url"><span itemprop="name">AI</span></a></li> <li id="menu-item-2454" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2454"><a href="https://devops.com/category/blogs/devops-in-the-cloud/" itemprop="url"><span itemprop="name">Cloud</span></a></li> <li id="menu-item-30251" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-30251"><a href="https://devops.com/category/blogs/continuous-delivery/" itemprop="url"><span itemprop="name">CI/CD</span></a></li> <li id="menu-item-129371" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-129371"><a href="https://devops.com/category/blogs/continuous-testing/" itemprop="url"><span itemprop="name">Continuous Testing</span></a></li> <li id="menu-item-155963" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-155963"><a href="https://devops.com/category/blogs/data-ops/" itemprop="url"><span itemprop="name">DataOps</span></a></li> <li id="menu-item-129349" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129349"><a href="https://devops.com/category/blogs/devsecops/" itemprop="url"><span itemprop="name">DevSecOps</span></a></li> <li id="menu-item-154132" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-154132"><a href="https://devops.com/devops-onramp/" itemprop="url"><span itemprop="name">DevOps Onramp</span></a></li> <li id="menu-item-157571" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-157571"><a href="https://devops.com/category/blogs/platform-engineering" itemprop="url"><span itemprop="name">Platform Engineering</span></a></li> <li id="menu-item-141617" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-141617"><a href="https://devops.com/category/blogs/low-code-no-code/" itemprop="url"><span itemprop="name">Low-Code/No-Code</span></a></li> <li id="menu-item-134327" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-134327"><a href="https://devops.com/it-as-code/" itemprop="url"><span itemprop="name">IT as Code</span></a></li> <li id="menu-item-129563" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-129563"><a href="#" itemprop="url"><span itemprop="name">More</span></a> <ul class="sub-menu"> <li id="menu-item-169899" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-169899"><a href="https://devops.com/aws-serverless/" itemprop="url"><span itemprop="name">Serverless on AWS</span></a></li> <li id="menu-item-166009" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-166009"><a href="https://devops.com/builder-community-hub/" itemprop="url"><span itemprop="name">Builder Community Hub</span></a></li> <li id="menu-item-129564" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129564"><a href="https://devops.com/category/blogs/application-performance-managementmonitoring/" itemprop="url"><span itemprop="name">Application Performance Management/Monitoring</span></a></li> <li id="menu-item-129546" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129546"><a href="https://devops.com/category/blogs/devops-culture/" itemprop="url"><span itemprop="name">Culture</span></a></li> <li id="menu-item-129547" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129547"><a href="https://devops.com/category/blogs/enterprise-devops/" itemprop="url"><span itemprop="name">Enterprise DevOps</span></a></li> <li id="menu-item-117163" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-117163"><a href="https://devops.com/category/blogs/roelbob/" itemprop="url"><span itemprop="name">ROELBOB</span></a></li> </ul> </li> </ul></div></nav><div class="site-inner"><div class="content-sidebar-wrap"><div class="author-header"><div class="author-image"><img alt='' src='https://secure.gravatar.com/avatar/6b1d210c1118d60381f47f945e22703a?s=96&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6b1d210c1118d60381f47f945e22703a?s=192&#038;d=mm&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' decoding='async'/></div><div class="author-info"><h1>Mitch Ashley</h1><div class="author-social"><a href="https://devops.com/author/mitchellashley/feed/" class="fa fa-rss"></span></a><a href="mailto:mitchell@devops.com" class="fa fa-envelope-o"></span></a></div><div class="author-description"></div><div class="author-description"></div></div><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-pinterest pt-cv-colsys pt-cv-nolf pt-cv-border pt-cv-no-bb pt-cv-pgloadmore pt-cv-reused" id="pt-cv-view-18214d4op9"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="175755"><div class='pt-cv-pinmas'><a href="https://devops.com/internet-performance-monitoring-wins-the-day/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img fetchpriority="high" width="740" height="332" src="https://devops.com/wp-content/uploads/2024/10/typing-740x332.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="typing" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/internet-performance-monitoring-wins-the-day/" class="_self cvplbd" target="_self" >Internet Performance Monitoring Wins the Day</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2025-02-19T07:02:05-05:00">February 19, 2025</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/ai/' title='ai' class='pt-cv-tax-ai'>ai</a>, <a href='https://devops.com/tag/catchpoint/' title='catchpoint' class='pt-cv-tax-catchpoint'>catchpoint</a>, <a href='https://devops.com/tag/internet-performance/' title='internet performance' class='pt-cv-tax-internet-performance'>internet performance</a></span></div> <div class="pt-cv-content">We’ve spent years refining our ability to monitor systems, applications and networks, yet businesses still struggle with performance issues. The problem isn’t a lack of data—it’s too much of it. IT, network ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="175729"><div class='pt-cv-pinmas'><a href="https://devops.com/2025-predictions-for-devops-and-application-development/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img width="740" height="330" src="https://devops.com/wp-content/uploads/2023/11/devops-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="Broadcom, VCF, software delivery, devops," decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/2025-predictions-for-devops-and-application-development/" class="_self cvplbd" target="_self" >2025 Predictions for DevOps and Application Development</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2025-02-18T09:00:40-05:00">February 18, 2025</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/ai/' title='ai' class='pt-cv-tax-ai'>ai</a>, <a href='https://devops.com/tag/application-development/' title='application development' class='pt-cv-tax-application-development'>application development</a>, <a href='https://devops.com/tag/devops/' title='devops' class='pt-cv-tax-devops'>devops</a>, <a href='https://devops.com/tag/the-futurum-group/' title='The Futurum Group' class='pt-cv-tax-the-futurum-group'>The Futurum Group</a></span></div> <div class="pt-cv-content">Hi everyone. I'm Mitch Ashley, VP and practice lead for DevOps and application development with the Futurum Group. These are my predictions for 2025.  First, 2025 is go-time for AI in production ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="172986"><div class='pt-cv-pinmas'><a href="https://devops.com/bringing-devops-to-the-edge/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img width="740" height="336" src="https://devops.com/wp-content/uploads/2024/04/typing-on-keyboard-thomas-lefebvre-gp8BLyaTaA0-unsplash-740x336.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="someone typing on a keyboard, DevOps news" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/bringing-devops-to-the-edge/" class="_self cvplbd" target="_self" >Bringing DevOps to the Edge</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-09-17T18:19:14-04:00">September 17, 2024</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/devops/' title='devops' class='pt-cv-tax-devops'>devops</a>, <a href='https://devops.com/tag/edge-devices/' title='edge devices' class='pt-cv-tax-edge-devices'>edge devices</a>, <a href='https://devops.com/tag/esper/' title='Esper' class='pt-cv-tax-esper'>Esper</a></span></div> <div class="pt-cv-content">With networks rapidly expanding through edge device proliferation, managing these devices is becoming more arduous. I had the opportunity to sit down with Sudhir Reddy, CTO of Esper, to discuss the growth ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="172649"><div class='pt-cv-pinmas'><a href="https://devops.com/devops-must-learn-from-crowdstrikes-outage/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2024/09/chuttersnap-9cCeS9Sg6nU-unsplash-2-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="DevOps Must Learn From CrowdStrike&#039;s Outage" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/devops-must-learn-from-crowdstrikes-outage/" class="_self cvplbd" target="_self" >DevOps Must Learn From CrowdStrike&#8217;s Outage</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-09-01T01:01:00-04:00">September 1, 2024</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/cicd/' title='CI/CD' class='pt-cv-tax-cicd'>CI/CD</a>, <a href='https://devops.com/tag/software-updates/' title='software updates' class='pt-cv-tax-software-updates'>software updates</a></span></div> <div class="pt-cv-content">The CrowdStrike outage on July 19, 2024, is a stark reminder of DevOps practices’ critical role in deploying updates to maintain the security and reliability of applications and systems. While the underlying ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="169711"><div class='pt-cv-pinmas'><a href="https://devops.com/devops-unbound-special-edition-from-kubecon-paris-2024-devops-unbound-ep-44/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="635" height="320" src="https://devops.com/wp-content/uploads/2024/03/do-ep42-1.png" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="DevOps Unbound Special Edition from KubeCon Paris 2024 - DevOps Unbound EP 44" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/devops-unbound-special-edition-from-kubecon-paris-2024-devops-unbound-ep-44/" class="_self cvplbd" target="_self" >DevOps Unbound Special Edition from KubeCon Paris 2024 &#8211; DevOps Unbound EP 44</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-04-11T13:33:17-04:00">April 11, 2024</time></span></div> <div class="pt-cv-content">During this special KubeCon + CloudNativeCon Europe 2023 edition of DevOps Unbound , Alan Shimel and Mitch Ashley are joined by Martin Klaus, Tricentis VP Product Marketing. The trio discuss the progress ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="168908"><div class='pt-cv-pinmas'><a href="https://devops.com/aisecops-expanding-devsecops-to-secure-ai-and-ml/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2022/08/AIsecurity-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="SAST, DevSecOps, Tidelift, GenAI, software, security, devsecops, AI, AISecOps Digital.ai transformation DevOps security mobile DevSecOps Dynatrace Extends Reach of Application Security Module" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/aisecops-expanding-devsecops-to-secure-ai-and-ml/" class="_self cvplbd" target="_self" >AISecOps: Expanding DevSecOps to Secure AI and ML</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-03-06T09:30:42-05:00">March 6, 2024</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/ai/' title='ai' class='pt-cv-tax-ai'>ai</a>, <a href='https://devops.com/tag/code-security/' title='code security' class='pt-cv-tax-code-security'>code security</a>, <a href='https://devops.com/tag/devsecops/' title='devsecops' class='pt-cv-tax-devsecops'>devsecops</a>, <a href='https://devops.com/tag/generative-ai/' title='generative AI' class='pt-cv-tax-generative-ai'>generative AI</a>, <a href='https://devops.com/tag/security/' title='security' class='pt-cv-tax-security'>security</a></span></div> <div class="pt-cv-content">AISecOps, the application of DevSecOps principles to AI/ML and generative AI, means integrating security into models' life cycles ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="168913"><div class='pt-cv-pinmas'><a href="https://devops.com/techstrong-research-pulsemeter-caching-transforms-application-performance/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2020/04/uptime-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="data, database, policies, PaC, database, metrics, observability, Caching AWS Apache Druid InfluxData time-series database New Relic" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/techstrong-research-pulsemeter-caching-transforms-application-performance/" class="_self cvplbd" target="_self" >Techstrong Research PulseMeter: Caching Transforms Application Performance</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-03-05T14:50:50-05:00">March 5, 2024</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/application-performance/' title='application performance' class='pt-cv-tax-application-performance'>application performance</a>, <a href='https://devops.com/tag/caching/' title='Caching' class='pt-cv-tax-caching'>Caching</a>, <a href='https://devops.com/tag/database/' title='database' class='pt-cv-tax-database'>database</a>, <a href='https://devops.com/tag/digital-transformation/' title='digital transformation' class='pt-cv-tax-digital-transformation'>digital transformation</a>, <a href='https://devops.com/tag/redis/' title='Redis' class='pt-cv-tax-redis'>Redis</a>, <a href='https://devops.com/tag/techstrong-research/' title='Techstrong Research' class='pt-cv-tax-techstrong-research'>Techstrong Research</a></span></div> <div class="pt-cv-content">The Techstrong Research PulseMeter report underscores the critical role of database caching in supporting real-time applications and digital experience delivery ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="168639"><div class='pt-cv-pinmas'><a href="https://devops.com/techstrong-research-combatting-ci-cd-security-anti-patterns/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2020/12/mapping-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="ADM Palo Alto Networks Mendix CI/CD dependency AppSmith impact mapping" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/techstrong-research-combatting-ci-cd-security-anti-patterns/" class="_self cvplbd" target="_self" >Techstrong Research: Combatting CI/CD Security Anti-Patterns</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2024-02-21T08:30:01-05:00">February 21, 2024</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/cicd/' title='CI/CD' class='pt-cv-tax-cicd'>CI/CD</a>, <a href='https://devops.com/tag/continuous-delivery/' title='continuous delivery' class='pt-cv-tax-continuous-delivery'>continuous delivery</a>, <a href='https://devops.com/tag/continuous-integration/' title='continuous integration' class='pt-cv-tax-continuous-integration'>continuous integration</a>, <a href='https://devops.com/tag/devsecops/' title='devsecops' class='pt-cv-tax-devsecops'>devsecops</a>, <a href='https://devops.com/tag/security/' title='security' class='pt-cv-tax-security'>security</a>, <a href='https://devops.com/tag/software-supply-chain-security/' title='Software Supply Chain Security' class='pt-cv-tax-software-supply-chain-security'>Software Supply Chain Security</a>, <a href='https://devops.com/tag/techstrong-research/' title='Techstrong Research' class='pt-cv-tax-techstrong-research'>Techstrong Research</a></span></div> <div class="pt-cv-content">Techstrong Research finds the imperative to secure the software supply chain and CI/CD pipelines is undeniable and urgent ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="166961"><div class='pt-cv-pinmas'><a href="https://devops.com/kubecon-2023-developer-productivity-and-platform-engineering/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2023/07/Platform-Architecture770x330-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="platform engineering" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/kubecon-2023-developer-productivity-and-platform-engineering/" class="_self cvplbd" target="_self" >KubeCon 2023: Developer Productivity and Platform Engineering</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2023-12-01T17:19:21-05:00">December 1, 2023</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/developer-platforms/' title='developer platforms' class='pt-cv-tax-developer-platforms'>developer platforms</a>, <a href='https://devops.com/tag/developer-tools/' title='developer tools' class='pt-cv-tax-developer-tools'>developer tools</a>, <a href='https://devops.com/tag/kubecon/' title='KubeCon' class='pt-cv-tax-kubecon'>KubeCon</a>, <a href='https://devops.com/tag/platform-engineering/' title='platform engineering' class='pt-cv-tax-platform-engineering'>platform engineering</a>, <a href='https://devops.com/tag/pure-storage/' title='Pure Storage' class='pt-cv-tax-pure-storage'>Pure Storage</a></span></div> <div class="pt-cv-content">Venkat Ramakrishnan talks with Mitch Ashley about platform engineering from Kubecon + CloudNativeCon 2023 ...</div></div></div> <div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-2-col" data-pid="166956"><div class='pt-cv-pinmas'><a href="https://devops.com/kubecon-2023-whats-next-for-managed-deployment/" class="_self pt-cv-href-thumbnail pt-cv-thumb-right cvplbd" target="_self" ><img loading="lazy" width="740" height="330" src="https://devops.com/wp-content/uploads/2020/11/delivery-740x330.jpg" class="pt-cv-thumbnail img-none pull-right skip-lazy " alt="delivery, devops, continuous, on-premises continuous delivery" decoding="async" /></a> <h4 class="pt-cv-title"><a href="https://devops.com/kubecon-2023-whats-next-for-managed-deployment/" class="_self cvplbd" target="_self" >KubeCon 2023: What&#8217;s Next for Managed Deployment</a></h4> <div class="pt-cv-meta-fields"><span class="entry-date"> <time datetime="2023-11-29T07:19:34-05:00">November 29, 2023</time></span><span> |</span><span class="terms"> <a href='https://devops.com/tag/armory/' title='Armory' class='pt-cv-tax-armory'>Armory</a>, <a href='https://devops.com/tag/cicd/' title='CI/CD' class='pt-cv-tax-cicd'>CI/CD</a>, <a href='https://devops.com/tag/continuous-delivery/' title='continuous delivery' class='pt-cv-tax-continuous-delivery'>continuous delivery</a>, <a href='https://devops.com/tag/kubecon/' title='KubeCon' class='pt-cv-tax-kubecon'>KubeCon</a></span></div> <div class="pt-cv-content">Mitch Ashley talks with Armory's Adam Frank about the latest innovations in continuous delivery ...</div></div></div></div></div> <div class="text-center pt-cv-pagination-wrapper"><a href='https://devops.com/author/mitchellashley/?_page=2' onclick='event.preventDefault()' class="pt-cv-more btn btn-primary btn-sm" data-totalpages="12" data-nextpages="2" data-sid="18214d4op9" data-unid="1f108c1ba65fecdb9384412b956a2a86" data-isblock="" data-postid="">Show More <span class="caret"></span></a><img loading="lazy" width="15" height="15" class="pt-cv-spinner" alt="Loading..." src="data:image/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM/DJKZNLND/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==" /><div class="clear pt-cv-clear-pagination"></div></div></div> <style type="text/css" id="pt-cv-inline-style-05a641cl4d">#pt-cv-view-18214d4op9 .pt-cv-content-item { padding-bottom: 10px !important; padding-left: 0px !important; } #pt-cv-view-18214d4op9 { margin-left: 0px !important; } #pt-cv-view-18214d4op9 .pt-cv-pinmas { padding-left: 10px !important; } #pt-cv-view-18214d4op9 .pt-cv-title a, #pt-cv-view-18214d4op9 .panel-title { color: #333333 !important; font-weight: 600 !important; } #pt-cv-view-18214d4op9 .pt-cv-title a:hover, #pt-cv-view-18214d4op9 .panel-title:hover { color: #dc2e2a !important; } #pt-cv-view-18214d4op9 .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-18214d4op9 .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-18214d4op9 + .pt-cv-pagination-wrapper .pt-cv-more , #pt-cv-view-18214d4op9 + .pt-cv-pagination-wrapper .pagination .active a, .pt-cv-pagination[data-sid='18214d4op9'] .active a { color: #ffffff !important; background-color: #dc2e2a !important; }</style> </div><main class="content"><div class="archive-description author-archive-description author-description"><h1 class="archive-title">Mitch Ashley</h1></div></main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" itemscope itemtype="https://schema.org/WPSideBar"><section id="custom_html-55" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong TV</h4> <div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://vimeo.com/event/4046309/embed?muted=1" frameborder="0" allow="autoplay; fullscreen" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div><div style="font-style:italic;font-size: 12px;text-align:center;">Click full-screen to enable volume control</div> <center><a href="https://techstrong.tv/">Watch latest episodes and shows</a> </center></div></div></section> <section id="custom_html-88" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Cloud Field Day</h4> <div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://vimeo.com/event/4565377/embed/interaction" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div></div></div></section> <section id="custom_html-56" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Upcoming Webinars</h4> <div class="textwidget custom-html-widget"><center><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-99c4ca3njg"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="35acf9ehk2" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000> <div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="175194"><a href="https://devops.com/webinars/database-devops-fast-database-changes-with-performance-and-compliance/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img loading="lazy" width="1540" height="660" src="https://devops.com/wp-content/uploads/2025/01/2025.03.06-Harness-LandingPage-1540x660-1.png" class="pt-cv-thumbnail img-none" alt="Database DevOps: Fast Database Changes with Performance and Compliance" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Tuesday, March 18, 2025 - 10:00 am EDT</div></div></div></div></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="175720"><a href="https://devops.com/webinars/laying-the-groundwork-for-ai-agent-development/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img loading="lazy" width="1540" height="660" src="https://devops.com/wp-content/uploads/2025/02/2025.03.20-Tricentis-1540x660-DO-1.png" class="pt-cv-thumbnail img-none" alt="Laying the groundwork for AI agent development" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Thursday, March 20, 2025 - 11:00 am EDT</div></div></div></div></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174744"><a href="https://devops.com/webinars/devsecops-friends-webinar-series-the-one-where-devsecops-meets-business/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img loading="lazy" width="1540" height="660" src="https://devops.com/wp-content/uploads/2024/12/2025.03.18-Opentext-LandingPage-1540x660-1.png" class="pt-cv-thumbnail img-none" alt="DevSecOps “Friends”, Webinar Series: The one where DevSecOps meets business" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Monday, March 24, 2025 - 11:00 am EDT</div></div></div></div></div></div></div></div></div> </div></div></div></div> <style type="text/css" id="pt-cv-inline-style-13d1e3dr8a">#pt-cv-view-99c4ca3njg .pt-cv-content-item { padding-left: 0px !important; } #pt-cv-view-99c4ca3njg { margin-left: 0px !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { padding-left: 0px !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { left : 0px !important } #pt-cv-view-99c4ca3njg .carousel-control.left { right : 35px } #pt-cv-view-99c4ca3njg .row {margin: 0 0 !important} #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; } #pt-cv-view-99c4ca3njg .pt-cv-title a, #pt-cv-view-99c4ca3njg .panel-title { font-size: 20px !important; line-height: 1.3 !important; font-weight: 600 !important; } #pt-cv-view-99c4ca3njg .pt-cv-content , #pt-cv-view-99c4ca3njg .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; } #pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; } @media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }} @media (max-width: 767px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }} #pt-cv-view-99c4ca3njg .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; } #pt-cv-view-99c4ca3njg .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-99c4ca3njg { text-align: center; }</style> </center></div></div></section> <section id="custom_html-93" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><a href="https://devops.com/apollo-graphql-hub/"><img loading="lazy" class="alignnone size-full wp-image-171388" src="https://devops.com/wp-content/uploads/2025/01/Copy-of-Banner-300x250-1.png" alt="" width="300" height="250" /></a></div></div></section> <section id="custom_html-90" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong Gang Podcast</h4> <div class="textwidget custom-html-widget"><iframe title="Techstrong Gang" allowtransparency="true" height="315" width="100%" style="border: none; min-width: min(100%, 430px);height:315px;" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=kurfj-114396d-pbblog-playlist&pbad=0&share=1&download=0&rtl=0&fonts=Arial&skin=1b1b1b&font-color=auto&logo_link=episode_page&order=episodic&limit=10&filter=all&ss=a713390a017602015775e868a2cf26b0&btn-skin=ff6d00&size=315" loading="lazy" allowfullscreen=""></iframe></div></div></section> <section id="custom_html-82" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">DevOps Unbound Podcast</h4> <div class="textwidget custom-html-widget"><iframe title="DevOps Unbound" allowtransparency="true" height="250" width="100%" style="border: none; min-width: min(100%, 430px);height:250px;" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=m23s4-f1fd13-pbblog-playlist&pbad=0&share=1&download=0&rtl=0&fonts=Arial&skin=1&font-color=auto&logo_link=episode_page&order=episodic&limit=10&filter=all&ss=a713390a017602015775e868a2cf26b0&btn-skin=1b1b1b&size=250" loading="lazy" allowfullscreen=""></iframe></div></div></section> <section id="custom_html-77" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- Right Side Position 1 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="3999233378" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div></div></section> <section id="custom_html-75" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Press Releases</h4> <div class="textwidget custom-html-widget"><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-8990877amd"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="7db82cfuik" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000> <div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="176095"><a href="https://devops.com/ine-security-alert-using-ai-driven-cybersecurity-training-to-counter-emerging-threats/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img loading="lazy" width="1200" height="720" src="https://devops.com/wp-content/uploads/2025/03/Cyberwire_Logo_-_INE_Security_-_1200x720px_1741804518zn7HZYWsc7.jpg" class="pt-cv-thumbnail img-none" alt="INE Security Alert: Using AI-Driven Cybersecurity Training to Counter Emerging Threats" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/ine-security-alert-using-ai-driven-cybersecurity-training-to-counter-emerging-threats/" class="_self cvplbd" target="_self" >INE Security Alert: Using AI-Driven Cybersecurity Training to Counter Emerging Threats</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="176082"><a href="https://devops.com/aptori-now-on-google-cloud-marketplace-for-ai-powered-security-and-automated-risk-remediation/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img loading="lazy" width="1200" height="720" src="https://devops.com/wp-content/uploads/2025/03/Aptori_1741670324VnUrKFt5iE.jpg" class="pt-cv-thumbnail img-none" alt="Aptori Now on Google Cloud Marketplace for AI-Powered Security and Automated Risk Remediation" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/aptori-now-on-google-cloud-marketplace-for-ai-powered-security-and-automated-risk-remediation/" class="_self cvplbd" target="_self" >Aptori Now on Google Cloud Marketplace for AI-Powered Security and Automated Risk Remediation</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="175974"><a href="https://devops.com/hunters-announces-new-ai-capabilities-with-pathfinder-ai-for-smarter-soc-automation/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img loading="lazy" width="1200" height="700" src="https://devops.com/wp-content/uploads/2025/03/Announcment_image_1741054367FqFQtifNpv.jpg" class="pt-cv-thumbnail img-none" alt="Hunters Announces New AI Capabilities with Pathfinder AI for Smarter SOC Automation" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/hunters-announces-new-ai-capabilities-with-pathfinder-ai-for-smarter-soc-automation/" class="_self cvplbd" target="_self" >Hunters Announces New AI Capabilities with Pathfinder AI for Smarter SOC Automation</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="175955"><a href="https://devops.com/bubba-ai-inc-is-launching-comp-ai-to-help-100000-startups-get-soc-2-compliant-by-2032/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img loading="lazy" width="1200" height="720" src="https://devops.com/wp-content/uploads/2025/03/Comp_AI_OG_Image_2_1_1741030282ZTdajhAN0X.jpg" class="pt-cv-thumbnail img-none" alt="Bubba AI, Inc. is launching Comp AI to help 100,000 startups get SOC 2 compliant by 2032." decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/bubba-ai-inc-is-launching-comp-ai-to-help-100000-startups-get-soc-2-compliant-by-2032/" class="_self cvplbd" target="_self" >Bubba AI, Inc. is launching Comp AI to help 100,000 startups get SOC 2 compliant by 2032.</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="175820"><a href="https://devops.com/ine-secures-spot-in-g2s-2025-top-50-education-software-rankings/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img loading="lazy" width="1200" height="628" src="https://devops.com/wp-content/uploads/2025/02/g2-best-software-2024-asset-social-horizontal-1200_1740412351UxhQiLG0xA.jpg" class="pt-cv-thumbnail img-none" alt="INE Secures Spot in G2’s 2025 Top 50 Education Software Rankings" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/ine-secures-spot-in-g2s-2025-top-50-education-software-rankings/" class="_self cvplbd" target="_self" >INE Secures Spot in G2’s 2025 Top 50 Education Software Rankings</a></h4></div></div></div></div></div> </div></div></div></div> <style type="text/css" id="pt-cv-inline-style-2b631e9p8x">#pt-cv-view-8990877amd .pt-cv-content-item { padding-left: 0px !important; } #pt-cv-view-8990877amd { margin-left: 0px !important; } #pt-cv-view-8990877amd .pt-cv-carousel-caption { padding-left: 0px !important; } #pt-cv-view-8990877amd .pt-cv-carousel-caption { left : 0px !important } #pt-cv-view-8990877amd .carousel-control.left { right : 35px } #pt-cv-view-8990877amd .row {margin: 0 0 !important} #pt-cv-view-8990877amd .pt-cv-title a, #pt-cv-view-8990877amd .panel-title { font-size: 15px !important; line-height: 1.3 !important; color: #000000 !important; display: block !important; text-align: left !important; clear: both !important; } #pt-cv-view-8990877amd .pt-cv-content , #pt-cv-view-8990877amd .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; } #pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; } @media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }} @media (max-width: 767px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }} #pt-cv-view-8990877amd .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; } #pt-cv-view-8990877amd .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-8990877amd { text-align: center; }</style> </div></div></section> <section id="custom_html-76" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- Right Side Position 2 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="3912437610" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div></div></section> <section id="featured-post-14" class="widget featured-content featuredpost"><div class="widget-wrap"><h4 class="widget-title widgettitle">Sponsored Content</h4> <article class="post-176022 post type-post status-publish format-standard has-post-thumbnail category-blogs category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-apm tag-cicd tag-internet tag-ipm tag-performance-monitoring entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/apm-alone-is-not-enough-enter-internet-performance-monitoring/">APM Alone Is Not Enough: Enter Internet Performance Monitoring</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2025-03-07T16:33:16-05:00">March 7, 2025</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/guy-currier/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Guy Currier</span></a></span></p></header></article><article class="post-175672 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-checkmarx tag-devsec entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/devsec-relationship-status-its-complicated-but-fixable/">DevSec Relationship Status: It&#8217;s Complicated (But Fixable) </a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2025-02-25T08:10:36-05:00">February 25, 2025</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/jonathan-singer/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Jonathan Singer</span></a></span></p></header></article><article class="post-175755 post type-post status-publish format-standard has-post-thumbnail category-sponsored-content tag-ai tag-catchpoint tag-internet-performance entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/internet-performance-monitoring-wins-the-day/">Internet Performance Monitoring Wins the Day</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2025-02-19T07:02:05-05:00">February 19, 2025</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/mitchellashley/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Mitch Ashley</span></a></span></p></header></article><article class="post-174413 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-southworks tag-techfieldday tag-writeroftech1 tag-adfd2 entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/southworks-cloud-agnostic-platforms-will-drive-new-possibilities-in-multi-cloud/">SOUTHWORKS &#8211; Cloud-Agnostic Platforms Will Drive New Possibilities in Multi-Cloud</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-12-05T13:26:19-05:00">December 5, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/sulagna-saha/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Sulagna Saha</span></a></span></p></header></article><article class="post-174328 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-techfieldday tag-writeroftech1 tag-adfd2 tag-heroku entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/heroku-uplifts-developer-experience-with-a-shorter-build-and-deploy-cycle/">Heroku Uplifts Developer Experience with a Shorter Build and Deploy Cycle</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-11-26T16:53:31-05:00">November 26, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/sulagna-saha/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Sulagna Saha</span></a></span></p></header></article></div></section> <section id="text-85" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div id="div-gpt-ad-1494536589535-1" style="height: 250px; width: 300px;"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494536589535-1'); });</script></div> </div> </div></section> </aside></div></div><footer class="site-footer" itemscope itemtype="https://schema.org/WPFooter"><div class="wrap"><nav class="nav-secondary" aria-label="Secondary" itemscope itemtype="https://schema.org/SiteNavigationElement" id="genesis-nav-secondary"><div class="wrap"><ul id="menu-csc-footer-navigation" class="menu genesis-nav-menu menu-secondary"><li id="menu-item-120384" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-120384"><a href="https://devops.com/" itemprop="url"><span itemprop="name">Home</span></a></li> <li id="menu-item-213" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-213"><a href="https://devops.com/about/" itemprop="url"><span itemprop="name">About DevOps.com</span></a></li> <li id="menu-item-129660" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-129660"><a href="https://devops.com/authors-page/" itemprop="url"><span itemprop="name">Meet our Authors</span></a></li> <li id="menu-item-123986" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-123986"><a href="https://devops.com/blogger-request-form/" itemprop="url"><span itemprop="name">Write for DevOps.com</span></a></li> <li id="menu-item-5573" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5573"><a href="https://techstronggroup.com/assets/techstrong-media-kit.pdf" itemprop="url"><span itemprop="name">Media Kit</span></a></li> <li id="menu-item-155879" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-155879"><a target="_blank" href="https://techstronggroup.com/tellmemore/" itemprop="url"><span itemprop="name">Sponsor Info</span></a></li> <li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-210"><a href="https://devops.com/copyright/" itemprop="url"><span itemprop="name">Copyright</span></a></li> <li id="menu-item-212" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-212"><a href="https://devops.com/tos/" itemprop="url"><span itemprop="name">TOS</span></a></li> <li id="menu-item-146058" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-146058"><a target="_blank" href="https://techstronggroup.com/privacy-policy/" itemprop="url"><span itemprop="name">Privacy Policy</span></a></li> </ul></div></nav><div class="copy" style="position: relative; padding-bottom: 20px;"><p class="footer-powered-by"><a href="https://techstronggroup.com/" target="_blank"><img src="https://devops.com/wp-content/themes/genesis-devops/images/powered-by-techstrong-ftr.png" alt="Powered by Techstrong Group, Inc."></p><p style="font-family: FontAwesome;"><a class="fa-twitter mega-menu-link" href="https://twitter.com/devopsdotcom" tabindex="0" aria-label="Twitter" target="_blank"></a> <a class="fa-google mega-menu-link" href="https://news.google.com/publications/CAAqJAgKIh5DQklTRUFnTWFnd0tDbVJsZG05d2N5NWpiMjBvQUFQAQ?hl=en-US&amp;gl=US&amp;ceid=US%3Aen" tabindex="0" aria-label="Google News" target="_blank"></a> <a class="fa-linkedin mega-menu-link" href="https://www.linkedin.com/company/devops-com/?viewAsMember=true" tabindex="0" aria-label="LinkedIn" target="_blank"></a> <a class="fa-facebook mega-menu-link" href="https://www.facebook.com/devopscom" tabindex="0" aria-label="Facebook" target="_blank"></a> <a class="fa-youtube-play mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ" tabindex="0" aria-label="YouTube" target="_blank"></a></p><p class="copyright">&copy; 2025 &middot;<a href="https://techstronggroup.com/" target="_blank">Techstrong Group, Inc.</a>All rights reserved.</p></div><p></p></div></footer></div> <script> ( function ( body ) { 'use strict'; body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' ); } )( document.body ); </script> <!-- GTM Container placement set to footer --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZLPNQS" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript> <!-- End Google Tag Manager (noscript) --><div class="wppopups-whole" style="display: none"><div class="spu-bg " id="spu-bg-174203"></div><div class="spu-box spu-animation-fade spu-position-centered spu-animation-animated" id="spu-174203" data-id="174203" data-parent="0" data-settings="{&quot;position&quot;:{&quot;position&quot;:&quot;centered&quot;,&quot;sticky_title&quot;:&quot;Postal Popup&quot;,&quot;sticky_title_color&quot;:&quot;rgba(0,0,0,255)&quot;,&quot;sticky_title_size&quot;:&quot;28px&quot;,&quot;sticky_title_bg&quot;:&quot;rgba(255,255,255,255)&quot;,&quot;push_content&quot;:&quot;0&quot;},&quot;animation&quot;:{&quot;animation&quot;:&quot;fade&quot;},&quot;colors&quot;:{&quot;show_overlay&quot;:&quot;yes-color&quot;,&quot;overlay_color&quot;:&quot;rgba(0,0,0,0.5)&quot;,&quot;overlay_blur&quot;:&quot;2&quot;,&quot;bg_color&quot;:&quot;rgb(29, 29, 33)&quot;,&quot;bg_img&quot;:&quot;&quot;,&quot;bg_img_repeat&quot;:&quot;no-repeat&quot;,&quot;bg_img_size&quot;:&quot;auto&quot;},&quot;close&quot;:{&quot;close_color&quot;:&quot;rgb(255, 255, 255)&quot;,&quot;close_hover_color&quot;:&quot;rgb(204, 204, 204)&quot;,&quot;close_shadow_color&quot;:&quot;#000&quot;,&quot;close_size&quot;:&quot;30&quot;,&quot;close_position&quot;:&quot;top_right&quot;},&quot;popup_box&quot;:{&quot;width&quot;:&quot;650px&quot;,&quot;padding&quot;:&quot;0&quot;,&quot;radius&quot;:&quot;0&quot;,&quot;auto_height&quot;:&quot;yes&quot;,&quot;height&quot;:&quot;350px&quot;},&quot;border&quot;:{&quot;border_type&quot;:&quot;none&quot;,&quot;border_color&quot;:&quot;#000&quot;,&quot;border_width&quot;:&quot;3&quot;,&quot;border_radius&quot;:&quot;0&quot;,&quot;border_margin&quot;:&quot;0&quot;},&quot;shadow&quot;:{&quot;shadow_color&quot;:&quot;#ccc&quot;,&quot;shadow_type&quot;:&quot;outset&quot;,&quot;shadow_x_offset&quot;:&quot;0&quot;,&quot;shadow_y_offset&quot;:&quot;0&quot;,&quot;shadow_blur&quot;:&quot;0&quot;,&quot;shadow_spread&quot;:&quot;0&quot;},&quot;css&quot;:{&quot;custom_css&quot;:&quot;.spu-content .hs-form {\r\ndisplay: flex;\r\nalign-items: flex-start;\r\njustify-content: center;\r\npadding-bottom: 20px;\r\n}\r\n\r\n.spu-content .hs_email {\r\nwidth: 75%;\r\n}\r\n\r\n.spu-content .hs-input {\r\nheight: 46px;\r\n}\r\n\r\n.hs-error-msgs {\r\ncolor: #fff;\r\n}\r\n\r\n.spu-content .hs_submit {\r\nwidth: 20%;\r\n}&quot;},&quot;id&quot;:&quot;174203&quot;,&quot;field_id&quot;:1,&quot;rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;global_rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;settings&quot;:{&quot;popup_title&quot;:&quot;Newsletter Popup - Email Only&quot;,&quot;popup_desc&quot;:&quot;&quot;,&quot;test_mode&quot;:&quot;0&quot;,&quot;powered_link&quot;:&quot;0&quot;,&quot;popup_class&quot;:&quot;&quot;,&quot;popup_hidden_class&quot;:&quot;&quot;,&quot;disable_scroll&quot;:&quot;0&quot;,&quot;close_on_conversion&quot;:&quot;1&quot;,&quot;autoclose&quot;:0,&quot;disable_close&quot;:&quot;0&quot;,&quot;advanced_close&quot;:&quot;0&quot;,&quot;conversion_cookie_name&quot;:&quot;spu_conversion_174196&quot;,&quot;conversion_cookie_duration&quot;:&quot;3&quot;,&quot;conversion_cookie_type&quot;:&quot;d&quot;,&quot;closing_cookie_name&quot;:&quot;spu_closing_174196&quot;,&quot;closing_cookie_duration&quot;:&quot;3&quot;,&quot;closing_cookie_type&quot;:&quot;d&quot;},&quot;triggers&quot;:{&quot;trigger_0&quot;:{&quot;trigger&quot;:&quot;exit&quot;}},&quot;success&quot;:{&quot;optin_success_seconds&quot;:0}}" data-need_ajax="0"><div class="spu-container "><div class="spu-content"> <a href="https://webinars.devops.com/in-article-newsletter-popup"><img loading="lazy" class="alignnone size-full wp-image-174197" src="https://devops.com/wp-content/uploads/2024/11/Copy-of-DO-Banners-1540x660-1.png" alt="" width="1540" height="660" /></a> <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script> <script> hbspt.forms.create({ portalId: "1628905", formId: "a818e690-a8e5-4d1c-861c-010e5829d98c" }); </script> </div><a href="#" class="spu-close spu-close-popup spu-close-top_right">&times;</a><span class="spu-timer"></span></div></div><!--spu-box--></div><script> var coll = document.getElementsByClassName("collapsible"); var i; for (i = 0; i < coll.length; i++) { coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block") { content.style.display = "none"; } else { content.style.display = "block"; } }); } </script><script> /* <![CDATA[ */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"}};/* ]]> */ </script> <script type='text/javascript'> const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); </script> <script type="text/javascript"> /* MonsterInsights Scroll Tracking */ if ( typeof(jQuery) !== 'undefined' ) { jQuery( document ).ready(function(){ function monsterinsights_scroll_tracking_load() { if ( ( typeof(__gaTracker) !== 'undefined' && __gaTracker && __gaTracker.hasOwnProperty( "loaded" ) && __gaTracker.loaded == true ) || ( typeof(__gtagTracker) !== 'undefined' && __gtagTracker ) ) { (function(factory) { factory(jQuery); }(function($) { /* Scroll Depth */ "use strict"; var defaults = { percentage: true }; var $window = $(window), cache = [], scrollEventBound = false, lastPixelDepth = 0; /* * Plugin */ $.scrollDepth = function(options) { var startTime = +new Date(); options = $.extend({}, defaults, options); /* * Functions */ function sendEvent(action, label, scrollDistance, timing) { if ( 'undefined' === typeof MonsterInsightsObject || 'undefined' === typeof MonsterInsightsObject.sendEvent ) { return; } var paramName = action.toLowerCase(); var fieldsArray = { send_to: 'G-T8FTPKY5SV', non_interaction: true }; fieldsArray[paramName] = label; if (arguments.length > 3) { fieldsArray.scroll_timing = timing MonsterInsightsObject.sendEvent('event', 'scroll_depth', fieldsArray); } else { MonsterInsightsObject.sendEvent('event', 'scroll_depth', fieldsArray); } } function calculateMarks(docHeight) { return { '25%' : parseInt(docHeight * 0.25, 10), '50%' : parseInt(docHeight * 0.50, 10), '75%' : parseInt(docHeight * 0.75, 10), /* Cushion to trigger 100% event in iOS */ '100%': docHeight - 5 }; } function checkMarks(marks, scrollDistance, timing) { /* Check each active mark */ $.each(marks, function(key, val) { if ( $.inArray(key, cache) === -1 && scrollDistance >= val ) { sendEvent('Percentage', key, scrollDistance, timing); cache.push(key); } }); } function rounded(scrollDistance) { /* Returns String */ return (Math.floor(scrollDistance/250) * 250).toString(); } function init() { bindScrollDepth(); } /* * Public Methods */ /* Reset Scroll Depth with the originally initialized options */ $.scrollDepth.reset = function() { cache = []; lastPixelDepth = 0; $window.off('scroll.scrollDepth'); bindScrollDepth(); }; /* Add DOM elements to be tracked */ $.scrollDepth.addElements = function(elems) { if (typeof elems == "undefined" || !$.isArray(elems)) { return; } $.merge(options.elements, elems); /* If scroll event has been unbound from window, rebind */ if (!scrollEventBound) { bindScrollDepth(); } }; /* Remove DOM elements currently tracked */ $.scrollDepth.removeElements = function(elems) { if (typeof elems == "undefined" || !$.isArray(elems)) { return; } $.each(elems, function(index, elem) { var inElementsArray = $.inArray(elem, options.elements); var inCacheArray = $.inArray(elem, cache); if (inElementsArray != -1) { options.elements.splice(inElementsArray, 1); } if (inCacheArray != -1) { cache.splice(inCacheArray, 1); } }); }; /* * Throttle function borrowed from: * Underscore.js 1.5.2 * http://underscorejs.org * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Underscore may be freely distributed under the MIT license. */ function throttle(func, wait) { var context, args, result; var timeout = null; var previous = 0; var later = function() { previous = new Date; timeout = null; result = func.apply(context, args); }; return function() { var now = new Date; if (!previous) previous = now; var remaining = wait - (now - previous); context = this; args = arguments; if (remaining <= 0) { clearTimeout(timeout); timeout = null; previous = now; result = func.apply(context, args); } else if (!timeout) { timeout = setTimeout(later, remaining); } return result; }; } /* * Scroll Event */ function bindScrollDepth() { scrollEventBound = true; $window.on('scroll.scrollDepth', throttle(function() { /* * We calculate document and window height on each scroll event to * account for dynamic DOM changes. */ var docHeight = $(document).height(), winHeight = window.innerHeight ? window.innerHeight : $window.height(), scrollDistance = $window.scrollTop() + winHeight, /* Recalculate percentage marks */ marks = calculateMarks(docHeight), /* Timing */ timing = +new Date - startTime; checkMarks(marks, scrollDistance, timing); }, 500)); } init(); }; /* UMD export */ return $.scrollDepth; })); jQuery.scrollDepth(); } else { setTimeout(monsterinsights_scroll_tracking_load, 200); } } monsterinsights_scroll_tracking_load(); }); } /* End MonsterInsights Scroll Tracking */ </script><script type="text/javascript" id="wppopups-js-extra"> /* <![CDATA[ */ var wppopups_vars = {"is_admin":"","ajax_url":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","pid":"2499","is_front_page":"","is_blog_page":"","is_category":"","site_url":"https:\/\/devops.com","is_archive":"1","is_search":"","is_singular":"","is_preview":"","facebook":"","twitter":"","val_required":"This field is required.","val_url":"Please enter a valid URL.","val_email":"Please enter a valid email address.","val_number":"Please enter a valid number.","val_checklimit":"You have exceeded the number of allowed selections: {#}.","val_limit_characters":"{count} of {limit} max characters.","val_limit_words":"{count} of {limit} max words.","disable_form_reopen":"__return_false"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/wppopups/src/assets/js/wppopups.js?ver=2.2.0.3" id="wppopups-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/assets/ie-fix/html5shiv.min.js?ver=3.7.0" id="pt-cv-html5shiv-script-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/assets/ie-fix/respond.js?ver=1.4.2" id="pt-cv-respond-script-js"></script> <script type="text/javascript" id="disqus_count-js-extra"> /* <![CDATA[ */ var countVars = {"disqusShortname":"devopscom"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/disqus-comment-system/public/js/comment_count.js?ver=3.1.2" id="disqus_count-js"></script> <script type="text/javascript" id="leadin-script-loader-js-js-extra"> /* <![CDATA[ */ var leadin_wordpress = {"userRole":"visitor","pageType":"archive","leadinPluginVersion":"11.1.73"}; /* ]]> */ </script> <script type="text/javascript" src="https://js.hs-scripts.com/1628905.js?integration=WordPress&amp;ver=11.1.73" id="leadin-script-loader-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/webinars.js?ver=1.0.0" id="script-webinars-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.easing.1.2.js?ver=1.0.0" id="script-any-pre-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.anythingslider.min.js?ver=1.0.0" id="script-any-js"></script> <script type="text/javascript" src="https://stats.wp.com/e-202511.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"144979424\",\"post\":\"0\",\"tz\":\"-4\",\"srv\":\"devops.com\",\"j\":\"1:14.0\"}") ]); _stq.push([ "clickTrackerInit", "144979424", "0" ]); /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.4.1" id="megamenu-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/megamenu-pro/assets/public.js?ver=2.4" id="megamenu-pro-js"></script> <script type="text/javascript" id="bdt-uikit-js-extra"> /* <![CDATA[ */ var element_pack_ajax_login_config = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","language":"en","loadingmessage":"Sending user info, please wait...","unknownerror":"Unknown error, make sure access is correct!"}; var ElementPackConfig = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","nonce":"f383134a7f","data_table":{"language":{"sLengthMenu":"Show _MENU_ Entries","sInfo":"Showing _START_ to _END_ of _TOTAL_ entries","sSearch":"Search :","sZeroRecords":"No matching records found","oPaginate":{"sPrevious":"Previous","sNext":"Next"}}},"contact_form":{"sending_msg":"Sending message please wait...","captcha_nd":"Invisible captcha not defined!","captcha_nr":"Could not get invisible captcha response!"},"mailchimp":{"subscribing":"Subscribing you please wait..."},"search":{"more_result":"More Results","search_result":"SEARCH RESULT","not_found":"not found"},"words_limit":{"read_more":"[read more]","read_less":"[read less]"},"elements_data":{"sections":[],"columns":[],"widgets":[]}}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/bdt-uikit.min.js?ver=3.21.7" id="bdt-uikit-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/common/helper.min.js?ver=7.18.11" id="element-pack-helper-js"></script> <script type="text/javascript" id="pt-cv-content-views-script-js-extra"> /* <![CDATA[ */ var PT_CV_PUBLIC = {"_prefix":"pt-cv-","page_to_show":"5","_nonce":"886e1a926c","is_admin":"","is_mobile":"","ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","lang":"","loading_image_src":"data:image\/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP\/\/\/yH\/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC\/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM\/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM\/DJKZNLND\/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==","is_mobile_tablet":"","sf_no_post_found":"No posts found.","lf__separator":"____"}; var PT_CV_PAGINATION = {"first":"\u00ab","prev":"\u2039","next":"\u203a","last":"\u00bb","goto_first":"Go to first page","goto_prev":"Go to previous page","goto_next":"Go to next page","goto_last":"Go to last page","current_page":"Current page is","goto_page":"Go to page"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/js/cv.js?ver=4.0.2" id="pt-cv-content-views-script-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/js/cvpro.min.js?ver=7.1" id="pt-cv-public-pro-script-js"></script> <script id='pt-cv-append-scripts'>if( typeof PT_CV_PAGINATION !== 'undefined' ) { PT_CV_PAGINATION.links = {"page_1":"https:\/\/devops.com\/author\/mitchellashley\/","page_n":"https:\/\/devops.com\/author\/mitchellashley\/?_page=_CVNUMBER_"}; } </script> <!-- Shortcodes Ultimate custom CSS - start --> <style type="text/css"> .su-posts-default-loop { margin-left: 15px !important; } .su-posts-default-loop .su-post { margin-bottom: 1.5em; line-height: 1.2 !important; } .su-box { margin-top: 5px; } .su-row { margin-bottom: 0em !important; } .su-list ul li { font-size: small !important; } .su-expand-link { font-size: small !important; } </style> <!-- Shortcodes Ultimate custom CSS - end --> <script> (function($) { $(window).scroll(function(){ if($(window).scrollTop()<116){ $('.leftad').css('top', 156 - $(window).scrollTop()); $('.rightad').css('top', 156 - $(window).scrollTop()); } else { $('.leftad').css('top', 42); $('.rightad').css('top', 42); } }); })( jQuery ); </script><script> function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /* <![CDATA[ */ ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"}; /* ]]> */ var ai_cookie_js=!0,ai_block_class_def="code-block"; /* js-cookie v3.0.5 | MIT JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license */ if("undefined"!==typeof ai_cookie_js){(function(a,f){"object"===typeof exports&&"undefined"!==typeof module?module.exports=f():"function"===typeof define&&define.amd?define(f):(a="undefined"!==typeof globalThis?globalThis:a||self,function(){var b=a.Cookies,c=a.Cookies=f();c.noConflict=function(){a.Cookies=b;return c}}())})(this,function(){function a(b){for(var c=1;c<arguments.length;c++){var g=arguments[c],e;for(e in g)b[e]=g[e]}return b}function f(b,c){function g(e,d,h){if("undefined"!==typeof document){h= a({},c,h);"number"===typeof h.expires&&(h.expires=new Date(Date.now()+864E5*h.expires));h.expires&&(h.expires=h.expires.toUTCString());e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var l="",k;for(k in h)h[k]&&(l+="; "+k,!0!==h[k]&&(l+="="+h[k].split(";")[0]));return document.cookie=e+"="+b.write(d,e)+l}}return Object.create({set:g,get:function(e){if("undefined"!==typeof document&&(!arguments.length||e)){for(var d=document.cookie?document.cookie.split("; "): [],h={},l=0;l<d.length;l++){var k=d[l].split("="),p=k.slice(1).join("=");try{var n=decodeURIComponent(k[0]);h[n]=b.read(p,n);if(e===n)break}catch(q){}}return e?h[e]:h}},remove:function(e,d){g(e,"",a({},d,{expires:-1}))},withAttributes:function(e){return f(this.converter,a({},this.attributes,e))},withConverter:function(e){return f(a({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(c)},converter:{value:Object.freeze(b)}})}return f({read:function(b){'"'===b[0]&&(b=b.slice(1,-1)); return b.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(b){return encodeURIComponent(b).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})});AiCookies=Cookies.noConflict();function m(a){if(null==a)return a;'"'===a.charAt(0)&&(a=a.slice(1,-1));try{a=JSON.parse(a)}catch(f){}return a}ai_check_block=function(a){var f="undefined"!==typeof ai_debugging;if(null==a)return!0;var b=m(AiCookies.get("aiBLOCKS"));ai_debug_cookie_status="";null==b&&(b={});"undefined"!== typeof ai_delay_showing_pageviews&&(b.hasOwnProperty(a)||(b[a]={}),b[a].hasOwnProperty("d")||(b[a].d=ai_delay_showing_pageviews,f&&console.log("AI CHECK block",a,"NO COOKIE DATA d, delayed for",ai_delay_showing_pageviews,"pageviews")));if(b.hasOwnProperty(a)){for(var c in b[a]){if("x"==c){var g="",e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"x cookie hash",e,"code hash", g);var d=new Date;d=b[a][c]-Math.round(d.getTime()/1E3);if(0<d&&e==g)return ai_debug_cookie_status=b="closed for "+d+" s = "+Math.round(1E4*d/3600/24)/1E4+" days",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing x");ai_set_cookie(a,"x","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==c){if(0!=b[a][c])return ai_debug_cookie_status=b="delayed for "+b[a][c]+" pageviews",f&&console.log("AI CHECK block",a, b),f&&console.log(""),!1}else if("i"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"i cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max impressions reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/1E3);if(0<d)return ai_debug_cookie_status= b="max imp. reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing i");ai_set_cookie(a,"i","");b[a].hasOwnProperty("c")||b[a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h removed"),ai_set_cookie(a,"h",""))}}if("ipt"==c&&0==b[a][c]&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b[a].it-g,0<d))return ai_debug_cookie_status=b="max imp. per time reached ("+Math.round(1E4*d/24/ 3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if("c"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"c cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max clicks reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/ 1E3);if(0<d)return ai_debug_cookie_status=b="max clicks reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing c");ai_set_cookie(a,"c","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h removed"),ai_set_cookie(a,"h",""))}}if("cpt"==c&&0==b[a][c]&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b[a].ct-g,0<d))return ai_debug_cookie_status=b="max clicks per time reached ("+ Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1}if(b.hasOwnProperty("G")&&b.G.hasOwnProperty("cpt")&&0==b.G.cpt&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b.G.ct-g,0<d))return ai_debug_cookie_status=b="max global clicks per time reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK GLOBAL",b),f&&console.log(""),!1}ai_debug_cookie_status="OK";f&&console.log("AI CHECK block",a,"OK");f&&console.log("");return!0}; ai_check_and_insert_block=function(a,f){var b="undefined"!==typeof ai_debugging;if(null==a)return!0;var c=document.getElementsByClassName(f);if(c.length){c=c[0];var g=c.closest("."+ai_block_class_def),e=ai_check_block(a);!e&&0!=parseInt(c.getAttribute("limits-fallback"))&&c.hasAttribute("data-fallback-code")&&(b&&console.log("AI CHECK FAILED, INSERTING FALLBACK BLOCK",c.getAttribute("limits-fallback")),c.setAttribute("data-code",c.getAttribute("data-fallback-code")),null!=g&&g.hasAttribute("data-ai")&& c.hasAttribute("fallback-tracking")&&c.hasAttribute("fallback_level")&&g.setAttribute("data-ai-"+c.getAttribute("fallback_level"),c.getAttribute("fallback-tracking")),e=!0);c.removeAttribute("data-selector");e?(ai_insert_code(c),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position="")))):(b=c.closest("div[data-ai]"), null!=b&&"undefined"!=typeof b.getAttribute("data-ai")&&(e=JSON.parse(b64d(b.getAttribute("data-ai"))),"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",b.setAttribute("data-ai",b64e(JSON.stringify(e))))),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position=""))));c.classList.remove(f)}c=document.querySelectorAll("."+ f+"-dbg");g=0;for(b=c.length;g<b;g++)e=c[g],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(f+"-dbg")};ai_load_cookie=function(){var a="undefined"!==typeof ai_debugging,f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={},a&&console.log("AI COOKIE NOT PRESENT"));a&&console.log("AI COOKIE LOAD",f);return f};ai_set_cookie=function(a,f,b){var c="undefined"!==typeof ai_debugging;c&&console.log("AI COOKIE SET block:", a,"property:",f,"value:",b);var g=ai_load_cookie();if(""===b){if(g.hasOwnProperty(a)){delete g[a][f];a:{f=g[a];for(e in f)if(f.hasOwnProperty(e)){var e=!1;break a}e=!0}e&&delete g[a]}}else g.hasOwnProperty(a)||(g[a]={}),g[a][f]=b;0===Object.keys(g).length&&g.constructor===Object?(AiCookies.remove("aiBLOCKS"),c&&console.log("AI COOKIE REMOVED")):AiCookies.set("aiBLOCKS",JSON.stringify(g),{expires:365,path:"/"});if(c)if(a=m(AiCookies.get("aiBLOCKS")),"undefined"!=typeof a){console.log("AI COOKIE NEW", a);console.log("AI COOKIE DATA:");for(var d in a){for(var h in a[d])"x"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"closed for",c,"s = ",Math.round(1E4*c/3600/24)/1E4,"days")):"d"==h?console.log(" BLOCK",d,"delayed for",a[d][h],"pageviews"):"e"==h?console.log(" BLOCK",d,"show every",a[d][h],"pageviews"):"i"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,a[d][h],"impressions until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max impressions, closed for", c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))):"ipt"==h?console.log(" BLOCK",d,a[d][h],"impressions until limit per time period"):"it"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"impressions limit expiration in",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"c"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,e,"clicks until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max clicks, closed for",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))): "cpt"==h?console.log(" BLOCK",d,a[d][h],"clicks until limit per time period"):"ct"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"clicks limit expiration in ",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"h"==h?console.log(" BLOCK",d,"hash",a[d][h]):console.log(" ?:",d,":",h,a[d][h]);console.log("")}}else console.log("AI COOKIE NOT PRESENT");return g};ai_get_cookie_text=function(a){var f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={});var b="";f.hasOwnProperty("G")&& (b="G["+JSON.stringify(f.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var c="";f.hasOwnProperty(a)&&(c=JSON.stringify(f[a]).replace(/"/g,"").replace("{","").replace("}",""));return b+c}}; var ai_internal_tracking=1,ai_external_tracking=1,ai_external_tracking_category="Ad Inserter Pro",ai_external_tracking_action="[EVENT]",ai_external_tracking_label="[BLOCK_NUMBER] - [BLOCK_VERSION_NAME]",ai_external_tracking_username="",ai_track_pageviews=0,ai_advanced_click_detection=0,ai_viewport_widths=[980,768,0],ai_viewport_indexes=[1,2,3],ai_viewport_names_string="WyJEZXNrdG9wIiwiVGFibGV0IiwiUGhvbmUiXQ==",ai_data_id="03f0f3903b", ai_ajax_url="https://devops.com/wp-admin/admin-ajax.php",ai_debug_tracking=0,ai_adb_attribute='ZGF0YS1kYXRhLW1hc2s='; if("undefined"!==typeof ai_internal_tracking){ai_viewport_names=JSON.parse(b64d(ai_viewport_names_string));function F(k,l){return(new RegExp("^"+l.split("*").map(r=>r.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")).join(".*")+"$")).test(k)}function I(k,l,r,x){if(x){const B=y=>{y.target&&y.target.matches(x)&&r(y)};k.addEventListener(l,B);return B}k.addEventListener(l,r);return r}installIframeTracker=function(k,l){"function"==typeof k&&(k={blurCallback:k});if(null===k||!1===k)ai_iframeTracker.untrack(l); else if("object"==typeof k)ai_iframeTracker.track(l,k);else throw Error("Wrong handler type (must be an object, or null|false to untrack)");return this};var ai_mouseoverHander=function(k,l){l.data={handler:k};ai_iframeTracker.mouseoverListener(l)},ai_mouseoutHander=function(k,l){l.data={handler:k};ai_iframeTracker.mouseoutListener(l)};ai_iframeTracker={focusRetriever:null,focusRetrieved:!1,handlersList:[],isIE8AndOlder:!1,init:function(){try{9>navigator.userAgent.match(RegExp("(msie) ([\\w.]+)","i"))[2]&& (this.isIE8AndOlder=!0)}catch(l){}window.focus();window.addEventListener("blur",l=>{ai_iframeTracker.windowLoseFocus(l)});var k=document.createElement("div");k.style="position:fixed; top:0; left:0; overflow:hidden;";k.innerHTML='<input style="position:absolute; left:-300px;" type="text" value="" id="focus_retriever" readonly="true" /><label for="focus_retriever">&nbsp;</label>';document.querySelector("body").append(k);this.focusRetriever=document.querySelector("#focus_retriever");this.focusRetrieved= !1;if(this.isIE8AndOlder){this.focusRetriever.blur(function(l){l.stopPropagation();l.preventDefault();ai_iframeTracker.windowLoseFocus(l)});document.querySelector("body").addEventListener("click",l=>{window.focus()});document.querySelector("form").addEventListener("click",l=>{l.stopPropagation()});try{I(document.querySelector("body"),"click",l=>{l.stopPropagation()},"form")}catch(l){console.log("[iframeTracker] error (exception: "+l.message+")")}}},track:function(k,l){l.target=k;ai_iframeTracker.handlersList.push(l); k.addEventListener("mouseover",ai_mouseoverHander.bind(event,l),!1);k.addEventListener("mouseout",ai_mouseoutHander.bind(event,l),!1)},untrack:function(k){if("function"!=typeof Array.prototype.filter)console.log("Your browser doesn't support Array filter, untrack disabled");else{k.forEach((B,y)=>{B.removeEventListener("mouseover",ai_mouseoverHander,!1);B.removeEventListener("mouseout",ai_mouseoutHander,!1)});var l=function(B){return null===B?!1:!0},r;for(r in this.handlersList){for(var x in this.handlersList[r].target)-1!== $.inArray(this.handlersList[r].target[x],k)&&(this.handlersList[r].target[x]=null);this.handlersList[r].target=this.handlersList[r].target.filter(l);0===this.handlersList[r].target.length&&(this.handlersList[r]=null)}this.handlersList=this.handlersList.filter(l)}},mouseoverListener:function(k){k.data.handler.over=!0;ai_iframeTracker.retrieveFocus();try{k.data.handler.overCallback(k.data.handler.target,k)}catch(l){}},mouseoutListener:function(k){k.data.handler.over=!1;ai_iframeTracker.retrieveFocus(); try{k.data.handler.outCallback(k.data.handler.target,k)}catch(l){}},retrieveFocus:function(){if(document.activeElement&&"IFRAME"===document.activeElement.tagName){var k=!0;if(document.activeElement.hasAttribute("id")&&"undefined"!==typeof ai_ignore_iframe_ids&&ai_ignore_iframe_ids.constructor===Array){var l=document.activeElement.id;ai_ignore_iframe_ids.forEach(function(x){F(l,x)&&(k=!1)})}if(k&&document.activeElement.hasAttribute("class")&&"undefined"!==typeof ai_ignore_iframe_classes&&ai_ignore_iframe_classes.constructor=== Array){var r=document.activeElement.className;ai_ignore_iframe_classes.forEach(function(x){F(r,x)&&(k=!1)})}k&&(ai_iframeTracker.focusRetriever.focus(),ai_iframeTracker.focusRetrieved=!0)}},windowLoseFocus:function(k){for(var l in this.handlersList)if(!0===this.handlersList[l].over)try{this.handlersList[l].blurCallback(k)}catch(r){}}};function G(k){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?k():document.addEventListener("DOMContentLoaded", k)}G(function(){ai_iframeTracker.init()});ai_tracking_finished=!1;G(function(){function k(b,m,n,f,d,a,c){b=b.replace("[EVENT]",m);b=b.replace("[BLOCK_NUMBER]",n);b=b.replace("[BLOCK_NAME]",f);b=b.replace("[BLOCK_COUNTER]",d);b=b.replace("[VERSION_NUMBER]",a);b=b.replace("[VERSION_NAME]",c);b=b.replace("[BLOCK_VERSION_NUMBER]",n+(0==a?"":" - "+a));b=b.replace("[BLOCK_VERSION_NAME]",f+(""==c?"":" - "+c));return b=b.replace("[WP_USERNAME]",ai_external_tracking_username)}function l(b,m,n,f,d,a,c){var h= k(ai_external_tracking_category,b,m,n,f,d,a),g=k(ai_external_tracking_action,b,m,n,f,d,a),q=k(ai_external_tracking_label,b,m,n,f,d,a);if("function"!=typeof ai_external_tracking_event||0!=ai_external_tracking_event({event:b,block:m,block_name:n,block_counter:f,version:d,version_name:a},h,g,q,c))"function"==typeof window.ga&&(b="send","string"==typeof ai_ga_tracker_name?b=ai_ga_tracker_name+"."+b:(m=ga.getAll(),0!=m.length&&(m=m[0].get("name"),"t0"!=m&&(b=m+"."+b))),ga(b,"event",{eventCategory:h,eventAction:g, eventLabel:q,nonInteraction:c})),"function"==typeof window.gtag&&gtag("event","impression",{event_category:h,event_action:g,event_label:q,non_interaction:c}),"function"==typeof window.__gaTracker&&__gaTracker("send","event",{eventCategory:h,eventAction:g,eventLabel:q,nonInteraction:c}),"object"==typeof window.dataLayer&&window.dataLayer.push({event:"tracking",eventCategory:h,eventAction:g,eventLabel:q}),"object"==typeof _gaq&&_gaq.push(["_trackEvent",h,g,q,void 0,c]),"object"==typeof _paq&&_paq.push(["trackEvent", h,g,q])}function r(b,m){var n=b[0],f=b[1];if(Number.isInteger(f))if("undefined"==typeof ai_check_data&&"undefined"==typeof ai_check_data_timeout)ai_check_data_timeout=!0,setTimeout(function(){r(b,m)},2500);else{ai_cookie=ai_load_cookie();for(var d in ai_cookie)if(parseInt(n)==parseInt(d))for(var a in ai_cookie[d])if("c"==a){var c=ai_cookie[d][a];if(0<c)if(ai_set_cookie(d,"c",c-1),1==c){c=document.querySelector('span[data-ai-block="'+n+'"]').dataset.aiCfpTime;var h=new Date;h=Math.round(h.getTime()/ 1E3);var g=h+604800;ai_set_cookie(d,"c",-g);setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},50)}else ai_set_cookie(d,"c",c-1)}else"cpt"==a&&(c=ai_cookie[d][a],0<c?(ai_set_cookie(d,"cpt",c-1),1==c&&(c=document.querySelector('span[data-ai-block="'+n+'"]').dataset.aiCfpTime,h=new Date,h=Math.round(h.getTime()/1E3),g=ai_cookie[d].ct,ai_set_cookie(d,"x",g),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+ n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},75),"undefined"!=typeof c&&(g=h+86400*c,ai_set_cookie(n,"x",g),document.querySelectorAll("span.ai-cfp").forEach((e,p)=>{p=e.dataset.aiBlock;setTimeout(function(){var v=e.closest("div[data-ai]");v&&v.remove()},50);ai_set_cookie(p,"x",g)})))):ai_check_data.hasOwnProperty(d)&&ai_check_data[d].hasOwnProperty("cpt")&&ai_check_data[d].hasOwnProperty("ct")?ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("ct")&&(h=new Date,c=ai_cookie[d].ct- Math.round(h.getTime()/1E3),0>=c&&(h=Math.round(h.getTime()/1E3),ai_set_cookie(d,"cpt",ai_check_data[d].cpt-1),ai_set_cookie(d,"ct",Math.round(h+86400*ai_check_data[d].ct)))):(ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("cpt")&&ai_set_cookie(d,"cpt",""),ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("ct")&&ai_set_cookie(d,"ct","")));ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("cpt")&&(c=ai_cookie.G.cpt,0<c?(ai_set_cookie("G","cpt",c-1),1==c&&(c=document.querySelector('span[data-ai-block="'+ n+'"]').dataset.aiCfpTime,h=new Date,h=Math.round(h.getTime()/1E3),g=ai_cookie.G.ct,ai_set_cookie(n,"x",g),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},75),"undefined"!=typeof c&&(g=h+86400*c,ai_set_cookie(n,"x",g),document.querySelectorAll("span.ai-cfp").forEach((e,p)=>{p=e.dataset.aiBlock;setTimeout(function(){e.closest("div[data-ai]").remove()},50);ai_set_cookie(p,"x",g)})))):ai_check_data.hasOwnProperty("G")&& ai_check_data.G.hasOwnProperty("cpt")&&ai_check_data.G.hasOwnProperty("ct")?ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("ct")&&(h=new Date,c=ai_cookie.G.ct-Math.round(h.getTime()/1E3),0>=c&&(h=Math.round(h.getTime()/1E3),ai_set_cookie("G","cpt",ai_check_data.G.cpt-1),ai_set_cookie("G","ct",Math.round(h+86400*ai_check_data.G.ct)))):(ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("cpt")&&ai_set_cookie("G","cpt",""),ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("ct")&& ai_set_cookie("G","ct","")));if(ai_internal_tracking&&"undefined"===typeof ai_internal_tracking_no_clicks){d={action:"ai_ajax",ai_check:ai_data_id,click:n,version:f,type:m};var q=[],u;for(u in d)a=encodeURIComponent(u),c=encodeURIComponent(d[u]),q.push(a+"="+c);q=q.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:q})).text()})().then(e=>{e=e.trim();""!=e&&(e=JSON.parse(e),"undefined"!= typeof e["#"]&&e["#"]==n&&(ai_cookie=ai_load_cookie(),e=Math.round((new Date).getTime()/1E3)+43200,ai_cookie.hasOwnProperty(n)&&ai_cookie[n].hasOwnProperty("x")||ai_set_cookie(n,"x",e),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((p,v)=>{(p=p.closest("div[data-ai]"))&&p.remove()})},50)))})}if(ai_external_tracking&&"undefined"===typeof ai_external_tracking_no_clicks){var t=b[2],w=b[3];l("click",n,t,b[4],f,w,!1)}"function"==typeof ai_click_action&&ai_click_action(n, t,f,w)}}function x(){ai_check_data={};if("undefined"==typeof ai_iframe){ai_cookie=ai_load_cookie();document.querySelectorAll(".ai-check-block").forEach((f,d)=>{var a=f.dataset.aiBlock,c=f.dataset.aiDelayPv,h=f.dataset.aiEveryPv,g=f.dataset.aiHash,q=f.dataset.aiMaxImp,u=f.dataset.aiLimitImpPerTime,t=f.dataset.aiLimitImpTime,w=f.dataset.aiMaxClicks,e=f.dataset.aiLimitClicksPerTime,p=f.dataset.aiLimitClicksTime;d=f.dataset.aiGlobalLimitClicksPerTime;f=f.dataset.aiGlobalLimitClicksTime;if("undefined"!= typeof c&&0<c){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].d=c;var v="";ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("d")&&(v=ai_cookie[a].d);""===v&&ai_set_cookie(a,"d",c-1)}"undefined"!=typeof h&&2<=h&&(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),"undefined"!==typeof ai_delay_showing_pageviews||ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("d")||(ai_cookie.hasOwnProperty(a)||(ai_cookie[a]={}),ai_cookie[a].d=0),ai_check_data[a].e=h);if("undefined"!= typeof q&&0<q){if(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),ai_check_data[a].i=q,ai_check_data[a].h=g,h=c="",ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("i")&&(h=ai_cookie[a].i),ai_cookie[a].hasOwnProperty("h")&&(c=ai_cookie[a].h)),""===h||c!=g)ai_set_cookie(a,"i",q),ai_set_cookie(a,"h",g)}else ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("i")&&(ai_set_cookie(a,"i",""),ai_cookie[a].hasOwnProperty("c")||ai_cookie[a].hasOwnProperty("x")||ai_set_cookie(a,"h","")); if("undefined"!=typeof u&&0<u&&"undefined"!=typeof t&&0<t){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].ipt=u;ai_check_data[a].it=t;q=c="";ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("ipt")&&(c=ai_cookie[a].ipt),ai_cookie[a].hasOwnProperty("it")&&(q=ai_cookie[a].it));if(""===c||""===q)ai_set_cookie(a,"ipt",u),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie(a,"it",Math.round(c+86400*t));0<q&&(c=new Date,c=Math.round(c.getTime()/1E3),q<=c&&(ai_set_cookie(a, "ipt",u),ai_set_cookie(a,"it",Math.round(c+86400*t))))}else ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("ipt")&&ai_set_cookie(a,"ipt",""),ai_cookie[a].hasOwnProperty("it")&&ai_set_cookie(a,"it",""));if("undefined"!=typeof w&&0<w){if(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),ai_check_data[a].c=w,ai_check_data[a].h=g,u=c="",ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("c")&&(u=ai_cookie[a].c),ai_cookie[a].hasOwnProperty("h")&&(c=ai_cookie[a].h)),""===u||c!=g)ai_set_cookie(a, "c",w),ai_set_cookie(a,"h",g)}else ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("c")&&(ai_set_cookie(a,"c",""),ai_cookie[a].hasOwnProperty("i")||ai_cookie[a].hasOwnProperty("x")||ai_set_cookie(a,"h",""));if("undefined"!=typeof e&&0<e&&"undefined"!=typeof p&&0<p){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].cpt=e;ai_check_data[a].ct=p;g=w="";ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("cpt")&&(w=ai_cookie[a].cpt),ai_cookie[a].hasOwnProperty("ct")&& (g=ai_cookie[a].ct));if(""===w||""===g)ai_set_cookie(a,"cpt",e),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie(a,"ct",Math.round(c+86400*p));0<g&&(c=new Date,c=Math.round(c.getTime()/1E3),g<=c&&(ai_set_cookie(a,"cpt",e),ai_set_cookie(a,"ct",Math.round(c+86400*p))))}else ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("cpt")&&ai_set_cookie(a,"cpt",""),ai_cookie[a].hasOwnProperty("ct")&&ai_set_cookie(a,"ct",""));if("undefined"!=typeof d&&0<d&&"undefined"!=typeof f&&0<f){ai_check_data.hasOwnProperty("G")|| (ai_check_data.G={});ai_check_data.G.cpt=d;ai_check_data.G.ct=f;a=e="";ai_cookie.hasOwnProperty("G")&&(ai_cookie.G.hasOwnProperty("cpt")&&(e=ai_cookie.G.cpt),ai_cookie.G.hasOwnProperty("ct")&&(a=ai_cookie.G.ct));if(""===e||""===a)ai_set_cookie("G","cpt",d),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie("G","ct",Math.round(c+86400*f));0<a&&(c=new Date,c=Math.round(c.getTime()/1E3),a<=c&&(ai_set_cookie("G","cpt",d),ai_set_cookie("G","ct",Math.round(c+86400*f))))}else ai_cookie.hasOwnProperty("G")&& (ai_cookie.G.hasOwnProperty("cpt")&&ai_set_cookie("G","cpt",""),ai_cookie.G.hasOwnProperty("ct")&&ai_set_cookie("G","ct",""))});document.querySelectorAll(".ai-check-block").forEach((f,d)=>{f.classList.remove("ai-check-block")});for(var b in ai_cookie)for(var m in ai_cookie[b])if("d"==m){var n=ai_cookie[b][m];0<n?ai_set_cookie(b,"d",n-1):ai_check_data.hasOwnProperty(b)&&ai_check_data[b].hasOwnProperty("e")?ai_set_cookie(b,"d",ai_check_data[b].e-1):ai_check_data.hasOwnProperty(b)&&ai_check_data[b].hasOwnProperty("d")|| ai_set_cookie(b,"d","")}}}function B(){if(ai_track_pageviews){var b=document.documentElement.clientWidth,m=window.innerWidth,n=b<m?m:b,f=0;ai_viewport_widths.every((h,g)=>n>=h?(f=ai_viewport_indexes[g],!1):!0);b=document.querySelector(b64d("Ym9keQ==")).getAttribute(b64d(ai_adb_attribute));if("string"===typeof b)var d=b==b64d("bWFzaw==");"string"===typeof b&&"boolean"===typeof d&&d&&(ai_external_tracking&&l("ad blocking",0,ai_viewport_names[f-1],0,0,"",!0),f|=128);y=[0,f]}x();ai_process_impressions(); if(0!=y.length&&ai_internal_tracking){d={action:"ai_ajax",ai_check:ai_data_id};var a=[],c;for(c in d)b=encodeURIComponent(c),m=encodeURIComponent(d[c]),a.push(b+"="+m);b=encodeURIComponent("views[]");m=encodeURIComponent(0);a.push(b+"="+m);b=encodeURIComponent("versions[]");m=encodeURIComponent(f);a.push(b+"="+m);a=a.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:a})).text()})().then(h=> {})}ai_tracking_finished=!0}ai_debug_tracking&&(ai_ajax_url+="?ai-debug-tracking=1");Number.isInteger=Number.isInteger||function(b){return"number"===typeof b&&isFinite(b)&&Math.floor(b)===b};ai_install_standard_click_trackers=function(b){"undefined"==typeof b&&(b=document.querySelector("body"));b=b.querySelectorAll("div.ai-track[data-ai]");var m=[];b.forEach((f,d)=>{if(f.offsetWidth||f.offsetHeight||f.getClientRects().length)f.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length|| m.push(f)});var n=[];m.forEach((f,d)=>{f.classList.remove("ai-track");n.push.apply(n,f.querySelectorAll("a"))});b=n;0!=b.length&&(ai_advanced_click_detection?b.forEach((f,d)=>{f.addEventListener("click",()=>{for(var a=f.closest("div[data-ai]");null!==a&&a.hasAttribute("data-ai");){var c=JSON.parse(b64d(a.getAttribute("data-ai")));"undefined"!==typeof c&&c.constructor===Array&&Number.isInteger(c[1])&&!a.classList.contains("clicked")&&(a.classList.add("clicked"),r(c,"a.click"));a=a.parentElement.closest("div[data-ai]")}})}): b.forEach((f,d)=>{f.addEventListener("click",()=>{for(var a=f.closest("div[data-ai]");null!==a&&a.hasAttribute("data-ai");){var c=JSON.parse(b64d(a.getAttribute("data-ai")));"undefined"!==typeof c&&c.constructor===Array&&Number.isInteger(c[1])&&(r(c,"a.click"),clicked=!0);a=a.parentElement.closest("div[data-ai]")}})}))};ai_install_click_trackers=function(b){"undefined"==typeof b&&(b=document.querySelector("body"));if(ai_advanced_click_detection){var m=b.querySelectorAll("div.ai-track[data-ai], div.ai-rotate[data-info] div.ai-track[data-ai]"), n=[];m.forEach((d,a)=>{(d.offsetWidth||d.offsetHeight||d.getClientRects().length)&&n.push(d)});b.hasAttribute("data-ai")&&b.classList.contains("ai-track")&&(b.offsetWidth||b.offsetHeight||b.getClientRects().length)&&n.push(b);var f=[];n.forEach((d,a)=>{d.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length||f.push(d)});m=f;0!=m.length&&m.forEach((d,a)=>{installIframeTracker({blurCallback:function(){if(null!=this.ai_data&& null!=wrapper&&!wrapper.classList.contains("clicked")){wrapper.classList.add("clicked");r(this.ai_data,"blurCallback");for(var c=wrapper.querySelector("div[data-ai]");null!=c&&(c.offsetWidth||c.offsetHeight||c.getClientRects().length)&&c.hasAttribute("data-ai");){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])&&r(h,"blurCallback INNER");c=c.querySelector("div[data-ai]")}}},overCallback:function(c){c=c.closest("div[data-ai]"); if(c.hasAttribute("data-ai")){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])?(wrapper=c,this.ai_data=h):(null!=wrapper&&wrapper.classList.remove("clicked"),this.ai_data=wrapper=null)}},outCallback:function(c){null!=wrapper&&wrapper.classList.remove("clicked");this.ai_data=wrapper=null},focusCallback:function(c){if(null!=this.ai_data&&null!=wrapper&&!wrapper.classList.contains("clicked"))for(wrapper.classList.add("clicked"),r(this.ai_data, "focusCallback"),c=wrapper.querySelector("div[data-ai]");null!=c&&(c.offsetWidth||c.offsetHeight||c.getClientRects().length)&&c.hasAttribute("data-ai");){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])&&r(h,"focusCallback INNER");c=c.querySelector("div[data-ai]")}},wrapper:null,ai_data:null,block:null,version:null},d)})}ai_install_standard_click_trackers(b)};var y=[];ai_process_impressions=function(b){"undefined"==typeof b&&(b= document.querySelector("body"));var m=[],n=[],f=[],d=[],a=[];0!=y.length&&(m.push(y[0]),n.push(y[1]),f.push("Pageviews"),a.push(0),d.push(""));var c=b.querySelectorAll("div.ai-track[data-ai], div.ai-rotate[data-info] div.ai-track[data-ai]"),h=[];c.forEach((e,p)=>{(e.offsetWidth||e.offsetHeight||e.getClientRects().length)&&!e.classList.contains("ai-no-pageview")&&h.push(e)});null!==b&&b.hasAttribute("data-ai")&&b.classList.contains("ai-track")&&!b.classList.contains("ai-no-pageview")&&(b.offsetWidth|| b.offsetHeight||b.getClientRects().length)&&h.push(b);c=h;0!=c.length&&c.forEach((e,p)=>{if(e.hasAttribute("data-ai")){p="";for(var v=1;9>=v;v++)if(e.hasAttribute("data-ai-"+v))p=e.getAttribute("data-ai-"+v);else break;""!=p&&e.setAttribute("data-ai",p);p=JSON.parse(b64d(e.getAttribute("data-ai")));if("undefined"!==typeof p&&p.constructor===Array){v=0;var z=e.querySelectorAll("div.ai-rotate[data-info]");1==z.length&&(v=JSON.parse(b64d(z[0].dataset.info))[1]);if(Number.isInteger(p[0])&&0!=p[0]&&Number.isInteger(p[1])){z= 0;var C=e.classList.contains("ai-no-tracking"),A=document.querySelector(b64d("Ym9keQ==")).getAttribute(b64d(ai_adb_attribute));if("string"===typeof A)var D=A==b64d("bWFzaw==");if("string"===typeof A&&"boolean"===typeof D){var E=e.offsetHeight;A=e.querySelectorAll(".ai-attributes");A.length&&A.forEach((H,J)=>{E>=e.offsetHeight&&(E-=e.offsetHeight)});A=e.querySelectorAll(".ai-code");E=0;A.length&&A.forEach((H,J)=>{E+=H.offsetHeight});D&&0===E&&(z=128)}0!=e.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length&& (C=!0);if(!C)if(0==v)m.push(p[0]),n.push(p[1]|z),f.push(p[2]),d.push(p[3]),a.push(p[4]);else for(D=1;D<=v;D++)m.push(p[0]),n.push(D|z),f.push(p[2]),d.push(p[3]),a.push(p[4])}}}});ai_cookie=ai_load_cookie();for(var g in ai_cookie)if(m.includes(parseInt(g)))for(var q in ai_cookie[g])"i"==q?(b=ai_cookie[g][q],0<b&&(1==b?(b=new Date,b=Math.round(b.getTime()/1E3)+604800,ai_set_cookie(g,"i",-b)):ai_set_cookie(g,"i",b-1))):"ipt"==q&&(b=ai_cookie[g][q],0<b?ai_set_cookie(g,"ipt",b-1):ai_check_data.hasOwnProperty(g)&& ai_check_data[g].hasOwnProperty("ipt")&&ai_check_data[g].hasOwnProperty("it")?ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("it")&&(b=new Date,0>=ai_cookie[g].it-Math.round(b.getTime()/1E3)&&(b=Math.round(b.getTime()/1E3),ai_set_cookie(g,"ipt",ai_check_data[g].ipt),ai_set_cookie(g,"it",Math.round(b+86400*ai_check_data[g].it)))):(ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("ipt")&&ai_set_cookie(g,"ipt",""),ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("it")&&ai_set_cookie(g, "it","")));if(m.length){if(ai_internal_tracking&&"undefined"===typeof ai_internal_tracking_no_impressions){y=[];g={action:"ai_ajax",ai_check:ai_data_id};var u=[],t;for(t in g)q=encodeURIComponent(t),b=encodeURIComponent(g[t]),u.push(q+"="+b);for(var w in m)q=encodeURIComponent("views[]"),b=encodeURIComponent(m[w]),u.push(q+"="+b);for(w in n)q=encodeURIComponent("versions[]"),b=encodeURIComponent(n[w]),u.push(q+"="+b);u=u.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST", headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:u})).text()})().then(e=>{e=e.trim();if(""!=e&&(e=JSON.parse(e),"undefined"!=typeof e["#"])){ai_cookie=ai_load_cookie();var p=Math.round((new Date).getTime()/1E3)+43200,v=[],z;for(z in e["#"])ai_cookie.hasOwnProperty(e["#"][z])&&ai_cookie[e["#"][z]].hasOwnProperty("x")||ai_set_cookie(e["#"][z],"x",p);setTimeout(function(){for(w=0;w<v.length;++w)document.querySelectorAll('span[data-ai-block="'+v[w]+'"]').forEach((C,A)=> {(C=C.closest("div[data-ai]"))&&C.remove()})},50)}})}if(ai_external_tracking&&"undefined"===typeof ai_external_tracking_no_impressions)for(t=0;t<m.length;t++)0!=m[t]&&l("impression",m[t],f[t],a[t],n[t],d[t],!0)}};window.addEventListener("load",b=>{"undefined"==typeof ai_delay_tracking&&(ai_delay_tracking=0);setTimeout(B,ai_delay_tracking+1400);setTimeout(ai_install_click_trackers,ai_delay_tracking+1500)})})}; ai_js_code = true; </script> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10