1486 lines
148 KiB
HTML
1486 lines
148 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<link rel="profile" href="http://gmpg.org/xfn/11">
|
||
<link rel="pingback" href="https://blog.danslimmon.com/xmlrpc.php">
|
||
|
||
<title>Troubleshooting On A Distributed Team Without Losing Common Ground – Dan Slimmon</title>
|
||
<script type="text/javascript">
|
||
WebFontConfig = {"google":{"families":["Montserrat:r:latin,latin-ext","Montserrat:r,i,b,bi:latin,latin-ext"]},"api_url":"https:\/\/fonts-api.wp.com\/css"};
|
||
(function() {
|
||
var wf = document.createElement('script');
|
||
wf.src = '/wp-content/plugins/custom-fonts/js/webfont.js';
|
||
wf.type = 'text/javascript';
|
||
wf.async = 'true';
|
||
var s = document.getElementsByTagName('script')[0];
|
||
s.parentNode.insertBefore(wf, s);
|
||
})();
|
||
</script><style id="jetpack-custom-fonts-css">.wf-active body{font-family:"Montserrat",sans-serif}.wf-active code, .wf-active kbd, .wf-active pre, .wf-active samp{font-family:"Montserrat",sans-serif}.wf-active .main-navigation ul > li + li:before{font-family:"Montserrat",sans-serif}.wf-active .entry-meta > span{font-family:"Montserrat",sans-serif}.wf-active .page-links{font-family:"Montserrat",sans-serif}.wf-active .tagcloud a, .wf-active .tags-links a{font-family:"Montserrat",sans-serif}.wf-active .post-navigation span{font-family:"Montserrat",sans-serif}.wf-active .entry-content{font-family:"Montserrat",sans-serif}.wf-active .entry-content .more-link{font-family:"Montserrat",sans-serif}.wf-active .entry-content blockquote cite{font-family:"Montserrat",sans-serif}.wf-active code, .wf-active kbd, .wf-active pre{font-family:"Montserrat",sans-serif}.wf-active .gallery-caption, .wf-active .wp-caption-text{font-family:"Montserrat",sans-serif}.wf-active .entry-content fieldset legend{font-family:"Montserrat",sans-serif}.wf-active .entry-content label{font-family:"Montserrat",sans-serif}.wf-active .entry-content input, .wf-active .entry-content textarea{font-family:"Montserrat",sans-serif}.wf-active .comments-title span a{font-family:"Montserrat",sans-serif}.wf-active .comment-metadata, .wf-active .comment-reply-link{font-family:"Montserrat",sans-serif}.wf-active .comment-navigation a{font-family:"Montserrat",sans-serif}.wf-active .comment-respond form label{font-family:"Montserrat",sans-serif}.wf-active .comment-respond input[type="text"], .wf-active .comment-respond textarea{font-family:"Montserrat",sans-serif}.wf-active .comment-respond input[type="submit"]{font-family:"Montserrat",sans-serif}.wf-active .comment-list #cancel-comment-reply-link{font-family:"Montserrat",sans-serif}.wf-active .search-field{font-family:"Montserrat",sans-serif}.wf-active .posts-navigation span{font-family:"Montserrat",sans-serif}.wf-active #infinite-handle span{font-family:"Montserrat",sans-serif}.wf-active .widget{font-family:"Montserrat",sans-serif}.wf-active .widget_authors a strong, .wf-active .widget_recent_comments .comment-author-link, .wf-active .widget_recent_comments .comment-author-link a{font-family:"Montserrat",sans-serif}.wf-active .widget .search-field{font-family:"Montserrat",sans-serif}.wf-active .widget_recent_entries a, .wf-active .widget_recent_entries a:focus, .wf-active .widget_recent_entries a:hover, .wf-active .widget_recent_entries a:visited{font-family:"Montserrat",sans-serif}.wf-active .widget_rss li a{font-family:"Montserrat",sans-serif}.wf-active .site-info{font-family:"Montserrat",sans-serif}@media screen and (max-width: 1000px){.wf-active .mobile-search .search-field{font-family:"Montserrat",sans-serif}}.wf-active h1, .wf-active h2, .wf-active h3, .wf-active h4, .wf-active h5, .wf-active h6{font-family:"Montserrat",sans-serif;font-style:normal;font-weight:400}.wf-active .site-title{font-weight:400;font-style:normal}.wf-active .site-description{font-style:normal;font-weight:400}.wf-active .entry-title{font-weight:400;font-style:normal}.wf-active .post-navigation h4{font-weight:400;font-style:normal}.wf-active .entry-content h1, .wf-active .entry-content h2, .wf-active .entry-content h3, .wf-active .entry-content h4, .wf-active .entry-content h5{font-weight:400;font-style:normal}.wf-active .entry-content h6{font-weight:400;font-style:normal}.wf-active .entry-content h1{font-style:normal;font-weight:400}.wf-active .entry-content h2{font-style:normal;font-weight:400}.wf-active .entry-content h3{font-style:normal;font-weight:400}.wf-active .entry-content h4{font-style:normal;font-weight:400}.wf-active .entry-content h5{font-style:normal;font-weight:400}.wf-active .entry-content h6{font-family:"Montserrat",sans-serif;font-weight:400;font-style:normal}.wf-active .entry-content th{font-weight:400;font-style:normal}.wf-active .comment-reply-title, .wf-active .comments-title{font-weight:400;font-style:normal}.wf-active .page-title{font-family:"Montserrat",sans-serif;font-weight:400;font-style:normal}.wf-active .widget-title{font-family:"Montserrat",sans-serif;font-weight:400;font-style:normal}@media screen and (max-width: 600px){.wf-active .site-title{font-style:normal;font-weight:400}}@media screen and (max-width: 600px){.wf-active .entry-title{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .comment-reply-title, .wf-active .comments-title{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-title{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-content h1{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-content h2{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-content h3{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-content h4{font-style:normal;font-weight:400}}@media screen and (max-width: 500px){.wf-active .entry-content h5{font-style:normal;font-weight:400}}@media screen and (max-width: 440px){.wf-active .comment-reply-title, .wf-active .comments-title{font-style:normal;font-weight:400}}@media screen and (max-width: 440px){.wf-active .entry-title{font-style:normal;font-weight:400}}</style>
|
||
<meta name='robots' content='max-image-preview:large' />
|
||
|
||
<!-- Async WordPress.com Remote Login -->
|
||
<script id="wpcom_remote_login_js">
|
||
var wpcom_remote_login_extra_auth = '';
|
||
function wpcom_remote_login_remove_dom_node_id( element_id ) {
|
||
var dom_node = document.getElementById( element_id );
|
||
if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); }
|
||
}
|
||
function wpcom_remote_login_remove_dom_node_classes( class_name ) {
|
||
var dom_nodes = document.querySelectorAll( '.' + class_name );
|
||
for ( var i = 0; i < dom_nodes.length; i++ ) {
|
||
dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] );
|
||
}
|
||
}
|
||
function wpcom_remote_login_final_cleanup() {
|
||
wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" );
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" );
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" );
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" );
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" );
|
||
}
|
||
|
||
// Watch for messages back from the remote login
|
||
window.addEventListener( "message", function( e ) {
|
||
if ( e.origin === "https://r-login.wordpress.com" ) {
|
||
var data = {};
|
||
try {
|
||
data = JSON.parse( e.data );
|
||
} catch( e ) {
|
||
wpcom_remote_login_final_cleanup();
|
||
return;
|
||
}
|
||
|
||
if ( data.msg === 'LOGIN' ) {
|
||
// Clean up the login check iframe
|
||
wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
|
||
|
||
var id_regex = new RegExp( /^[0-9]+$/ );
|
||
var token_regex = new RegExp( /^.*|.*|.*$/ );
|
||
if (
|
||
token_regex.test( data.token )
|
||
&& id_regex.test( data.wpcomid )
|
||
) {
|
||
// We have everything we need to ask for a login
|
||
var script = document.createElement( "script" );
|
||
script.setAttribute( "id", "wpcom_remote_login_validate" );
|
||
script.src = '/remote-login.php?wpcom_remote_login=validate'
|
||
+ '&wpcomid=' + data.wpcomid
|
||
+ '&token=' + encodeURIComponent( data.token )
|
||
+ '&host=' + window.location.protocol
|
||
+ '//' + window.location.hostname
|
||
+ '&postid=553'
|
||
+ '&is_singular=1';
|
||
document.body.appendChild( script );
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
// Safari ITP, not logged in, so redirect
|
||
if ( data.msg === 'LOGIN-REDIRECT' ) {
|
||
window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href;
|
||
return;
|
||
}
|
||
|
||
// Safari ITP, storage access failed, remove the request
|
||
if ( data.msg === 'LOGIN-REMOVE' ) {
|
||
var css_zap = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }';
|
||
var style_zap = document.createElement( 'style' );
|
||
style_zap.type = 'text/css';
|
||
style_zap.appendChild( document.createTextNode( css_zap ) );
|
||
document.body.appendChild( style_zap );
|
||
|
||
var e = document.getElementById( 'wpcom_request_access_iframe' );
|
||
e.parentNode.removeChild( e );
|
||
|
||
document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000';
|
||
|
||
return;
|
||
}
|
||
|
||
// Safari ITP
|
||
if ( data.msg === 'REQUEST_ACCESS' ) {
|
||
console.log( 'request access: safari' );
|
||
|
||
// Check ITP iframe enable/disable knob
|
||
if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) {
|
||
return;
|
||
}
|
||
|
||
// If we are in a "private window" there is no ITP.
|
||
var private_window = false;
|
||
try {
|
||
var opendb = window.openDatabase( null, null, null, null );
|
||
} catch( e ) {
|
||
private_window = true;
|
||
}
|
||
|
||
if ( private_window ) {
|
||
console.log( 'private window' );
|
||
return;
|
||
}
|
||
|
||
var iframe = document.createElement( 'iframe' );
|
||
iframe.id = 'wpcom_request_access_iframe';
|
||
iframe.setAttribute( 'scrolling', 'no' );
|
||
iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' );
|
||
iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid );
|
||
|
||
var css = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } ';
|
||
|
||
var style = document.createElement( 'style' );
|
||
style.type = 'text/css';
|
||
style.id = 'wpcom_request_access_styles';
|
||
style.appendChild( document.createTextNode( css ) );
|
||
document.body.appendChild( style );
|
||
|
||
document.body.appendChild( iframe );
|
||
}
|
||
|
||
if ( data.msg === 'DONE' ) {
|
||
wpcom_remote_login_final_cleanup();
|
||
}
|
||
}
|
||
}, false );
|
||
|
||
// Inject the remote login iframe after the page has had a chance to load
|
||
// more critical resources
|
||
window.addEventListener( "DOMContentLoaded", function( e ) {
|
||
var iframe = document.createElement( "iframe" );
|
||
iframe.style.display = "none";
|
||
iframe.setAttribute( "scrolling", "no" );
|
||
iframe.setAttribute( "id", "wpcom_remote_login_key" );
|
||
iframe.src = "https://r-login.wordpress.com/remote-login.php"
|
||
+ "?wpcom_remote_login=key"
|
||
+ "&origin=aHR0cHM6Ly9ibG9nLmRhbnNsaW1tb24uY29t"
|
||
+ "&wpcomid=38620006"
|
||
+ "&time=" + Math.floor( Date.now() / 1000 );
|
||
document.body.appendChild( iframe );
|
||
}, false );
|
||
</script>
|
||
<link rel='dns-prefetch' href='//s2.wp.com' />
|
||
<link rel='dns-prefetch' href='//widgets.wp.com' />
|
||
<link rel='dns-prefetch' href='//fonts-api.wp.com' />
|
||
<link rel='dns-prefetch' href='//s1.wp.com' />
|
||
<link rel='dns-prefetch' href='//s0.wp.com' />
|
||
<link rel="alternate" type="application/rss+xml" title="Dan Slimmon » Feed" href="https://blog.danslimmon.com/feed/" />
|
||
<link rel="alternate" type="application/rss+xml" title="Dan Slimmon » Comments Feed" href="https://blog.danslimmon.com/comments/feed/" />
|
||
<link rel="alternate" type="application/rss+xml" title="Dan Slimmon » Troubleshooting On A Distributed Team Without Losing Common Ground Comments Feed" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/feed/" />
|
||
<script type="text/javascript">
|
||
/* <![CDATA[ */
|
||
function addLoadEvent(func) {
|
||
var oldonload = window.onload;
|
||
if (typeof window.onload != 'function') {
|
||
window.onload = func;
|
||
} else {
|
||
window.onload = function () {
|
||
oldonload();
|
||
func();
|
||
}
|
||
}
|
||
}
|
||
/* ]]> */
|
||
</script>
|
||
<style id="wp-img-auto-sizes-contain-inline-css">
|
||
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
|
||
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
|
||
</style>
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='/wp-content/mu-plugins/likes/jetpack-likes.css?m=1743883414i&cssminify=yes' type='text/css' 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;
|
||
}
|
||
/*# sourceURL=wp-emoji-styles-inline-css */
|
||
</style>
|
||
<style id="wp-block-library-inline-css">
|
||
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
|
||
|
||
/*# sourceURL=/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/common.min.css */
|
||
</style>
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-0-2' href='/_static/??-eJy1zEEOwiAQQNELWSZVa3FhPAtQMh2lMJmBmt7eJq7c6/LnJw9e3IWSa8wVODWkrIBtTx8F9yMR1uPJXE0PvlGaQOuWooJPJTy7RF6cbIBSGn+WWSiboHqAn8hzdBNl/IvNThyK4/lbvy+3frR2tMNwvjzecYlpQQ==&cssminify=yes' type='text/css' media='all' />
|
||
<style id="wp-block-library-inline-css-extra">
|
||
.has-text-align-justify {
|
||
text-align:justify;
|
||
}
|
||
.has-text-align-justify{text-align:justify;}
|
||
/*# sourceURL=wp-block-library-inline-css */
|
||
</style>
|
||
|
||
<style id="classic-theme-styles-inline-css">
|
||
.wp-block-button__link{background-color:#32373c;border-radius:9999px;box-shadow:none;color:#fff;font-size:1.125em;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-file__button{background:#32373c;color:#fff}.wp-block-accordion-heading{margin:0}.wp-block-accordion-heading__toggle{background-color:inherit!important;color:inherit!important}.wp-block-accordion-heading__toggle:not(:focus-visible){outline:none}.wp-block-accordion-heading__toggle:focus,.wp-block-accordion-heading__toggle:hover{background-color:inherit!important;border:none;box-shadow:none;color:inherit;padding:var(--wp--preset--spacing--20,1em) 0;text-decoration:none}.wp-block-accordion-heading__toggle:focus-visible{outline:auto;outline-offset:0}.wp-block-tab:not(.has-text-color){color:inherit!important}.wp-block-tab:not(.has-background){background-color:inherit!important}.wp-block-tab:focus,.wp-block-tab:hover{text-decoration:none}.wp-block-tab:focus-visible{outline:auto;outline-offset:0}
|
||
/*# sourceURL=/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/classic.min.css */
|
||
</style>
|
||
|
||
<style id="coblocks-inline-format-inline-css">
|
||
.uppercase{text-transform:uppercase}
|
||
/*# sourceURL=coblocks-inline-format-inline-css */
|
||
</style>
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='/_static/??-eJx9jdEKwjAMRX/IGEXF7UH8lrYL2tm0oWnZ7y8D8UHElwsn9x6Ci0AouVFuyB0k9UfMiqFUsjuLa2gLpik6SsQ22wfVHf7WFjEHvJdKqmDJsTO0p4n6z5upiQuvNyOXssXUEylq9xpqlBZL/pAnsN6lb96e3Pl2vF5Oh2E8j8O8AvKaVKM=&cssminify=yes' type='text/css' media='all' />
|
||
<style id="global-styles-inline-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,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: 'Courier Prime', monospace;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;}
|
||
/*# sourceURL=global-styles-inline-css */
|
||
</style>
|
||
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-14-1' href='/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/verbum-comments.css?m=1785895867i&cssminify=yes' type='text/css' media='all' />
|
||
<link rel='stylesheet' id='verbum-gutenberg-css-css' href='https://widgets.wp.com/verbum-block-editor/block-editor.css?ver=1771405207' media='all' />
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='/wp-content/themes/pub/lovecraft/style.css?m=1758759644i&cssminify=yes' type='text/css' media='all' />
|
||
<link rel='stylesheet' id='lovecraft-fonts-css' href='https://fonts-api.wp.com/css?family=Playfair+Display%3A400%2C700%2C400italic%7CLato%3A400%2C400italic%2C700%2C700italic%2C900%2C900italic&subset=latin%2Clatin-ext&ver=7.1.1-alpha-63555' media='all' />
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='/_static/??-eJx9jsEKwjAQRH/IuC1C60X8FEmXbUzdZEOytfj3puAhoHibB/OGgS0ZlKgUFcJqEq/OxwILabL4+DAEkQg3HxEcRcq+GuV3PGIpB2hG9U6BCqR1ApYnYbazwr5U9MVktoQSvqTmSaaJxdXooLYa/Cc5EsOCVn393YKZ2fq8q9dw6cexH7rhdO6WN9IbYnE=&cssminify=yes' type='text/css' media='all' />
|
||
<link crossorigin='anonymous' rel='stylesheet' id='print-css-19-1' href='/wp-content/mu-plugins/global-print/global-print.css?m=1465851035i&cssminify=yes' type='text/css' media='print' />
|
||
<style id="jetpack-global-styles-frontend-style-inline-css">
|
||
:root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;}
|
||
/*# sourceURL=jetpack-global-styles-frontend-style-inline-css */
|
||
</style>
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-22-1' href='/_static/??-eJyNjcEKAjEMRH/ImhVlqwfxU6TbhrZrmhTTIv69u+JFvHgZ5sHwBh7VeOGG3KB0U6nHzAoztur87cNQRNYInVBBk7tjcCE83zVz3HrVDfxvumb2MPVMAVR8dmRIougX/DhbwrK8pwNEksnROriU884e9+PJDnaYXxwFS20=&cssminify=yes' type='text/css' media='all' />
|
||
<script id="wpcom-actionbar-placeholder-js-extra">
|
||
var actionbardata = {"siteID":"38620006","postID":"553","siteURL":"https://blog.danslimmon.com","xhrURL":"https://blog.danslimmon.com/wp-admin/admin-ajax.php","nonce":"e8f3aebd24","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https://s0.wp.com/wp-content/js/wpcom-proxy-request.js?m=1513050504i&ver=20211021","shortlink":"https://wp.me/p2C2Pk-8V","i18n":{"followedText":"New posts from this site will now appear in your \u003Ca href=\"https://wordpress.com/reader\"\u003EReader\u003C/a\u003E","foldBar":"Collapse this bar","unfoldBar":"Expand this bar","shortLinkCopied":"Shortlink copied to clipboard."}};
|
||
//# sourceURL=wpcom-actionbar-placeholder-js-extra
|
||
</script>
|
||
<script id="jetpack-mu-wpcom-settings-js-before">
|
||
var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https://s1.wp.com/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/"};
|
||
//# sourceURL=jetpack-mu-wpcom-settings-js-before
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/wp-content/js/rlt-proxy.js?m=1720530689i'></script>
|
||
<script id="rlt-proxy-js-after">
|
||
rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} );
|
||
//# sourceURL=rlt-proxy-js-after
|
||
</script>
|
||
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://danslimmon.wordpress.com/xmlrpc.php?rsd" />
|
||
<meta name="generator" content="WordPress.com" />
|
||
<link rel="canonical" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/" />
|
||
<link rel='shortlink' href='https://wp.me/p2C2Pk-8V' />
|
||
<link rel="alternate" type="application/json+oembed" href="https://public-api.wordpress.com/oembed/?format=json&url=https%3A%2F%2Fblog.danslimmon.com%2F2015%2F10%2F19%2Ftroubleshooting-chatops-ddx%2F&for=wpcom-auto-discovery" /><link rel="alternate" type="application/xml+oembed" href="https://public-api.wordpress.com/oembed/?format=xml&url=https%3A%2F%2Fblog.danslimmon.com%2F2015%2F10%2F19%2Ftroubleshooting-chatops-ddx%2F&for=wpcom-auto-discovery" />
|
||
<!-- Jetpack Open Graph Tags -->
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:title" content="Troubleshooting On A Distributed Team Without Losing Common Ground" />
|
||
<meta property="og:url" content="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/" />
|
||
<meta property="og:description" content="One of the most important concepts to emerge from recent teamwork research, common ground, helps us understand why collaborative troubleshooting breaks down over time. This breakdown leads to waste…" />
|
||
<meta property="article:published_time" content="2015-10-19T18:13:25+00:00" />
|
||
<meta property="article:modified_time" content="2015-10-29T19:28:19+00:00" />
|
||
<meta property="og:site_name" content="Dan Slimmon" />
|
||
<meta property="og:image" content="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg" />
|
||
<meta property="og:image:width" content="640" />
|
||
<meta property="og:image:height" content="474" />
|
||
<meta property="og:image:alt" content="" />
|
||
<meta property="og:locale" content="en_US" />
|
||
<meta property="article:publisher" content="https://www.facebook.com/WordPresscom" />
|
||
<meta name="twitter:text:title" content="Troubleshooting On A Distributed Team Without Losing Common Ground" />
|
||
<meta name="twitter:image" content="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=640" />
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
|
||
<!-- End Jetpack Open Graph Tags -->
|
||
<link rel='openid.server' href='https://blog.danslimmon.com/?openidserver=1' />
|
||
<link rel='openid.delegate' href='https://blog.danslimmon.com/' />
|
||
<link rel="search" type="application/opensearchdescription+xml" href="https://blog.danslimmon.com/osd.xml" title="Dan Slimmon" />
|
||
<link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" />
|
||
<style type="text/css">
|
||
.recentcomments a {
|
||
display: inline !important;
|
||
padding: 0 !important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar {
|
||
border: 0px;
|
||
margin: 0;
|
||
}
|
||
|
||
table.recentcommentsavatartop a, table.recentcommentsavatarend a {
|
||
border: 0px !important;
|
||
background-color: transparent !important;
|
||
}
|
||
|
||
td.recentcommentsavatarend, td.recentcommentsavatartop {
|
||
padding: 0px 0px 1px 0px;
|
||
margin: 0px;
|
||
}
|
||
|
||
td.recentcommentstextend {
|
||
border: none !important;
|
||
padding: 0px 0px 2px 10px;
|
||
}
|
||
|
||
.rtl td.recentcommentstextend {
|
||
padding: 0px 10px 2px 0px;
|
||
}
|
||
|
||
td.recentcommentstexttop {
|
||
border: none;
|
||
padding: 0px 0px 0px 10px;
|
||
}
|
||
|
||
.rtl td.recentcommentstexttop {
|
||
padding: 0px 10px 0px 0px;
|
||
}
|
||
</style>
|
||
<meta name="description" content="One of the most important concepts to emerge from recent teamwork research, common ground, helps us understand why collaborative troubleshooting breaks down over time. This breakdown leads to wasted effort and mistakes, even if the team maintains constant communication in a chat room. But if we extend ChatOps by drawing on some ideas from medical…" />
|
||
<style type="text/css" id="custom-colors-css">.entry-content .page-links a:hover { color: #FFFFFF;}
|
||
.footer-widgets .tagcloud a:hover { color: #FFFFFF;}
|
||
.tags-links a:hover, .tagcloud a:hover { color: #FFFFFF;}
|
||
.sticky-post, .sticky-post .genericon { color: #FFFFFF;}
|
||
#infinite-handle span:hover { color: #FFFFFF;}
|
||
.main-navigation ul ul a, .main-navigation ul ul a:visited { color: #FFFFFF;}
|
||
.button:hover, button:hover, input[type="submit"]:hover, input[type="reset"]:hover, input[type="button"]:hover { color: #FFFFFF;}
|
||
.mobile-search, .mobile-search .search-field, .toggle-active .main-navigation li { border-color: #dddddd;}
|
||
.mobile-search, .mobile-search .search-field, .toggle-active .main-navigation li { border-color: rgba( 221, 221, 221, 0.3 );}
|
||
.toggles, .hentry, #wp-calendar th:first-child, #wp-calendar tbody td:first-child, #wp-calendar thead, #wp-calendar th, #wp-calendar td, .widget ul ul li:first-child, .main-navigation, .widget li, .widget + .widget, .site-footer { border-color: #dddddd;}
|
||
.toggles, .hentry, #wp-calendar th:first-child, #wp-calendar tbody td:first-child, #wp-calendar thead, #wp-calendar th, #wp-calendar td, .widget ul ul li:first-child, .main-navigation, .widget li, .widget + .widget, .site-footer { border-color: rgba( 221, 221, 221, 0.3 );}
|
||
#secondary a, #secondary a:visited, #secondary a:hover, #secondary a:active, #secondary a:focus { color: #111111;}
|
||
.main-navigation a, .main-navigation a:visited { color: #111111;}
|
||
.menu-toggle .bar { background-color: #111111;}
|
||
.site-title a, .site-title a:visited { color: #111111;}
|
||
.search-toggle { color: #111111;}
|
||
.site-description { color: #111111;}
|
||
#secondary { color: #111111;}
|
||
#wp-calendar, #wp-calendar caption, #wp-calendar tfoot a, #wp-calendar tfoot a:visited { color: #111111;}
|
||
.footer-widgets #wp-calendar { color: #111111;}
|
||
.widget_recent_comments .comment-author-link, .widget_recent_comments .comment-author-link a, .widget_authors a strong { color: #111111;}
|
||
#secondary .wp-caption-text, #secondary .gallery-caption { color: #111111;}
|
||
.main-navigation ul > li + li:before { color: #6B6B6B;}
|
||
.widget_archive li, .widget_categories li, .widget_meta li, .widget_nav_menu li, .widget_pages { color: #6B6B6B;}
|
||
.widget_archive li:before, .widget_categories li:before, .widget_meta li:before, .widget_nav_menu li:before, .widget_pages li:before, .widget_authors ul ul li:before, .widget_recent_comments li:before { color: #6B6B6B;}
|
||
body, .toggles { background-color: #fafafa;}
|
||
a, a:visited, a:hover, a:active, a:focus { color: #5F3FF5;}
|
||
.comments-title span a, .comments-title span a:visited { color: #5F3FF5;}
|
||
.mobile-search .search-submit:hover { color: #5F3FF5;}
|
||
.entry-meta a, .entry-meta a:visited { color: #5F3FF5;}
|
||
.footer-widgets #wp-calendar thead th { color: #5F3FF5;}
|
||
.entry-meta a:hover, .entry-meta a:focus, .entry-meta a:active { border-bottom-color: #5F3FF5;}
|
||
.post-navigation a:hover, .post-navigation a:focus, .post-navigation a:active { color: #5F3FF5;}
|
||
.comment-navigation a:hover, .comment-navigation a:focus, .comment-navigation a:active { color: #5F3FF5;}
|
||
.search-submit:hover .genericon, .search-submit:focus .genericon, .search-submit:active .genericon { color: #5F3FF5;}
|
||
.main-navigation ul li:hover > a { color: #5F3FF5;}
|
||
#secondary #wp-calendar thead th, #wp-calendar tfoot a:hover { color: #5F3FF5;}
|
||
.search-toggle:hover, .search-toggle:active, .search-toggle:focus { color: #5F3FF5;}
|
||
.main-navigation ul > .page_item_has_children > a:after, .main-navigation ul > .menu-item-has-children > a:after { border-top-color: #5F3FF5;}
|
||
.main-navigation a:hover, .main-navigation a:active, .main-navigation a:focus { color: #5F3FF5;}
|
||
.toggle-active .main-navigation a, .toggle-active .main-navigation a:visited { color: #5F3FF5;}
|
||
.site-title a:hover, .site-title a:focus, .site-title a:active { color: #5F3FF5;}
|
||
.search-toggle.active { color: #5F3FF5;}
|
||
.menu-toggle.active .bar { background-color: #5F3FF5;}
|
||
.menu-toggle:hover .bar, .menu-toggle:active .bar, .menu-toggle:focus .bar { background-color: #5F3FF5;}
|
||
.toggle-active .main-navigation ul ul li:hover > a { color: #5F3FF5;}
|
||
.toggle-active .main-navigation ul ul a:hover, .toggle-active .main-navigation ul ul a:active, .toggle-active .main-navigation ul ul a:focus { color: #5F3FF5;}
|
||
.menu-toggle:hover .bar, .menu-toggle:active .bar, .menu-toggle:focus .bar { background-color: #5F3FF5;}
|
||
.main-navigation ul ul li:hover > a { color: #AA99F4;}
|
||
.main-navigation ul ul a:hover, .main-navigation ul ul a:active, .main-navigation ul ul a:focus { color: #AA99F4;}
|
||
.site-info a:hover, .site-info a:focus, .site-info a:active { color: #8066F4;}
|
||
.comment-author a:hover { color: #522EF4;}
|
||
.entry-content blockquote:after { color: #5F3FF5;}
|
||
.site-info .sep { color: #8066F4;}
|
||
.entry-content .page-links a:hover { background-color: #5f3ff5;}
|
||
.bypostauthor .comment-author img { background-color: #5f3ff5;}
|
||
#infinite-handle span:hover { background-color: #5f3ff5;}
|
||
.tags-links a:hover:before, .tagcloud a:hover:before { border-right-color: #5f3ff5;}
|
||
.rtl .tags-links a:hover:before, .rtl .tagcloud a:hover:before { border-left-color: #5f3ff5;}
|
||
.sticky-post { background-color: #5f3ff5;}
|
||
.sticky-post:after { border-left-color: #5f3ff5;}
|
||
.sticky-post:after { border-right-color: #5f3ff5;}
|
||
.widget-title, .jetpack-recipe-title { border-color: #5f3ff5;}
|
||
.tags-links a:hover, .tagcloud a:hover { background-color: #5f3ff5;}
|
||
.footer-widgets .tagcloud a:hover { background-color: #5f3ff5;}
|
||
.footer-widgets .tagcloud a:hover:before { border-right-color: #5f3ff5;}
|
||
.rtl .footer-widgets .tagcloud a:hover:before { border-left-color: #5f3ff5;}
|
||
.button:hover, button:hover, input[type="submit"]:hover, input[type="reset"]:hover, input[type="button"]:hover { background-color: #5f3ff5;}
|
||
</style>
|
||
<link rel="icon" href="https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=32" sizes="32x32" />
|
||
<link rel="icon" href="https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=192" sizes="192x192" />
|
||
<link rel="apple-touch-icon" href="https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=180" />
|
||
<meta name="msapplication-TileImage" content="https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=270" />
|
||
<link rel="stylesheet" id="custom-css-css" type="text/css" href="https://s2.wp.com/?custom-css=1&csblog=2C2Pk&cscache=6&csrev=4" />
|
||
<link crossorigin='anonymous' rel='stylesheet' id='all-css-0-4' href='/_static/??-eJydj8EKwkAMRH/IGtoi9iJ+irRpKGl3N6HJuvj3VlDBm3qbGR4PBopWKMkpOcRcacgTJ4OZXHtcnh2iSIILJ4QhCC4GVlhp3aPZDr43RBlzIAPsV8lG4Q29hn+FhceJ3MBFKxXbkvkt0K+6j4d5MFxZnWWjr0zlYTvHU33sDk3TtnU33wFZQHfT&cssminify=yes' type='text/css' media='all' />
|
||
|
||
</head>
|
||
|
||
<body class="wp-singular post-template-default single single-post postid-553 single-format-standard wp-embed-responsive wp-theme-publovecraft customizer-styles-applied has-featured-image jetpack-reblog-enabled custom-colors">
|
||
<div id="page" class="hfeed site">
|
||
<a class="skip-link screen-reader-text" href="#content">Skip to content</a>
|
||
|
||
<header id="masthead" class="site-header" role="banner">
|
||
<div class="site-branding">
|
||
<a href="https://blog.danslimmon.com/" class="site-logo-link" rel="home" itemprop="url"></a> <h1 class="site-title"><a href="https://blog.danslimmon.com/" rel="home">Dan Slimmon</a></h1>
|
||
<p class="site-description">Scientific incident response</p>
|
||
</div><!-- .site-branding -->
|
||
|
||
<div class="toggles clear">
|
||
<button class="menu-toggle toggle" aria-controls="primary-menu" aria-expanded="false">
|
||
<div class="bar"></div>
|
||
<div class="bar"></div>
|
||
<div class="bar"></div>
|
||
<span class="screen-reader-text">Menu</span>
|
||
</button><!-- .menu-toggle -->
|
||
<button class="search-toggle toggle">
|
||
<div class="genericon genericon-search" aria-expanded="false">
|
||
<span class="screen-reader-text">Search</span>
|
||
</div><!-- .genericon-search -->
|
||
</button><!-- .search-toggle -->
|
||
</div><!-- .toggles -->
|
||
|
||
<nav id="site-navigation" class="main-navigation" role="navigation">
|
||
<div class="menu-top-navbar-container"><ul id="primary-menu" class="menu"><li id="menu-item-378" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-378"><a href="https://blog.danslimmon.com">Blog</a></li>
|
||
<li id="menu-item-2836" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2836"><a href="https://d2e.engineering/">Incident Response Training</a></li>
|
||
<li id="menu-item-2837" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2837"><a href="https://www.linkedin.com/in/danslimmon/">LinkedIn</a></li>
|
||
<li id="menu-item-2838" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2838"><a href="https://twitter.com/danslimmon">Twitter</a></li>
|
||
<li id="menu-item-2839" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2839"><a href="mailto:dan@down-to-earth.engineering">Email</a></li>
|
||
</ul></div> </nav><!-- #site-navigation -->
|
||
|
||
<div class="mobile-search">
|
||
<form role="search" method="get" class="search-form" action="https://blog.danslimmon.com/">
|
||
<label>
|
||
<span class="screen-reader-text">Search for:</span>
|
||
<input type="search" class="search-field" placeholder="Search …" value="" name="s" title="Search for:" />
|
||
</label>
|
||
<button type="submit" class="search-submit">
|
||
<span class="genericon genericon-search">
|
||
<span class="screen-reader-text">Search</span>
|
||
</span>
|
||
</button>
|
||
</form> </div>
|
||
</header><!-- #masthead -->
|
||
|
||
<div class="header-image bg-image" style="background-image: url(https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=800)">
|
||
|
||
<img width="800" height="593" src="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=800" class="attachment-lovecraft-post-image size-lovecraft-post-image wp-post-image" alt="" decoding="async" srcset="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg 800w, https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=150 150w, https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=300 300w, https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=768 768w" sizes="(max-width: 800px) 100vw, 800px" data-attachment-id="572" data-permalink="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/star-trek-tng-s2-002/" data-orig-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg" data-orig-size="800,593" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="star-trek-tng-s2-002" data-image-description="" data-image-caption="" data-large-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/star-trek-tng-s2-002.jpg?w=640" />
|
||
</div>
|
||
|
||
|
||
<div id="content" class="site-content">
|
||
|
||
<div id="primary" class="content-area">
|
||
<main id="main" class="site-main" role="main">
|
||
|
||
|
||
|
||
<article id="post-553" class="post-553 post type-post status-publish format-standard has-post-thumbnail hentry category-problem-solving category-workflow tag-devops tag-differential-diagnosis tag-medical-reasoning tag-ops tag-reasoning tag-troubleshooting tag-workflow-2">
|
||
<div class="entry-wrapper">
|
||
<header class="entry-header">
|
||
<h1 class="entry-title">Troubleshooting On A Distributed Team Without Losing Common Ground</h1>
|
||
<div class="entry-meta">
|
||
<span class="posted-on">On <a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/" rel="bookmark"><time class="entry-date published" datetime="2015-10-19T14:13:25+00:00">2015/10/19</time><time class="updated" datetime="2015-10-29T15:28:19+00:00">2015/10/29</time></a></span><span class="byline"> By <span class="author vcard"><a class="url fn n" href="https://blog.danslimmon.com/author/danslimmon/">Dan Slimmon</a></span></span><span class="cat-links">In <a href="https://blog.danslimmon.com/category/problem-solving/" rel="category tag">Problem-Solving</a>, <a href="https://blog.danslimmon.com/category/workflow/" rel="category tag">Workflow</a></span> </div><!-- .entry-meta -->
|
||
</header><!-- .entry-header -->
|
||
|
||
<div class="entry-content">
|
||
<p>I work on a team that fixes complex systems under time pressure. My teammates have different skill sets, different priorities, and different levels of expertise. But we all have to troubleshoot and solve problems together.</p>
|
||
<p>This is really hard to do effectively. Fortunately for us in the relatively new domain of DevOps, situations like ours have been studied extensively in the last couple decades. We can use the results of this research to inform our own processes and automation for troubleshooting.</p>
|
||
<p>One of the most important concepts to emerge from recent teamwork research, <em>common ground</em>, helps us understand why collaborative troubleshooting breaks down over time. This breakdown leads to wasted effort and mistakes, even if the team maintains constant communication in a chat room. But if we extend ChatOps by drawing on some ideas from medical diagnosis, we can make troubleshooting way easier without losing the benefits of fluid team conversation.</p>
|
||
<h1>Common Ground</h1>
|
||
<p>Ergonomics researchers D.D. Woods and Gary Klein (the latter of whom I wrote about in <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://danslimmon.wordpress.com/2015/06/25/what-makes-expert-expert/">What makes an expert an expert?</a></span>) published a phenomenally insightful paper in 2004 called <span style="color:#0000ff;"><a style="color:#0000ff;" href="http://jeffreymbradshaw.us/publications/Common_Ground_Single.pdf" target="_blank">Common Ground and Coordination in Joint Activity</a></span>. In it, they describe a particular kind of failure that occurs when people engage in joint cognition: the <em>Fundamental Common Ground Breakdown</em>. Once you learn about the Fundamental Common Ground Breakdown, you see it everywhere. Here’s how the Woods/Klein paper describes the FCGB:</p>
|
||
<blockquote>
|
||
<ul>
|
||
<li><span style="color:#808080;">Party A believes that Party B possesses some knowledge</span></li>
|
||
<li><span style="color:#808080;">Party B doesn’t have this knowledge, and doesn’t know he is supposed to have it.</span></li>
|
||
<li><span style="color:#808080;">Therefore, he or she doesn’t request it.</span></li>
|
||
<li><span style="color:#808080;">This lack of a request confirms to Party A that Party B has the knowledge.</span></li>
|
||
</ul>
|
||
</blockquote>
|
||
<p>When this happens, Party A and Party B lose <em>common ground</em>, which Woods & Klein define as “pertinent knowledge, beliefs and assumptions that are shared among the involved parties.” The two parties start making incorrect assumptions about each other’s knowledge and beliefs, which causes their common ground to break down further and further. Eventually they reach a <em>coordination surprise</em>, which forces them to re-synchronize their understanding of the coordinated activity:</p>
|
||
<p><a href="https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png"><img data-attachment-id="557" data-permalink="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf-2/" data-orig-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png" data-orig-size="524,427" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="csel_eng_ohio-state_edu_woods_distributed_CG_final_pdf" data-image-description="" data-image-caption="" data-large-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png?w=524" class=" wp-image-557 aligncenter" src="https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png?w=438&h=356" alt="csel_eng_ohio-state_edu_woods_distributed_CG_final_pdf" width="438" height="356" srcset="https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png?w=300 300w, https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png?w=438 438w, https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png?w=150 150w, https://blog.danslimmon.com/wp-content/uploads/2015/10/csel_eng_ohio-state_edu_woods_distributed_cg_final_pdf1.png 524w" sizes="(max-width: 438px) 100vw, 438px" /></a></p>
|
||
<p>Seriously, the FCGB is everywhere. Check out the paper.</p>
|
||
<p>I’m especially interested in one particular area where an understanding of common ground can help us do better teamwork: joint troubleshooting.</p>
|
||
<h1>Common Ground Breakdown in Chatroom Troubleshooting</h1>
|
||
<p>Everybody’s into ChatOps these days, and I totally get it. When a critical system is broken, it’s super useful to get everybody in the same room and hash it out. ChatOps allows everybody to track progress, coordinate activities, and share results. And it also helps to have lots of different roles represented in the room:</p>
|
||
<ul>
|
||
<li>Operations folks, to provide insight into the differences between the system’s normal behavior and its current state</li>
|
||
<li>Software engineers, who bring detailed knowledge of the ways subsystems are supposed to work</li>
|
||
<li>Account managers and product managers and support reps: not just for their ability to translate technical jargon into the customer’s language for status reporting, but also because their understanding of customer needs can help establish the right priorities</li>
|
||
<li>Q.A. engineers, who can rule out certain paths of investigation early with their intuition for the ways in which subsystems tend to fail</li>
|
||
</ul>
|
||
<p>The process of communicating across role boundaries isn’t just overhead: it helps us refine our own understanding, look for extra evidence, and empathize with each other’s perspectives.</p>
|
||
<p>But ChatOps still offers a lot of opportunities for common ground breakdown. The FCGB can occur whenever different people interpret the same facts in different ways. Interpretations can differ for many different reasons:</p>
|
||
<ul>
|
||
<li style="font-weight:400;"><span style="font-weight:400;">Some people have less technical fluency in the system than others. A statement like “OOM killer just killed Cassandra on db014” might change an ops engineer’s whole understanding of the problem, but such a shift could fly under the radar of, say, a support engineer.</span></li>
|
||
<li><span style="font-weight:400;">Some people are multitasking. They may have a stake in the troubleshooting effort but be unable to internalize every detail from the chat room in real time.</span></li>
|
||
<li style="font-weight:400;"><span style="font-weight:400;">Some people are co-located. They find it easier to discuss the problem using mouth words or by physically showing each other graphs, thereby adjusting their own shared understanding without transmitting these adjustments to the rest of the team.</span></li>
|
||
<li style="font-weight:400;"><span style="font-weight:400;">Some people enter the conversation late, or leave for a while and come back. These people will miss common ground changes that happen during their absence.</span></li>
|
||
</ul>
|
||
<p>These FCGB opportunities all become more pronounced as the troubleshooting drags on and folks become tired, bored, and confused. And when somebody says they’ve lost track of common ground, what do we do? Two main things: we provide a summary of recent events and let the person ask questions until they feel comfortable; or we tell them to read the backlog.</p>
|
||
<p>The Q&A approach has serious drawbacks. First of all, it requires somebody knowledgeable to stop what they’re doing and summarize the situation. If people are frequently leaving and entering the chat room, you end up with a big distraction. Second of all, it leaves lots of room for important information to get missed. The Fundamental Common Ground Breakdown happens when somebody <i>doesn’t know what to ask</i>, so fixing it with a Q&A session is kind of silly.</p>
|
||
<p>The other way people catch up with the troubleshooting effort is by reading the backlog. This is even more inefficient than Q&A. Here’s the kind of stuff you have to dig through when you’re reading a chat backlog:</p>
|
||
<p><a href="https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png"><img data-attachment-id="565" data-permalink="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/tng-hipchat-2/" data-orig-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png" data-orig-size="731,1074" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="tng-hipchat" data-image-description="" data-image-caption="" data-large-file="https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png?w=640" class=" wp-image-565 aligncenter" src="https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png?w=533&h=783" alt="tng-hipchat" width="533" height="783" srcset="https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png?w=204 204w, https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png?w=533 533w, https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png?w=102 102w, https://blog.danslimmon.com/wp-content/uploads/2015/10/tng-hipchat1.png 731w" sizes="(max-width: 533px) 100vw, 533px" /></a></p>
|
||
<p>There’s a lot to unpack there – and that’s just 18 messages! Imagine piecing together a troubleshooting effort that’s gone on for hours, or days. It would take forever, and you’d still make a lot of mistakes. It’s just not a good way to preserve common ground.</p>
|
||
<p>So what do we need?</p>
|
||
<h1>Differential Diagnosis as an Engine of Common Ground</h1>
|
||
<p>I’ve blogged before about how much I love <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://danslimmon.wordpress.com/2012/07/20/you-know-whos-smart-friggin-doctors-man/" target="_blank">differential diagnosis</a></span>. It’s a formalism that doctors use to keep the diagnostic process moving in the right direction. I’ve used it many times in ops since I learned about it. It’s incredibly useful.</p>
|
||
<p>In differential diagnosis, you get together with your team in front of a whiteboard – making sure to bring together people from a wide variety of roles – and you go through a cycle of 3 steps:</p>
|
||
<ol>
|
||
<li><b>Identify symptoms.</b> Write down all the anomalies you’ve seen. Don’t try to connect the dots just yet; just write down your observations.</li>
|
||
<li><b>Generate hypotheses.</b> Brainstorm explanations for the symptoms you’ve observed. This is where it really helps to have a good cross-section of roles represented. The more diverse the ideas you write down, the better.</li>
|
||
<li><strong>Test hypotheses.</strong> Now that you have a list of things that might be causing the problem, you start narrowing down that list by coming up with a test that will prove or disprove a certain hypothesis.</li>
|
||
</ol>
|
||
<p>Once you’re done with step #3, you can cross out a hypothesis or two. Then you head back to step #1 and repeat the cycle until the problem is identified.</p>
|
||
<p>A big part of the power of differential diagnosis is that it’s <em>written down</em>. Anybody can walk into the room, read the whiteboard, and understand the state of the collaborative effort. It cuts down on redundant Q&A, because the most salient information is summarized on the board. It eliminates inefficient chat log reading – the chat log is still there, but you use it to search for specific pieces of information instead of reading it like a novel. But, most importantly, differential diagnosis cuts down on fundamental common ground breakdowns, because everybody has agreed to accept what’s on the whiteboard as the canonical state of troubleshooting.</p>
|
||
<h1>Integrating Differential Diagnosis with ChatOps</h1>
|
||
<p>We don’t want to lose the off-the-cuff, conversational nature of ChatOps. But we need a structured source of truth to provide a point-in-time understanding of the effort. And we (read: I) don’t want to write a whole damn software project to make that happen.</p>
|
||
<p>My proposal is this: use <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://trello.com/" target="_blank">Trello</a></span> for differential diagnosis, and integrate it with the chat through a <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://hubot.github.com" target="_blank">Hubot</a></span> plugin. I haven’t written this plugin yet, but it shouldn’t take long (I’ll probably fork <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://www.npmjs.com/package/hubot-trello">hubot-trello</a></span> and start from there). That way people could update the list of symptoms, hypotheses, and tests on the fly, and they’d always have a central source of common ground to refer to.</p>
|
||
<p>In the system I envision, the chat room conversation would be peppered with statements like:</p>
|
||
<blockquote><p><strong>Geordi:</strong> hubot symptom warp engine going full speed, but ship not moving</p>
|
||
<p><strong>Hubot:</strong> Created (symp0): warp engine going full speed, but ship not moving</p>
|
||
<p><strong>Beverly:</strong> hubot falsify hypo1</p>
|
||
<p><strong>Hubot:</strong> Falsified (hypo1): feedback loop between graviton emitter and graviton roaster</p>
|
||
<p><strong>Geordi:</strong> hubot finish test1</p>
|
||
<p><strong>Hubot:</strong> Marked (test1) finished: reboot the quantum phase allometer</p></blockquote>
|
||
<p>And the resulting differential diagnosis board, containing the agreed-upon state of the troubleshooting effort, might look like <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://trello.com/b/3QprmB6W/ddx-tachyon-flux-fubar" target="_blank">this example</a></span>, with cards labeled to indicate that they’re no longer in play.</p>
|
||
<h1>What do you think?</h1>
|
||
<p>Let me know if your organization already has something like this, or has tried a formal differential diagnosis approach before. I’d love to read some observations about your team’s process in the comments. Also, <span style="color:#0000ff;"><a style="color:#0000ff;" href="https://victorops.com/" target="_blank">VictorOps</a></span> has a pretty neat suite of tools that approaches what I have in mind, but I still think a more conceptually structured (not to mention free) solution could be very useful.</p>
|
||
<p>Automation is most effective when it’s a team player. By using automation to preserve common ground, we can solve problems faster and more thoroughly, with less frustration and less waste. And that all sounds pretty good to me.</p>
|
||
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-twitter"><a rel="nofollow noopener noreferrer"
|
||
data-shared="sharing-twitter-553"
|
||
class="share-twitter sd-button share-icon"
|
||
href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?share=twitter"
|
||
target="_blank"
|
||
aria-labelledby="sharing-twitter-553"
|
||
>
|
||
<span id="sharing-twitter-553" hidden>Share on X (Opens in new window)</span>
|
||
<span>X</span>
|
||
</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
|
||
data-shared="sharing-facebook-553"
|
||
class="share-facebook sd-button share-icon"
|
||
href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?share=facebook"
|
||
target="_blank"
|
||
aria-labelledby="sharing-facebook-553"
|
||
>
|
||
<span id="sharing-facebook-553" hidden>Share on Facebook (Opens in new window)</span>
|
||
<span>Facebook</span>
|
||
</a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-38620006-553-6aa4e39ed942c' data-src='//widgets.wp.com/likes/index.html?ver=20260912#blog_id=38620006&post_id=553&origin=danslimmon.wordpress.com&obj_id=38620006-553-6aa4e39ed942c&domain=blog.danslimmon.com' data-name='like-post-frame-38620006-553-6aa4e39ed942c' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content -->
|
||
|
||
<footer class="entry-footer">
|
||
<span class="tags-links"><a href="https://blog.danslimmon.com/tag/devops/" rel="tag">devops</a><a href="https://blog.danslimmon.com/tag/differential-diagnosis/" rel="tag">differential diagnosis</a><a href="https://blog.danslimmon.com/tag/medical-reasoning/" rel="tag">medical reasoning</a><a href="https://blog.danslimmon.com/tag/ops/" rel="tag">ops</a><a href="https://blog.danslimmon.com/tag/reasoning/" rel="tag">reasoning</a><a href="https://blog.danslimmon.com/tag/troubleshooting/" rel="tag">troubleshooting</a><a href="https://blog.danslimmon.com/tag/workflow-2/" rel="tag">workflow</a></span> </footer><!-- .entry-footer -->
|
||
</div>
|
||
</article><!-- #post-## -->
|
||
|
||
|
||
|
||
<nav class="navigation post-navigation" aria-label="Posts">
|
||
<h2 class="screen-reader-text">Post navigation</h2>
|
||
<div class="nav-links"><div class="nav-previous"><a href="https://blog.danslimmon.com/2015/07/23/minding-your-pees-and-queues/" rel="prev"><span class="meta-nav">Previous</span> <h4>Minding Your Pees And Queues</h4></a></div><div class="nav-next"><a href="https://blog.danslimmon.com/2015/12/29/the-10-best-books-i-read-in-2015/" rel="next"><span class="meta-nav">Next</span> <h4>The 10 Best Books I Read In 2015</h4></a></div></div>
|
||
</nav>
|
||
|
||
<div id="comments" class="comments-area">
|
||
<div class="comments-wrapper">
|
||
|
||
<h2 class="comments-title">
|
||
13 thoughts on “<span>Troubleshooting On A Distributed Team Without Losing Common Ground</span>” </h2>
|
||
|
||
|
||
<ol class="comment-list">
|
||
<li id="comment-347" class="comment byuser comment-author-bokal even thread-even depth-1 parent">
|
||
<article id="div-comment-347" class="comment-body">
|
||
<footer class="comment-meta">
|
||
<div class="comment-author vcard">
|
||
<img referrerpolicy="no-referrer" alt='Dieter_be's avatar' src='https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=60&d=identicon&r=G' srcset='https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=60&d=identicon&r=G 1x, https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=90&d=identicon&r=G 1.5x, https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=120&d=identicon&r=G 2x, https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=180&d=identicon&r=G 3x, https://0.gravatar.com/avatar/3391e243a22d40c1a778329d30ab844c6e915b2a324ed8167ce86352e36894e5?s=240&d=identicon&r=G 4x' class='avatar avatar-60' height='60' width='60' decoding='async' /> <b class="fn">Dieter_be</b> </div><!-- .comment-author -->
|
||
|
||
</footer><!-- .comment-meta -->
|
||
|
||
<div class="comment-content">
|
||
<p>Great post Dan, thanks.<br />
|
||
I’ve also been thinking around adding more structure around conversations. Troubleshooting sessions can be quite chaotic and the singular, linear dimension of a conversation (chat or otherwise) puts a big damper on the effectiveness of working together. I think the same holds true for team meetings where during conversations you often come up with things that should be addressed, extra questions etc, but the conversation can rarely support evolving in more than 1 way at the same time. So i had been thinking about a “2nd stream” (next to the actual conversation/meeting) which could be a chat room in which people could add notes like ” question”, ” ” etc. Part of the use here is that you can get them out of your head so you can focus on the conversation at hand, but also the ability to make sure all points eventually do get addressed, and i feel like it would also helps in optimizing the time of the people involved. some topics only require a subset of people to participate etc, and it’s always nice to be able to organize a meeting to optimize for that, even if the topics of the meeting change while it’s being held.</p>
|
||
<p>anyway, this may seem like a different topic but I think the problems are quite similar and perhaps a solution can be built that addresses both.<br />
|
||
Any particular reason why you think a kanban board would be a good fit? The usual benefits of a kanbard don’t seem to apply (progression through columns, WIP limits, etc) so it seems like you’re chosing to use it as a generic way to organize things into a few categories, unless i’m missing something?</p>
|
||
<p>I had been thinking of just a command line tool / custom little web app or something.</p>
|
||
</div><!-- .comment-content -->
|
||
|
||
<div class="comment-metadata">
|
||
<a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comment-347">
|
||
<time datetime="2015-10-21T14:13:49+00:00">
|
||
2015/10/21 at 14:13 </time>
|
||
</a>
|
||
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?replytocom=347#respond" data-commentid="347" data-postid="553" data-belowelement="div-comment-347" data-respondelement="respond" data-replyto="Reply to Dieter_be" aria-label="Reply to Dieter_be">Reply</a></span> </div><!-- .comment-metadata -->
|
||
</article><!-- .comment-body -->
|
||
<ol class="children">
|
||
<li id="comment-349" class="comment byuser comment-author-danslimmon bypostauthor odd alt depth-2">
|
||
<article id="div-comment-349" class="comment-body">
|
||
<footer class="comment-meta">
|
||
<div class="comment-author vcard">
|
||
<img referrerpolicy="no-referrer" alt='Dan Slimmon's avatar' src='https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=60&d=identicon&r=G' srcset='https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=60&d=identicon&r=G 1x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=90&d=identicon&r=G 1.5x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=120&d=identicon&r=G 2x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=180&d=identicon&r=G 3x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=240&d=identicon&r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="https://danslimmon.wordpress.com" class="url" rel="ugc external nofollow">Dan Slimmon</a></b> </div><!-- .comment-author -->
|
||
|
||
</footer><!-- .comment-meta -->
|
||
|
||
<div class="comment-content">
|
||
<p>You’re right: the reason I jumped to Trello was because it already exists. It’s a way of organizing pieces of information into groups, and it lets you do the most important things for my use case: label things as no-longer-active, attach images to things, and provide an API.</p>
|
||
<p>I needed something a little more structured and automatable than, say, a Google Doc. But for the case of managing tangents in a meeting, I use Google Docs and I find the solution pretty compelling. It takes a little more effort to parse, but it’s also more flexible and user-friendly than any DIY tool I could write.</p>
|
||
</div><!-- .comment-content -->
|
||
|
||
<div class="comment-metadata">
|
||
<a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comment-349">
|
||
<time datetime="2015-10-23T10:14:39+00:00">
|
||
2015/10/23 at 10:14 </time>
|
||
</a>
|
||
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?replytocom=349#respond" data-commentid="349" data-postid="553" data-belowelement="div-comment-349" data-respondelement="respond" data-replyto="Reply to Dan Slimmon" aria-label="Reply to Dan Slimmon">Reply</a></span> </div><!-- .comment-metadata -->
|
||
</article><!-- .comment-body -->
|
||
</li><!-- #comment-## -->
|
||
</ol><!-- .children -->
|
||
</li><!-- #comment-## -->
|
||
<li id="comment-351" class="comment even thread-odd thread-alt depth-1 parent">
|
||
<article id="div-comment-351" class="comment-body">
|
||
<footer class="comment-meta">
|
||
<div class="comment-author vcard">
|
||
<img referrerpolicy="no-referrer" alt='Daniel Kang (@kangman)'s avatar' src='https://pbs.twimg.com/profile_images/1634199386/stache_normal' srcset='https://pbs.twimg.com/profile_images/1634199386/stache_normal 1x, https://pbs.twimg.com/profile_images/1634199386/stache_normal 1.5x, https://pbs.twimg.com/profile_images/1634199386/stache_normal 2x, https://pbs.twimg.com/profile_images/1634199386/stache_normal 3x, https://pbs.twimg.com/profile_images/1634199386/stache_normal 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="http://twitter.com/kangman" class="url" rel="ugc external nofollow">Daniel Kang (@kangman)</a></b> </div><!-- .comment-author -->
|
||
|
||
</footer><!-- .comment-meta -->
|
||
|
||
<div class="comment-content">
|
||
<p>Hi Dan,</p>
|
||
<p>Thank you for this post. Definitely can commiserate with the chatOps/fog of war/getting up to speed chaos in the heat of the moment thing. </p>
|
||
<p>I read your earlier post here <a href="https://danslimmon.wordpress.com/2012/07/20/you-know-whos-smart-friggin-doctors-man/" rel="nofollow ugc">https://danslimmon.wordpress.com/2012/07/20/you-know-whos-smart-friggin-doctors-man/</a>. When you were diagnosing the donations dip issue you mentioned “we” offhand how do you know who “we” are? As this post states diversity of opinion at the outset will give the best outcome for this differential diagnosis method you’ve described. Are there concrete examples of a devOps way of getting core stakeholders at the beginning of this differential exercise? </p>
|
||
<p>Also it’s really interesting that you looked toward the domain of medicine to find problem solving methods in a communal setting when devOps also can trace it’s origins back to lean manufacturing e.g Toyota car manufacturing.</p>
|
||
</div><!-- .comment-content -->
|
||
|
||
<div class="comment-metadata">
|
||
<a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comment-351">
|
||
<time datetime="2015-10-24T19:42:53+00:00">
|
||
2015/10/24 at 19:42 </time>
|
||
</a>
|
||
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?replytocom=351#respond" data-commentid="351" data-postid="553" data-belowelement="div-comment-351" data-respondelement="respond" data-replyto="Reply to Daniel Kang (@kangman)" aria-label="Reply to Daniel Kang (@kangman)">Reply</a></span> </div><!-- .comment-metadata -->
|
||
</article><!-- .comment-body -->
|
||
<ol class="children">
|
||
<li id="comment-359" class="comment byuser comment-author-danslimmon bypostauthor odd alt depth-2">
|
||
<article id="div-comment-359" class="comment-body">
|
||
<footer class="comment-meta">
|
||
<div class="comment-author vcard">
|
||
<img referrerpolicy="no-referrer" alt='Dan Slimmon's avatar' src='https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=60&d=identicon&r=G' srcset='https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=60&d=identicon&r=G 1x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=90&d=identicon&r=G 1.5x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=120&d=identicon&r=G 2x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=180&d=identicon&r=G 3x, https://0.gravatar.com/avatar/9e1aedd800c4580300eef746b1c7db9829b95ed4500fd086cbb79b757cfce136?s=240&d=identicon&r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="https://danslimmon.wordpress.com" class="url" rel="ugc external nofollow">Dan Slimmon</a></b> </div><!-- .comment-author -->
|
||
|
||
</footer><!-- .comment-meta -->
|
||
|
||
<div class="comment-content">
|
||
<p>Great question about diversity of opinions. I don’t have a formal answer for it, nor can I cite one from the medical literature. So I looked at social science literature on brainstorming, and I’m still can’t find much research on the effect of role diversity.</p>
|
||
<p>My inspiration for emphasizing the need for role diversity in this post came directly from this paper about space shuttle mission control:</p>
|
||
<p><a href="https://drive.google.com/file/d/0B4ObM99Dmka6TWRFMDk4NFdncWs/view" rel="nofollow ugc">https://drive.google.com/file/d/0B4ObM99Dmka6TWRFMDk4NFdncWs/view</a></p>
|
||
<p>which argues that, in translating one team’s ideas to the parlance of a different team, we force ourselves to refine our own understanding and gather stronger evidence. All of which improves our results.</p>
|
||
<p>So, to your question: I try to involve people from all parts of the service chain in the hope that together we’ll have a holistic model of the problem, all the way from customer to server. As long as you’re trying to draw on the strengths of every part of the team, you’ll pick roughly the right set of people. For the “dip” issue, I believe we had 2 ops people, a coder, an account manager, and the VP of technology in the room.</p>
|
||
</div><!-- .comment-content -->
|
||
|
||
<div class="comment-metadata">
|
||
<a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comment-359">
|
||
<time datetime="2015-10-26T10:35:10+00:00">
|
||
2015/10/26 at 10:35 </time>
|
||
</a>
|
||
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?replytocom=359#respond" data-commentid="359" data-postid="553" data-belowelement="div-comment-359" data-respondelement="respond" data-replyto="Reply to Dan Slimmon" aria-label="Reply to Dan Slimmon">Reply</a></span> </div><!-- .comment-metadata -->
|
||
</article><!-- .comment-body -->
|
||
</li><!-- #comment-## -->
|
||
</ol><!-- .children -->
|
||
</li><!-- #comment-## -->
|
||
<li id="comment-362" class="comment even thread-even depth-1">
|
||
<article id="div-comment-362" class="comment-body">
|
||
<footer class="comment-meta">
|
||
<div class="comment-author vcard">
|
||
<img referrerpolicy="no-referrer" alt='ricookmd483034409933's avatar' src='https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=60&d=identicon&r=G' srcset='https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=60&d=identicon&r=G 1x, https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=90&d=identicon&r=G 1.5x, https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=120&d=identicon&r=G 2x, https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=180&d=identicon&r=G 3x, https://2.gravatar.com/avatar/bb7a557fcd0618011574d692d668c02037a7657e236764e773cbb2cb49e54390?s=240&d=identicon&r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="http://gravatar.com/ricookmd483034409933" class="url" rel="ugc external nofollow">ricookmd483034409933</a></b> </div><!-- .comment-author -->
|
||
|
||
</footer><!-- .comment-meta -->
|
||
|
||
<div class="comment-content">
|
||
<p>Leila Johannessen’s PhD work showed clearly the need to invest in establishing & maintaining common ground as a prerequisite for future problem solving. She observed experts investing time and attention in tracking a process and in tracking another cognitive agent’s understanding of that process in order to be able to solve new problems quickly. The process was too complex to allow an expert to be called in after the problem was engaged — the time and effort needed to get up to speed in order to begin work on solving the problem was too much and too long for the expertise to be of use. In all likelihood what you are calling common ground is only one part of the Common Ground that is required to solve devops problems. </p>
|
||
<p>Sustaining common ground depends on the individuals staying abreast of the situation — both of the process and the understanding that others have about that process — and this requires substantial effort. It is one reason that true outsiders rarely contribute much to cutting-edge problem solving in devops. One might think of the expertise that can be brought to bear as a penumbra: not directly involved but aware of what is going on and (quickly) recruitable and (quickly) up to speed.</p>
|
||
<p>There are studies showing how groups accomplish this, some in highly demanding and complex settings. NASA’s Mission Control uses voice loops, described by Emily Patterson and Jennifer Watts. These are audio channels dedicated to specific roles or functions but available for monitoring by the larger group. Interesting in their study is the fact that (1) very few people speak on these channels and those that do speak briefly so that the channels are largely quiet and (2) people monitor multiple channels simultaneously with ease while they work. People choose which channels to monitor depending on their roles and the mission conditions. It is clear that the monitoring adds some small cognitive load but that this listening in pays back dividends. Perhaps most notable of the dividends is the relative paucity of direct comm coordination overhead required and the ease and especially the smoothness with the network of actors can be engaged in problem solving. Although this is surely a unique, mature situation where the network of actors and the supporting comm have been tailored over many years, it provides a good example of what can be accomplished.</p>
|
||
<p>The Mission Control setting is particularly powerful because there is a great deal of shared information projected to all the actors. We are mostly lacking this in devops, although the dashboards and other monitoring information available goes some way to support the same sort of common awareness. Because the kinds of problems that occur in internet operational settings are so varied it’s probably not possible to create a priori a single display that can support Common Ground or even common ground ;-> I know that Mark Imbriaco’s group is seeking to build tools that can support common information displays in order to promote common grounding. This is a challenging area and likely to see significant change over the next 2 years.</p>
|
||
<p>See<br />
|
||
Johannessen, Cook, & Woods, 1995. “Grounding Explanations in Evolving, Diagnostic Situations.” NASA-CR-198027. <a href="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19950018915.pdf" rel="nofollow ugc">http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19950018915.pdf</a></p>
|
||
<p>a more complete account of the study is found in Johanneson L, 2008. Maintaining Common Ground: An Analysis of Cooperative Communication in the Operating Room. In Nemeth, C., ed. Improving Healthcare Team Communication: Building on Lesson from Aviation and Aerospace. Ashgate Press. pp. 179-203. (ISBN 978-0754670254)</p>
|
||
<p>Patterson, Watts-Perotti, Woods, 1999. “Voice Loops as Coordination Aids in Space Shuttle Mission Control.” Comp Supp Coop Work 8: 353-371. <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.7042&rep=rep1&type=pdf" rel="nofollow ugc">http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.7042&rep=rep1&type=pdf</a></p>
|
||
</div><!-- .comment-content -->
|
||
|
||
<div class="comment-metadata">
|
||
<a href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comment-362">
|
||
<time datetime="2015-10-26T15:05:42+00:00">
|
||
2015/10/26 at 15:05 </time>
|
||
</a>
|
||
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/?replytocom=362#respond" data-commentid="362" data-postid="553" data-belowelement="div-comment-362" data-respondelement="respond" data-replyto="Reply to ricookmd483034409933" aria-label="Reply to ricookmd483034409933">Reply</a></span> </div><!-- .comment-metadata -->
|
||
</article><!-- .comment-body -->
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-972">
|
||
<p>Pingback: <a href="https://blog.danslimmon.com/2019/05/03/no-observability-without-theory/" class="url" rel="ugc">No observability without theory – Dan Slimmon</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback even thread-even depth-1" id="comment-5957">
|
||
<p>Pingback: <a href="https://sreweekly.com/sre-weekly-issue-348/" class="url" rel="ugc external nofollow">SRE Weekly Issue #348 – SRE WEEKLY</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-5958">
|
||
<p>Pingback: <a href="https://fde.cat/index.php/2022/11/21/sre-weekly-issue-348/" class="url" rel="ugc external nofollow">SRE Weekly Issue #348 – FDE</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback even thread-even depth-1" id="comment-5959">
|
||
<p>Pingback: <a href="https://simpleenews.qblnet.us/2022/11/21/troubleshooting-on-a-distributed-team-without-losing-common-ground/" class="url" rel="ugc external nofollow">Troubleshooting on a Distributed Team Without Losing Common Ground - My Blog</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-5975">
|
||
<p>Pingback: <a href="https://javilopezg.com/tech-roundup-169/" class="url" rel="ugc external nofollow">Tech roundup 169: a journal published by a bot - Javi López G.</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback even thread-even depth-1" id="comment-7042">
|
||
<p>Pingback: <a href="https://blog.danslimmon.com/2024/01/18/3-questions-that-will-make-you-a-phenomenal-rubber-duck/" class="url" rel="ugc">3 questions that will make you a phenomenal rubber duck – Dan Slimmon</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-7051">
|
||
<p>Pingback: <a href="https://blog.danslimmon.com/2024/03/08/clinical-troubleshooting-diagnose-any-production-issue-fast/" class="url" rel="ugc">Clinical troubleshooting: diagnose any production issue, fast. – Dan Slimmon</a> </p>
|
||
</li><!-- #comment-## -->
|
||
<li class="pingback even thread-even depth-1" id="comment-7052">
|
||
<p>Pingback: <a href="https://blog.danslimmon.com/2024/03/18/dead-air-on-the-incident-call/" class="url" rel="ugc">Dead air on the incident call – Dan Slimmon</a> </p>
|
||
</li><!-- #comment-## -->
|
||
</ol><!-- .comment-list -->
|
||
|
||
|
||
|
||
|
||
<div id="respond" class="comment-respond">
|
||
<h3 id="reply-title" class="comment-reply-title">Leave a comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2015/10/19/troubleshooting-chatops-ddx/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://blog.danslimmon.com/wp-comments-post.php" method="post" id="commentform" class="comment-form">
|
||
|
||
|
||
<div class="comment-form__verbum transparent"></div><div class="verbum-form-meta"><input type='hidden' name='comment_post_ID' value='553' id='comment_post_ID' />
|
||
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
|
||
|
||
<input type="hidden" name="highlander_comment_nonce" id="highlander_comment_nonce" value="4affefa77f" />
|
||
<input type="hidden" name="verbum_show_subscription_modal" value="hidden_disabled" /></div><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="930c2d49b4" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="155"/><script>
|
||
document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );
|
||
</script>
|
||
</p></form> </div><!-- #respond -->
|
||
</div>
|
||
</div><!-- #comments -->
|
||
|
||
|
||
</main><!-- #main -->
|
||
</div><!-- #primary -->
|
||
|
||
|
||
<div id="secondary" class="widget-area" role="complementary">
|
||
<aside id="search-2" class="widget widget_search"><form role="search" method="get" class="search-form" action="https://blog.danslimmon.com/">
|
||
<label>
|
||
<span class="screen-reader-text">Search for:</span>
|
||
<input type="search" class="search-field" placeholder="Search …" value="" name="s" title="Search for:" />
|
||
</label>
|
||
<button type="submit" class="search-submit">
|
||
<span class="genericon genericon-search">
|
||
<span class="screen-reader-text">Search</span>
|
||
</span>
|
||
</button>
|
||
</form></aside><aside id="top-posts-2" class="widget widget_top-posts"><h1 class="widget-title">Top Posts</h1><ul><li><a href="https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/" class="bump-view" data-bump-view="tp">Do-nothing scripting: the key to gradual automation</a></li><li><a href="https://blog.danslimmon.com/2022/06/07/using-littles-law-to-scale-applications/" class="bump-view" data-bump-view="tp">Using Little's Law to scale applications</a></li><li><a href="https://blog.danslimmon.com/2019/06/24/an-incident-command-training-handbook/" class="bump-view" data-bump-view="tp">An Incident Command Training Handbook</a></li><li><a href="https://blog.danslimmon.com/2024/07/03/no-observability-without-theory-the-talk/" class="bump-view" data-bump-view="tp">No Observability Without Theory: The Talk</a></li><li><a href="https://blog.danslimmon.com/2016/03/10/start-a-paper-club/" class="bump-view" data-bump-view="tp">Start a Paper Club!</a></li></ul></aside><aside id="archives-2" class="widget widget_archive"><h1 class="widget-title">Archives</h1>
|
||
<ul>
|
||
<li><a href='https://blog.danslimmon.com/2025/06/'>June 2025</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2025/03/'>March 2025</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2025/02/'>February 2025</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2025/01/'>January 2025</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/08/'>August 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/07/'>July 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/06/'>June 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/05/'>May 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/04/'>April 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/03/'>March 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/02/'>February 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2024/01/'>January 2024</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/12/'>December 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/08/'>August 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/05/'>May 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/04/'>April 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/03/'>March 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2023/02/'>February 2023</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/12/'>December 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/11/'>November 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/10/'>October 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/07/'>July 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/06/'>June 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/05/'>May 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2022/02/'>February 2022</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2021/12/'>December 2021</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2021/03/'>March 2021</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/08/'>August 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/07/'>July 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/06/'>June 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/05/'>May 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/03/'>March 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2019/02/'>February 2019</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2017/10/'>October 2017</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2017/07/'>July 2017</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2017/06/'>June 2017</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2017/04/'>April 2017</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2016/09/'>September 2016</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2016/08/'>August 2016</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2016/06/'>June 2016</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2016/03/'>March 2016</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2015/12/'>December 2015</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2015/10/'>October 2015</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2015/07/'>July 2015</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2015/06/'>June 2015</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2014/09/'>September 2014</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2014/08/'>August 2014</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2014/07/'>July 2014</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2014/05/'>May 2014</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/10/'>October 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/09/'>September 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/06/'>June 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/05/'>May 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/04/'>April 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2013/03/'>March 2013</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2012/12/'>December 2012</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2012/11/'>November 2012</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2012/08/'>August 2012</a></li>
|
||
<li><a href='https://blog.danslimmon.com/2012/07/'>July 2012</a></li>
|
||
</ul>
|
||
|
||
</aside><aside id="categories-2" class="widget widget_categories"><h1 class="widget-title">Categories</h1>
|
||
<ul>
|
||
<li class="cat-item cat-item-756099141"><a href="https://blog.danslimmon.com/category/descriptive-engineering/">Descriptive engineering</a>
|
||
</li>
|
||
<li class="cat-item cat-item-2360537"><a href="https://blog.danslimmon.com/category/incident-response/">incident-response</a>
|
||
</li>
|
||
<li class="cat-item cat-item-360969"><a href="https://blog.danslimmon.com/category/mind-hacks/">Mind hacks</a>
|
||
</li>
|
||
<li class="cat-item cat-item-111949"><a href="https://blog.danslimmon.com/category/monitoring/">Monitoring</a>
|
||
</li>
|
||
<li class="cat-item cat-item-306573"><a href="https://blog.danslimmon.com/category/post-mortems/">Post-mortems</a>
|
||
</li>
|
||
<li class="cat-item cat-item-434917"><a href="https://blog.danslimmon.com/category/postgres/">Postgres</a>
|
||
</li>
|
||
<li class="cat-item cat-item-133044"><a href="https://blog.danslimmon.com/category/problem-solving/">Problem-Solving</a>
|
||
</li>
|
||
<li class="cat-item cat-item-943791"><a href="https://blog.danslimmon.com/category/statistics-and-probability/">Statistics and probability</a>
|
||
</li>
|
||
<li class="cat-item cat-item-1"><a href="https://blog.danslimmon.com/category/uncategorized/">Uncategorized</a>
|
||
</li>
|
||
<li class="cat-item cat-item-18187"><a href="https://blog.danslimmon.com/category/workflow/">Workflow</a>
|
||
</li>
|
||
</ul>
|
||
|
||
</aside><aside id="meta-2" class="widget widget_meta"><h1 class="widget-title">Meta</h1>
|
||
<ul>
|
||
<li><a class="click-register" href="https://wordpress.com/start?ref=wplogin">Create account</a></li> <li><a href="https://danslimmon.wordpress.com/wp-login.php">Log in</a></li>
|
||
<li><a href="https://blog.danslimmon.com/feed/">Entries feed</a></li>
|
||
<li><a href="https://blog.danslimmon.com/comments/feed/">Comments feed</a></li>
|
||
|
||
<li><a href="https://wordpress.com/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.com</a></li>
|
||
</ul>
|
||
|
||
</aside></div><!-- #secondary -->
|
||
|
||
</div><!-- #content -->
|
||
<footer id="colophon" class="site-footer" role="contentinfo">
|
||
<div class="site-info">
|
||
<a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a>
|
||
|
||
</div><!-- .site-info -->
|
||
</footer><!-- #colophon -->
|
||
</div><!-- #page -->
|
||
|
||
<!-- -->
|
||
<script type="speculationrules">
|
||
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/files/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/pub/lovecraft/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
|
||
</script>
|
||
<div class="jetpack-subscribe-modal">
|
||
<div class="jetpack-subscribe-modal__modal-content">
|
||
|
||
<div class="wp-block-group has-border-color" style="border-color:#dddddd;border-width:1px;margin-top:0;margin-bottom:0;padding-top:32px;padding-right:32px;padding-bottom:32px;padding-left:32px"><div class="wp-block-group__inner-container is-layout-constrained wp-container-core-group-is-layout-1f4dd145 wp-block-group-is-layout-constrained">
|
||
|
||
|
||
<h2 class="wp-block-heading has-text-align-center" style="margin-top:4px;margin-bottom:10px;font-size:26px;font-style:normal;font-weight:600">Discover more from Dan Slimmon</h2>
|
||
|
||
|
||
|
||
<p class="has-text-align-center wp-block-paragraph" style='margin-top:4px;margin-bottom:1em;font-size:15px'>Subscribe now to keep reading and get access to the full archive.</p>
|
||
|
||
|
||
<div class="wp-block-jetpack-subscriptions__supports-newline is-style-compact wp-block-jetpack-subscriptions">
|
||
<div class="wp-block-jetpack-subscriptions__container is-not-subscriber">
|
||
<form
|
||
action="https://wordpress.com/email-subscriptions"
|
||
method="post"
|
||
accept-charset="utf-8"
|
||
data-blog="38620006"
|
||
data-post_access_level="everybody"
|
||
data-subscriber_email=""
|
||
id="subscribe-blog"
|
||
>
|
||
<div class="wp-block-jetpack-subscriptions__form-elements">
|
||
<p id="subscribe-email">
|
||
<label
|
||
id="subscribe-field-label"
|
||
for="subscribe-field"
|
||
class="screen-reader-text"
|
||
>
|
||
Type your email… </label>
|
||
<input
|
||
required="required"
|
||
type="email"
|
||
name="email"
|
||
autocomplete="email"
|
||
|
||
style="font-size: 16px;padding: 15px 23px 15px 23px;border-radius: 50px;border-width: 1px;"
|
||
placeholder="Type your email…"
|
||
value=""
|
||
id="subscribe-field"
|
||
title="Please fill in this field."
|
||
/> </p>
|
||
<p id="subscribe-submit"
|
||
>
|
||
<input type="hidden" name="action" value="subscribe"/>
|
||
<input type="hidden" name="blog_id" value="38620006"/>
|
||
<input type="hidden" name="source" value="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/"/>
|
||
<input type="hidden" name="sub-type" value="subscribe-block"/>
|
||
<input type="hidden" name="app_source" value="subscribe-modal"/>
|
||
<input type="hidden" name="redirect_fragment" value="subscribe-blog"/>
|
||
<input type="hidden" name="lang" value="en"/>
|
||
<input type="hidden" id="_wpnonce" name="_wpnonce" value="af441365a6" /><input type="hidden" name="_wp_http_referer" value="/2015/10/19/troubleshooting-chatops-ddx/" /><input type="hidden" name="post_id" value="553"/> <button type="submit"
|
||
class="wp-block-button__link"
|
||
style="font-size: 16px;padding: 15px 23px 15px 23px;margin: 0; margin-left: 10px;border-radius: 50px;border-width: 1px;"
|
||
name="jetpack_subscriptions_widget"
|
||
>
|
||
Subscribe </button>
|
||
</p>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<p class="has-text-align-center jetpack-subscribe-modal__close wp-block-paragraph" style="margin-top:20px;margin-bottom:0;font-size:14px"><a href="#">Continue reading</a></p>
|
||
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
<script id="grofiles-cards-js" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=202637d1133547e8a1f2801609f51cef12522abe7f6647d869e9fbc974fe356a37e613"></script>
|
||
<script id="wpgroho-js-extra">
|
||
var WPGroHo = {"my_hash":""};
|
||
//# sourceURL=wpgroho-js-extra
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1610363240i'></script>
|
||
|
||
<script>
|
||
// Initialize and attach hovercards to all gravatars
|
||
( function() {
|
||
function init() {
|
||
if ( typeof Gravatar === 'undefined' ) {
|
||
return;
|
||
}
|
||
|
||
if ( typeof Gravatar.init !== 'function' ) {
|
||
return;
|
||
}
|
||
|
||
Gravatar.profile_cb = function ( hash, id ) {
|
||
WPGroHo.syncProfileData( hash, id );
|
||
};
|
||
|
||
Gravatar.my_hash = WPGroHo.my_hash;
|
||
Gravatar.init(
|
||
'body',
|
||
'#wp-admin-bar-my-account',
|
||
{
|
||
i18n: {
|
||
'Edit your profile →': 'Edit your profile →',
|
||
'View profile →': 'View profile →',
|
||
'Contact': 'Contact',
|
||
'Send money': 'Send money',
|
||
'Sorry, we are unable to load this Gravatar profile.': 'Sorry, we are unable to load this Gravatar profile.',
|
||
'Gravatar not found.': 'Gravatar not found.',
|
||
'Too Many Requests.': 'Too Many Requests.',
|
||
'Internal Server Error.': 'Internal Server Error.',
|
||
'Is this you?': 'Is this you?',
|
||
'Claim your free profile.': 'Claim your free profile.',
|
||
'Email': 'Email',
|
||
'Home Phone': 'Home Phone',
|
||
'Work Phone': 'Work Phone',
|
||
'Cell Phone': 'Cell Phone',
|
||
'Contact Form': 'Contact Form',
|
||
'Calendar': 'Calendar',
|
||
},
|
||
}
|
||
);
|
||
}
|
||
|
||
if ( document.readyState !== 'loading' ) {
|
||
init();
|
||
} else {
|
||
document.addEventListener( 'DOMContentLoaded', init );
|
||
}
|
||
} )();
|
||
</script>
|
||
|
||
<div style="display:none">
|
||
<div class="grofile-hash-map-52d6d1f510025c43edb1b9d19f40b055">
|
||
</div>
|
||
<div class="grofile-hash-map-bb447f0637cb55170ef02cbd0a6ac927">
|
||
</div>
|
||
<div class="grofile-hash-map-7cc431a23db4d19cdfe0d5f293c76843">
|
||
</div>
|
||
<div class="grofile-hash-map-3db8df5c853bd31f28340333f7f84242">
|
||
</div>
|
||
</div>
|
||
<div id="actionbar" dir="ltr" style="display: none;"
|
||
class="actnbr-pub-lovecraft actnbr-has-follow actnbr-has-actions">
|
||
<ul>
|
||
<li class="actnbr-btn actnbr-hidden">
|
||
<a class="actnbr-action actnbr-actn-comment" href="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/#comments">
|
||
<svg class="gridicon gridicons-comment" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M12 16l-5 5v-5H5c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2v9c0 1.1-.9 2-2 2h-7z"/></g></svg> <span>Comment </span>
|
||
</a>
|
||
</li>
|
||
<li class="actnbr-btn actnbr-hidden">
|
||
<a class="actnbr-action actnbr-actn-reblog" href="">
|
||
<svg class="gridicon gridicons-reblog" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M22.086 9.914L20 7.828V18c0 1.105-.895 2-2 2h-7v-2h7V7.828l-2.086 2.086L14.5 8.5 19 4l4.5 4.5-1.414 1.414zM6 16.172V6h7V4H6c-1.105 0-2 .895-2 2v10.172l-2.086-2.086L.5 15.5 5 20l4.5-4.5-1.414-1.414L6 16.172z"/></g></svg><span>Reblog</span>
|
||
</a>
|
||
</li>
|
||
<li class="actnbr-btn actnbr-hidden">
|
||
<a class="actnbr-action actnbr-actn-follow " href="">
|
||
<svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg>
|
||
<span>Subscribe</span>
|
||
</a>
|
||
<a class="actnbr-action actnbr-actn-following no-display" href="">
|
||
<svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V3H17.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H14.5V13.5H10.5V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path d="M19.5303 15.0303L15.5 19.0605L12.9697 16.5303L14.0303 15.4697L15.5 16.9395L18.4697 13.9697L19.5303 15.0303Z" fill="#008A20"></path></svg>
|
||
<span>Subscribed</span>
|
||
</a>
|
||
<div class="actnbr-popover tip tip-top-left actnbr-notice" id="follow-bubble">
|
||
<div class="tip-arrow"></div>
|
||
<div class="tip-inner actnbr-follow-bubble">
|
||
<ul>
|
||
<li class="actnbr-sitename">
|
||
<a href="https://blog.danslimmon.com">
|
||
<img loading='lazy' alt='' src='https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=50' srcset='https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=50 1x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=75 1.5x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=100 2x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=150 3x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> Dan Slimmon </a>
|
||
</li>
|
||
<div class="actnbr-message no-display"></div>
|
||
<form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" style="display: none;">
|
||
<div class="actnbr-follow-count">Join 147 other subscribers</div>
|
||
<div>
|
||
<input type="email" name="email" placeholder="Enter your email address" class="actnbr-email-field" aria-label="Enter your email address" />
|
||
</div>
|
||
<input type="hidden" name="action" value="subscribe" />
|
||
<input type="hidden" name="blog_id" value="38620006" />
|
||
<input type="hidden" name="source" value="https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/" />
|
||
<input type="hidden" name="sub-type" value="actionbar-follow" />
|
||
<input type="hidden" id="_wpnonce" name="_wpnonce" value="af441365a6" /> <div class="actnbr-button-wrap">
|
||
<button type="submit" value="Sign me up">
|
||
Sign me up </button>
|
||
</div>
|
||
</form>
|
||
<li class="actnbr-login-nudge">
|
||
<div>
|
||
Already have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.danslimmon.com%252F2015%252F10%252F19%252Ftroubleshooting-chatops-ddx%252F">Log in now.</a> </div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="actnbr-ellipsis actnbr-hidden">
|
||
<svg class="gridicon gridicons-ellipsis" height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M7 12c0 1.104-.896 2-2 2s-2-.896-2-2 .896-2 2-2 2 .896 2 2zm12-2c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2zm-7 0c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2z"/></g></svg> <div class="actnbr-popover tip tip-top-left actnbr-more">
|
||
<div class="tip-arrow"></div>
|
||
<div class="tip-inner">
|
||
<ul>
|
||
<li class="actnbr-sitename">
|
||
<a href="https://blog.danslimmon.com">
|
||
<img loading='lazy' alt='' src='https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=50' srcset='https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=50 1x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=75 1.5x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=100 2x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=150 3x, https://blog.danslimmon.com/wp-content/uploads/2024/03/cropped-d2e_pip_transparent.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> Dan Slimmon </a>
|
||
</li>
|
||
<li class="actnbr-folded-follow">
|
||
<a class="actnbr-action actnbr-actn-follow " href="">
|
||
<svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg>
|
||
<span>Subscribe</span>
|
||
</a>
|
||
<a class="actnbr-action actnbr-actn-following no-display" href="">
|
||
<svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V3H17.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H14.5V13.5H10.5V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path d="M19.5303 15.0303L15.5 19.0605L12.9697 16.5303L14.0303 15.4697L15.5 16.9395L18.4697 13.9697L19.5303 15.0303Z" fill="#008A20"></path></svg>
|
||
<span>Subscribed</span>
|
||
</a>
|
||
</li>
|
||
<li class="actnbr-signup"><a href="https://wordpress.com/start/">Sign up</a></li>
|
||
<li class="actnbr-login"><a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.danslimmon.com%252F2015%252F10%252F19%252Ftroubleshooting-chatops-ddx%252F">Log in</a></li>
|
||
<li class="actnbr-shortlink">
|
||
<a href="https://wp.me/p2C2Pk-8V">
|
||
<span class="actnbr-shortlink__text">Copy shortlink</span>
|
||
<span class="actnbr-shortlink__icon"><svg class="gridicon gridicons-checkmark" height="16" width="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M9 19.414l-6.707-6.707 1.414-1.414L9 16.586 20.293 5.293l1.414 1.414"/></g></svg></span>
|
||
</a>
|
||
</li>
|
||
<li class="flb-report">
|
||
<a href="https://wordpress.com/abuse/?report_url=https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/" target="_blank" rel="noopener noreferrer">
|
||
Report this content </a>
|
||
</li>
|
||
<li class="actnbr-reader">
|
||
<a href="https://wordpress.com/reader/blogs/38620006/posts/553">
|
||
View post in Reader </a>
|
||
</li>
|
||
<li class="actnbr-subs">
|
||
<a href="https://subscribe.wordpress.com/">Manage subscriptions</a>
|
||
</li>
|
||
<li class="actnbr-fold"><a href="">Collapse this bar</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<script>
|
||
window.addEventListener( "DOMContentLoaded", function( event ) {
|
||
var link = document.createElement( "link" );
|
||
link.href = "/wp-content/mu-plugins/actionbar/actionbar.css?v=20250116";
|
||
link.type = "text/css";
|
||
link.rel = "stylesheet";
|
||
document.head.appendChild( link );
|
||
|
||
var script = document.createElement( "script" );
|
||
script.src = "/wp-content/mu-plugins/actionbar/actionbar.js?v=20250204";
|
||
document.body.appendChild( script );
|
||
} );
|
||
</script>
|
||
|
||
<div id="jp-carousel-loading-overlay" style="display: none;">
|
||
<div id="jp-carousel-loading-wrapper">
|
||
<span id="jp-carousel-library-loading"><svg class="jetpack-spinner" width="40" height="40" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
|
||
</div>
|
||
</div>
|
||
<div class="jp-carousel-overlay" style="display: none;">
|
||
|
||
<div class="jp-carousel-container">
|
||
<!-- The Carousel Swiper -->
|
||
<div
|
||
class="jp-carousel-wrap swiper jp-carousel-swiper-container jp-carousel-transitions"
|
||
itemscope
|
||
itemtype="https://schema.org/ImageGallery">
|
||
<div class="jp-carousel swiper-wrapper"></div>
|
||
<div class="jp-swiper-button-prev swiper-button-prev">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12">
|
||
<path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#maskPrev)">
|
||
<rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
</div>
|
||
<div class="jp-swiper-button-next swiper-button-next">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12">
|
||
<path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#maskNext)">
|
||
<rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
<!-- The main close buton -->
|
||
<div class="jp-carousel-close-hint">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14">
|
||
<path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#maskClose)">
|
||
<rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
</div>
|
||
<!-- Image info, comments and meta -->
|
||
<div class="jp-carousel-info">
|
||
<div class="jp-carousel-info-footer">
|
||
<div class="jp-carousel-pagination-container">
|
||
<div class="jp-swiper-pagination swiper-pagination"></div>
|
||
<div class="jp-carousel-pagination"></div>
|
||
</div>
|
||
<div class="jp-carousel-photo-title-container">
|
||
<div class="jp-carousel-photo-caption"></div>
|
||
</div>
|
||
<div class="jp-carousel-photo-icons-container">
|
||
<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility">
|
||
<span class="jp-carousel-icon">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#maskInfo)">
|
||
<rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
</span>
|
||
</a>
|
||
<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility">
|
||
<span class="jp-carousel-icon">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#maskComments)">
|
||
<rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
|
||
<span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span>
|
||
</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="jp-carousel-info-extra">
|
||
<div class="jp-carousel-info-content-wrapper">
|
||
<div class="jp-carousel-photo-title-container">
|
||
<div class="jp-carousel-photo-title"></div>
|
||
</div>
|
||
<div class="jp-carousel-comments-wrapper">
|
||
<div id="jp-carousel-comments-loading">
|
||
<span>Loading Comments...</span>
|
||
</div>
|
||
<div class="jp-carousel-comments"></div>
|
||
<div id="jp-carousel-comment-form-container">
|
||
<span id="jp-carousel-comment-form-spinner"><svg class="jetpack-spinner" width="20" height="20" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
|
||
<div id="jp-carousel-comment-post-results"></div>
|
||
<form id="jp-carousel-comment-form">
|
||
<label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label>
|
||
<textarea
|
||
name="comment"
|
||
class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea"
|
||
id="jp-carousel-comment-form-comment-field"
|
||
placeholder="Write a Comment..."
|
||
></textarea>
|
||
<div id="jp-carousel-comment-form-submit-and-info-wrapper">
|
||
<div id="jp-carousel-comment-form-commenting-as">
|
||
<fieldset>
|
||
<label for="jp-carousel-comment-form-email-field">Email (Required)</label>
|
||
<input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" />
|
||
</fieldset>
|
||
<fieldset>
|
||
<label for="jp-carousel-comment-form-author-field">Name (Required)</label>
|
||
<input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" />
|
||
</fieldset>
|
||
<fieldset>
|
||
<label for="jp-carousel-comment-form-url-field">Website</label>
|
||
<input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" />
|
||
</fieldset>
|
||
</div>
|
||
<input
|
||
type="submit"
|
||
name="submit"
|
||
class="jp-carousel-comment-form-button"
|
||
id="jp-carousel-comment-form-button-submit"
|
||
value="Post Comment" />
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<div class="jp-carousel-image-meta">
|
||
<div class="jp-carousel-title-and-caption">
|
||
<div class="jp-carousel-photo-info">
|
||
<div class="jp-carousel-caption" itemprop="caption description"></div>
|
||
</div>
|
||
|
||
<div class="jp-carousel-photo-description"></div>
|
||
</div>
|
||
<a class="jp-carousel-image-download" href="#" aria-label="Download image" target="_blank" style="display: none;">
|
||
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18">
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/>
|
||
</mask>
|
||
<g mask="url(#mask0)">
|
||
<rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/>
|
||
</g>
|
||
</svg>
|
||
<span class="jp-carousel-download-text"></span>
|
||
</a>
|
||
<div class="jp-carousel-image-map" style="display: none;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script type="text/javascript">
|
||
window.WPCOM_sharing_counts = {"https://blog.danslimmon.com/2015/10/19/troubleshooting-chatops-ddx/":553};
|
||
</script>
|
||
|
||
<script type="text/javascript">
|
||
(function () {
|
||
var wpcom_reblog = {
|
||
source: 'toolbar',
|
||
|
||
toggle_reblog_box_flair: function (obj_id, post_id) {
|
||
|
||
// Go to site selector. This will redirect to their blog if they only have one.
|
||
const postEndpoint = `https://wordpress.com/post`;
|
||
|
||
// Ideally we would use the permalink here, but fortunately this will be replaced with the
|
||
// post permalink in the editor.
|
||
const originalURL = `${ document.location.href }?page_id=${ post_id }`;
|
||
|
||
const url =
|
||
postEndpoint +
|
||
'?url=' +
|
||
encodeURIComponent( originalURL ) +
|
||
'&is_post_share=true' +
|
||
'&v=5';
|
||
|
||
const redirect = function () {
|
||
if (
|
||
! window.open( url, '_blank' )
|
||
) {
|
||
location.href = url;
|
||
}
|
||
};
|
||
|
||
if ( /Firefox/.test( navigator.userAgent ) ) {
|
||
setTimeout( redirect, 0 );
|
||
} else {
|
||
redirect();
|
||
}
|
||
},
|
||
};
|
||
|
||
window.wpcom_reblog = wpcom_reblog;
|
||
})();
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/wp-content/mu-plugins/likes/queuehandler.js?m=1741961244i'></script>
|
||
<script id="wp-dom-ready-js" src="/wp-content/plugins/gutenberg-core/v23.9.1/build/scripts/dom-ready/index.min.js?m=1788785546i&ver=3fe927cab37bf38d6a23"></script>
|
||
<script id="subscribe-modal-js-js-extra">
|
||
var Jetpack_Subscriptions = {"modalLoadTime":"60000","modalScrollThreshold":"50","modalInterval":"86400000"};
|
||
//# sourceURL=subscribe-modal-js-js-extra
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/wp-content/mu-plugins/jetpack-plugin/moon/modules/subscriptions/subscribe-modal/subscribe-modal.js?m=1729082728i'></script>
|
||
<script id="wp-hooks-js" src="/wp-content/plugins/gutenberg-core/v23.9.1/build/scripts/hooks/index.min.js?m=1788785546i&ver=f0f188028580e8dc1255"></script>
|
||
<script id="wp-i18n-js" src="/wp-content/plugins/gutenberg-core/v23.9.1/build/scripts/i18n/index.min.js?m=1788785546i&ver=1dfe7db3940c23ea9216"></script>
|
||
<script id="wp-i18n-js-after">
|
||
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
|
||
//# sourceURL=wp-i18n-js-after
|
||
</script>
|
||
<script id="verbum-settings-js-before">
|
||
window.VerbumComments = {"Log in or provide your name and email to leave a reply.":"Log in or provide your name and email to leave a reply.","Log in or provide your name and email to leave a comment.":"Log in or provide your name and email to leave a comment.","Receive web and mobile notifications for posts on this site.":"Receive web and mobile notifications for posts on this site.","Name":"Name","Email (address never made public)":"Email (address never made public)","Website (optional)":"Website (optional)","Leave a reply. (log in optional)":"Leave a reply. (log in optional)","Leave a comment. (log in optional)":"Leave a comment. (log in optional)","Log in to leave a reply.":"Log in to leave a reply.","Log in to leave a comment.":"Log in to leave a comment.","Logged in via %s":"Logged in via %s","Log out":"Log out","Your browser is blocking the cookies needed to log in and comment here. Allow cookies in your privacy settings, then reload the page.":"Your browser is blocking the cookies needed to log in and comment here. Allow cookies in your privacy settings, then reload the page.","Email":"Email","(Address never made public)":"(Address never made public)","Instantly":"Instantly","Daily":"Daily","Reply":"Reply","Comment":"Comment","WordPress":"WordPress","Weekly":"Weekly","Notify me of new posts":"Notify me of new posts","Email me new posts":"Email me new posts","Email me new comments":"Email me new comments","Cancel":"Cancel","Write a comment...":"Write a comment...","Write a reply...":"Write a reply...","Website":"Website","Optional":"Optional","We'll keep you in the loop!":"We'll keep you in the loop!","Loading your comment...":"Loading your comment...","Discover more from":"Discover more from Dan Slimmon","Subscribe now to keep reading and get access to the full archive.":"Subscribe now to keep reading and get access to the full archive.","Continue reading":"Continue reading","Never miss a beat!":"Never miss a beat!","Interested in getting blog post updates? Simply click the button below to stay in the loop!":"Interested in getting blog post updates? Simply click the button below to stay in the loop!","Enter your email address":"Enter your email address","Subscribe":"Subscribe","Comment sent successfully":"Comment sent successfully","Save my name, email, and website in this browser for the next time I comment.":"Save my name, email, and website in this browser for the next time I comment.","hovercardi18n":{"Edit your profile \u2192":"Edit your profile \u2192","View profile \u2192":"View profile \u2192","Contact":"Contact","Send money":"Send money","Gravatar not found.":"Gravatar not found.","This profile is private.":"This profile is private.","Too Many Requests.":"Too Many Requests.","Internal Server Error.":"Internal Server Error.","Sorry, we are unable to load this Gravatar profile.":"Sorry, we are unable to load this Gravatar profile."},"siteId":38620006,"postId":553,"mustLogIn":false,"requireNameEmail":true,"commentRegistration":false,"connectURL":"https://danslimmon.wordpress.com/public.api/connect/?action=request\u0026domain=blog.danslimmon.com","logoutURL":"https://danslimmon.wordpress.com/wp-login.php?action=logout\u0026_wpnonce=b263a00deb","homeURL":"https://blog.danslimmon.com/","subscribeToBlog":true,"subscribeToComment":true,"isJetpackCommentsLoggedIn":false,"jetpackUsername":"","jetpackUserId":0,"jetpackSignature":"","jetpackAvatar":"https://0.gravatar.com/avatar/?s=96\u0026amp;d=identicon\u0026amp;r=G","enableBlocks":true,"enableSubscriptionModal":false,"currentLocale":"en","isJetpackComments":false,"allowedBlocks":["core/paragraph","core/list","core/code","core/list-item","core/quote","core/image","core/embed","core/quote","core/code"],"embedNonce":"2db44e3fcc","verbumBundleUrl":"/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-mu-wpcom/src/features/verbum-comments/dist/index.js","isRTL":false,"vbeCacheBuster":1771405207,"iframeUniqueId":0,"colorScheme":false}
|
||
//# sourceURL=verbum-settings-js-before
|
||
</script>
|
||
<script data-wp-strategy="defer" defer id="verbum-dynamic-loader-js" src="/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/assets/dynamic-loader.js?m=1772518873i&minify=false&ver=8b5296f9195db92c42e4"></script>
|
||
<script id="jetpack-carousel-js-extra">
|
||
var jetpackSwiperLibraryPath = {"url":"/wp-content/mu-plugins/jetpack-plugin/moon/_inc/blocks/swiper.js"};
|
||
var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https://blog.danslimmon.com/wp-admin/admin-ajax.php","nonce":"fd1855488a","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size \u003Cspan class=\"photo-size\"\u003E{0}\u003Cspan class=\"photo-size-times\"\u003E\u00d7\u003C/span\u003E{1}\u003C/span\u003E","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https://danslimmon.wordpress.com/wp-login.php?redirect_to=https%3A%2F%2Fblog.danslimmon.com%2F2015%2F10%2F19%2Ftroubleshooting-chatops-ddx%2F","blog_id":"38620006","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=38620006&v=wpcom&tz=0&user_id=0&subd=danslimmon","is_public":"1"};
|
||
//# sourceURL=jetpack-carousel-js-extra
|
||
</script>
|
||
<script id="jetpack-script-data-js-before">
|
||
window.JetpackScriptData = {"site":{"host":"wpcom","is_wpcom_platform":true}};
|
||
//# sourceURL=jetpack-script-data-js-before
|
||
</script>
|
||
<script id="jetpack-blocks-assets-base-url-js-before">
|
||
var Jetpack_Block_Assets_Base_Url="https://s0.wp.com/wp-content/mu-plugins/jetpack-plugin/moon/_inc/blocks/";
|
||
//# sourceURL=jetpack-blocks-assets-base-url-js-before
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/_static/??-eJyNUNtOwzAM/SHSDG1ie0F8yuQmaXHrxFHsdOzviWCtkECir+fqY3vLxnHSkNTqe4hBbK69JV6CKzConcQmWHAERU7dJE92h2Mk7oH2qmXGbAjTbAZ2VcyAH6sVk6Pqm6nJHMfYYkwJme5dxF/XxGoy1RFTkwfN4GbToFtuxgdhI3NayesSkudioSpHUEW32UAkqNi+IvkNFFcwq/GgsKP5Z+G1zXiEOShcJdCmW4F/BsGMEoOaY3f4jluBoXyJ/V8f8yhqHysblZnuA9Ja9RZfn8+Xl9PpcLycp0/8osLv'></script>
|
||
<script data-wp-strategy="defer" defer id="jetpack-block-subscriptions-js" src="/wp-content/mu-plugins/jetpack-plugin/moon/_inc/blocks/subscriptions/view.js?m=1782389597i&minify=false&ver=16.3-a.0"></script>
|
||
<script id="sharing-js-js-extra">
|
||
var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
|
||
//# sourceURL=sharing-js-js-extra
|
||
</script>
|
||
<script crossorigin='anonymous' type='text/javascript' src='/_static/??/wp-content/mu-plugins/carousel-wpcom/carousel-wpcom.js,/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/sharedaddy/sharing.min.js?m=1787950866j'></script>
|
||
<script id="sharing-js-js-after">
|
||
window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
|
||
window.WPCOM_sharing_popups[ "twitter" ] = "menubar=1,resizable=1,width=600,height=350";
|
||
window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
|
||
window.WPCOM_sharing_popups[ "facebook" ] = "menubar=1,resizable=1,width=600,height=400";
|
||
//# sourceURL=sharing-js-js-after
|
||
</script>
|
||
<script id="wp-emoji-settings" type="application/json">
|
||
{"baseUrl":"https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/","ext":".png","svgUrl":"https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/","svgExt":".svg","source":{"concatemoji":"/wp-includes/js/wp-emoji-release.min.js?m=1783090810i&ver=7.1.1-alpha-63555"}}
|
||
</script>
|
||
<script type="module">
|
||
/*! This file is auto-generated */
|
||
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
|
||
//# sourceURL=/wp-includes/js/wp-emoji-loader.min.js
|
||
</script>
|
||
<iframe src='https://widgets.wp.com/likes/master.html?ver=20260912#ver=20260912' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe>
|
||
<div id='likes-other-gravatars' role="dialog" aria-hidden="true" tabindex="-1"><div class="likes-text"><span>%d</span></div><ul class="wpl-avatars sd-like-gravatars"></ul></div>
|
||
<script src="//stats.wp.com/w.js?69" defer></script> <script type="text/javascript">
|
||
_tkq = window._tkq || [];
|
||
_stq = window._stq || [];
|
||
_tkq.push(['storeContext', {'blog_id':'38620006','blog_tz':'0','user_lang':'en','blog_lang':'en','user_id':'0'}]);
|
||
// Prevent sending pageview tracking from WP-Admin pages.
|
||
_stq.push(['view', {'blog':'38620006','v':'wpcom','tz':'0','user_id':'0','post':'553','subd':'danslimmon'}]);
|
||
_stq.push(['extra', {'crypt':'UE5tW3cvZGRkOERlal9Yd291RzZXcmdOZVVpJVVkJTNPRktUU0lrQW9PVUpPZzRnc2JZMyxrMzk3UTI5WUtUVCZqXTd+dEp6MlF3dklwWkZkY1ZqOTQ2ZlpiM0RWVmNrZTJDc10xXUE9YmtWcHF0fi1VcHRHUll3cmVQJXZaWExVZXZyckxxUmhYZkxwb3pbMVhHNHUtVGtodj1OMjQsMDZbbGFbWWx3UTNVdG5EMCs5UnA9dEZbeGMsQXx2TTFbVV1yNSYyT3xCbENQcE81Xzk2ZiwlUGlCX2F+N1pGbV93ZnN8QmN1fH55OHFGLWgzUi1QQms='}]);
|
||
_stq.push([ 'clickTrackerInit', '38620006', '553' ]);
|
||
</script>
|
||
<noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript>
|
||
<meta id="bilmur" property="bilmur:data" content="" data-provider="wordpress.com" data-service="simple" data-site-tz="UTC" data-custom-props="{"enq_wp-polyfill":"1","logged_in":"0","wptheme":"pub\/lovecraft","wptheme_is_block":"0"}" >
|
||
<script defer src="/wp-content/js/bilmur.min.js?i=17&m=202637"></script>
|
||
<script>
|
||
(function() {
|
||
'use strict';
|
||
|
||
const fetches = {};
|
||
const promises = {};
|
||
const urls = {
|
||
'verbum': '/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/verbum-comments/verbum-comments.js?m=1788898305i&minify=false&ver=3d6130a57c3104d5bc3b'
|
||
};
|
||
const loaders = {
|
||
'verbum': () => {
|
||
fetchExternalScript('verbum');
|
||
promises['verbum'] = promises['verbum'] || loadWPScript('verbum');
|
||
return promises['verbum'];
|
||
},
|
||
|
||
};
|
||
const scriptExtras = {
|
||
|
||
};
|
||
|
||
window.WP_Enqueue_Dynamic_Script = {
|
||
loadScript: (handle) => {
|
||
if (!loaders[handle]) {
|
||
console.error('WP_Enqueue_Dynamic_Script: unregistered script `' + handle + '`.');
|
||
}
|
||
return loaders[handle]();
|
||
}
|
||
};
|
||
|
||
function fetchExternalScript(handle) {
|
||
if (!urls[handle]) {
|
||
return Promise.resolve();
|
||
}
|
||
|
||
fetches[handle] = fetches[handle] || fetch(urls[handle], { mode: 'no-cors' });
|
||
return fetches[handle];
|
||
}
|
||
|
||
function runExtraScript(handle, type, index) {
|
||
const id = 'wp-enqueue-dynamic-script:' + handle + ':' + type + ':' + (index + 1);
|
||
const template = document.getElementById(id);
|
||
if (!template) {
|
||
return Promise.reject();
|
||
}
|
||
|
||
const script = document.createElement( 'script' );
|
||
script.innerHTML = template.innerHTML;
|
||
document.body.appendChild( script );
|
||
return Promise.resolve();
|
||
}
|
||
|
||
function loadExternalScript(handle) {
|
||
if (!urls[handle]) {
|
||
return Promise.resolve();
|
||
}
|
||
|
||
return fetches[handle].then(() => {
|
||
return new Promise((resolve, reject) => {
|
||
const script = document.createElement('script');
|
||
script.onload = () => resolve();
|
||
script.onerror = (e) => reject(e);
|
||
script.src = urls[handle];
|
||
document.body.appendChild(script);
|
||
});
|
||
});
|
||
}
|
||
|
||
function loadExtra(handle, pos) {
|
||
const count = (scriptExtras[handle] && scriptExtras[handle][pos]) || 0;
|
||
let promise = Promise.resolve();
|
||
|
||
for (let i = 0; i < count; i++) {
|
||
promise = promise.then(() => runExtraScript(handle, pos, i));
|
||
}
|
||
|
||
return promise;
|
||
}
|
||
|
||
function loadWPScript(handle) {
|
||
// Core loads scripts in this order. See: https://github.com/WordPress/WordPress/blob/a59eb9d39c4fcba834b70c9e8dfd64feeec10ba6/wp-includes/class-wp-scripts.php#L428.
|
||
return loadExtra(handle, 'translations')
|
||
.then(() => loadExtra(handle, 'before'))
|
||
.then(() => loadExternalScript(handle))
|
||
.then(() => loadExtra(handle, 'after'));
|
||
}
|
||
} )();
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|