Files
nexus/sreweekly/articles/408/07-23-the-danger-of-unreliable-platforms-with-jade-rubick.html
2026-09-12 17:23:01 +08:00

992 lines
85 KiB
HTML

<!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="max-image-preview:large">
<title>#23 &#8211; The Danger of Unreliable Platforms (with Jade Rubick) &#8211; Boost software reliability | SREpath</title>
<link rel="alternate" type="application/rss+xml" title="Boost software reliability | SREpath &raquo; Feed" href="/feed/">
<link rel="alternate" type="application/rss+xml" title="Boost software reliability | SREpath &raquo; Comments Feed" href="/comments/feed/">
<script>
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":"\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.5"}};
/*! 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,"🏳️‍⚧️","🏳️​⚧️")?!1:!n(e,"🇺🇳","🇺​🇳")&&!n(e,"🏴󠁧󠁢󠁥󠁮󠁧󠁿","🏴​󠁧​󠁢​󠁥​󠁮​󠁧​󠁿");case"emoji":return!n(e,"🐦‍⬛","🐦​⬛")}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>
<style id="wp-block-site-logo-inline-css">.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}.wp-block-site-logo.is-style-rounded{border-radius:9999px}</style>
<style id="wp-block-navigation-link-inline-css">.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{border-top:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}.components-popover-pointer-events-trap{background-color:initial;cursor:pointer;inset:0;position:fixed;z-index:1000000}</style>
<link rel="stylesheet" id="wp-block-navigation-css" href="/wp-includes/blocks/navigation/style.min.css?ver=6.5.5" media="all">
<link rel="stylesheet" id="ollie-block-core-navigation-css" href="/wp-content/themes/ollie/assets/styles/core-navigation.css?ver=6.5.5" media="all">
<style id="wp-block-group-inline-css">.wp-block-group{box-sizing:border-box}</style>
<style id="ideabox-toc-style-inline-css">html{scroll-behavior:auto !important}.ib-toc-container .ib-toc-icon-collapse,.ib-toc-container .ib-toc-icon-expand{display:none;height:20px;line-height:1}.ib-toc-container .ib-toc-icon-collapse svg,.ib-toc-container .ib-toc-icon-expand svg{fill:var(--fill)}.ib-toc-container.ib-toc-expanded .ib-toc-icon-collapse{display:inline}.ib-toc-container.ib-toc-collapsed .ib-toc-icon-expand{display:inline}.ib-toc-container .ib-toc-header{padding:10px 20px;display:flex;flex-direction:row;justify-content:space-between;align-items:center;cursor:pointer}.ib-toc-container .ib-toc-header .ib-toc-header-right{display:flex}.ib-toc-container .ib-toc-body{padding:20px}.ib-toc-container .ib-toc-separator{height:1px;background-color:#333}.ib-toc-container .ib-toc-anchors{margin:0;padding:0}.ib-toc-container .ib-toc-anchors ul,.ib-toc-container .ib-toc-anchors ol{padding-left:45px}.ib-toc-container .ib-toc-anchors li{margin-top:var(--listSpacing)}.ib-toc-container .ib-toc-anchors>li:first-of-type{margin-top:0}.ib-toc-container .ib-toc-anchors a{color:var(--linkColor)}.ib-toc-container ol{list-style:none !important;counter-reset:item}.ib-toc-container ol li{counter-increment:item}.ib-toc-container ol li:before{content:counters(item, ".") " ";display:inline-block;margin-right:.5em;text-align:right}.ib-toc-container ol.ib-toc-anchors>li:before{content:counters(item, ".") ". "}</style>
<style id="wp-block-post-terms-inline-css">.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}</style>
<style id="ollie-block-core-post-terms-inline-css">/* Categories
--------------------------------------------- */
.is-style-term-button a {
padding: 6px 12px;
border-radius: 5px;
background-color: var(--wp--preset--color--tertiary);
font-size: var(--wp--preset--font-size--x-small);
color: var(--wp--preset--color--primary);
line-height: 1.4;
}
.single .taxonomy-post_tag.is-style-term-button {
display: flex;
gap: var(--wp--preset--spacing--small);
}
.single .taxonomy-post_tag.is-style-term-button .wp-block-post-terms__separator {
display: none;
}
.single .post-meta:empty {
display: none;
}</style>
<style id="wp-block-post-title-inline-css">.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title a{display:inline-block}</style>
<style id="wp-block-post-author-inline-css">.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{font-size:.5em;margin-bottom:0;margin-top:0;width:100%}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{font-size:.7em;margin-bottom:.7em}.wp-block-post-author__content{flex-basis:0;flex-grow:1}.wp-block-post-author__name{margin:0}</style>
<style id="ollie-block-core-post-author-inline-css">/* Post Author
--------------------------------------------- */
.wp-block-post-author {
align-items: center;
}
.wp-block-post-author__name {
margin-bottom: 0;
}
.wp-block-post-author__avatar {
display: inline-flex;
align-items: center;
margin-right: .8rem;
}
.wp-block-post-author__avatar img {
width: 26px;
height: 26px;
border-radius: 100px;
}</style>
<style id="wp-block-paragraph-inline-css">.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}p.has-background{padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}</style>
<style id="ollie-block-core-paragraph-inline-css">/* Paragraph
--------------------------------------------- */
p.has-background {
padding: var(--wp--preset--spacing--small);
}</style>
<style id="wp-block-post-date-inline-css">.wp-block-post-date{box-sizing:border-box}</style>
<style id="wp-block-post-featured-image-inline-css">.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}</style>
<style id="wp-block-heading-inline-css">h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}</style>
<style id="wp-block-list-inline-css">ol,ul{box-sizing:border-box}ol.has-background,ul.has-background{padding:1.25em 2.375em}</style>
<style id="ollie-block-core-list-inline-css">/* List
--------------------------------------------- */
/* List styles for default unordered lists */
.entry-content ul li,
.entry-content ol li,
.wp-block-post-content ul li,
.wp-block-post-content ol li {
margin-bottom: var(--wp--preset--spacing--small);
}
/* .entry-content > ul li,
.entry-content > ol li,
.wp-block-post-content > ul li,
.wp-block-post-content > ol li {
margin-bottom: var(--wp--preset--spacing--small);
} */
.entry-content ul ul,
.entry-content ol ul,
.wp-block-post-content ul ul,
.wp-block-post-content ol ul {
margin-top: var(--wp--preset--spacing--small);
}
/* Remove paddings */
.entry-content :not(.wp-block-group) > li:first-child {
padding-top: 0;
}
.entry-content :not(.wp-block-group) li:last-child {
padding-bottom: 0;
}
ul.is-style-list-check,
ul.is-style-list-check ul,
ul.is-style-list-check-circle,
ul.is-style-list-check-circle ul {
padding-inline-start: 0px !important;
padding-left: 0;
list-style: none;
}
.entry-content ul.is-style-list-check,
.entry-content ul.is-style-list-check-circle {
padding-inline-start: .5rem;
}
ul.is-style-list-check li,
ul.is-style-list-check-circle li {
position: relative;
padding-left: calc(var(--wp--preset--spacing--medium) + .5rem);
}
ul.is-style-list-check li:before,
ul.is-style-list-check-circle li:before {
font-family: 'Dashicons';
content: "\f147";
position: absolute;
left: 0;
}
ul.is-style-list-check-circle li:before {
content: "\f12a";
}
ul.is-style-list-check-circle li {
padding-left: calc(var(--wp--preset--spacing--medium) + .5rem);
}
/* Boxed list style */
ul.is-style-list-boxed,
ul.is-style-list-boxed.wp-block {
background: var(--wp--preset--color--tertiary);
padding: var(--wp--preset--spacing--medium) var(--wp--preset--spacing--large);
border-radius: 5px;
}
ul.is-style-list-boxed li:last-child {
margin-bottom: 0;
}</style>
<style id="wp-block-quote-inline-css">.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}</style>
<style id="ollie-block-core-quote-inline-css">/* Quote
--------------------------------------------- */
.wp-block-quote.has-text-align-center,
.wp-block-quote.has-text-align-left,
.wp-block-quote.has-text-align-right {
padding: var(--wp--preset--spacing--large);
}
.wp-block-quote p:last-of-type {
margin-bottom: var(--wp--preset--spacing--small);
}
.wp-block-quote cite,
.wp-block-pullquote cite {
display: block;
}</style>
<style id="wp-block-separator-inline-css">@charset "UTF-8";.wp-block-separator{border:none;border-top:2px solid}.wp-block-separator.is-style-dots{background:none!important;border:none;height:auto;line-height:1;text-align:center}.wp-block-separator.is-style-dots:before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}</style>
<style id="ollie-block-core-separator-inline-css">/* Separator
--------------------------------------------- */
.wp-block-separator {
opacity: 1;
}
.wp-block-separator:not(.is-style-dots),
.wp-block-separator.has-background:not(.is-style-dots) {
border-bottom: 1px solid currentColor;
height: 1px;
}
.wp-block-separator.is-style-dots::before {
font-family: sans-serif;
font-size: var(--wp--preset--font-size--large);
letter-spacing: 10px;
padding-left: 10px;
}
hr.is-style-separator-dotted,
.editor-styles-wrapper hr.is-style-separator-dotted {
width: 100% !important;
height: 1px !important;
border: none !important;
height: 1px !important;
background-color: none !important;
background: currentColor !important;
background: repeating-linear-gradient(90deg,currentColor,currentColor 2px,transparent 2px,transparent 5px) !important;
}
.is-style-separator-thin {
border: none !important;
}</style>
<link rel="stylesheet" id="wp-block-image-css" href="/wp-includes/blocks/image/style.min.css?ver=6.5.5" media="all">
<style id="ollie-block-core-image-inline-css">/* Image
--------------------------------------------- */
.wp-block-post-content > .wp-block-image,
.wp-block-post-content > .wp-block-gallery {
margin-top: var(--wp--preset--spacing--large);
margin-bottom: var(--wp--preset--spacing--large);
}
.wp-block-image.alignleft {
margin-bottom: var(--wp--preset--spacing--small);
}
.wp-block-image.alignright {
margin-bottom: var(--wp--preset--spacing--small);
}
html .is-layout-flex .wp-block-image {
flex-shrink: 0;
}
.wp-block-image.is-style-rounded img,
.wp-block-image .is-style-rounded img {
border-radius: 10px;
}
.wp-block-image.is-style-rounded-full img,
.wp-block-image .is-style-rounded-full img {
border-radius: 1000px;
}
.is-style-media-boxed {
background-color: var(--wp--preset--color--tertiary);
padding: var(--wp--preset--spacing--large);
border-radius: 5px;
}
.is-style-media-boxed img {
box-shadow:
1px 2px 2px hsl(233deg 38% 85% / 0.2),
2px 4px 4px hsl(233deg 38% 85% / 0.2),
4px 8px 8px hsl(233deg 38% 85% / 0.2),
8px 16px 16px hsl(233deg 38% 85% / 0.2),
16px 32px 32px hsl(233deg 38% 85% / 0.2);
}
.is-style-media-boxed figcaption {
margin-bottom: calc(var(--wp--preset--spacing--small) * -1) !important;
}</style>
<style id="wp-block-spacer-inline-css">.wp-block-spacer{clear:both}</style>
<style id="wp-block-columns-inline-css">.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}</style>
<style id="ollie-block-core-columns-inline-css">/* Column
--------------------------------------------- */
.is-style-column-box-shadow {
box-shadow: 0px 8px 40px -20px rgb(21 14 41 / 12%);
transition: .4s ease;
}
.is-style-column-box-shadow:hover {
box-shadow: 0px 12px 60px -20px rgb(21 14 41 / 16%);
}
.wp-block-column {
border-radius: 5px;
}</style>
<style id="wp-block-comments-inline-css">.wp-block-post-comments{box-sizing:border-box}.wp-block-post-comments .alignleft{float:left}.wp-block-post-comments .alignright{float:right}.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-left:3.25em}.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;margin-top:.5em;width:2.5em}.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}</style>
<style id="ollie-block-core-comments-inline-css">/* Comments
--------------------------------------------- */
.wp-block-post-comments .commentlist {
margin-bottom: 40px;
margin-top: 40px;
}
.wp-block-comment-template ol {
padding-inline-start: var(--wp--preset--spacing--medium) !important;
}
.wp-block-comment-template > li {
margin-left: 0;
}
.wp-block-post-comments .form-submit {
margin-bottom: 0;
}
.comment-form-cookies-consent {
font-size: var(--wp--preset--font-size--small);
}
.comment .avatar {
margin-top: 8px;
}
.wp-block-comment-template + .wp-block-post-comments-form {
margin-top: var(--wp--preset--spacing--large);
}
.wp-block-comments .wp-block-group:empty {
display: none;
}
.wp-block-comments .wp-block-group:empty + .comment-respond {
margin-top: 0;
}
.wp-block-comments-pagination-numbers > * {
margin: 0 4px;
}
/* Comment Author Avatar
--------------------------------------------- */
.wp-block-post-comments .comment-author .avatar {
height: 48px;
margin-top: 2px;
width: 48px;
}</style>
<link rel="stylesheet" id="wp-block-social-links-css" href="/wp-includes/blocks/social-links/style.min.css?ver=6.5.5" media="all">
<style id="wp-emoji-styles-inline-css">img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}</style>
<link rel="stylesheet" id="wp-block-library-css" href="/wp-includes/css/dist/block-library/common.min.css?ver=6.5.5" media="all">
<link rel="stylesheet" id="dashicons-css" href="/wp-includes/css/dashicons.min.css?ver=6.5.5" media="all">
<style id="global-styles-inline-css">body{--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--color--primary: #4d34fa;--wp--preset--color--main: #14111f;--wp--preset--color--secondary: #636381;--wp--preset--color--main-accent: #d0ccde;--wp--preset--color--primary-accent: #e4e1fe;--wp--preset--color--tertiary: #f6f6fc;--wp--preset--color--base: #fff;--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--gradient--purple: linear-gradient(135deg, #4D34FA, #ad34fa);--wp--preset--gradient--blue: linear-gradient(135deg, #0057FF, #31B5FF);--wp--preset--gradient--pink: linear-gradient(135deg, #FF007A, #FF81BD);--wp--preset--gradient--black: linear-gradient(135deg, #14111E, #4B4462);--wp--preset--gradient--heat: linear-gradient(135deg, #F32758, #FFC581);--wp--preset--font-size--small: clamp(1rem, 1rem + ((1vw - 0.2rem) * 0.34), 1.2rem);--wp--preset--font-size--medium: clamp(1.3rem, 1.3rem + ((1vw - 0.2rem) * 0.511), 1.6rem);--wp--preset--font-size--large: clamp(1.5rem, 1.5rem + ((1vw - 0.2rem) * 0.851), 2rem);--wp--preset--font-size--x-large: clamp(2rem, 2rem + ((1vw - 0.2rem) * 1.362), 2.8rem);--wp--preset--font-size--x-small: clamp(.9rem, 0.9rem + ((1vw - 0.2rem) * 0.17), 1rem);--wp--preset--font-size--base: clamp(1.13rem, 1.13rem + ((1vw - 0.2rem) * 0.289), 1.3rem);--wp--preset--font-size--xx-large: clamp(2.6rem, 2.6rem + ((1vw - 0.2rem) * 1.957), 3.75rem);--wp--preset--font-size--xxx-large: clamp(3rem, 3rem + ((1vw - 0.2rem) * 3.064), 4.8rem);--wp--preset--font-family--primary: Inter, sans-serif;--wp--preset--font-family--monospace: monospace;--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--spacing--small: clamp(.5rem, 2.5vw, 1rem);--wp--preset--spacing--medium: clamp(1.5rem, 4vw, 2rem);--wp--preset--spacing--large: clamp(2rem, 5vw, 3rem);--wp--preset--spacing--x-large: clamp(3rem, 7vw, 5rem);--wp--preset--spacing--xx-large: clamp(4rem, 9vw, 7rem);--wp--preset--spacing--xxx-large: clamp(5rem, 12vw, 9rem);--wp--preset--spacing--xxxx-large: clamp(6rem, 14vw, 13rem);--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);--wp--custom--font-weight--thin: 100;--wp--custom--font-weight--extra-light: 200;--wp--custom--font-weight--light: 300;--wp--custom--font-weight--regular: 400;--wp--custom--font-weight--medium: 500;--wp--custom--font-weight--semi-bold: 600;--wp--custom--font-weight--bold: 700;--wp--custom--font-weight--extra-bold: 800;--wp--custom--font-weight--black: 900;--wp--custom--line-height--none: 1;--wp--custom--line-height--tight: 1.1;--wp--custom--line-height--snug: 1.2;--wp--custom--line-height--normal: 1.5;--wp--custom--line-height--relaxed: 1.625;--wp--custom--line-height--loose: 2;--wp--custom--line-height--body: calc(1px + 2ex + 7px);}body { margin: 0;--wp--style--global--content-size: 740px;--wp--style--global--wide-size: 1260px; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--medium); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: var(--wp--preset--spacing--medium); }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--medium);margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--medium);margin-block-end: 0;}:where(body .is-layout-flex) {gap: var(--wp--preset--spacing--medium);}:where(body .is-layout-grid) {gap: var(--wp--preset--spacing--medium);}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{background-color: var(--wp--preset--color--base);color: var(--wp--preset--color--main);font-family: var(--wp--preset--font-family--primary);font-size: var(--wp--preset--font-size--medium);font-weight: var(--wp--custom--font-weight--regular);line-height: var(--wp--custom--line-height--body);--wp--style--root--padding-top: 0;--wp--style--root--padding-right: var(--wp--preset--spacing--medium);--wp--style--root--padding-bottom: 0;--wp--style--root--padding-left: var(--wp--preset--spacing--medium);}a:where(:not(.wp-element-button)){color: var(--wp--preset--color--main);text-decoration: underline;}h1, h2, h3, h4, h5, h6{font-family: var(--wp--preset--font-family--primary);font-weight: var(--wp--custom--font-weight--medium);line-height: var(--wp--custom--line-height--body);}h1{font-size: var(--wp--preset--font-size--xx-large);}h2{font-size: var(--wp--preset--font-size--x-large);}h3{font-size: var(--wp--preset--font-size--large);}h4{font-size: var(--wp--preset--font-size--medium);}h5{font-size: var(--wp--preset--font-size--base);}h6{font-size: var(--wp--preset--font-size--small);}.wp-element-button, .wp-block-button__link{background-color: var(--wp--preset--color--primary);border-radius: 5px;border-width: 0;color: var(--wp--preset--color--base);font-family: inherit;font-size: var(--wp--preset--font-size--small);font-weight: var(--wp--custom--font-weight--medium);line-height: inherit;padding-top: .5em;padding-right: 1em;padding-bottom: .5em;padding-left: 1em;text-decoration: none;}.wp-element-button:hover, .wp-block-button__link:hover{background-color: var(--wp--preset--color--primary);color: var(--wp--preset--color--base);text-decoration: underline;}.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-primary-color{color: var(--wp--preset--color--primary) !important;}.has-main-color{color: var(--wp--preset--color--main) !important;}.has-secondary-color{color: var(--wp--preset--color--secondary) !important;}.has-main-accent-color{color: var(--wp--preset--color--main-accent) !important;}.has-primary-accent-color{color: var(--wp--preset--color--primary-accent) !important;}.has-tertiary-color{color: var(--wp--preset--color--tertiary) !important;}.has-base-color{color: var(--wp--preset--color--base) !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-primary-background-color{background-color: var(--wp--preset--color--primary) !important;}.has-main-background-color{background-color: var(--wp--preset--color--main) !important;}.has-secondary-background-color{background-color: var(--wp--preset--color--secondary) !important;}.has-main-accent-background-color{background-color: var(--wp--preset--color--main-accent) !important;}.has-primary-accent-background-color{background-color: var(--wp--preset--color--primary-accent) !important;}.has-tertiary-background-color{background-color: var(--wp--preset--color--tertiary) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !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-primary-border-color{border-color: var(--wp--preset--color--primary) !important;}.has-main-border-color{border-color: var(--wp--preset--color--main) !important;}.has-secondary-border-color{border-color: var(--wp--preset--color--secondary) !important;}.has-main-accent-border-color{border-color: var(--wp--preset--color--main-accent) !important;}.has-primary-accent-border-color{border-color: var(--wp--preset--color--primary-accent) !important;}.has-tertiary-border-color{border-color: var(--wp--preset--color--tertiary) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !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-purple-gradient-background{background: var(--wp--preset--gradient--purple) !important;}.has-blue-gradient-background{background: var(--wp--preset--gradient--blue) !important;}.has-pink-gradient-background{background: var(--wp--preset--gradient--pink) !important;}.has-black-gradient-background{background: var(--wp--preset--gradient--black) !important;}.has-heat-gradient-background{background: var(--wp--preset--gradient--heat) !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;}.has-x-small-font-size{font-size: var(--wp--preset--font-size--x-small) !important;}.has-base-font-size{font-size: var(--wp--preset--font-size--base) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-xxx-large-font-size{font-size: var(--wp--preset--font-size--xxx-large) !important;}.has-primary-font-family{font-family: var(--wp--preset--font-family--primary) !important;}.has-monospace-font-family{font-family: var(--wp--preset--font-family--monospace) !important;}
.wp-block-navigation{font-weight: var(--wp--custom--font-weight--medium);}
.wp-block-navigation a:where(:not(.wp-element-button)){color: var(--wp--preset--color--primary-accent);text-decoration: none;}
.wp-block-navigation a:where(:not(.wp-element-button)):hover{color: var(--wp--preset--color--base);text-decoration: underline;}
.wp-block-navigation a:where(:not(.wp-element-button)):focus{color: var(--wp--preset--color--base);text-decoration: none;}
.wp-block-navigation a:where(:not(.wp-element-button)):active{color: var(--wp--preset--color--base);text-decoration: none;}
.wp-block-columns{margin-bottom: 0px;}
p{line-height: var(--wp--custom--line-height--body);}
.wp-block-post-terms a:where(:not(.wp-element-button)){text-decoration: none;}
.wp-block-post-title{font-size: var(--wp--preset--font-size--xx-large);line-height: var(--wp--custom--line-height--body);}
.wp-block-post-title a:where(:not(.wp-element-button)){text-decoration: none;}
.wp-block-post-title a:where(:not(.wp-element-button)):hover{text-decoration: underline;}
.wp-block-quote{border-radius: 0;border-color: var(--wp--preset--color--primary);border-width: 0 0 0 5px !important;border-style: solid;font-size: var(--wp--preset--font-size--medium);font-weight: var(--wp--custom--font-weight--medium);line-height: var(--wp--custom--line-height--normal);padding-right: var(--wp--preset--spacing--large);padding-left: var(--wp--preset--spacing--large);}
.wp-block-quote cite{color: var(--wp--preset--color--secondary);font-size: var(--wp--preset--font-size--small);margin-top: 10px;}
.wp-block-spacer{margin-top: 0 !important;}
.wp-block-separator{color: var(--wp--preset--color--main);font-size: var(--wp--preset--font-size--large);}
.wp-block-template-part{margin-top: 0px !important;}
.sticky-sidebar {
position: sticky;
top: 4rem;
}
.wp-block-latest-posts__post-date {
margin-bottom:36px;
}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper {border: none}</style>
<style id="core-block-supports-inline-css">.wp-elements-fea50d38d3b9b114f39bcb4ad4b116ff a:where(:not(.wp-element-button)){color:var(--wp--preset--color--base);}.wp-container-core-navigation-is-layout-1.wp-container-core-navigation-is-layout-1{gap:20px;}.wp-container-core-group-is-layout-1.wp-container-core-group-is-layout-1{justify-content:space-between;}.wp-elements-72e07f095da13a7bb673ea461d9ed494 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--primary);}.wp-elements-9aa739effdf6d06d6e39339e4e43e1b3 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--secondary);}.wp-container-core-group-is-layout-3.wp-container-core-group-is-layout-3{flex-wrap:nowrap;gap:10px;}.wp-elements-bd79afba7f00a2d2e79e252b6511e7e8 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--secondary);}.wp-container-core-group-is-layout-5.wp-container-core-group-is-layout-5{justify-content:space-between;}.wp-container-core-group-is-layout-7.wp-container-core-group-is-layout-7 > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-7.wp-container-core-group-is-layout-7.wp-container-core-group-is-layout-7.wp-container-core-group-is-layout-7 > * + *{margin-block-start:var(--wp--preset--spacing--medium);margin-block-end:0;}.wp-container-core-columns-is-layout-1.wp-container-core-columns-is-layout-1{flex-wrap:nowrap;}.wp-elements-6e0a8c899515679c402384022b4528f4 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--base);}.wp-container-core-social-links-is-layout-1.wp-container-core-social-links-is-layout-1{gap:20px 20px;justify-content:center;}.wp-container-core-columns-is-layout-2.wp-container-core-columns-is-layout-2{flex-wrap:nowrap;gap:var(--wp--preset--spacing--x-large) var(--wp--preset--spacing--x-large);}.wp-elements-f61512c823a772c477503f2d41fb0964 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--main-accent);}.wp-container-core-group-is-layout-8.wp-container-core-group-is-layout-8{gap:var(--wp--preset--spacing--small);justify-content:center;}.wp-container-core-group-is-layout-10.wp-container-core-group-is-layout-10 > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-10.wp-container-core-group-is-layout-10.wp-container-core-group-is-layout-10.wp-container-core-group-is-layout-10 > * + *{margin-block-start:var(--wp--preset--spacing--x-large);margin-block-end:0;}.wp-duotone-unset-2.wp-block-post-featured-image img, .wp-duotone-unset-2.wp-block-post-featured-image .wp-block-post-featured-image__placeholder, .wp-duotone-unset-2.wp-block-post-featured-image .components-placeholder__illustration, .wp-duotone-unset-2.wp-block-post-featured-image .components-placeholder::before{filter:unset;}</style>
<style id="wp-block-template-skip-link-inline-css">.skip-link.screen-reader-text {
border: 0;
clip: rect(1px,1px,1px,1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute !important;
width: 1px;
word-wrap: normal !important;
}
.skip-link.screen-reader-text:focus {
background-color: #eee;
clip: auto !important;
clip-path: none;
color: #444;
display: block;
font-size: 1em;
height: auto;
left: 5px;
line-height: normal;
padding: 15px 23px 14px;
text-decoration: none;
top: 5px;
width: auto;
z-index: 100000;
}</style>
<link rel="stylesheet" id="ollie-css" href="/wp-content/themes/ollie/style.css?ver=1.1.0" media="all">
<style id="generateblocks-inline-css">.gb-container-d6a21a91{padding:16px 32px 32px;margin-left:32px;border-radius:10px;border:1px solid #636381;background-color:#f6f6fc;}.gb-container-e4ec5504{min-height:100%;padding-right:10px;padding-left:10px;}.gb-grid-wrapper > .gb-grid-column-fe753567{width:100%;}.gb-grid-wrapper-0de1a18b{display:flex;flex-wrap:wrap;}.gb-grid-wrapper-0de1a18b > .gb-grid-column{box-sizing:border-box;}.gb-grid-wrapper > .gb-grid-column-adf39bfb{width:25%;}.gb-grid-wrapper > .gb-grid-column-6b3ae155{width:50%;}.gb-grid-wrapper > .gb-grid-column-e35f2f56{width:25%;}.gb-grid-wrapper-2a306ad3{display:flex;flex-wrap:wrap;}.gb-grid-wrapper-2a306ad3 > .gb-grid-column{box-sizing:border-box;}.gb-grid-wrapper-59f62d27{display:flex;flex-wrap:wrap;}.gb-grid-wrapper-59f62d27 > .gb-grid-column{box-sizing:border-box;}.gb-container-b8fc53d3{text-align:left;}.gb-container-b8fc53d3 > .gb-inside-container{padding-left:0;}.gb-grid-wrapper > .gb-grid-column-b8fc53d3{width:100%;}.gb-grid-wrapper > .gb-grid-column-b8fc53d3 > .gb-container{display:flex;flex-direction:column;height:100%;}.gb-container-582182de > .gb-inside-container{max-width:1100px;margin-left:auto;margin-right:auto;}.gb-grid-wrapper > .gb-grid-column-582182de > .gb-container{display:flex;flex-direction:column;height:100%;}.gb-container-f253ffaa > .gb-inside-container{max-width:1100px;margin-left:auto;margin-right:auto;}.gb-grid-wrapper > .gb-grid-column-f253ffaa > .gb-container{display:flex;flex-direction:column;height:100%;}@media (max-width: 767px) {.gb-grid-wrapper > .gb-grid-column-fe753567{width:100%;}.gb-grid-wrapper > .gb-grid-column-adf39bfb{width:100%;}.gb-grid-wrapper > .gb-grid-column-6b3ae155{width:100%;}.gb-grid-wrapper > .gb-grid-column-e35f2f56{width:100%;}.gb-grid-wrapper > .gb-grid-column-b8fc53d3{width:100%;}}.gb-container .wp-block-image img{vertical-align:middle;}.gb-grid-wrapper .wp-block-image{margin-bottom:0;}.gb-highlight{background:none;}</style>
<script src="/wp-content/plugins/table-of-contents/assets/js/frontend.js?ver=1.0.2" id="ideabox-toc-script-js"></script>
<link rel="https://api.w.org/" href="/wp-json/">
<link rel="alternate" type="application/json" href="/wp-json/wp/v2/posts/6328">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="/xmlrpc.php?rsd">
<meta name="generator" content="WordPress 6.5.5">
<link rel="canonical" href="/danger-of-unreliable-platform-engineering/">
<link rel="shortlink" href="/?p=6328">
<link rel="alternate" type="application/json+oembed" href="/wp-json/oembed/1.0/embed?url=%2Fdanger-of-unreliable-platform-engineering%2F">
<link rel="alternate" type="text/xml+oembed" href="/wp-json/oembed/1.0/embed?url=%2Fdanger-of-unreliable-platform-engineering%2F#038;format=xml">
<!-- StarBox - the Author Box for Humans 3.5.2, visit: http://wordpress.org/plugins/starbox/ -->
<!-- /StarBox - the Author Box for Humans -->
<!-- HappyForms global container -->
<script type="text/javascript">HappyForms = {};</script>
<!-- End of HappyForms global container -->
<meta name="bmi-version" content="1.4.5">
<style>.blog .wp-block-post-template .wp-block-post:last-child .entry-content + .wp-block-separator, .archive .wp-block-post-template .wp-block-post:last-child .entry-content + .wp-block-separator, .blog .wp-block-post-template .wp-block-post:last-child .entry-content + .wp-block-separator, .search .wp-block-post-template .wp-block-post:last-child .wp-block-post-excerpt + .wp-block-separator { display: none; }</style>
<script id="wp-load-polyfill-importmap">
( HTMLScriptElement.supports && HTMLScriptElement.supports("importmap") ) || document.write( '<script src="https://sysmit.com/cf22/wp-includes/js/dist/vendor/wp-polyfill-importmap.min.js?ver=1.8.2"><\/scr' + 'ipt>' );
</script>
<script type="importmap" id="wp-importmap">{"imports":{"@wordpress\/interactivity":"\/wp-includes\/js\/dist\/interactivity.min.js?ver=6.5.5"}}</script>
<script type="module" src="/wp-includes/blocks/navigation/view.min.js?ver=6.5.5" id="@wordpress/block-library/navigation-js-module"></script>
<link rel="modulepreload" href="/wp-includes/js/dist/interactivity.min.js?ver=6.5.5" id="@wordpress/interactivity-js-modulepreload">
<script>(function (s, e, n, d, er) {
s['Sender'] = er;
s[er] = s[er] || function () {
(s[er].q = s[er].q || []).push(arguments)
}, s[er].l = 1 * new Date();
var a = e.createElement(n),
m = e.getElementsByTagName(n)[0];
a.async = 1;
a.src = d;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://cdn.sender.net/accounts_resources/universal.js', 'sender');
sender('bdd6b34bc12137')</script><style id="wp-fonts-local">@font-face{font-family:Inter;font-style:normal;font-weight:100 700;font-display:block;src:url('/wp-content/themes/ollie/assets/fonts/Inter-VariableFont_slnt,wght.woff2') format('woff2');font-stretch:normal;}</style>
<link rel="icon" href="/wp-content/uploads/SREpath-favicon-120x120.png" sizes="32x32">
<link rel="icon" href="/wp-content/uploads/SREpath-favicon.png" sizes="192x192">
<link rel="apple-touch-icon" href="/wp-content/uploads/SREpath-favicon.png">
<meta name="msapplication-TileImage" content="/wp-content/uploads/SREpath-favicon.png">
</head>
<body class="post-template-default single single-post postid-6328 single-format-standard wp-custom-logo wp-embed-responsive">
<div class="wp-site-blocks">
<header class="site-header wp-block-template-part">
<div class="wp-block-group alignfull has-base-color has-main-background-color has-text-color has-background has-link-color wp-elements-fea50d38d3b9b114f39bcb4ad4b116ff has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="margin-top:0px;padding-top:var(--wp--preset--spacing--large);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--large);padding-left:var(--wp--preset--spacing--medium)">
<div class="wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex">
<div class="wp-block-site-logo"><a href="/" class="custom-logo-link" rel="home"><img width="167" height="30" src="/wp-content/uploads/SREpath-logo-main.png" class="custom-logo" alt="Boost software reliability | SREpath" decoding="async" srcset="/wp-content/uploads/SREpath-logo-main.png 478w, /wp-content/uploads/SREpath-logo-main-300x54.png 300w" sizes="(max-width: 167px) 100vw, 167px"></a></div>
<nav class="has-text-color has-base-color has-small-font-size is-responsive wp-block-navigation has-small-font-size is-horizontal is-layout-flex wp-container-core-navigation-is-layout-1 wp-block-navigation-is-layout-flex" aria-label="Main Menu" data-wp-interactive="core/navigation" data-wp-context='{"overlayOpenedBy":{"click":false,"hover":false,"focus":false},"type":"overlay","roleAttribute":"","ariaLabel":"Menu"}'><button aria-haspopup="dialog" aria-label="Open menu" class="wp-block-navigation__responsive-container-open " data-wp-on--click="actions.openMenuOnClick" data-wp-on--keydown="actions.handleMenuKeydown"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="4" y="7.5" width="16" height="1.5"></rect><rect x="4" y="15" width="16" height="1.5"></rect></svg></button>
<div class="wp-block-navigation__responsive-container has-text-color has-base-color has-background has-main-background-color" id="modal-1" data-wp-class--has-modal-open="state.isMenuOpen" data-wp-class--is-menu-open="state.isMenuOpen" data-wp-watch="callbacks.initMenu" data-wp-on--keydown="actions.handleMenuKeydown" data-wp-on--focusout="actions.handleMenuFocusout" tabindex="-1">
<div class="wp-block-navigation__responsive-close" tabindex="-1">
<div class="wp-block-navigation__responsive-dialog" data-wp-bind--aria-modal="state.ariaModal" data-wp-bind--aria-label="state.ariaLabel" data-wp-bind--role="state.roleAttribute">
<button aria-label="Close menu" class="wp-block-navigation__responsive-container-close" data-wp-on--click="actions.closeMenuOnClick"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg></button>
<div class="wp-block-navigation__responsive-container-content" data-wp-watch="callbacks.focusFirstElement" id="modal-1-content">
<ul class="wp-block-navigation__container has-text-color has-base-color has-small-font-size is-responsive wp-block-navigation has-small-font-size">
<li class="has-small-font-size wp-block-navigation-item menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-5215 current_page_item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/" title=""><span class="wp-block-navigation-item__label">Home</span></a></li>
<li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/reliability-tool-database/"><span class="wp-block-navigation-item__label">Reliability Tools</span></a></li>
<li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/reliability-blueprint/"><span class="wp-block-navigation-item__label">Reliability Blueprint</span></a></li>
<li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="https://read.srepath.com/"><span class="wp-block-navigation-item__label">Newsletter</span></a></li>
<li class="has-small-font-size wp-block-navigation-item menu-item menu-item-type-taxonomy menu-item-object-category wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/podcast/" title=""><span class="wp-block-navigation-item__label">Podcast</span></a></li>
<li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="/about/"><span class="wp-block-navigation-item__label">About</span></a></li>
</ul>
</div>
</div>
</div>
</div></nav>
</div>
</div>
</header>
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%"><div class="gb-container gb-container-e4ec5504">
<div class="gb-container gb-container-d6a21a91 sticky-sidebar">
<div class="wp-block-ideabox-toc ib-block-toc" data-anchors="h2" data-collapsable="false"><div class="ib-toc-container ib-toc-list-style-numbers ib-toc-hierarchical ib-toc-expanded">
<div class="ib-toc-header" style="font-size:18px"><div class="ib-toc-header-title"><strong>Navigate this page</strong></div></div>
<div class="ib-toc-separator" style="height:1px"></div>
<div class="ib-toc-body" style="color:#000000;font-size:18px;--listSpacing:8px"><ol class="ib-toc-anchors"></ol></div>
</div></div>
</div>
</div></div>
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:60%">
<main class="wp-block-group alignwide is-layout-flow wp-container-core-group-is-layout-7 wp-block-group-is-layout-flow" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--small);padding-bottom:var(--wp--preset--spacing--xx-large)">
<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<div style="font-style:normal;font-weight:500" class="taxonomy-category has-link-color has-text-color has-primary-color is-style-default wp-block-post-terms has-small-font-size wp-elements-72e07f095da13a7bb673ea461d9ed494"><a href="/category/podcast/" rel="tag">Podcast</a></div>
<h1 class="wp-block-post-title has-xx-large-font-size has-secondary-font-family">#23 &#8211; The Danger of Unreliable Platforms (with Jade Rubick)</h1>
<div class="wp-block-group has-secondary-color has-text-color has-link-color has-small-font-size wp-elements-9aa739effdf6d06d6e39339e4e43e1b3 is-nowrap is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex">
<div style="font-style:normal;font-weight:500;" class="wp-block-post-author">
<div class="wp-block-post-author__avatar"><img alt="" src="https://secure.gravatar.com/avatar/866c53414d1bade269e2c68b0538d9a3?s=48&#038;d=mm&#038;r=g" srcset="https://secure.gravatar.com/avatar/866c53414d1bade269e2c68b0538d9a3?s=96&#038;d=mm&#038;r=g 2x" class="avatar avatar-48 photo" height="48" width="48" decoding="async"></div>
<div class="wp-block-post-author__content"><p class="wp-block-post-author__name">Ash Patel</p></div>
</div>
<p class="has-secondary-color has-text-color">·</p>
<div style="font-style:normal;font-weight:500;" class="wp-block-post-date"><time datetime="2024-01-16T12:24:55+10:00">January 16, 2024</time></div>
</div>
</div>
<div class="entry-content alignwide wp-block-post-content has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
<!-- StarBox - the Author Box for Humans 3.5.2, visit: http://wordpress.org/plugins/starbox/ -->
<!-- /StarBox - the Author Box for Humans -->
<link rel="stylesheet" id="656c5500aa-css" href="/wp-content/plugins/starbox/themes/fancy/css/frontend.min.css?ver=3.5.2" media="all">
<script src="/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script src="/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<script src="/wp-content/plugins/starbox/themes/fancy/js/frontend.min.js?ver=3.5.2" id="a0f1a0d918-js"></script>
<link rel="stylesheet" id="a337511978-css" href="/wp-content/plugins/starbox/themes/admin/css/hidedefault.min.css?ver=3.5.2" media="all">
<p><strong><span class="stk-highlight" style="color: var(--base-3);background-color: var(--contrast-3)">Episode 23 [SREpath Podcast]</span></strong></p>
<div class="gb-grid-wrapper gb-grid-wrapper-0de1a18b">
<div class="gb-grid-column gb-grid-column-fe753567"><div class="gb-container gb-container-fe753567">
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/episode/4O2QGSEx89lk19Wx76AWev?utm_source=generator" width="100%" height="152" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
</div></div>
</div>
<h2 class="wp-block-heading has-medium-font-size" id="show-notes">Show notes</h2>
<p>Jade Rubick needs no introduction in the reliability and observability space. He was VP of Engineering at New Relic from 2010 to 2019.</p>
<p>It was my pleasure to have him talk about issues like managing expectations with teams, especially platform-based teams. We even had a spicy take on their role!</p>
<p>We touched on topics like enhancing engineering practices, DORA metrics, platform teamwork, and so much more. Be sure to listen all the way through to learn Jade&#8217;s amazing insights.</p>
<p>You can follow Jade and his engineering leadership insights via: https://www.linkedin.com/in/jaderubick/</p>
<h2 class="wp-block-heading" id="more-about-jade">More about Jade</h2>
<p>Jade Rubick is an advisor and fractional VP of Engineering having helped 20 startups improve their engineering function.</p>
<p>Before he stepped into this role, he was VP of Engineering at New Relic from 2010 to 2019.</p>
<p>In between, he advised the teams at Gremlin and Jeli, two highly respected companies in the cloud-native computing space.</p>
<p>Our conversation touched on fascinating areas like:</p>
<p>➡️ Dangers in building an unreliable platform that doesn&#8217;t hit company goals</p>
<p>➡️ Jade&#8217;s call for platform teams to bear the consequences when they deprecate APIs</p>
<p>➡️ Jade&#8217;s experience as an organizational fixer handling structural issues within struggling teams</p>
<p>Let&#8217;s unpack each of these:</p>
<h2 class="wp-block-heading" id="dangers-in-building-an-unreliable-platform">Dangers in building an unreliable platform</h2>
<p>Jade and I spoke at length about how&nbsp;platform engineering is one of the hottest topics right now.</p>
<p>But platform engineering lacks&nbsp;clarity around one thing.</p>
<p>The issue is you can talk about&nbsp;having internal customers,<strong>&nbsp;but getting to that point of driving internal customer focus&nbsp;is not straightforward.</strong></p>
<p>It has inherent&nbsp;challenges.</p>
<p>Without the internal customer focus,a platform can become a shoddy, unreliable experience for all but the most savvy developer.</p>
<p>Jade told me that the danger with&nbsp;platform teams is that&nbsp;it&#8217;s really fun to build a platform.&nbsp;</p>
<p>It can be work that feels like you&#8217;re doing something really valuable, but it&#8217;s very possible to get too disconnected from what the company needs.</p>
<p>Jade had this say:&nbsp;<em>&#8220;I want to see teams that are paying attention to the needs of the people that are using their work. I like to see engineers that go talk with people that are using their APIs and how to refine things by testing out new things that they&#8217;re delivering.&#8221;</em></p>
<p>Jade suggests bolstering the platform-focused team&#8217;s outlook on how they can think like above rather than: &#8220;building [a platform] for its own sake.&#8221;</p>
<div style="clear:both; margin-top:0em; margin-bottom:1em;"><a href="/evolution-of-cloud-infrastructure-teams/" target="_blank" rel="dofollow" class="uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff"><!-- INLINE RELATED POSTS 1/3 //--><style>.uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff:active, .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff .ctaText { font-weight:bold; color:#464646; text-decoration:none; font-size: 16px; } .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .uf3c79acc9a5ba4ef93c6a0f7c7a5f3ff:hover .postTitle { text-decoration: underline!important; }</style>
<div style="padding-left:1em; padding-right:1em;">
<span class="ctaText">Related article:</span>&nbsp; <span class="postTitle">How cloud infrastructure teams evolve &#8211; from start to maturity</span>
</div></a></div>
<p>One trait that he suggests developing is a sense of&nbsp;pragmatism. Some of the best platform engineers Jade has worked with are people that:</p>
<ul>
<li>spend a lot of time showing their work to people that might use it</li>
<li>create applications that will really exercise the things that they&#8217;re building</li>
<li>don&#8217;t view&nbsp;building an API as a done thing</li>
</ul>
<p>What gets built needs to&nbsp;be validated by a customer or multiple customers.&nbsp;</p>
<p>On top of that, the platform team can go beyond the traditional reliability mindset of &#8220;sight unseen aspects&#8221; like robust architecture, processes and monitoring.&nbsp;</p>
<p>They can also emphasize&nbsp;a feeling of platform reliability through minimizing steps and having effective documentation.&nbsp;</p>
<p>Jade spoke of a way of extending that even further:</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;<em>Do you need some sort of way that people can extend your work or add plugins to it? Like, what is the model for extending it? Just saying it&#8217;s open source at times is enough. And if it is&#8230;&nbsp;do something very standard that is like the rest of engineering so that they can easily contribute to it.&#8221;</em></p>
</blockquote>
<p>In essence, treat the platform like the product it is, and put all the stops out to make sure it&#8217;s a reliable product.&nbsp;</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<h2 class="wp-block-heading" id="platform-teams-should-deprecate-apis-with-care"><strong>Platform teams should deprecate APIs with care</strong></h2>
<p>Jade told me he had a&nbsp;spicy take&nbsp;on platform engineering, so I of course got curious and asked him to dish it&nbsp;out.</p>
<p>He threw a bowl of ghost peppers right&nbsp;in the middle of our conversation!</p>
<figure class="wp-block-image"><img decoding="async" src="https://fonts.gstatic.com/s/e/notoemoji/15.0/1f975/72.png" alt="🥵"></figure>
<p>It started with:&nbsp;<em>&#8220;One of the challenges you&#8217;ll sometimes find in organizations is that&nbsp;<strong>platform engineering teams can be the source of a lot of work for the rest of the organization.</strong>&#8220;</em></p>
<p>And then it just got spicier and spicier. At one point,&nbsp;I was hunting for my favorite sparkling passionfruit drink&nbsp;to cool thinks down.</p>
<div style="clear:both; margin-top:0em; margin-bottom:1em;"><a href="/faster-incident-resolution-data-driven-notebooks-ivan-merrill/" target="_blank" rel="dofollow" class="ud78f548e16477750d6d6cf0d2d19639b"><!-- INLINE RELATED POSTS 2/3 //--><style>.ud78f548e16477750d6d6cf0d2d19639b { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .ud78f548e16477750d6d6cf0d2d19639b:active, .ud78f548e16477750d6d6cf0d2d19639b:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .ud78f548e16477750d6d6cf0d2d19639b { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .ud78f548e16477750d6d6cf0d2d19639b .ctaText { font-weight:bold; color:#464646; text-decoration:none; font-size: 16px; } .ud78f548e16477750d6d6cf0d2d19639b .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .ud78f548e16477750d6d6cf0d2d19639b:hover .postTitle { text-decoration: underline!important; }</style>
<div style="padding-left:1em; padding-right:1em;">
<span class="ctaText">Related article:</span>&nbsp; <span class="postTitle">#14 Faster Incident Resolution through Data-Driven Notebooks (with Ivan Merrill)</span>
</div></a></div>
<p>But here&#8217;s the thing: Jade made a very valid point.&nbsp;</p>
<p><em>&#8220;Every time you deprecate an API, you are creating work for the rest of the team, like all your consumers.&nbsp;<strong>The purpose of a platform team is to drive efficiencies in the rest of engineering&#8230;</strong>&#8220;</em></p>
<p>To him, it seemed like&nbsp;sometimes platform teams don&#8217;t really think about the consequences of API deprecation. The other scenario he presented was forcing developes to migrate without a valid upgrade path.&nbsp;</p>
<p>Both scenarios create&nbsp;a lot of work for the rest of the organization.</p>
<p>His&nbsp;take is that platform teams should have to do with that work themselves as much as possible. The platform teams should &#8211; where feasible &#8211;&nbsp;migrate their internal teams to use the new APIs.&nbsp;</p>
<p>His rationale makes sense:</p>
<p>&#8220;Because if you&#8217;re not having to bear the cost of it, you&#8217;re not going to do the work to make it really easy.&#8221;</p>
<div class="gb-container gb-container-49a04c84">
<p>I put in my two cents once I pulled myself out of the swimming pool to cool down from that zinger.</p>
</div>
<p>I think a lot of platform engineers are used to developing a replacement&nbsp;API and then saying, &#8220;Here you go, go for it.&#8221;</p>
<p>Without a little&nbsp;handholding &#8211; at least in the beginning &#8211; you will risk developers sending API requests to nowhere&nbsp;or at least having&nbsp;a huge support burden. I&#8217;ve seen this happen in organizations.&nbsp;</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<h2 class="wp-block-heading" id="supporting-reliability-as-an-organizational-fixer"><strong>Supporting reliability as an organizational fixer</strong></h2>
<p>I learned from the grapevine that Jade has a&nbsp;reputation&nbsp;among engineers&nbsp;as an organizational fixer.&nbsp;</p>
<p>So we naturally had to deepdive into how this manifested&#8230;</p>
<p>Jade&#8217;s response was fascinating.</p>
<p>He estimates that&nbsp;<strong>when he left New Relic,</strong>&nbsp;<strong>there were about 60 engineering teams.&nbsp;</strong></p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>&#8220;When you have that many teams, there&#8217;s always will be&nbsp;some&nbsp;teams that are really struggling.&#8221;</em></p>
</blockquote>
<p>He&#8217;d work with his boss, Alex Kroman (GM and SVP of Engineering at New Relic),&nbsp;to work out which teams were in need of help. Jade&#8217;s next step was to go hands on with those teams.</p>
<p>Over time, he worked out a routine where he&#8217;d go in to investigate the situation and talk with everybody involved.&nbsp;Jade often found a few underlying&nbsp;structural issues.&nbsp;</p>
<p>Sometimes he found that:</p>
<ul>
<li>teams had unrealistic expectations set upon them</li>
<li>relationships among colleagues&nbsp;were not functioning as expected</li>
<li>roles were not defined so people could not communicate well</li>
<li>team decisionmaking was flawed due to weak communication among different roles within</li>
</ul>
<div style="clear:both; margin-top:0em; margin-bottom:1em;"><a href="/better-sre-vs-incident-responder/" target="_blank" rel="dofollow" class="ubc4e1f1dcab0f519e3c405570e22247a"><!-- INLINE RELATED POSTS 3/3 //--><style>.ubc4e1f1dcab0f519e3c405570e22247a { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .ubc4e1f1dcab0f519e3c405570e22247a:active, .ubc4e1f1dcab0f519e3c405570e22247a:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .ubc4e1f1dcab0f519e3c405570e22247a { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .ubc4e1f1dcab0f519e3c405570e22247a .ctaText { font-weight:bold; color:#464646; text-decoration:none; font-size: 16px; } .ubc4e1f1dcab0f519e3c405570e22247a .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .ubc4e1f1dcab0f519e3c405570e22247a:hover .postTitle { text-decoration: underline!important; }</style>
<div style="padding-left:1em; padding-right:1em;">
<span class="ctaText">Related article:</span>&nbsp; <span class="postTitle">#21 &#8211; Better SRE in 2024 is all we can hope for</span>
</div></a></div>
<p>This work became a regular fixture in Jade&#8217;s schedule. So much so that he learned a peculiar thing.&nbsp;</p>
<p>Leaders surrounding these affected teams&nbsp;<em>thought&nbsp;</em>they knew what the problems were. But&nbsp;<strong>the actual problems that Jade uncovered&nbsp;were nothing like what the leaders told him</strong>.</p>
<p>Deepdiving into these issues in a hands on way&nbsp;allowed Jade to turnaround many of the struggling teams into model teams in as little as 6 months.&nbsp;</p>
<p>I think the lesson from this is that we need to truly step back and listen rather than assume what&#8217;s going on.&nbsp;Sometimes it takes someone not as attached to the day-to-day to work out the true dysfunction.</p>
<p>As Jade put it,<em>&nbsp; </em></p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>&#8220;I think what was significant about that to me is that a lot of times people would point at the people involved, but it usually was not the people. It was ways in which the people were being set up to fail.&nbsp;They weren&#8217;t getting time to fix their reliability problems.&#8221;</em></p>
</blockquote>
<hr class="wp-block-separator has-alpha-channel-opacity">
<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
<p>In&nbsp;<a href="https://open.spotify.com/episode/4O2QGSEx89lk19Wx76AWev?si=0b6e2b96036a45f2" target="_blank" rel="noreferrer noopener">Episode #23 of the SREpath podcast,&nbsp;Jade gives me his take on how VPEs see platforms &amp; reliability</a>&nbsp;[Spotify link]</p>
<p>I&#8217;m sure you will gain some interesting ideas to take back to your team. If anything the spicy take on platform teams will have you screaming for a cool drink. How fun!</p>
<div class="abh_box abh_box_down abh_box_fancy">
<ul class="abh_tabs"> <li class="abh_about abh_active"><a href="#abh_about">Author</a></li> <li class="abh_posts"><a href="#abh_posts">Recent Posts</a></li>
</ul>
<div class="abh_tab_content">
<section class="vcard author abh_about_tab abh_tab" itemscope itemprop="author" itemtype="http://schema.org/Person" style="display:block"><div class="abh_image" itemscope itemtype="http://schema.org/ImageObject">
<a class="url" target="_blank" title="Ash Patel" rel="nofollow"> <img decoding="async" src="/wp-content/uploads/gravatar/3.jpeg" class="photo" width="250" alt="Ash Patel"></a> </div>
<div class="abh_social"> <div style="clear: both; font-size:12px; font-weight:normal; width: 85px; margin: 0 0 2px auto; line-height: 20px;">Connect?</div>
<a itemprop="sameAs" href="https://www.linkedin.com/in/ash-patel-srepath/" title="Twitter" class="abh_twitter" target="_blank" rel="nofollow"></a>
</div>
<div class="abh_text">
<div class="abh_name fn name" itemprop="name" style="font-size:20px !important;"><a class="url" target="_blank" rel="nofollow">Ash Patel</a></div>
<div class="abh_job" style="font-size:18px !important;">
<span class="title" style="font-size:18px !important;">Reliability Nut</span> at <span class="org" style="font-size:18px !important;"><a href="https://www.srepath.com/" target="_blank">SREpath</a></span>
</div>
<div class="description note abh_description" itemprop="description" style="font-size:18px !important;">Ash has an unhealthy obsession with software reliability. Maybe it&#8217;s got to do with the trauma of working at a few companies where software kept slowing or went down while he worked to turn it around. His ma hopes that he can one day turn this passion into a respectable job or business. Still waiting…</div>
</div> </section><section class="abh_posts_tab abh_tab"><div class="abh_image"><a class="url" target="_blank" title="Ash Patel" rel="nofollow"><img decoding="async" src="/wp-content/uploads/gravatar/3.jpeg" class="photo" width="250" alt="Ash Patel"></a></div>
<div class="abh_social"> <div style="clear: both; font-size:12px; font-weight:normal; width: 85px; margin: 0 0 2px auto; line-height: 20px;">Connect?</div>
<ahref title="Twitter" class="abh_twitter" target="_blank" rel="nofollow"></ahref>
</div>
<div class="abh_text">
<div class="abh_name" style="font-size:20px !important;">Latest posts by Ash Patel <span class="abh_allposts">(<a href="/author/kashaup/">see all</a>)</span>
</div>
<div class="abh_description note"><ul> <li style="font-size:18px !important;"> <a href="/sre-2016-book-reaction-chapter-1-part-1-3/">#34 From Cloud to Concrete: Should You Return to On-Prem?</a><span> &#8211; March 26, 2024</span> </li> <li style="font-size:18px !important;"> <a href="/sre-2016-book-reaction-chapter-1-part-1-2/">#33 Inside Google&#8217;s Data Center Design</a><span> &#8211; March 19, 2024</span> </li> <li style="font-size:18px !important;"> <a href="/platform-engineering-role-software-operations/">#32 Clarifying Platform Engineering&#8217;s Role (with Ajay Chankramath)</a><span> &#8211; March 14, 2024</span> </li>
</ul></div>
</div> </section>
</div> </div>
</div>
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group post-meta has-small-font-size is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-5 wp-block-group-is-layout-flex" style="border-radius:5px;margin-top:var(--wp--preset--spacing--large)"><div class="taxonomy-post_tag has-link-color has-text-color has-secondary-color is-style-term-button wp-block-post-terms wp-elements-bd79afba7f00a2d2e79e252b6511e7e8"><a href="/tag/platform-engineering/" rel="tag">platform engineering</a></div></div>
</div>
</main>
</div>
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:20%"></div>
</div>
<footer class="site-footer wp-block-template-part">
<div class="wp-block-group alignfull dark-footer has-base-color has-main-background-color has-text-color has-background has-link-color wp-elements-6e0a8c899515679c402384022b4528f4 has-global-padding is-layout-constrained wp-container-core-group-is-layout-10 wp-block-group-is-layout-constrained" style="margin-top:0px;padding-top:var(--wp--preset--spacing--xx-large);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--xx-large);padding-left:var(--wp--preset--spacing--medium)">
<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="has-text-align-center" style="font-style:normal;font-weight:600">Boost your software&#8217;s reliability</p>
<p class="has-text-align-center has-main-accent-color has-text-color has-small-font-size">That is our #1 goal on this site. </p>
<p class="has-text-align-center has-main-accent-color has-text-color has-small-font-size">We do this by decrypting the complexity around reliability-supporting practices.</p>
<p class="has-text-align-center has-main-accent-color has-text-color has-small-font-size">Practices like Site Reliability Engineering (SRE), DevOps and Platform Engineering.</p>
<p></p>
<div class="gb-grid-wrapper gb-grid-wrapper-2a306ad3">
<div class="gb-grid-column gb-grid-column-adf39bfb"><div class="gb-container gb-container-adf39bfb"></div></div>
<div class="gb-grid-column gb-grid-column-6b3ae155"><div class="gb-container gb-container-6b3ae155">
<iframe src="https://read.srepath.com/embed" width="480" height="320" style="border:1px solid #EEE; background:white;" frameborder="0" scrolling="no"></iframe>
</div></div>
<div class="gb-grid-column gb-grid-column-e35f2f56"><div class="gb-container gb-container-e35f2f56"></div></div>
</div>
<ul class="wp-block-social-links aligncenter has-icon-color has-icon-background-color is-style-default is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex"><li style="color: #150E29; background-color: #fff; " class="wp-social-link wp-social-link-linkedin has-main-color has-base-background-color wp-block-social-link"><a class="wp-block-social-link-anchor"><svg width="24" height="24" viewbox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li></ul>
</div>
</div>
<hr class="wp-block-separator alignwide has-text-color has-secondary-color has-alpha-channel-opacity has-secondary-background-color has-background is-style-separator-dotted">
<div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group has-main-accent-color has-text-color has-link-color wp-elements-f61512c823a772c477503f2d41fb0964 is-content-justification-center is-layout-flex wp-container-core-group-is-layout-8 wp-block-group-is-layout-flex">
<p class="has-x-small-font-size">© 2024 · SREpath.com</p>
</div>
</div>
</div>
</footer>
</div>
<script id="wp-block-template-skip-link-js-after">( function() {
var skipLinkTarget = document.querySelector( 'main' ),
sibling,
skipLinkTargetID,
skipLink;
// Early exit if a skip-link target can't be located.
if ( ! skipLinkTarget ) {
return;
}
/*
* Get the site wrapper.
* The skip-link will be injected in the beginning of it.
*/
sibling = document.querySelector( '.wp-site-blocks' );
// Early exit if the root element was not found.
if ( ! sibling ) {
return;
}
// Get the skip-link target's ID, and generate one if it doesn't exist.
skipLinkTargetID = skipLinkTarget.id;
if ( ! skipLinkTargetID ) {
skipLinkTargetID = 'wp--skip-link--target';
skipLinkTarget.id = skipLinkTargetID;
}
// Create the skip link.
skipLink = document.createElement( 'a' );
skipLink.classList.add( 'skip-link', 'screen-reader-text' );
skipLink.href = '#' + skipLinkTargetID;
skipLink.innerHTML = 'Skip to content';
// Inject the skip link.
sibling.parentElement.insertBefore( skipLink, sibling );
}() );</script>
<script src="/wp-content/plugins/mystickysidebar/js/detectmobilebrowser.js?ver=1.2.3" id="detectmobilebrowser-js"></script>
<script id="mystickysidebar-js-extra">var mystickyside_name = {"mystickyside_string":"#secondary","mystickyside_content_string":"","mystickyside_margin_top_string":"90","mystickyside_margin_bot_string":"0","mystickyside_update_sidebar_height_string":"false","mystickyside_min_width_string":"795","device_desktop":"1","device_mobile":"1"};</script>
<script src="/wp-content/plugins/mystickysidebar/js/theia-sticky-sidebar.js?ver=1.2.3" id="mystickysidebar-js"></script>
</body>
</html>