Files
nexus/sreweekly/articles/335/05-stop-apologizing-for-bugs.html
2026-09-12 17:23:01 +08:00

1518 lines
145 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<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>Stop apologizing for bugs &#8211; 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=2339'
+ '&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 &raquo; Feed" href="https://blog.danslimmon.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Dan Slimmon &raquo; Comments Feed" href="https://blog.danslimmon.com/comments/feed/" />
<link rel="alternate" type="application/rss+xml" title="Dan Slimmon &raquo; Stop apologizing for&nbsp;bugs Comments Feed" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/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='/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/group/style.min.css?m=1788785546i&cssminify=yes' type='text/css' media='all' />
<style id="wp-block-quote-inline-css">
.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}
/*# sourceURL=/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/quote/style.min.css */
</style>
<link crossorigin='anonymous' rel='stylesheet' id='all-css-2-2' href='/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/heading/style.min.css?m=1788785546i&cssminify=yes' type='text/css' media='all' />
<style id="wp-block-list-inline-css">
ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em}
/*# sourceURL=/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/list/style.min.css */
</style>
<style id="wp-block-paragraph-inline-css">
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=/wp-content/plugins/gutenberg-core/v23.9.1/build/styles/block-library/paragraph/style.min.css */
</style>
<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/??-eJx9jcEOwjAMQ3+ILAyGGAfEt7RdBN2atmpaJv6eTkIDcdjFkhM/G+cIJvhMPmN05W69oAnaBTMJHpq2b1oQy9ERJHo2HQ5W8poAyS9HjRHZ4U8RF/h2Jap3jiovCabBKnLENbaFzbEyoHVMJAJV2RaG/KigbHEj5ajM9PHIISwyFEeCUrSYZGO2wa9OE9S/cv9+GbnxtT2fjvv+0l368Q3Op27e&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&#038;subset=latin%2Clatin-ext&#038;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":"2339","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&amp;ver=20211021","shortlink":"https://wp.me/p2C2Pk-BJ","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/2019/08/02/stop-apologizing-for-bugs/" />
<link rel='shortlink' href='https://wp.me/p2C2Pk-BJ' />
<link rel="alternate" type="application/json+oembed" href="https://public-api.wordpress.com/oembed/?format=json&amp;url=https%3A%2F%2Fblog.danslimmon.com%2F2019%2F08%2F02%2Fstop-apologizing-for-bugs%2F&amp;for=wpcom-auto-discovery" /><link rel="alternate" type="application/xml+oembed" href="https://public-api.wordpress.com/oembed/?format=xml&amp;url=https%3A%2F%2Fblog.danslimmon.com%2F2019%2F08%2F02%2Fstop-apologizing-for-bugs%2F&amp;for=wpcom-auto-discovery" />
<!-- Jetpack Open Graph Tags -->
<meta property="og:type" content="article" />
<meta property="og:title" content="Stop apologizing for bugs" />
<meta property="og:url" content="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/" />
<meta property="og:description" content="Look out, honey, &#8217;cause I&#8217;m using technologyAin&#8217;t got time to make no apologyThe Stooges, &#8220;Search and Destroy&#8221; For the last year or so, I&#8217;ve made a conscious eff…" />
<meta property="article:published_time" content="2019-08-02T20:02:02+00:00" />
<meta property="article:modified_time" content="2019-08-02T20:02:02+00:00" />
<meta property="og:site_name" content="Dan Slimmon" />
<meta property="og:image" content="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="401" />
<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="Stop apologizing for&nbsp;bugs" />
<meta name="twitter:image" content="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.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="Look out, honey, &#039;cause I&#039;m using technologyAin&#039;t got time to make no apologyThe Stooges, &quot;Search and Destroy&quot; For the last year or so, I&#039;ve made a conscious effort to stop apologizing for bugs in my code. Apologizing for bugs is very tempting. I used to do it a lot. When my code was involved in&hellip;" />
<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&#038;csblog=2C2Pk&#038;cscache=6&#038;csrev=4" />
<link crossorigin='anonymous' rel='stylesheet' id='all-css-0-5' href='/_static/??-eJyNzF0KwkAMBOALucYfSu2DeBSxaShpdzfBZF28fbfgAXwZZmD4oGpAyU7ZIZWgscycDRZyfeH625BE9phKJIPK00xu4KJBxVoz/0Y6otkB/ueenBHGKLg2oIyGb1Znae8PU921R7qf+/7WXa7DcFo2yWw/ow==&cssminify=yes' type='text/css' media='all' />
</head>
<body class="wp-singular post-template-default single single-post postid-2339 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/2019/08/stooges.jpg?w=600)">
<img width="600" height="401" src="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg?w=600" class="attachment-lovecraft-post-image size-lovecraft-post-image wp-post-image" alt="" decoding="async" srcset="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg 600w, https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg?w=150 150w, https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg?w=300 300w" sizes="(max-width: 600px) 100vw, 600px" data-attachment-id="2344" data-permalink="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/stooges/" data-orig-file="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg" data-orig-size="600,401" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="stooges" data-image-description="" data-image-caption="" data-large-file="https://blog.danslimmon.com/wp-content/uploads/2019/08/stooges.jpg?w=600" />
</div>
<div id="content" class="site-content">
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<article id="post-2339" class="post-2339 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized">
<div class="entry-wrapper">
<header class="entry-header">
<h1 class="entry-title">Stop apologizing for&nbsp;bugs</h1>
<div class="entry-meta">
<span class="posted-on">On <a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/" rel="bookmark"><time class="entry-date published updated" datetime="2019-08-02T20:02:02+00:00">2019/08/02</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/uncategorized/" rel="category tag">Uncategorized</a></span> </div><!-- .entry-meta -->
</header><!-- .entry-header -->
<div class="entry-content">
<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow"><p>Look out, honey, &#8217;cause I&#8217;m using technology</p><p>Ain&#8217;t got time to make no apology</p><cite>The Stooges, <a href="https://www.youtube.com/watch?v=eDHdleEX6-s">&#8220;Search and Destroy&#8221;</a></cite></blockquote>
<p class="wp-block-paragraph">For the last year or so, I&#8217;ve made a conscious effort to stop apologizing for bugs in my code.</p>
<p class="wp-block-paragraph">Apologizing for bugs is very tempting. I used to do it a lot. When my code was involved in a failure that screwed up a coworker&#8217;s day or caused a user-facing problem, I&#8217;d say &#8220;Whoops! Sorry! I should&#8217;ve thought about that.&#8221;</p>
<p class="wp-block-paragraph">The motivation for apologizing is sound: you want to do your best for the team. In principle, you <em>could have</em> prevented a problem if you&#8217;d just done something slightly different. Through this lens, apologizing for bugs may seem innocuous. But it contributes to a bunch of cultural anti-patterns:</p>
<ul class="wp-block-list"><li>It reinforces the idea that any one person or piece of code can be blamed for a given failure. Short of malice, this is never the case.</li><li>It gives the impression that, when you wrote the code, you <em>should have</em> written it better. This is a counterfactual that rarely holds up to examination.</li><li>It positions shame as the correct emotion to feel about bugs in your code: if you were a better engineer – a better teammate – the bug wouldn&#8217;t exist.</li><li>If you&#8217;re a more senior engineer on your team, the effects of these anti-patterns are magnified: people see you apologizing for bugs, so they think that <em>they</em> should be striving to write bug-free code. They may feel ashamed if their code has bugs.</li></ul>
<p class="wp-block-paragraph">Even if you don&#8217;t intellectually <em>believe</em> any of these fallacies about bugs, the act of apologizing reinforces them. Your teammates can&#8217;t know what you really believe; they can only know what you say and do.</p>
<p class="wp-block-paragraph">Everyone knows that all code has bugs. Code is written under constraints. Deadlines. Goals other than quality. Imperfect knowledge of the future. <em>Even your own skill as an engineer is a constraint</em>. If we all tried to write perfect, bugless code, we&#8217;d never accomplish anything. So how does it make sense to apologize for bugs?</p>
<p class="wp-block-paragraph">This rule I&#8217;ve made for myself forces me to distinguish between problems caused by constraints and problems caused by my own faults. If I really think I caused a problem through some discrete action (or lack of action), then that&#8217;s something I&#8217;ll apologize for. But if I wrote code that got something done, and it just so happens that it didn&#8217;t work in a given situation, then I have nothing to apologize for. There was always bound to be <em>something</em>.</p>
<p class="wp-block-paragraph">Make a resolution not to apologize for bugs. Especially if you&#8217;re in a leadership position. It&#8217;s a simple way to tweak attitudes about mistakes and failure in a positive way.</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-2339"
class="share-twitter sd-button share-icon"
href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?share=twitter"
target="_blank"
aria-labelledby="sharing-twitter-2339"
>
<span id="sharing-twitter-2339" 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-2339"
class="share-facebook sd-button share-icon"
href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?share=facebook"
target="_blank"
aria-labelledby="sharing-facebook-2339"
>
<span id="sharing-facebook-2339" 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-2339-6aa4e261732cb' data-src='//widgets.wp.com/likes/index.html?ver=20260912#blog_id=38620006&amp;post_id=2339&amp;origin=danslimmon.wordpress.com&amp;obj_id=38620006-2339-6aa4e261732cb&amp;domain=blog.danslimmon.com' data-name='like-post-frame-38620006-2339-6aa4e261732cb' 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">
</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/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/" rel="prev"><span class="meta-nav">Previous</span> <h4>Do-nothing scripting: the key to gradual&nbsp;automation</h4></a></div><div class="nav-next"><a href="https://blog.danslimmon.com/2021/03/15/managing-attention-with-stacks/" rel="next"><span class="meta-nav">Next</span> <h4>Managing attention with&nbsp;stacks</h4></a></div></div>
</nav>
<div id="comments" class="comments-area">
<div class="comments-wrapper">
<h2 class="comments-title">
20 thoughts on &ldquo;<span>Stop apologizing for&nbsp;bugs</span>&rdquo; </h2>
<ol class="comment-list">
<li id="comment-1983" class="comment even thread-even depth-1">
<article id="div-comment-1983" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Dan&#039;s avatar' src='https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=60&#038;d=identicon&#038;r=G' srcset='https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=60&#038;d=identicon&#038;r=G 1x, https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=90&#038;d=identicon&#038;r=G 1.5x, https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=120&#038;d=identicon&#038;r=G 2x, https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=180&#038;d=identicon&#038;r=G 3x, https://0.gravatar.com/avatar/c4eeeef05b2e5c28000f8d511c6af493bcdad71951daf0272b1eda174c832269?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' decoding='async' /> <b class="fn">Dan</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>Sorry to nag &#8211; just wondered if you still use Oscar? Have done a search of the blog and not found a reference to it. All best!</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-1983">
<time datetime="2020-01-08T10:12:40+00:00">
2020/01/08 at 10:12 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=1983#respond" data-commentid="1983" data-postid="2339" data-belowelement="div-comment-1983" data-respondelement="respond" data-replyto="Reply to Dan" aria-label="Reply to Dan">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-2178">
<p>Pingback: <a href="https://proxap.in/2020/04/24/stop-apologizing-for-bugs/" class="url" rel="ugc external nofollow">Stop apologizing for bugs - Proxap</a> </p>
</li><!-- #comment-## -->
<li id="comment-2179" class="comment even thread-even depth-1">
<article id="div-comment-2179" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Guest&#039;s avatar' src='https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=60&#038;d=identicon&#038;r=G' srcset='https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=60&#038;d=identicon&#038;r=G 1x, https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=90&#038;d=identicon&#038;r=G 1.5x, https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=120&#038;d=identicon&#038;r=G 2x, https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=180&#038;d=identicon&#038;r=G 3x, https://2.gravatar.com/avatar/5e949f239c08ab943bb1d095a43188bde14f70fdc4c1e3369545aedfd662bd99?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' decoding='async' /> <b class="fn">Guest</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>Excuses, excuses, excuses&#8230;</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2179">
<time datetime="2020-04-24T07:22:02+00:00">
2020/04/24 at 07:22 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2179#respond" data-commentid="2179" data-postid="2339" data-belowelement="div-comment-2179" data-respondelement="respond" data-replyto="Reply to Guest" aria-label="Reply to Guest">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-2180" class="comment odd alt thread-odd thread-alt depth-1">
<article id="div-comment-2180" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='cmdr2&#039;s avatar' src='https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=60&#038;d=identicon&#038;r=G' srcset='https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=60&#038;d=identicon&#038;r=G 1x, https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=90&#038;d=identicon&#038;r=G 1.5x, https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=120&#038;d=identicon&#038;r=G 2x, https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=180&#038;d=identicon&#038;r=G 3x, https://0.gravatar.com/avatar/f85c4f14482746c96667fd6f8339a91ad7aea9e9ae91105a05420959dec7485d?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' decoding='async' /> <b class="fn">cmdr2</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>Thanks for the different viewpoint! I&#8217;ve recently been in a position of having to respond to a failure in a very public situation at high scale. The root reason for the failure were things not really in my control. Obviously, going ahead, there are things I plan to do now, to monitor those &#8220;external&#8221; factors more closely, but they&#8217;re almost things like the weather. Despite monitoring them, they&#8217;ll do the random thing very often.</p>
<p>Anyway, I still felt it important to apologize to people for their bad experience, more as a way to empathize with them, and not for flogging myself in public. A bad user experience (depending on the product) can result in users being embarrassed at their work or family/friends, or just feeling disappointed. So I felt it important to atleast express empathy with their disappointment, regardless of whether I was to blame or not. Obviously not every product probably justifies this.</p>
<p>Before any public response, first I had to be clear with myself that I didn&#8217;t really need to feel guilty, since the root cause was really something I have almost no control over, or I&#8217;d ever considered would be a problem. So once I felt consistent internally (and it wasn&#8217;t easy), the next step was to atleast address what the aggrieved people felt, without being unfair to myself.</p>
<p>There are certainly some really entitled brats out there, and it&#8217;s hard to feel any empathy for them. But they&#8217;re probably the vocal minority. In general, as a customer, if something caused pain and problems, would I prefer the product owner respond with empathy, or with coldness?</p>
<p>I don&#8217;t think we&#8217;re really disagreeing here at all, I&#8217;m probably making a tangential point here. I&#8217;d be interested to hear your views on this, would certainly help improve my response policy going ahead 🙂</p>
<p>Thanks!</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2180">
<time datetime="2020-04-24T07:35:54+00:00">
2020/04/24 at 07:35 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2180#respond" data-commentid="2180" data-postid="2339" data-belowelement="div-comment-2180" data-respondelement="respond" data-replyto="Reply to cmdr2" aria-label="Reply to cmdr2">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li class="pingback even thread-even depth-1" id="comment-2186">
<p>Pingback: <a href="https://dmasior.com/hackernews-weekly-summary-2/" class="url" rel="ugc external nofollow">HackerNews weekly summary [2] | Damian Mąsior</a> </p>
</li><!-- #comment-## -->
<li id="comment-2190" class="comment odd alt thread-odd thread-alt depth-1 parent">
<article id="div-comment-2190" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Amit Choudhary (@amitkc00)&#039;s avatar' src='https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=60%2C60&#038;ssl=1' srcset='https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=60%2C60&#038;ssl=1 1x, https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=90%2C90&#038;ssl=1 1.5x, https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=120%2C120&#038;ssl=1 2x, https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=180%2C180&#038;ssl=1 3x, https://i0.wp.com/pbs.twimg.com/profile_images/1098799440595435523/rqaRlZxg_normal.png?resize=240%2C240&#038;ssl=1 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="http://twitter.com/amitkc00" class="url" rel="ugc external nofollow">Amit Choudhary (@amitkc00)</a></b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>I write code for living (10+ years) and I consider myself semi-introvert semi-extrovert. I try to give honest feedback on the code reviews I do and that sometimes can sound brutal. Now, if you are someone who has done a sh[*]y job of coding because you have no time to write a good working code, chances are I am spending longer to review your work. I rather spend that time doing my own work but if I am reviewing your work and you are non-apologetic about your bad code, I am going to take it as someone who does not acknowledge his/her mistake. I don’t care if you say “sorry” or not.. but I do want to hear.. “I will do better next time”. I am not here to compensate for your shortcomings. I don’t get paid for reviews. I get paid for writing my own new features.</p>
<p>And, the more humane we keep the interactions, the more natural it is, the better. I don’t want to work with robots. I rather have some fun with my colleagues.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2190">
<time datetime="2020-04-24T16:31:37+00:00">
2020/04/24 at 16:31 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2190#respond" data-commentid="2190" data-postid="2339" data-belowelement="div-comment-2190" data-respondelement="respond" data-replyto="Reply to Amit Choudhary (@amitkc00)" aria-label="Reply to Amit Choudhary (@amitkc00)">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
<ol class="children">
<li id="comment-2197" class="comment even depth-2 parent">
<article id="div-comment-2197" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Best Programmer Ever&#039;s avatar' src='https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=60&#038;d=identicon&#038;r=G' srcset='https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=60&#038;d=identicon&#038;r=G 1x, https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=90&#038;d=identicon&#038;r=G 1.5x, https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=120&#038;d=identicon&#038;r=G 2x, https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=180&#038;d=identicon&#038;r=G 3x, https://2.gravatar.com/avatar/eea97c7178d43b3c2515e2af2658c042d45bffe2a7f270b29457d1c1ade2bd29?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Best Programmer Ever</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>You’re a jerk off</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2197">
<time datetime="2020-04-25T00:42:34+00:00">
2020/04/25 at 00:42 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2197#respond" data-commentid="2197" data-postid="2339" data-belowelement="div-comment-2197" data-respondelement="respond" data-replyto="Reply to Best Programmer Ever" aria-label="Reply to Best Programmer Ever">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
<ol class="children">
<li id="comment-2225" class="comment odd alt depth-3">
<article id="div-comment-2225" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='10x teammate&#039;s avatar' src='https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=60&#038;d=identicon&#038;r=G' srcset='https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=60&#038;d=identicon&#038;r=G 1x, https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=90&#038;d=identicon&#038;r=G 1.5x, https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=120&#038;d=identicon&#038;r=G 2x, https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=180&#038;d=identicon&#038;r=G 3x, https://0.gravatar.com/avatar/362b5908b65b13e949c708105e3c15f360919b1a9d27fe07f1f1a32982fe5030?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">10x teammate</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>+1</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2225">
<time datetime="2020-05-03T15:04:34+00:00">
2020/05/03 at 15:04 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2225#respond" data-commentid="2225" data-postid="2339" data-belowelement="div-comment-2225" data-respondelement="respond" data-replyto="Reply to 10x teammate" aria-label="Reply to 10x teammate">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
</ol><!-- .children -->
</li><!-- #comment-## -->
<li id="comment-2198" class="comment even depth-2">
<article id="div-comment-2198" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Dev&#039;s avatar' src='https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=60&#038;d=identicon&#038;r=G' srcset='https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=60&#038;d=identicon&#038;r=G 1x, https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=90&#038;d=identicon&#038;r=G 1.5x, https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=120&#038;d=identicon&#038;r=G 2x, https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=180&#038;d=identicon&#038;r=G 3x, https://0.gravatar.com/avatar/3e90abcb29d4f009e67fe6705a496a43907b75ec736a21809da641b6c9350bd0?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Dev</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>But, but, code reviews ARE (or SHOULD BE) part of your job. Expecting people to be flawless feature-writing robots is just fanciful.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2198">
<time datetime="2020-04-25T00:45:15+00:00">
2020/04/25 at 00:45 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2198#respond" data-commentid="2198" data-postid="2339" data-belowelement="div-comment-2198" data-respondelement="respond" data-replyto="Reply to Dev" aria-label="Reply to Dev">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-2200" class="comment odd alt depth-2">
<article id="div-comment-2200" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='vrp&#039;s avatar' src='https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=60&#038;d=identicon&#038;r=G' srcset='https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=60&#038;d=identicon&#038;r=G 1x, https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=90&#038;d=identicon&#038;r=G 1.5x, https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=120&#038;d=identicon&#038;r=G 2x, https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=180&#038;d=identicon&#038;r=G 3x, https://1.gravatar.com/avatar/128106f41a3e52c597dcce96cc5e484b9b529215bf5566f8846c14b47f4b6e9a?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">vrp</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>Total nonsense. You can&#8217;t even read this blog and understand its intent, and you claim to be doing some great code reviews? Please read it again. You are wasting my time by forcing me to review your comment.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2200">
<time datetime="2020-04-25T07:12:49+00:00">
2020/04/25 at 07:12 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2200#respond" data-commentid="2200" data-postid="2339" data-belowelement="div-comment-2200" data-respondelement="respond" data-replyto="Reply to vrp" aria-label="Reply to vrp">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-2281" class="comment even depth-2">
<article id="div-comment-2281" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='stone&#039;s avatar' src='https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=60&#038;d=identicon&#038;r=G' srcset='https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=60&#038;d=identicon&#038;r=G 1x, https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=90&#038;d=identicon&#038;r=G 1.5x, https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=120&#038;d=identicon&#038;r=G 2x, https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=180&#038;d=identicon&#038;r=G 3x, https://0.gravatar.com/avatar/05eaeab62e0c74986d0cff79ce69dfa80811e423e5b3f549d6850f04cf6bd388?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">stone</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>@amitkcoo you just sound like a selfish bigot. well at least everyone is entitled to their opinion. You&#8217;ve writing codes for the past 10+ years, does that mean all the codes you wrote perfectly clean without blemish?<br />
the idea of code review is to have a neat optimised approach to a problem. when you have a better cleaner approach to someone else code, should the person apologise to you for it?<br />
Or wasn&#8217;t it from experience you learnt?</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2281">
<time datetime="2020-05-25T11:04:08+00:00">
2020/05/25 at 11:04 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2281#respond" data-commentid="2281" data-postid="2339" data-belowelement="div-comment-2281" data-respondelement="respond" data-replyto="Reply to stone" aria-label="Reply to stone">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
</ol><!-- .children -->
</li><!-- #comment-## -->
<li class="pingback odd alt thread-even depth-1" id="comment-2191">
<p>Pingback: <a href="https://kidi.shop/culture/%d1%8f-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b8%d0%bb-%d1%81%d0%be%d0%b7%d0%bd%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d1%83%d1%81%d0%b8%d0%bb%d0%b8%d1%8f-%d1%87%d" class="url" rel="ugc external nofollow">Я приложил сознательные усилия, чтобы перестать извиняться за ошибки в моем коде &#8212; My Blog</a> </p>
</li><!-- #comment-## -->
<li class="pingback even thread-odd thread-alt depth-1" id="comment-2195">
<p>Pingback: <a href="http://midianossa.com/index.php/2020/04/24/fiz-um-esforco-consciente-para-parar-de-me-desculpar-por-erros-no-meu-codigo/" class="url" rel="ugc external nofollow">Fiz um esforço consciente para parar de me desculpar por erros no meu código - Mídia Nossa</a> </p>
</li><!-- #comment-## -->
<li id="comment-2210" class="comment odd alt thread-even depth-1">
<article id="div-comment-2210" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Shon Fargessen&#039;s avatar' src='https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff' srcset='https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff 1x, https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff 1.5x, https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff 2x, https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff 3x, https://graph.facebook.com/v6.0/1141892579475721/picture?type=large&#038;_md5=caa0cb85695eed0eac8e698f99859bff 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Shon Fargessen</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>One wise person said if you mix regret and foolishness you get (self-)blaming as result.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2210">
<time datetime="2020-04-29T15:55:42+00:00">
2020/04/29 at 15:55 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2210#respond" data-commentid="2210" data-postid="2339" data-belowelement="div-comment-2210" data-respondelement="respond" data-replyto="Reply to Shon Fargessen" aria-label="Reply to Shon Fargessen">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-2226" class="comment byuser comment-author-viliussumskas even thread-odd thread-alt depth-1">
<article id="div-comment-2226" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Vilius&#039;s avatar' src='https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=60&#038;d=identicon&#038;r=G' srcset='https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=60&#038;d=identicon&#038;r=G 1x, https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=90&#038;d=identicon&#038;r=G 1.5x, https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=120&#038;d=identicon&#038;r=G 2x, https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=180&#038;d=identicon&#038;r=G 3x, https://1.gravatar.com/avatar/4aa569f97833acfe1de7cf31bcbb0e3a119c59c58a7b11f479c5550f894fa407?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="http://fixthisinsanity.wordpress.com" class="url" rel="ugc external nofollow">Vilius</a></b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>No, no and NO. What programmers need to understand is that bugs they leave can cause a pain or even a loss of life in real world. And I&#8217;m talking not only about NASA or other programmers. Even trivial bug in a filesystem could erase someone&#8217;s life work, or a bug in a database could leave a company out of business. A bug in a bank reporting application could get someone in trouble regarding their credit, etc. etc.<br />
It is understandable that no code is perfect and most bugs are left without malice, but in the end it is developers job to write code as perfect as possible, so it makes perfect sense to apologize if you didn&#8217;t do your job well. And if developer don&#8217;t have time to write good quality code it is his job to ask for help or to demand deadlines which can be met.<br />
BTW, the same nonsense arguments &#8220;&#8230; under constraints. Deadlines. Goals other than quality. Imperfect knowledge of the future. Even your own skill as an &#8230; is a constraint. &#8221; can be applied to any role, not just IT. So you are suggesting to get rid of apologies all together?</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2226">
<time datetime="2020-05-03T20:02:30+00:00">
2020/05/03 at 20:02 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2226#respond" data-commentid="2226" data-postid="2339" data-belowelement="div-comment-2226" data-respondelement="respond" data-replyto="Reply to Vilius" aria-label="Reply to Vilius">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-2935" class="comment odd alt thread-even depth-1 parent">
<article id="div-comment-2935" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Alex Bunardzic #BlackLivesMatter (@alexbunardzic)&#039;s avatar' src='https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=60%2C60&#038;ssl=1' srcset='https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=60%2C60&#038;ssl=1 1x, https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=90%2C90&#038;ssl=1 1.5x, https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=120%2C120&#038;ssl=1 2x, https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=180%2C180&#038;ssl=1 3x, https://i0.wp.com/pbs.twimg.com/profile_images/437752112840060928/7JA-8Qne_normal.jpeg?resize=240%2C240&#038;ssl=1 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn"><a href="http://twitter.com/alexbunardzic" class="url" rel="ugc external nofollow">Alex Bunardzic #BlackLivesMatter (@alexbunardzic)</a></b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>This is bar far the most terrible thing I read this year. Which is a loaded statement, considering that year 2020 is annus horribilis.</p>
<p>Your shameless, defeatist and apologetic advocacy for sloppy coding is absolutely unacceptable. All bugs are authored and bug authors must rise to the occasion, accept ownership and with it accept consequences of their actions.</p>
<p>Anyone writing software code has the responsibility and accountability to make sure no bugs get released to customers. Failing to do so is grounds for dismissal.</p>
<p>People who shrug and claim that bugs are inevitable and that they have no way to ensure their code is not buggy are definitely in the wrong line of work. They should immediately start looking for other career options, because the field of engineering is not for them.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-2935">
<time datetime="2020-10-31T22:46:37+00:00">
2020/10/31 at 22:46 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=2935#respond" data-commentid="2935" data-postid="2339" data-belowelement="div-comment-2935" data-respondelement="respond" data-replyto="Reply to Alex Bunardzic #BlackLivesMatter (@alexbunardzic)" aria-label="Reply to Alex Bunardzic #BlackLivesMatter (@alexbunardzic)">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
<ol class="children">
<li id="comment-3108" class="comment even depth-2">
<article id="div-comment-3108" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Ian Zimmer&#039;s avatar' src='https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=60&#038;d=identicon&#038;r=G' srcset='https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=60&#038;d=identicon&#038;r=G 1x, https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=90&#038;d=identicon&#038;r=G 1.5x, https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=120&#038;d=identicon&#038;r=G 2x, https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=180&#038;d=identicon&#038;r=G 3x, https://1.gravatar.com/avatar/d66903b7a9eb25e411e704ed093d3747176639102f46e22edae3f0b236c57a7d?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Ian Zimmer</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>If you think this blog post is advocating in favor of sloppy coding you either didn&#8217;t read it or didn&#8217;t understand the point it&#8217;s making. This article is not about coding practices. It&#8217;s based on the assumption that you will inevitably make mistakes. It advocates against apologizing when that day comes.<br />
Claiming that anyone can go through life as a programmer (or any other profession for that matter) without making a single mistakes is, of course, ridiculous.</p>
<p>Foregoing the apology does not prevent one from accepting ownership of the bug (that would require you to lie about how it originated and no one here is arguing in favor of lying to your employer) nor does it stop you from accepting the consequences.<br />
You are conflating two very different things here. A developer can still feel a strong responsibility towards his employer or customers without apologizing for bugs. Apologizing also does not prove that a developer feels responsibility towards his employer or customers. Feelings of responsibility and accountability have no bearing on this discussion at all.<br />
Apologizing has no tangible benefit, it only serves as (self-)punishment in the form of self-flagellating humiliation. Unless you value this sort of punishment, there is no reason to apologize since doing so actively delays taking responsibility (i.e. damage limitation, implementing preventive measures).</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-3108">
<time datetime="2020-11-24T11:18:44+00:00">
2020/11/24 at 11:18 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=3108#respond" data-commentid="3108" data-postid="2339" data-belowelement="div-comment-3108" data-respondelement="respond" data-replyto="Reply to Ian Zimmer" aria-label="Reply to Ian Zimmer">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li id="comment-5711" class="comment odd alt depth-2">
<article id="div-comment-5711" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Sue Spence&#039;s avatar' src='https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=60&#038;d=identicon&#038;r=G' srcset='https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=60&#038;d=identicon&#038;r=G 1x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=90&#038;d=identicon&#038;r=G 1.5x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=120&#038;d=identicon&#038;r=G 2x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=180&#038;d=identicon&#038;r=G 3x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Sue Spence</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>This is just trolling. If I ever have to work with you, prepare yourself.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-5711">
<time datetime="2022-08-22T09:59:12+00:00">
2022/08/22 at 09:59 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=5711#respond" data-commentid="5711" data-postid="2339" data-belowelement="div-comment-5711" data-respondelement="respond" data-replyto="Reply to Sue Spence" aria-label="Reply to Sue Spence">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
</ol><!-- .children -->
</li><!-- #comment-## -->
<li id="comment-5710" class="comment even thread-odd thread-alt depth-1">
<article id="div-comment-5710" class="comment-body">
<footer class="comment-meta">
<div class="comment-author vcard">
<img referrerpolicy="no-referrer" alt='Sue Spence&#039;s avatar' src='https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=60&#038;d=identicon&#038;r=G' srcset='https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=60&#038;d=identicon&#038;r=G 1x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=90&#038;d=identicon&#038;r=G 1.5x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=120&#038;d=identicon&#038;r=G 2x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=180&#038;d=identicon&#038;r=G 3x, https://1.gravatar.com/avatar/a55e71322276ae318dff7b516df37144e243da1903509641865b2a04846cf949?s=240&#038;d=identicon&#038;r=G 4x' class='avatar avatar-60' height='60' width='60' loading='lazy' decoding='async' /> <b class="fn">Sue Spence</b> </div><!-- .comment-author -->
</footer><!-- .comment-meta -->
<div class="comment-content">
<p>I don&#8217;t completely agree. I think it is fine and well-mannered to make a simple, non-grovelling apology for the effects of an error. This is no different to apologising for accidentally bumping into someone in the street. It reinforces being kind to one another. An apology can mean &#8220;sorry, we will learn from this&#8221;, not only &#8220;sorry, I&#8217;m an idiot and everything has to be perfect&#8221;. Apologies have the tangible benefit of making other people feel better.</p>
</div><!-- .comment-content -->
<div class="comment-metadata">
<a href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/#comment-5710">
<time datetime="2022-08-22T09:57:42+00:00">
2022/08/22 at 09:57 </time>
</a>
<span class="reply"><a rel="nofollow" class="comment-reply-link" href="https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/?replytocom=5710#respond" data-commentid="5710" data-postid="2339" data-belowelement="div-comment-5710" data-respondelement="respond" data-replyto="Reply to Sue Spence" aria-label="Reply to Sue Spence">Reply</a></span> </div><!-- .comment-metadata -->
</article><!-- .comment-body -->
</li><!-- #comment-## -->
<li class="pingback odd alt thread-even depth-1" id="comment-7061">
<p>Pingback: <a href="http://theloveofblogging.com/how-to-handle-technical-issues-and-bugs-in-blogging/" class="url" rel="ugc external nofollow">How to Handle Technical Issues and Bugs in Blogging?</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="/2019/08/02/stop-apologizing-for-bugs/#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='2339' 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="974f149bbb" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="88"/><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&#039;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/2019/08/02/stop-apologizing-for-bugs/"/>
<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="/2019/08/02/stop-apologizing-for-bugs/" /><input type="hidden" name="post_id" value="2339"/> <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-baf0721dc473a7dcd40c8c6f27a72383">
</div>
<div class="grofile-hash-map-abb249055208c7af4d35568e422dfd63">
</div>
<div class="grofile-hash-map-408514faa7dbb8ac8d67182689d13317">
</div>
<div class="grofile-hash-map-03df705dd503b505890319601fd63b45">
</div>
<div class="grofile-hash-map-a59b0e12874a5c2bb144b4845016c0e6">
</div>
<div class="grofile-hash-map-8531a4d952eb80ea09d30a6c93c798a5">
</div>
<div class="grofile-hash-map-1a7e9f1fb7f497f8d58c5f46f69237f5">
</div>
<div class="grofile-hash-map-be37c522522e693eb1d6098007d70f93">
</div>
<div class="grofile-hash-map-afc9be5634e7e88313e9d12b2d44b66d">
</div>
<div class="grofile-hash-map-986f418b6e4a842b1c703b384cdebcfa">
</div>
<div class="grofile-hash-map-c29c67e5ab1d4498f7a2a9b4f40c0b38">
</div>
<div class="grofile-hash-map-af1f4195ff5cf395c14772fd216fec54">
</div>
<div class="grofile-hash-map-9c76774c71e22e0cf76c3c954829e52c">
</div>
<div class="grofile-hash-map-4deacc5b274eda8dcf0ced6a90083562">
</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/2019/08/02/stop-apologizing-for-bugs/#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/2019/08/02/stop-apologizing-for-bugs/" />
<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%252F2019%252F08%252F02%252Fstop-apologizing-for-bugs%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%252F2019%252F08%252F02%252Fstop-apologizing-for-bugs%252F">Log in</a></li>
<li class="actnbr-shortlink">
<a href="https://wp.me/p2C2Pk-BJ">
<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/2019/08/02/stop-apologizing-for-bugs/" target="_blank" rel="noopener noreferrer">
Report this content </a>
</li>
<li class="actnbr-reader">
<a href="https://wordpress.com/reader/blogs/38620006/posts/2339">
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>
<script type="text/javascript">
window.WPCOM_sharing_counts = {"https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs/":2339};
</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&#038;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&#038;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&#038;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":2339,"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&#038;minify=false&#038;ver=8b5296f9195db92c42e4"></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/??-eJyNj8FuwzAMQ39ojjq0WHsZ9imFYjuZEtkyIjld/37GkOayYeiV5JNIuBXnJVvMBvYZU1QotQeWNfoFB4NJIeNKIxpJ7iZ9gSeIkaVHfjatMxXHlGc3iK/qBvp6oJQ919CgFvOSUjvjllj43iX61SZVV7iOlFs8WkE/uybdSgM3A5JIfpjXNeYgC2A1SWhGfsdQNZpCX4nDLqpfqJgLaPjPZ5xJUzR37A5wbfV3YVh+wuGvaYHUYKvTrCJ8H4h5G/mR3l/Pl7fT6XC8nKdvUpCh4w=='></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&#038;minify=false&#038;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='/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/sharedaddy/sharing.min.js?m=1787950866i'></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':'2339','subd':'danslimmon'}]);
_stq.push(['extra', {'crypt':'UE5tW3cvZGRkOERlal9Yd291RzZXcmdOZVVpJVVkJTNPRktUU0lrQW9PVUpPZzRnc2JsLnZITS0taTNaV3FRWjFXay0zZHF3L04tVHFhL098VzlKK1s9LER8OC9TczVySjhVVC9iUWtMVSxET2Q1NnZHZWpYWGFBLFdjPVNtUmZSWW14dywmWD15PXJGK2J+P198PUZtXTA0OTNLa1sleDh+Jlk4dDEwN0FJZ1lRaC9TS1AwUDU4NDVbPT9zVkkwMTlrT05bRVVtWGJqZVluUm1yPTI2bnMtcVlyLS1waVVMJVFHaUpZQzBJPWRaWCt5LU9VQXo='}]);
_stq.push([ 'clickTrackerInit', '38620006', '2339' ]);
</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="{&quot;enq_wp-polyfill&quot;:&quot;1&quot;,&quot;logged_in&quot;:&quot;0&quot;,&quot;wptheme&quot;:&quot;pub\/lovecraft&quot;,&quot;wptheme_is_block&quot;:&quot;0&quot;}" >
<script defer src="/wp-content/js/bilmur.min.js?i=17&amp;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>