CINXE.COM
my $log; | Indeed, there are many other ways to make the world a better place; but Free Software is the one I like the most.
<!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="en"> <![endif]--> <!--[if IE 8]> <html class="ie ie8" lang="en"> <![endif]--> <!--[if !(IE 7) & !(IE 8)]><!--> <html lang="en"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <title>my $log; | Indeed, there are many other ways to make the world a better place; but Free Software is the one I like the most.</title> <link rel="profile" href="https://gmpg.org/xfn/11" /> <link rel="pingback" href="https://log.alexm.org/xmlrpc.php"> <!--[if lt IE 9]> <script src="https://s2.wp.com/wp-content/themes/pub/twentytwelve/js/html5.js?ver=3.7.0" type="text/javascript"></script> <![endif]--> <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=505' + '&is_singular='; 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=aHR0cHM6Ly9sb2cuYWxleG0ub3Jn" + "&wpcomid=6513608" + "&time=1739990207"; document.body.appendChild( iframe ); }, false ); </script> <link rel='dns-prefetch' href='//s2.wp.com' /> <link rel='dns-prefetch' href='//s1.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//fonts-api.wp.com' /> <link href='https://fonts.gstatic.com' crossorigin rel='preconnect' /> <link rel="alternate" type="application/rss+xml" title="my $log; » Feed" href="https://log.alexm.org/feed/" /> <link rel="alternate" type="application/rss+xml" title="my $log; » Comments Feed" href="https://log.alexm.org/comments/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> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"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":"https:\/\/s2.wp.com\/wp-includes\/js\/wp-emoji-release.min.js?m=1719498190i&ver=6.7.2-RC1-59780"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-1' href='https://s0.wp.com/_static/??-eJxtjFsKgCAQAC+UbYLgV3SWMIutdZVWiW7fC//6GRgYBo6kXOTsOUMoKlFZkAUINy+w+pxGt6nXWifSwH9ew88hxPhgKnRPkGdkzF6J2yNR9fP5DaHXVlvTmc6a9QKkFDPB&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; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='https://s0.wp.com/_static/??-eJyljkEOwiAQRS8knWKNdmM8C9AJUimQmaGG21vdmLhq4vLn5b18eBblchJMAiVWHxKDr9u0SH4jhLAe+67vNNga4gQ2ZvdQMVgy1IClRewc8wH+C8kdlz2hj8UwoxTz1k3LVZSnMO3+8pMgIyF5/uq35aovwzieznrQ8wtw12pJ&cssminify=yes' type='text/css' media='all' /> <style id='wp-block-library-inline-css'> .has-text-align-justify { text-align:justify; } .has-text-align-justify{text-align:justify;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-4-1' href='https://s2.wp.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpoZmFkYGRuZGmQBAHPvL0Y=&cssminify=yes' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-6-1' href='https://s2.wp.com/wp-content/plugins/coblocks/2.18.1-simple-rev.4/dist/coblocks-style.css?m=1681832297i&cssminify=yes' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-8-1' href='https://s1.wp.com/_static/??/wp-content/mu-plugins/core-compat/wp-mediaelement.css,/wp-content/mu-plugins/wpcom-bbpress-premium-themes.css?m=1432920480j&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: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--blue: #21759b;--wp--preset--color--dark-gray: #444;--wp--preset--color--medium-gray: #9f9f9f;--wp--preset--color--light-gray: #e6e6e6;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--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 rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.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;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} </style> <link rel='stylesheet' id='twentytwelve-fonts-css' href='https://fonts-api.wp.com/css?family=Open+Sans%3A400italic%2C700italic%2C400%2C700&subset=latin%2Clatin-ext&display=fallback' media='all' /> <link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='https://s2.wp.com/_static/??-eJzTLy/QTc7PK0nNK9EvyUjNTS3WLyhN0i8pBwpUAsmcslT94pLKnFS95OJiHX0iVAPV6Sfl5CdnF4O02OfaGpqZWhoYmhuYmmUBAC/rKK8=&cssminify=yes' type='text/css' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' id='twentytwelve-ie-css' href='https://s2.wp.com/wp-content/themes/pub/twentytwelve/css/ie.css?m=1423935238i&ver=20150214' media='all' /> <![endif]--> <link crossorigin='anonymous' rel='stylesheet' id='all-css-14-1' href='https://s0.wp.com/wp-content/themes/pub/twentytwelve/style-wpcom.css?m=1509660268i&cssminify=yes' type='text/css' media='all' /> <style id='akismet-widget-style-inline-css'> .a-stats { --akismet-color-mid-green: #357b49; --akismet-color-white: #fff; --akismet-color-light-grey: #f6f7f7; max-width: 350px; width: auto; } .a-stats * { all: unset; box-sizing: border-box; } .a-stats strong { font-weight: 600; } .a-stats a.a-stats__link, .a-stats a.a-stats__link:visited, .a-stats a.a-stats__link:active { background: var(--akismet-color-mid-green); border: none; box-shadow: none; border-radius: 8px; color: var(--akismet-color-white); cursor: pointer; display: block; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; font-weight: 500; padding: 12px; text-align: center; text-decoration: none; transition: all 0.2s ease; } /* Extra specificity to deal with TwentyTwentyOne focus style */ .widget .a-stats a.a-stats__link:focus { background: var(--akismet-color-mid-green); color: var(--akismet-color-white); text-decoration: none; } .a-stats a.a-stats__link:hover { filter: brightness(110%); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); } .a-stats .count { color: var(--akismet-color-white); display: block; font-size: 1.5em; line-height: 1.4; padding: 0 13px; white-space: nowrap; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='https://s0.wp.com/_static/??-eJx9jMEKwjAQRH/IuASp1IP4LTFuY+pmNySbFv/eFDwoiJfHvIEZWLPxwoqskJrJ1ELkCgWvJKHHAL5+6r7rDn6PAooh8U6j8JeYiVws/6Yzanb+8XZIIhtujbBC5ClyVDTVFyECvWPqta7949lJC27Xl3S2x3GwBzuehvkF3G5RDw==&cssminify=yes' type='text/css' media='all' /> <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;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='https://s2.wp.com/_static/??-eJyNjcEKwjAQRH/IuA1aehI/ReImJKmb3eAmFP9eW3oRL16GeTC8gaUaFG6BG5RuKvWYWWEOrTp87AxFZA3fKShocs/gnfevrWaOR1Q9wP+mW2YEFcyODEkU/YIfW0uhfH7TGSLJ3dE6uJaLneww2mkYT/MbUOlJHA==&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" id="wpcom-actionbar-placeholder-js-extra"> /* <![CDATA[ */ var actionbardata = {"siteID":"6513608","postID":"0","siteURL":"https:\/\/log.alexm.org","xhrURL":"https:\/\/log.alexm.org\/wp-admin\/admin-ajax.php","nonce":"dfa9eb9e0d","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https:\/\/s0.wp.com\/wp-content\/js\/wpcom-proxy-request.js?ver=20211021","i18n":{"followedText":"New posts from this site will now appear in your <a href=\"https:\/\/wordpress.com\/reader\">Reader<\/a>","foldBar":"Collapse this bar","unfoldBar":"Expand this bar","shortLinkCopied":"Shortlink copied to clipboard."}}; /* ]]> */ </script> <script type="text/javascript" id="jetpack-mu-wpcom-settings-js-before"> /* <![CDATA[ */ 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\/"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/_static/??-eJzTLy/QTc7PK0nNK9HPKtYvyinRLSjKr6jUyyrW0QfKZeYl55SmpBaDJLMKS1OLKqGUXm5mHkFFurmZ6UWJJalQxfa5tobmRgamxgZmFpZZACbyLJI='></script> <script type="text/javascript" id="rlt-proxy-js-after"> /* <![CDATA[ */ rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} ); /* ]]> */ </script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://alexmuntada.wordpress.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress.com" /> <link rel='shortlink' href='https://wp.me/rkuc' /> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="website" /> <meta property="og:title" content="my $log;" /> <meta property="og:description" content="Indeed, there are many other ways to make the world a better place; but Free Software is the one I like the most." /> <meta property="og:url" content="https://log.alexm.org/" /> <meta property="og:site_name" content="my $log;" /> <meta property="og:image" content="https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=200" /> <meta property="og:image:width" content="200" /> <meta property="og:image:height" content="200" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:creator" content="@alexmuntada" /> <!-- End Jetpack Open Graph Tags --> <link rel='openid.server' href='https://log.alexm.org/?openidserver=1' /> <link rel='openid.delegate' href='https://log.alexm.org/' /> <link rel="search" type="application/opensearchdescription+xml" href="https://log.alexm.org/osd.xml" title="my $log;" /> <link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" /> <meta name="description" content="Indeed, there are many other ways to make the world a better place; but Free Software is the one I like the most." /> <link rel="icon" href="https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=32" sizes="32x32" /> <link rel="icon" href="https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=180" /> <meta name="msapplication-TileImage" content="https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=270" /> </head> <body class="home blog wp-embed-responsive customizer-styles-applied custom-font-enabled single-author jetpack-reblog-enabled"> <div id="page" class="hfeed site"> <header id="masthead" class="site-header"> <hgroup> <h1 class="site-title"><a href="https://log.alexm.org/" title="my $log;" rel="home">my $log;</a></h1> <h2 class="site-description">Indeed, there are many other ways to make the world a better place; but Free Software is the one I like the most.</h2> </hgroup> <nav id="site-navigation" class="main-navigation"> <button class="menu-toggle">Menu</button> <a class="assistive-text" href="#content" title="Skip to content">Skip to content</a> <div class="nav-menu"><ul> <li class="current_page_item"><a href="https://log.alexm.org/">Home</a></li><li class="page_item page-item-2"><a href="https://log.alexm.org/about/">Autor</a></li> </ul></div> </nav><!-- #site-navigation --> </header><!-- #masthead --> <div id="main" class="wrapper"> <div id="primary" class="site-content"> <div id="content" role="main"> <article id="post-505" class="post-505 post type-post status-publish format-standard has-post-thumbnail hentry category-english category-sysadmin tag-automation tag-monitoring tag-munin tag-nagios"> <header class="entry-header"> <img width="624" height="254" src="https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=624" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=624 624w, https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=1248 1248w, https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=150 150w, https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=300 300w, https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=768 768w, https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=1024 1024w" sizes="(max-width: 624px) 100vw, 624px" data-attachment-id="510" data-permalink="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/28160766932_e17a3815de_o/" data-orig-file="https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg" data-orig-size="4288,1747" data-comments-opened="1" data-image-meta="{"aperture":"13","credit":"","camera":"NIKON D90","caption":"","created_timestamp":"1468320292","copyright":"","focal_length":"35","iso":"200","shutter_speed":"0.00625","title":"","orientation":"1"}" data-image-title="DSC_5027" data-image-description="" data-image-caption="" data-medium-file="https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=300" data-large-file="https://log.alexm.org/wp-content/uploads/2017/12/28160766932_e17a3815de_o-e1512147112494.jpg?w=625" /> <h1 class="entry-title"> <a href="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/" rel="bookmark">Paving the road from CRITICAL to OK</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Imagine you have an issue on your mail server. It’s an intricate issue, one of those whose origin may be difficult to track because it lies on the lowest levels of the system: mail server runs on a legacy operating system inside a virtual machine on top a modern host that attaches disk images from a clustered storage system, connected into a fast network and receiving user requests via load balanced tunnels, etc.</p> <p>There are so many parts running this setup that figuring out what happened could be a lot of effort, so the first thing that comes to your mind are the metrics collected by <a href="http://munin-monitoring.org/">Munin</a> (aha! let’s find some correlation of events in those graphs). So, you open the Munin web pages and you discover that it’s been 3 days since graphs were last updated. You think that maybe the state files were updated and you just need to rebuild the graphs… Bad luck, again.</p> <p>How could this happen and nobody noticed? You think that we need to add some <a href="https://www.nagios.org/">Nagios</a> checks for the Munin lock files, so you get a warning or critical alert if it’s been too long since last update, right? Then you discover that the check is already there and it’s been moaning <strong>every single one of those 3 days</strong> that Munin wasn’t being updated. Well, it happens that Munin is not a core service, it’s only useful once in a while, though it can be very frustrating not having it when you actually need it. Thus, nobody payed attention to that alert because nobody needed Munin at that time and there were other alerts more pressing. So, what will happen next time?</p> <p>Okay, you promise that next time you’ll pay more attention to those critical alerts and see that Munin needs an intervention. Are you happy with that? I’m not. I believe that errors caused by humans raise defects on the underlying system being operated. Also, I believe that repetitive work is a bad approach to solve any issue. <strong>Automation makes IT better</strong>.</p> <p>In this particular case, Munin fails to remove its locks sometimes for whatever reason (it may well be that there’s something caused by our configuration, but it’s not worth the trouble to debug it because it only happens a few times a year). When it happens though, Nagios checks send alerts and <strong>the person on call</strong> should connect to the Munin server and just remove the locks. That’s just it, <strong>remove the locks</strong>. Therefore, I added an event handler to those Nagios checks that will remove the lock next time is gets too old. The critical alert will be triggered anyway and that’s good because it’s a critical event that should be recorded, but the system will take care of that immediately and <strong>very soon it will be OK</strong> again.</p> <p>Now I’m wondering how many of our critical alerts could be automated like this. I’m sure that not all of them will be that easy to automate, but what if most of them are? Well, I won’t start adding random event handlers everywhere. I’ll wait for the next issue that raises an automation opportunity because I’m a huge fan of small steps. I hope you’ll do the same.</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/" data-text="Paving the road from CRITICAL to OK" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Paving%20the%20road%20from%20CRITICAL%20to%20OK&body=https%3A%2F%2Flog.alexm.org%2F2017%2F12%2F01%2Fpaving-the-road-from-critical-to-ok%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="f6ad8630f0" data-email-share-track-url="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/?share=email"><span>Email</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-6513608-505-67b624bf9360a' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=505&origin=alexmuntada.wordpress.com&obj_id=6513608-505-67b624bf9360a&domain=log.alexm.org' data-name='like-post-frame-6513608-505-67b624bf9360a' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/english/" rel="category tag">english</a>, <a href="https://log.alexm.org/category/sysadmin/" rel="category tag">sysadmin</a> and tagged <a href="https://log.alexm.org/tag/automation/" rel="tag">automation</a>, <a href="https://log.alexm.org/tag/monitoring/" rel="tag">monitoring</a>, <a href="https://log.alexm.org/tag/munin/" rel="tag">munin</a>, <a href="https://log.alexm.org/tag/nagios/" rel="tag">nagios</a> on <a href="https://log.alexm.org/2017/12/01/paving-the-road-from-critical-to-ok/" title="18:13" rel="bookmark"><time class="entry-date" datetime="2017-12-01T18:13:46+01:00">1 December 2017</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-498" class="post-498 post type-post status-publish format-standard hentry category-catala category-upc tag-leadership"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2017/11/19/lideratge-i-prepotencia/" rel="bookmark">Lideratge i prepotència</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>A la <a href="http://www.upc.edu/">Universitat Politècnica de Catalunya</a> fa temps que estem en procés de canvis: el dèficit acumulat i l’envelliment de la plantilla plantegen reptes difícils per a tothom i els canvis en els ens públics costen molt de temps i esforç. Però aquests canvis són alhora oportunitats i, des de fa uns mesos, em plantejo quin vull que sigui el meu paper en tot plegat.</p> <p>Tot va començar amb la reorganització d’una part de la plantilla que, en el cas que em pertoca, implicarà deixar de formar part en breu del <a href="http://www.ac.upc.edu/">Departament d’Arquitectura de Computadors</a> i passar a formar part d’una Unitat Transversal de Gestió que donarà servei a aquest mateix departament i d’altres unitats de l’àmbit TIC al Campus Nord de la UPC. Amb aquesta reorganització de la plantilla, juntament amb altres que s’han fet als Serveis Generals i a d’altres campus de la universitat, s’han produït trasllats de companys del TIC que obren la possibilitat a canvis que feia anys que no es produïen per falta de pressupost per a la plantilla.</p> <p>En aquest escenari m’estic plantejant des de fa mesos si m’interessaria presentar-me a una plaça de responsable. D’una banda, en una posició com aquesta tindria més llibertat per experimentar sobre models de lideratge i gestió d’equips, un tema que fa temps que m’interessa. Per altra banda, em preocupa haver de renunciar a la part tècnica de la meva feina, que m’engresca tant i em permet ser creatiu alhora que ajudo a millorar els serveis que donem a la universitat. Tot i que estic carregat de dubtes, no em preocupa excessivament sentir-me capaç de fer de responsable perquè porto una pila d’anys liderant iniciatives en diferents comunitats. Tampoc em preocupa massa perdre pistonada en matèria TIC perquè segueixo molt implicat en algunes comunitats de programari lliure. Em preocupa trobar-me fent una feina que no em faci feliç. I és que durant aquests 20 anys al departament, la feina que faig té molt de pes en la meva felicitat i realització personal i professional.</p> <p>Alguns companys de feina m’animen a presentar-me a les places de responsable i els agreixo la confiança. Em diuen que sóc un líder i que em veuen fent aquesta feina, però jo em pregunto si ser un bon líder em fa automàticament un bon responsable. M’agrada pensar que sóc un líder transformador, que inspira amb l’exemple i que s’arremanga amb la resta de l’equip per tirar endavant els reptes, però em preocupa caure en la micro-gestió i no saber delegar prou. De fet, hom pot ser un líder transformador sense ser un gestor. Potser el responsable està a mig camí entre els dos.</p> <p>Per si no tenia prou dubtes, recentment alguns companys m’han explicat algunes experiències passades en què hom havia percebut que jo tenia una actitud prepotent envers algú sobre un tema que domino. Sempre que algú em comenta alguna cosa així, recordo l’ocasió en què un amic que venia de visita al departament em va dir «<em>tio, com et passes amb la becària, no?</em>». Ho recordo perfectament: encara avui veig la Cristina asseguda a la seva cadira amb la mirada cap a terra després de fer-li un comentari cínic perquè no sabia una cosa que jo havia après pel meu compte fora de la universitat. Quina vergonya cada cop que ho recordo. Penso que ara procuro ser més empàtic, tenir un discurs menys violent, entendre que cadascú té una experiència diferent i que he après una mica a tractar millor les persones. Tot i així, segur que no sempre me’n surto i per aquest motiu us demano perdó. Si mai us he dit o us dic res que us fa mal, digueu-m’ho sense por i tornaré a recordar la Cristina.</p> <p>En el fons estic carregat de dubtes i inseguretat com tothom. Sóc una mica vanitós perquè busco el reconeixement dels altres per les coses de les que em sento orgullós. Així, em trobareu fardant perquè als meus 44 anys em fan volar pels aires quan faig aikido o perquè practico iaido amb una espasa japonesa sense tall. De la mateixa manera, parlo amb molta seguretat dels temes tècnics que domino, de les experiències que he tingut o del meu treball en comunitats. Al mateix temps, medito i reflexiono sobre les meves virtuts i els meus defectes, per tant si em doneu <em>feedback</em> sobre les meves interaccions amb vosaltres us estaré enormement agraït perquè m’ajudareu a ser millor líder i persona.</p> <p>Moltes gràcies i perdoneu-me si us he ferit en algun moment ♥</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2017/11/19/lideratge-i-prepotencia/" data-text="Lideratge i prepotència" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2017/11/19/lideratge-i-prepotencia/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Lideratge%20i%20prepot%C3%A8ncia&body=https%3A%2F%2Flog.alexm.org%2F2017%2F11%2F19%2Flideratge-i-prepotencia%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="0cf2bec408" data-email-share-track-url="https://log.alexm.org/2017/11/19/lideratge-i-prepotencia/?share=email"><span>Email</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-6513608-498-67b624bf9470c' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=498&origin=alexmuntada.wordpress.com&obj_id=6513608-498-67b624bf9470c&domain=log.alexm.org' data-name='like-post-frame-6513608-498-67b624bf9470c' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/catala/" rel="category tag">català</a>, <a href="https://log.alexm.org/category/upc/" rel="category tag">upc</a> and tagged <a href="https://log.alexm.org/tag/leadership/" rel="tag">leadership</a> on <a href="https://log.alexm.org/2017/11/19/lideratge-i-prepotencia/" title="15:06" rel="bookmark"><time class="entry-date" datetime="2017-11-19T15:06:49+01:00">19 November 2017</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-487" class="post-487 post type-post status-publish format-standard hentry category-debian category-english tag-activities tag-debian tag-free-software tag-report"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2017/10/13/my-free-software-ativities-in-jul-sep-2017/" rel="bookmark">My Free Software Activities in Jul-Sep 2017</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>If you read <a href="http://planet.debian.org/">Planet Debian</a> often, you’ve probably noticed a trend of Free Software activity reports at the beginning of the month. First, those reports seemed a bit unamusing and lengthy, but since I take the time to read them I’ve learnt a lot of things, and now I’m amazed at the amount of work that people are doing for Free Software. Indeed, I knew already that many people are doing lots of work. But reading those reports gives you an actual view of how much it is.</p> <p>Then, I decided that I should do the same and write some kind of report since I became a <a href="https://bits.debian.org/2017/07/new-developers-2017-06.html">Debian Developer</a> in July. I think it’s a nice way to share your work with others and maybe inspire them as it happened to me. So I asked some of the people that have been inspiring me how do they do it. I mean, I was curious to know how they keep track of the work they do and how long it takes to write their reports. It seems that it takes quite some time, it’s mostly manual work and usually starts by the end of the month, reviewing their contributions in mailing lists, bug trackers, e-mail folders, etc.</p> <p>Here I am now, writing my first report about my Free Software activities since July and until September 2017. I hope you like it:</p> <ul> <li>Filed <a href="https://bugs.debian.org/867068">bug #867068</a> in <strong>nm.debian.org</strong>: <em>Cannot claim account after former SSO alioth cert expired</em>.</li> <li>Replied a request in private mail for becoming the maintainer for the Monero Wallet, that I declined suggesting to file an <a href="https://wiki.debian.org/RFP">RFP</a>.</li> <li>Attended <a href="https://wiki.debconf.org/wiki/DebConf17">DebConf17</a> DebCamp but I missed most of Open Day and the rest of the Debian conference in Montreal.</li> <li>Rebuilt <strong>libdbd-oracle-perl</strong> after being <a href="https://tracker.debian.org/news/858803">removed from testing</a> to enable the transition to <strong>perl</strong> 5.26.</li> <li>Filed <a href="https://bugs.debian.org/870872">bug #870872</a> in <strong>tracker.debian.org</strong>: <em>Server Error (500) when using a new SSO cert</em>.</li> <li>Filed <a href="https://bugs.debian.org/870876">bug #870876</a> in <strong>tracker.debian.org</strong>: <em>make subscription easier to upstreams with many packages</em>.</li> <li>Filed <a href="https://bugs.debian.org/871767">bug #871767</a> in <strong>lintian</strong>: <em>[checks/cruft] use substr instead of substring in example</em>.</li> <li>Filed <a href="https://bugs.debian.org/871769">bug #871769</a> in <strong>reportbug</strong>: <em>man page mentions -a instead of -A</em>.</li> <li>Suggested to remove <strong>libmail-sender-perl</strong> in <a href="https://bugs.debian.org/790727">bug #790727</a>, since it’s been deprecated upstream.</li> <li>Mentioned <code>-n</code> option for <code>dpt-takeover</code> in <a href="http://pkg-perl.alioth.debian.org/howto/adopt.html">how to adopt</a> pkg-perl manual.</li> <li>Fixed a broken link to <a href="https://kmuto.jp/debian/hcl/">HCL</a> in <a href="https://wiki.debian.org/Hardware">https://wiki.debian.org/Hardware</a>.</li> <li>Adopted <strong>libapache-admin-config-perl</strong> into pkg-perl team, <a href="https://tracker.debian.org/news/871791">upgraded</a> to 0.95-1 and closed <a href="https://bugs.debian.org/615457">bug #615457</a>.</li> <li>Fixed <a href="https://bugs.debian.org/875835">bug #875835</a> in <strong>libflickr-api-perl</strong>: <em>don’t add quote marks in SYNOPSIS</em>.</li> <li>Removed 50 inactive accounts from <a href="https://alioth.debian.org/projects/pkg-perl">pkg-perl team in alioth</a> as part of our <a href="https://lists.debian.org/debian-perl/2017/09/msg00028.html">annual membership ping</a>.</li> </ul> <p>Happy hacking!</p> <p> </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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2017/10/13/my-free-software-ativities-in-jul-sep-2017/" data-text="My Free Software Activities in Jul-Sep 2017" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2017/10/13/my-free-software-ativities-in-jul-sep-2017/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20My%20Free%20Software%20Activities%20in%20Jul-Sep%202017&body=https%3A%2F%2Flog.alexm.org%2F2017%2F10%2F13%2Fmy-free-software-ativities-in-jul-sep-2017%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="66d6dd5414" data-email-share-track-url="https://log.alexm.org/2017/10/13/my-free-software-ativities-in-jul-sep-2017/?share=email"><span>Email</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-6513608-487-67b624bf959b8' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=487&origin=alexmuntada.wordpress.com&obj_id=6513608-487-67b624bf959b8&domain=log.alexm.org' data-name='like-post-frame-6513608-487-67b624bf959b8' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/debian/" rel="category tag">debian</a>, <a href="https://log.alexm.org/category/english/" rel="category tag">english</a> and tagged <a href="https://log.alexm.org/tag/activities/" rel="tag">activities</a>, <a href="https://log.alexm.org/tag/debian/" rel="tag">debian</a>, <a href="https://log.alexm.org/tag/free-software/" rel="tag">free software</a>, <a href="https://log.alexm.org/tag/report/" rel="tag">report</a> on <a href="https://log.alexm.org/2017/10/13/my-free-software-ativities-in-jul-sep-2017/" title="19:47" rel="bookmark"><time class="entry-date" datetime="2017-10-13T19:47:36+01:00">13 October 2017</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-359" class="post-359 post type-post status-publish format-standard has-post-thumbnail hentry category-english category-esdeveniments category-fosdem tag-docs tag-foreman tag-kubernetes tag-puppet"> <header class="entry-header"> <img width="624" height="241" src="https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=624" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=624 624w, https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=1246 1246w, https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=150 150w, https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=300 300w, https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=768 768w, https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=1024 1024w" sizes="(max-width: 624px) 100vw, 624px" data-attachment-id="367" data-permalink="https://log.alexm.org/2017/03/03/notes-from-fosdem/33187365386_dec86172b2_k/" data-orig-file="https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg" data-orig-size="2048,792" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="33187365386_dec86172b2_k" data-image-description="" data-image-caption="" data-medium-file="https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=300" data-large-file="https://log.alexm.org/wp-content/uploads/2017/03/33187365386_dec86172b2_k-e1488562514569.jpg?w=625" /> <h1 class="entry-title"> <a href="https://log.alexm.org/2017/03/03/notes-from-fosdem/" rel="bookmark">Notes from FOSDEM</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Going to FOSDEM has always been a mix of feelings: is that time of year when you meet many friends from the Free Software community, you learn some interesting things that you didn’t know about, you share some knowledge, and you may have a fair amount of chocolate and beer in a usually cold weather.</p> <p>Sometimes talks are not what they seem, and oftentimes you can’t get into a room because it’s full. But there’s always the chance to learn something new, so here’s my list of notes:</p> <ul> <li><a href="http://play.etcd.io/">Play etcd</a> if you want to try it and see what happens when you make changes.</li> <li>Minikube: mini Kubernetes for developing on your laptop.</li> <li><a href="https://www.softwareheritage.org/2017/02/04/archive-api/">Software Heritage</a> API is publicly available.</li> <li>OpsTheater offers a stack for IaaS with Puppet, Foreman, GitLab, Icinga, ELK+Graphana, Mattermost (integrates easily with GitLab).</li> <li>Recommendation: move things from Hiera to Foreman smart parameters. Debugging Hiera can be a nightmare if you have hundreds of YAML files.</li> <li>octocatalog-diff compares two Puppet catalogs without deploying the changes. Facts are not live and changes in providers won’t show. A Foreman plugin is available too as a proof of concept.</li> <li><a href="https://github.com/tushartushar/Puppeteer">Puppeteer</a> helps find configuration smells that violate recommended best practices.</li> <li>Legacy docs are big, comprehensive, and feature based. Modular docs are lean, concise, targeted, and user-story based. Content rot makes docs hard to find and navigate. Document only what users need, as user stories.</li> <li>Perl6 grammars make it easy to implement informal DSLs. Reading recommendation: <a href="https://martinfowler.com/books/dsl.html">Domain Specific Languages</a>, by Martin Fowler (2010).</li> </ul> <p>Happy hacking!</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2017/03/03/notes-from-fosdem/" data-text="Notes from FOSDEM" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2017/03/03/notes-from-fosdem/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Notes%20from%20FOSDEM&body=https%3A%2F%2Flog.alexm.org%2F2017%2F03%2F03%2Fnotes-from-fosdem%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="b1d5a53c77" data-email-share-track-url="https://log.alexm.org/2017/03/03/notes-from-fosdem/?share=email"><span>Email</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-6513608-359-67b624bf96d3b' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=359&origin=alexmuntada.wordpress.com&obj_id=6513608-359-67b624bf96d3b&domain=log.alexm.org' data-name='like-post-frame-6513608-359-67b624bf96d3b' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/english/" rel="category tag">english</a>, <a href="https://log.alexm.org/category/esdeveniments/" rel="category tag">esdeveniments</a>, <a href="https://log.alexm.org/category/fosdem/" rel="category tag">fosdem</a> and tagged <a href="https://log.alexm.org/tag/docs/" rel="tag">docs</a>, <a href="https://log.alexm.org/tag/foreman/" rel="tag">foreman</a>, <a href="https://log.alexm.org/tag/kubernetes/" rel="tag">kubernetes</a>, <a href="https://log.alexm.org/tag/puppet/" rel="tag">puppet</a> on <a href="https://log.alexm.org/2017/03/03/notes-from-fosdem/" title="18:40" rel="bookmark"><time class="entry-date" datetime="2017-03-03T18:40:00+01:00">3 March 2017</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-357" class="post-357 post type-post status-publish format-standard has-post-thumbnail hentry category-cfgmgmt category-english tag-foreman tag-human tag-puppet"> <header class="entry-header"> <img width="624" height="264" src="https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=624" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=624 624w, https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=1248 1248w, https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=150 150w, https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=300 300w, https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=768 768w, https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=1024 1024w" sizes="(max-width: 624px) 100vw, 624px" data-attachment-id="404" data-permalink="https://log.alexm.org/2017/02/06/config-management-camp/33229049395_a95f3d3a55_k/" data-orig-file="https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg" data-orig-size="2048,865" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="33229049395_a95f3d3a55_k" data-image-description="" data-image-caption="" data-medium-file="https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=300" data-large-file="https://log.alexm.org/wp-content/uploads/2017/02/33229049395_a95f3d3a55_k-e1488564859513.jpg?w=625" /> <h1 class="entry-title"> <a href="https://log.alexm.org/2017/02/06/config-management-camp/" rel="bookmark">Config Management Camp</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>This was my first time at the <a href="http://cfgmgmtcamp.eu/">Config Management Camp</a> in Gent and I had a great time and you’ll see from my notes below that it was definitely worth it.</p> <h2>Day 1</h2> <ul> <li>Recommendation: use find-nodes from PuppetDB with i parallel SSH (<strong>pssh</strong>).</li> <li>Services resiliance depends on human resiliance (HumanOps).</li> <li><a href="https://github.com/example42/puppet-tp">tiny puppet</a> installs applications on any OS (<a href="https://www.slideshare.net/Alvagante/tp-install-anything">slides</a>): <ul> <li>e.g. <strong>tp install puppetdb</strong></li> <li><a href="https://github.com/example42/tinydata">tinydata</a> is the default source for application data.</li> </ul> </li> <li><a href="https://github.com/voxpupuli">Vox Pupuli</a> maintain abandoned puppet modules.</li> <li>Reading recommendation: <em>Thinking in Systems: A Primer</em>, by <a href="https://en.wikipedia.org/wiki/Donella_Meadows">Donella Meadows</a>.</li> <li>Puppet extensions: <ul> <li>Ruby functions can take lambda arguments.</li> <li><a href="https://forge.puppet.com/dalen/puppetdbquery">dalen-puppetdbquery</a> query_resources function to find other nodes resources.</li> <li>Puppet faces allows new <strong>puppet</strong> subcommands (<a href="https://forge.puppet.com/dalen/puppetls">dalen-puppetls</a>).</li> </ul> </li> <li>Foreman unknown gems (<a href="https://twitter.com/ohadlevy/status/828624796720230401">slides</a>): <ul> <li>Foreman hooks plugin.</li> <li>Trends show changes over time.</li> <li>Bookmark searches. Puppet can ask the search API for information with <a href="https://github.com/theforeman/puppet-foreman">puppet-foreman</a> module.</li> <li>Class import has rules to hide things in the UI.</li> <li><strong>hammer ssh -c ‘uptime’ -s ‘architecture=…’</strong></li> <li><strong>foreman-rake hosts:scan_out_of_sync</strong></li> <li>There are several Foreman UI themes.</li> <li>API docs are available in your Foreman instance as <a href="http://foreman/apidoc" rel="nofollow">http://foreman/apidoc</a></li> </ul> </li> <li>Types and providers: <ul> <li><strong>require “wirble”</strong> in ~/.irbrc</li> <li>Pro tip: use Puppet types and providers for managing web APIs.</li> </ul> </li> </ul> <h2>Day 2</h2> <ul> <li>Inspiring story by Annie Hedgpeth, <em>My Journey Into Technology Through Inspec</em> (<a href="https://www.youtube.com/watch?v=Vg9ViDHKWJc">video</a>).</li> <li>Getting data to the end user: <ul> <li><a href="http://www.darpa.mil/program/memex">Memex</a> maps the Dark Web.</li> <li>NASA <em>beards</em> like GitHub, <em>sysadmins</em> don’t.</li> <li><strong>juju</strong> allows users choose their applications, configure and scale them.</li> </ul> </li> <li>Someone mentioned that <a href="https://github.com/puppetlabs/libral">libral</a> (a native Resource Abstraction Layer) seemed interesting.</li> <li>Quality automation with <a href="https://github.com/Normation/rudder-tools/tree/master/scripts/rudder-dev">rudder-dev</a> (<a href="http://www.slideshare.net/normation/automate-quality-just-like-you-automate-servers">slides</a>)</li> <li><strong>undef</strong>: refactoring old puppet code (<a href="http://www.slideshare.net/petems/compliance-and-auditing-with-puppet">slides</a>) <ul> <li>Puppet 3.x is EOL.</li> <li>Hiera overload, bloated YAML. Clean it up!</li> <li>Lack of validation/CI: <ul> <li>Syntax error should not be deployable.</li> <li>Fix style with <strong>puppet-lint -f</strong></li> <li><a href="http://rspec-puppet.com/">rspec-puppet</a> to test special cases.</li> <li><a href="https://github.com/puppetlabs/beaker">Beaker</a> or <a href="http://kitchen.ci/">Test Kitchen</a> for acceptance tests.</li> </ul> </li> <li>VCS top notch: <ul> <li>Make it easy as possible to avoid mistakes.</li> <li>Put full context in the commit message.</li> <li>Use the body to explain what and why, not how.</li> <li>Commit often, perfect later, publish once.</li> <li><a href="http://www.philandstuff.com/2014/02/09/git-pickaxe.html">The git pickaxe</a> shows you how to find any text in the commits.</li> <li><a href="https://gitmagic.io/">GitMagic</a> helps setting contribution guidelines.</li> </ul> </li> <li>Make newbie experience better: <ul> <li>Start with <a href="https://github.com/puppetlabs/control-repo">control-repo</a>.</li> <li>Pick supported forge modules, then pick approved ones.</li> <li><strong>puppet module skeleton</strong></li> <li>Write as little as possible.</li> </ul> </li> </ul> </li> </ul> <p>Hope you find the notes useful. Let me know if you have any questions.</p> <p> </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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2017/02/06/config-management-camp/" data-text="Config Management Camp" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2017/02/06/config-management-camp/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Config%20Management%20Camp&body=https%3A%2F%2Flog.alexm.org%2F2017%2F02%2F06%2Fconfig-management-camp%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="8a0e1b6a48" data-email-share-track-url="https://log.alexm.org/2017/02/06/config-management-camp/?share=email"><span>Email</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-6513608-357-67b624bf98660' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=357&origin=alexmuntada.wordpress.com&obj_id=6513608-357-67b624bf98660&domain=log.alexm.org' data-name='like-post-frame-6513608-357-67b624bf98660' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/cfgmgmt/" rel="category tag">config management</a>, <a href="https://log.alexm.org/category/english/" rel="category tag">english</a> and tagged <a href="https://log.alexm.org/tag/foreman/" rel="tag">foreman</a>, <a href="https://log.alexm.org/tag/human/" rel="tag">human</a>, <a href="https://log.alexm.org/tag/puppet/" rel="tag">puppet</a> on <a href="https://log.alexm.org/2017/02/06/config-management-camp/" title="23:17" rel="bookmark"><time class="entry-date" datetime="2017-02-06T23:17:01+01:00">6 February 2017</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-290" class="post-290 post type-post status-publish format-standard hentry category-catala category-testing tag-legacy tag-refactoring"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2016/07/02/reunio-de-juny-de-barcelona-pm/" rel="bookmark">Reunió de juny de Barcelona.pm</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Per la reunió del passat mes de juny dels <a href="http://barcelona.pm/" target="_blank">Perl Mongers de Barcelona</a> fam fer un experiment al que vam anomenar <a href="http://www.meetup.com/barcelonapm/events/230392058/" target="_blank">Testing Open Space</a>, una mena de desconferència en què l’eix central seria el concepte dels tests i els temes dels que es parlarien es decidirien a la mateixa reunió. Comparteixo aquí el resum de la reunió que he <a href="http://mail.pm.org/pipermail/barcelona-pm/2016-July/005114.html" target="_blank">enviat</a> a la llista perquè crec que també podria ser interessant per a gent de fora de la comunitat dels <em>mongers</em>.</p> <p>Després de les presentacions corresponents (teníem cares noves) vam explicar diferents casos amb què ens trobem que cal introduir tests, sobretot d’integració, en sistemes <em>legacy</em>. Vam posar com a exemples els següents:</p> <ul> <li>Introduir tests en un sistema no modularitzat per a fer les altes d’usuaris als serveis del meu <a href="https://www.ac.upc.edu/" target="_blank">departament</a>. És un codi que originalment es va fer per resoldre un problema concret i que ha anat creixent de forma descontrolada (un <em>script</em> per cada servei) i sense tests.</li> <li>Introduir tests en una eina per automatitzar els <a href="https://en.wikipedia.org/wiki/Distributed_version_control#Pull_requests" target="_blank"><em>pull requests</em></a> als <a href="https://en.wikipedia.org/wiki/Upstream_(software_development)" target="_blank"><em>upstreams</em></a> dels mòduls de Perl que <a href="https://wiki.debian.org/Teams/DebianPerlGroup" target="_blank">empaquetem a Debian</a>. Ja tenim una forma d’enviar les diferències dels canvis que hem de fer per generar els paquets a Debian, però per als <em>upstreams</em> que tenen els repositoris a GitHub volem crear directament els <em>pull requests</em>.</li> <li>Com fer tests d’integració en un sistema que utilitza serveis d’Amazon Web Services (AWS) sense replicar tot l’entorn de producció.</li> </ul> <p>En aquest punt vam fer una petita explicació de les diferències entre els tests funcionals o unitaris i els d’integració. També vam parlar de <a href="https://en.wikipedia.org/wiki/Mock_object" target="_blank"><em>mocking</em></a> i de com evitar-lo tenint diferents entorns per a producció i test.</p> <p>Tot seguit, vam comentar com amb <a href="https://en.wikipedia.org/wiki/Code_refactoring" target="_blank">refactoritzacions</a> petites que vagin afegint una capa d’abstracció als serveis d’AWS es podrien fer els tests més fàcilment: aquest <em>middleware</em> primer cridaria exactament als serveis d’AWS (assegurant així que no s’introdueix cap canvi de disseny que afecti al funcionament) i que després gradualment es podria anar evolucionant fins que permeti fer tests sense tocar els serveis d’AWS. Vam comparar-ho amb el patró <a href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">Model-View-Controller</a> i amb altres <em>middlewares</em> com <a href="http://www.dbix-class.org/about.html" target="_blank">DBIC</a>.</p> <p>Després vam fer una mica de teràpia de grup parlant dels motius pels quals no es fan els tests i la qualitat del codi no és la que hom desitjaria. Vam parlar del <a href="https://en.wikipedia.org/wiki/Project_management_triangle" target="_blank">triangle de ferro</a> (recursos, abast, temps i qualitat) i de la versió <em>pick two</em>.</p> <p>Finalment, ja quan estàvem a la porta a punt de marxar va sorgir el tema del <a href="https://en.wikipedia.org/wiki/Behavior-driven_development" target="_blank"><em>Behaviour-Driven Development</em></a> i vam comentar molt ràpidament què fa i quina diferències té respecte al <a href="https://en.wikipedia.org/wiki/Test-driven_development" target="_blank"><em>Test-Driven Development</em></a>: el primer està orientat a negoci i el segon a desenvolupament.</p> <p>Us recomano aquest parell de llibres:</p> <ul> <li><a href="http://shop.oreilly.com/product/9780596100926.do" target="_blank"><em>Perl Testing: A Developer’s Notebook</em></a> (antic però vàlid)</li> <li><a href="http://refactoring.com/" target="_blank"><em>Refactoring</em></a> (1ed: Java, 2ed: Ruby)</li> </ul> <p>També podeu trobar interessant aquest vídeo sobre <a href="https://www.youtube.com/watch?v=mqjvkL2h3_I" target="_blank"><em>La economia del refactoring</em></a> d’en Xavi Gost a la <a href="http://cas2014.agile-spain.org/" target="_blank">CAS2014</a> (no estic d’acord amb tot el que diu però el trobo igualment interessant).</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2016/07/02/reunio-de-juny-de-barcelona-pm/" data-text="Reunió de juny de Barcelona.pm" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2016/07/02/reunio-de-juny-de-barcelona-pm/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Reuni%C3%B3%20de%20juny%20de%20Barcelona.pm&body=https%3A%2F%2Flog.alexm.org%2F2016%2F07%2F02%2Freunio-de-juny-de-barcelona-pm%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="f8f171d241" data-email-share-track-url="https://log.alexm.org/2016/07/02/reunio-de-juny-de-barcelona-pm/?share=email"><span>Email</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-6513608-290-67b624bf99875' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=290&origin=alexmuntada.wordpress.com&obj_id=6513608-290-67b624bf99875&domain=log.alexm.org' data-name='like-post-frame-6513608-290-67b624bf99875' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/catala/" rel="category tag">català</a>, <a href="https://log.alexm.org/category/testing/" rel="category tag">testing</a> and tagged <a href="https://log.alexm.org/tag/legacy/" rel="tag">legacy</a>, <a href="https://log.alexm.org/tag/refactoring/" rel="tag">refactoring</a> on <a href="https://log.alexm.org/2016/07/02/reunio-de-juny-de-barcelona-pm/" title="17:49" rel="bookmark"><time class="entry-date" datetime="2016-07-02T17:49:22+01:00">2 July 2016</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-218" class="post-218 post type-post status-publish format-standard hentry category-debian category-english category-upc tag-dkms tag-infiniband tag-iwarp tag-kernel tag-tic tag-upc"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2014/06/18/packaging-softiwarp-kernel-module-for-debian/" rel="bookmark">Packaging SoftiWARP kernel module for Debian</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>One of the HPC clusters we have <a title="Computer Architecture Department at UPC BarcelonaTech" href="http://www.ac.upc.edu/">at work</a> has a mixed set of nodes: a few of them have <a title="InfiniBand in Wikipedia" href="https://en.wikipedia.org/wiki/Infiniband">InfiniBand</a> interfaces and the others don’t. A few weeks ago we were requested to install the <a title="SoftiWARP Project on Gitorious" href="https://gitorious.org/softiwarp">SoftiWARP</a> kernel module on those nodes that lack the InfiniBand interface. We had already tried to build the module from source and it worked well, but now the challenge was to install it as a Debian package with <a title="Dynamic Kernel Module Support in Wikipedia" href="https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">DKMS</a>, so it would be built for all installed kernel versions on each node.</p> <p>We use <a title="Puppet Open Source in PuppetLabs" href="http://puppetlabs.com/puppet/puppet-open-source">Puppet</a> to manage cluster node configuration, so you may wonder why not using Puppet instead. Well, for one we’re talking about installing the source of a kernel module, with no configuration at all. But there’s also the fact that Puppet delegates to package providers the management of software, which know much better how to deal with software upgrades. Lastly, there’s the challenge of learning something new: though I had previous knowlegde of DKMS, I had no idea on how to make a Debian package out of it.</p> <p>Fortunately, I found <a title="About Evgeni Golov" href="http://www.die-welt.net/about/">Evgeny Golov</a>‘s <a title="Evgeni's private DKMS playground" href="https://wiki.debian.org/EvgeniGolov/DKMS">DKMS playground</a> on Debian wiki. With those tips and my recently updated experience on packaging Perl modules for Debian, I was confident enough to try my first DKMS Debian package. Actually, it came out quite easy: I just had to adapt <code>debian/rules</code> a bit to accommodate modern <strong>debhelper</strong> best practices:</p> <pre><code>#!/usr/bin/make -f pdkms:=siw-dkms sname:=siw sversion:=$(shell dpkg-parsechangelog|grep "^Version:"|cut -d" " -f2|rev|cut -d- -f2-|rev|cut -d':' -f2) %: dh $@ override_dh_auto_install: dh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion) cp -a *.txt Makefile *.c *.h debian/$(pdkms)/usr/src/$(sname)-$(sversion) sed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf </code></pre> <p>Funny enough, I spend more time filling the details on <code>debian/copyright</code> and <code>debian/control</code> files than actually setting up DKMS, so big kudos to Evgeni!</p> <p>Take a look at the full <a title="Add debian packaging to softiwarp/kernel" href="https://gitorious.org/softiwarp/alexms-kernel/commit/8c15e4870e5ce531b84ebda3f1c8893189a97513">debian packaging</a> for further details. You may notice that this package has a dependency on <strong>libsiw-dev</strong> (SoftiWARP userland library), which I had to package first and was a bit trickier. More on that next time.</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2014/06/18/packaging-softiwarp-kernel-module-for-debian/" data-text="Packaging SoftiWARP kernel module for Debian" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2014/06/18/packaging-softiwarp-kernel-module-for-debian/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Packaging%20SoftiWARP%20kernel%20module%20for%20Debian&body=https%3A%2F%2Flog.alexm.org%2F2014%2F06%2F18%2Fpackaging-softiwarp-kernel-module-for-debian%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="2065215f2c" data-email-share-track-url="https://log.alexm.org/2014/06/18/packaging-softiwarp-kernel-module-for-debian/?share=email"><span>Email</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-6513608-218-67b624bf9a7fa' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=218&origin=alexmuntada.wordpress.com&obj_id=6513608-218-67b624bf9a7fa&domain=log.alexm.org' data-name='like-post-frame-6513608-218-67b624bf9a7fa' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/debian/" rel="category tag">debian</a>, <a href="https://log.alexm.org/category/english/" rel="category tag">english</a>, <a href="https://log.alexm.org/category/upc/" rel="category tag">upc</a> and tagged <a href="https://log.alexm.org/tag/dkms/" rel="tag">dkms</a>, <a href="https://log.alexm.org/tag/infiniband/" rel="tag">infiniband</a>, <a href="https://log.alexm.org/tag/iwarp/" rel="tag">iwarp</a>, <a href="https://log.alexm.org/tag/kernel/" rel="tag">kernel</a>, <a href="https://log.alexm.org/tag/tic/" rel="tag">tic</a>, <a href="https://log.alexm.org/tag/upc/" rel="tag">upc</a> on <a href="https://log.alexm.org/2014/06/18/packaging-softiwarp-kernel-module-for-debian/" title="22:36" rel="bookmark"><time class="entry-date" datetime="2014-06-18T22:36:05+01:00">18 June 2014</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-139" class="post-139 post type-post status-publish format-standard hentry category-catala tag-tic tag-upc"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2014/05/29/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc/" rel="bookmark">Col·laboració en els projectes TIC de la UPC</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Avui el personal TIC de la UPC estàvem convidats a participar en un seminari sobre eines col·laboratives durant el qual ens han fet una enquesta amb diverses preguntes per copsar fins a quin punt fem difusió de la nostra tasca tant a dins com a fora de la universitat.</p> <p>A la pregunta s’havia de repondre la periodicitat amb què difonem la nostra tasca a la nostra unitat, a d’altres unitats de la UPC i a fora de la UPC. Quan hem analitzat les respostes de l’enquesta, aquesta pregunta ha generat un petit debat sobre si s’havia acabat d’entendre bé i què s’entenia per difusió. Sense entrar en detalls, el resultat de l’enquesta mostrava que fem difusió a les nostres unitats força sovint, una mica menys a la resta d’unitats i molta menys a fora de la UPC. El debat s’ha centrat en aquesta darrera observació: <strong>la majoria de les persones diuen que gairebé mai fan difusió de les seves tasques a fora de la UPC</strong>. Doncs bé, jo he estat una d’aquestes persones.</p> <p>Fa temps que vaig encetar aquest blog amb la intenció de compartir les meves experiències sobretot a la feina. Però escriure demana temps i constància i ràpidament ho vaig abandonar. De fet, gairebé feia un any que no escrivia res. La pregunta que em faig és per què passa això? A banda del temps per escriure, quins altres factors fan que compartir el que faig a la UPC sigui difícil o faci mandra? Potser és la frustració d’haver intentat col·laborar molts cops sense gaire èxit.</p> <p>La UPC és molt gran, fins al punt que hi treballem uns quants centenars de TIC. Molts ens coneixem perquè hem treballat junts, perquè hem estat companys d’estudis, perquè hem coincidit en els cursos de formació, perquè hem lluitat plegats per defensar els nostres drets a la UPC, etc. Per tot això, els TIC de la UPC estem força units per un sentiment de pertinença que ens defineix com un grup amb un gran potencial dins de la comunitat UPC. Però curiosament aquest sentiment no es tradueix en projectes de col·laboració entre les diferents unitats on estem treballant. Fins i tot la comunicació entre nosaltres és pobra en el sentit que <strong>no sabem què fan els nostres companys d’altres unitats</strong>, tret que hàgim coincidit en alguna banda i els ho preguntem directament.</p> <p>Aleshores què és el que cal perquè es produeixi aquesta col·laboració entre nosaltres? Jo tinc la sensació que <strong>molts dels TIC tenim ganes de col·laborar</strong> perquè hem vist en altres comunitats que és bo a llarg termini per a tothom. Avui durant el seminari ens han presentat algunes eines que poden engrescar-nos una mica, però en el fons el problema no són les eines. Per dur a terme projectes cal destinar-hi recursos. Això vol dir que, en el context actual d’escassetat, aquests recursos no es podran destinar a altres coses i per tant cal establir prioritats. Aquesta feina és responsabilitat de les persones que dirigeixen els equips i les unitats de la universitat perquè són els que coneixen què aporta més valor a la docència i la recerca. Què falla doncs?</p> <p>Des del meu humil punt de vista, tot i que la comunitat UPC està formada diversos col·lectius de persones, no compartim la mateixa visió del que és la universitat. Fins a un cert punt, suposo que és comprensible tenint en compte que els col·lectius són realment diversos (en tipologia i mida): els estudiants, el personal docent i investigador i el personal d’administració i serveis. Però aquest problema de visió no compartida fins i tot passa dins dels mateixos col·lectius i aquí és on comencem a ensopegar amb els impediments. Com es resol això?</p> <p>La solució és molt simple de dir però difícil de dur a terme: <strong>cal incentivar i facilitar la col·laboració a tots els nivells dins la UPC</strong>. El que no hauria de passar és que hi hagi gent amb l’empenta i l’esperit de fer projectes que aportin valor a la universitat, col·laborant amb els companys d’altres unitats i que la manca d’una visió compartida freni aquesta iniciativa. Perquè la gent col·labori només cal que en tinguin ganes i els ho posin fàcil. Un altre dia en seguiré parlant.</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2014/05/29/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc/" data-text="Col·laboració en els projectes TIC de la UPC" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2014/05/29/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Col%C2%B7laboraci%C3%B3%20en%20els%20projectes%20TIC%20de%20la%20UPC&body=https%3A%2F%2Flog.alexm.org%2F2014%2F05%2F29%2Fcol%25c2%25b7laboracio-en-els-projectes-tic-de-la-upc%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="ad0eadb59c" data-email-share-track-url="https://log.alexm.org/2014/05/29/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc/?share=email"><span>Email</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-6513608-139-67b624bf9b850' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=139&origin=alexmuntada.wordpress.com&obj_id=6513608-139-67b624bf9b850&domain=log.alexm.org' data-name='like-post-frame-6513608-139-67b624bf9b850' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/catala/" rel="category tag">català</a> and tagged <a href="https://log.alexm.org/tag/tic/" rel="tag">tic</a>, <a href="https://log.alexm.org/tag/upc/" rel="tag">upc</a> on <a href="https://log.alexm.org/2014/05/29/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc/" title="18:30" rel="bookmark"><time class="entry-date" datetime="2014-05-29T18:30:31+01:00">29 May 2014</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-120" class="post-120 post type-post status-publish format-standard hentry category-catala category-upc tag-barcelonatech tag-cloud tag-cpl tag-mail tag-upc"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2013/06/11/el-futur-del-correu-a-la-upc/" rel="bookmark">El futur del correu a la UPC</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>A la <a title="UPC BarcelonaTech" href="http://www.upc.edu/">UPC</a> ja fa uns anys que s’està estudiant la migració del servei de correu electrònic al núvol. Arran d’un <a title="fil sobre el «Servei de correu UPC al núvol»" href="http://llistes.cpl.upc.edu/pipermail/cpl-assemblea/2013-June/000257.html">fil sobre el tema</a> a la llista de l’assemblea de la <a title="Càtedra de Programari Lliure de la UPC" href="http://www.cpl.upc.edu/">Càtedra de Programari Lliure</a>, he fet <a title="la meva reflexió sobre el futur del correu a la UPC" href="http://llistes.cpl.upc.edu/pipermail/cpl-assemblea/2013-June/000261.html">una reflexió</a> sobre el tema que també vull compartir des del blog. Us recomano que llegiu tot el fil i especialment el <a title="Comentaris a l'externalització del correu UPC, per Sebastià Vila" href="http://www.cpl.upc.edu/biblioteca/comentaris-a-lexternalitzacio-del-correu-upc">document</a> que ha preparat en Sebas Vila amb les seves valoracions.</p> <hr /> <p>El tema del correu com a <em>comodity</em> és un aspecte interessant a tenir en compte, hi estic d’acord. Però no és pas l’únic i no crec que sigui el principal en la situació actual de la UPC. Davant de la greu situació econòmica de la UPC, el primer que cal posar damunt la taula és una anàlisi econòmica del cost actual del servei de correu distribuït en unitats, el cost que tindria si es centralitzés en 1 sol punt dins la UPC i finalment el que costaria externalitzar-lo, tenint en compte el cost de migració del que no es parla en cap moment, i de tornar-lo cap a casa si canviessin les circumstàncies. Amb l’anàlisi econòmica i tècnica, junt amb l’anàlisi de riscos es podria determinar si cal fer el pas i si cal fer-lo ara.</p> <p>Un altre aspecte important a tenir en compte és l’opinió que tenen els usuaris del servei actual. Tal com apunta en Sebas, potser ens adonaríem que hi ha una part important de gent dins la UPC que ja no estan utilitzant el servei de correu i que per tant tampoc suposen un cost significatiu. Però també cal tenir en compte que fa una pila d’anys que s’intenta deixar de banda el Lotus Notes i que no hi ha manera d’aconseguir-ho, força usuaris segueixen utilitzant-lo per llegir el correu. Si fins ara no ha estat possible eliminar el Notes què ens fa pensar que aquests usuaris es voldran canviar a qualsevol altra cosa?</p> <p>El risc de fracàs és realment alt per molts motius, però principalment perquè s’està plantejant una migració completa del servei de correu actual. Em pregunto per què no es pot fer un projecte pilot amb usuaris de diferents col·lectius i fer una anàlisi acurada del que suposaria la migració completa. S’ha fet amb el tema del teletreball, per què no es fa amb el correu?</p> <p>Estic d’acord amb en Marc que hem de valorar si el correu és un servei estratègic o si cal dedicar els esforços a d’altres serveis que tinguin més impacte en la docència i la recerca. Però com a tècnic tinc la sensació que el correu UPC és com la xarxa UPC, són serveis transversals que vehiculen la resta de serveis. No els valorem perquè funcionen raonablement o perquè hem sabut trobar-hi alternatives (els mòbils amb 3G en són un exemple).</p> <p>Si la UPC fos una startup dedicada a fabricar maquinari lliure o programari lliure, tindria clar que el correu no seria un servei estratègic i no hi dedicaria recursos propis. Però el nostre camp és el coneixement i per compartir-lo de forma eficient crec que hem de tenir el control dels nostres propis canals de comunicació. No es tracta de competir amb els serveis del núvol perquè qui vol ja els està utilitzant sense demanar permís, hem de donar el servei que necessiten els nostres usuaris. Per això potser ens hem de preocupar primer per saber si estem donant el servei que volen i si ho estem fent bé. Tampoc serveix de res parlar en nom dels usuaris sense tenir dades concretes del que opinen del servei que donem.</p> <p>Finalment, un aspecte interessant a tenir en compte és que el servei de correu no ha evolucionat gaire perquè és un dels més omnipresents a tot el món i costa introduir canvis (per exemple, per combatre l’spam, etc.). Curiosament aquest és un àmbit de recerca que sembla en via morta, però crec que té molt de potencial. Si la UPC renuncia a gestionar el seu propi correu estarà renunciant a un dels serveis universals sobre els quals un avenç en recerca podria tenir un impacte molt important per a tota la humanitat. De debò la UPC s’ho pot permetre o ha de ser pionera en el futur del correu electrònic? Si ho hagués de ser, no tindria gaire sentit haver externalitzat el seu propi servei, oi?</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2013/06/11/el-futur-del-correu-a-la-upc/" data-text="El futur del correu a la UPC" data-via="alexmuntada" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2013/06/11/el-futur-del-correu-a-la-upc/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20El%20futur%20del%20correu%20a%20la%20UPC&body=https%3A%2F%2Flog.alexm.org%2F2013%2F06%2F11%2Fel-futur-del-correu-a-la-upc%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="e9a2567177" data-email-share-track-url="https://log.alexm.org/2013/06/11/el-futur-del-correu-a-la-upc/?share=email"><span>Email</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-6513608-120-67b624bf9c70e' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=120&origin=alexmuntada.wordpress.com&obj_id=6513608-120-67b624bf9c70e&domain=log.alexm.org' data-name='like-post-frame-6513608-120-67b624bf9c70e' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/catala/" rel="category tag">català</a>, <a href="https://log.alexm.org/category/upc/" rel="category tag">upc</a> and tagged <a href="https://log.alexm.org/tag/barcelonatech/" rel="tag">barcelonatech</a>, <a href="https://log.alexm.org/tag/cloud/" rel="tag">cloud</a>, <a href="https://log.alexm.org/tag/cpl/" rel="tag">cpl</a>, <a href="https://log.alexm.org/tag/mail/" rel="tag">mail</a>, <a href="https://log.alexm.org/tag/upc/" rel="tag">upc</a> on <a href="https://log.alexm.org/2013/06/11/el-futur-del-correu-a-la-upc/" title="19:53" rel="bookmark"><time class="entry-date" datetime="2013-06-11T19:53:52+01:00">11 June 2013</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-90" class="post-90 post type-post status-publish format-standard hentry category-english category-sysadmin tag-bacula"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://log.alexm.org/2012/10/01/please-mount-volume-or-label-a-new-one/" rel="bookmark">Please mount Volume or label a new one?</a> </h1> </header><!-- .entry-header --> <div class="entry-content"> <p>A Monday morning we found several messages like this from <a title="Bacula, the Open Source, Network Backup Tool for Linux, Unix, Mac and Windows." href="http://www.bacula.org/">Bacula</a>:</p> <pre>09-Sep 18:27 Tape-A JobId 15196: Please mount Volume "A0000038" or label a new one for: Job: sites.2012-09-08_01.50.03_40 Storage: "LTO-4" (/dev/nst0) Pool: Default Media type: LTO-4</pre> <p>That was Bacula complaining about the wrong volume on the drive. However, after examining the status of storage the weird thing was that the tape with barcode “A0000038” was actually mounted on the drive, it was purged and had 0 bytes used… WTF?</p> <p>We started suspecting our tape rotation algorithm was not taking into account that maybe purged tapes were not used if data retention hadn’t expired, but <a title="Automatic Volume Recycling from Bacula Main Reference" href="http://www.bacula.org/en/dev-manual/main/main/Automatic_Volume_Recycling.html">Automatic Volume Recycling</a> says otherwise and some tests on other purged tapes with expired data retention failed too.</p> <p>Several days of searching similar issues later, it seemed clear that there was something wrong only with some purged tapes from the media catalog. So i came up with a quick test for each one of our purged tapes in order to make sure that they were labeled correctly. First, i loaded “A0000038” and read its label:</p> <pre># mtx -f /dev/sg4 load 22 Loading media from Storage Element 22 into drive 0...done # dd if=/dev/nst0 bs=65000 count=1 | od -a | head 0+0 records in 0+0 records out 0 bytes (0 B) copied, 3.81024 s, 0.0 kB/s 0000000</pre> <p>You can see that it failed to find any Bacula label, so next i tried the same test with another tape in full state that had been used the day before:</p> <pre># mtx -f /dev/sg4 load 16 Loading media from Storage Element 16 into drive 0...done # dd if=/dev/nst0 bs=65000 count=1 | od -a | head 0+1 records in 0+1 records out 64512 bytes (65 kB) copied, 3.73563 s, 17.3 kB/s 0000000 G ; = < nul nul nul D nul nul nul nul B B 0 2 0000020 nul nul stx gs L etx O sub del del del ~ nul nul nul nul 0000040 nul nul nul 240 B a c u l a 1 . 0 i 0000060 m m o r t a l nl nul nul nul nul vt nul eot dc3 0000100 1 8 O si ff nul eot dc3 J + W stx p nul nul nul 0000120 nul nul nul nul nul nul nul nul nul nul nul nul nul A 0 0 0000140 0 0 0 0 6 nul nul D e f a u l t nul B 0000160 a c k u p nul L T O - 4 nul v m - h 0000200 o s t - 4 nul T a p e - A nul V e r 0000220 . 5 . 0 . 1 2 4 F e b r u</pre> <p>(Note that device <strong>/dev/nst0</strong> has a minimum block size of 64512 bytes, otherwise <strong>dd</strong> would raise a <em>Cannot allocate memory</em> error.)</p> <p>This time the Bacula label was found on the tape (the <em>Bacula 1.0 immortal</em> string is a clue), so we were now on the right track. Then i reviewed our wiki for the tape change procedure and there was an optional step in the tape purging section explaining how to blank a tape from another Bacula director before labeling it for this one. Therefore, it seemed that someone had been blanking the tapes after purging them and Bacula didn’t know what to make with them even though they had the right barcodes.</p> <p>The fix was quick: i tested every purged tape to make a list of the blanked ones, then deleted them from the catalog and labeled them back from the <strong>bconsole</strong>:</p> <pre>* delete volume="A0000038" * label barcodes slots=22 pool=Default</pre> <p>Bacula is happy again, and we are too! 🙂</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-official sd-sharing"><h3 class="sd-title">Compartiu...</h3><div class="sd-content"><ul><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://log.alexm.org/2012/10/01/please-mount-volume-or-label-a-new-one/" data-text="Please mount Volume or label a new one?" data-related="wordpressdotcom">Tweet</a></li><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://log.alexm.org/2012/10/01/please-mount-volume-or-label-a-new-one/" data-counter="right"></script></div></li><li class="share-email"><a rel="nofollow noopener noreferrer" data-shared="" class="share-email sd-button" href="mailto:?subject=%5BShared%20Post%5D%20Please%20mount%20Volume%20or%20label%20a%20new%20one%3F&body=https%3A%2F%2Flog.alexm.org%2F2012%2F10%2F01%2Fplease-mount-volume-or-label-a-new-one%2F&share=email" target="_blank" title="Click to email a link to a friend" data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you're having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="53ee4f5ee1" data-email-share-track-url="https://log.alexm.org/2012/10/01/please-mount-volume-or-label-a-new-one/?share=email"><span>Email</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-6513608-90-67b624bf9d6d8' data-src='//widgets.wp.com/likes/index.html?ver=20250219#blog_id=6513608&post_id=90&origin=alexmuntada.wordpress.com&obj_id=6513608-90-67b624bf9d6d8&domain=log.alexm.org' data-name='like-post-frame-6513608-90-67b624bf9d6d8' 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-meta"> This entry was posted in <a href="https://log.alexm.org/category/english/" rel="category tag">english</a>, <a href="https://log.alexm.org/category/sysadmin/" rel="category tag">sysadmin</a> and tagged <a href="https://log.alexm.org/tag/bacula/" rel="tag">bacula</a> on <a href="https://log.alexm.org/2012/10/01/please-mount-volume-or-label-a-new-one/" title="22:07" rel="bookmark"><time class="entry-date" datetime="2012-10-01T22:07:18+01:00">1 October 2012</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://log.alexm.org/author/alexmuntada/" title="View all posts by Alex Muntada" rel="author">Alex Muntada</a></span></span>. </footer><!-- .entry-meta --> </article><!-- #post --> <nav id="nav-below" class="navigation"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://log.alexm.org/page/2/" ><span class="meta-nav">←</span> Older posts</a></div> <div class="nav-next"></div> </nav><!-- .navigation --> </div><!-- #content --> </div><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="internet_defense_league_widget-2" class="widget widget_internet_defense_league_widget"><p><a href="https://www.internetdefenseleague.org/"><img src="https://www.internetdefenseleague.org/images/badges/final/shield_badge.png" alt="Member of The Internet Defense League" style="max-width: 100%; height: auto;" /></a></p></aside><aside id="twitter-3" class="widget widget_twitter"><h3 class="widget-title"><a href='http://twitter.com/alexmuntada'>Piulades</a></h3><a class="twitter-timeline" data-height="600" data-dnt="true" href="https://twitter.com/alexmuntada">Tweets by alexmuntada</a></aside><aside id="wp_tag_cloud-2" class="widget wp_widget_tag_cloud"><h3 class="widget-title"></h3><ul class='wp-tag-cloud' role='list'> <li><a href="https://log.alexm.org/tag/alsa/" class="tag-cloud-link tag-link-144787 tag-link-position-1" style="font-size: 8pt;" aria-label="alsa (1 item)">alsa</a></li> <li><a href="https://log.alexm.org/tag/apport/" class="tag-cloud-link tag-link-1532018 tag-link-position-2" style="font-size: 8pt;" aria-label="apport (1 item)">apport</a></li> <li><a href="https://log.alexm.org/tag/backscatter/" class="tag-cloud-link tag-link-859283 tag-link-position-3" style="font-size: 8pt;" aria-label="backscatter (1 item)">backscatter</a></li> <li><a href="https://log.alexm.org/tag/backup/" class="tag-cloud-link tag-link-5469 tag-link-position-4" style="font-size: 8pt;" aria-label="backup (1 item)">backup</a></li> <li><a href="https://log.alexm.org/tag/backups/" class="tag-cloud-link tag-link-1817 tag-link-position-5" style="font-size: 8pt;" aria-label="backups (1 item)">backups</a></li> <li><a href="https://log.alexm.org/tag/bacula/" class="tag-cloud-link tag-link-5145197 tag-link-position-6" style="font-size: 11.876923076923pt;" aria-label="bacula (2 items)">bacula</a></li> <li><a href="https://log.alexm.org/tag/barcelona/" class="tag-cloud-link tag-link-13949 tag-link-position-7" style="font-size: 20.923076923077pt;" aria-label="barcelona (7 items)">barcelona</a></li> <li><a href="https://log.alexm.org/tag/barcelonatech/" class="tag-cloud-link tag-link-142837326 tag-link-position-8" style="font-size: 8pt;" aria-label="barcelonatech (1 item)">barcelonatech</a></li> <li><a href="https://log.alexm.org/tag/brusel%c2%b7les/" class="tag-cloud-link tag-link-15579382 tag-link-position-9" style="font-size: 8pt;" aria-label="brusel·les (1 item)">brusel·les</a></li> <li><a href="https://log.alexm.org/tag/bzr/" class="tag-cloud-link tag-link-1042808 tag-link-position-10" style="font-size: 8pt;" aria-label="bzr (1 item)">bzr</a></li> <li><a href="https://log.alexm.org/tag/catalan/" class="tag-cloud-link tag-link-77806 tag-link-position-11" style="font-size: 19.846153846154pt;" aria-label="catalan (6 items)">catalan</a></li> <li><a href="https://log.alexm.org/tag/clamav/" class="tag-cloud-link tag-link-946967 tag-link-position-12" style="font-size: 8pt;" aria-label="clamav (1 item)">clamav</a></li> <li><a href="https://log.alexm.org/tag/cloud/" class="tag-cloud-link tag-link-69816 tag-link-position-13" style="font-size: 14.461538461538pt;" aria-label="cloud (3 items)">cloud</a></li> <li><a href="https://log.alexm.org/tag/community/" class="tag-cloud-link tag-link-2528 tag-link-position-14" style="font-size: 8pt;" aria-label="community (1 item)">community</a></li> <li><a href="https://log.alexm.org/tag/cpl/" class="tag-cloud-link tag-link-535840 tag-link-position-15" style="font-size: 8pt;" aria-label="cpl (1 item)">cpl</a></li> <li><a href="https://log.alexm.org/tag/cron/" class="tag-cloud-link tag-link-109168 tag-link-position-16" style="font-size: 11.876923076923pt;" aria-label="cron (2 items)">cron</a></li> <li><a href="https://log.alexm.org/tag/cyrus/" class="tag-cloud-link tag-link-442782 tag-link-position-17" style="font-size: 8pt;" aria-label="cyrus (1 item)">cyrus</a></li> <li><a href="https://log.alexm.org/tag/disseny-ubuntaire/" class="tag-cloud-link tag-link-74562381 tag-link-position-18" style="font-size: 8pt;" aria-label="disseny ubuntaire (1 item)">disseny ubuntaire</a></li> <li><a href="https://log.alexm.org/tag/dkms/" class="tag-cloud-link tag-link-3187081 tag-link-position-19" style="font-size: 8pt;" aria-label="dkms (1 item)">dkms</a></li> <li><a href="https://log.alexm.org/tag/drag/" class="tag-cloud-link tag-link-61511 tag-link-position-20" style="font-size: 8pt;" aria-label="drag (1 item)">drag</a></li> <li><a href="https://log.alexm.org/tag/drumbeat/" class="tag-cloud-link tag-link-2839545 tag-link-position-21" style="font-size: 8pt;" aria-label="drumbeat (1 item)">drumbeat</a></li> <li><a href="https://log.alexm.org/tag/ecryptfs/" class="tag-cloud-link tag-link-11514177 tag-link-position-22" style="font-size: 8pt;" aria-label="ecryptfs (1 item)">ecryptfs</a></li> <li><a href="https://log.alexm.org/tag/educacio/" class="tag-cloud-link tag-link-93237 tag-link-position-23" style="font-size: 11.876923076923pt;" aria-label="educació (2 items)">educació</a></li> <li><a href="https://log.alexm.org/tag/etc/" class="tag-cloud-link tag-link-585 tag-link-position-24" style="font-size: 8pt;" aria-label="etc (1 item)">etc</a></li> <li><a href="https://log.alexm.org/tag/etckeeper/" class="tag-cloud-link tag-link-17577073 tag-link-position-25" style="font-size: 8pt;" aria-label="etckeeper (1 item)">etckeeper</a></li> <li><a href="https://log.alexm.org/tag/eucalyptus/" class="tag-cloud-link tag-link-325557 tag-link-position-26" style="font-size: 11.876923076923pt;" aria-label="eucalyptus (2 items)">eucalyptus</a></li> <li><a href="https://log.alexm.org/tag/fai/" class="tag-cloud-link tag-link-489265 tag-link-position-27" style="font-size: 8pt;" aria-label="fai (1 item)">fai</a></li> <li><a href="https://log.alexm.org/tag/festival/" class="tag-cloud-link tag-link-29263 tag-link-position-28" style="font-size: 8pt;" aria-label="festival (1 item)">festival</a></li> <li><a href="https://log.alexm.org/tag/fluiddb/" class="tag-cloud-link tag-link-16240049 tag-link-position-29" style="font-size: 8pt;" aria-label="fluiddb (1 item)">fluiddb</a></li> <li><a href="https://log.alexm.org/tag/foreman/" class="tag-cloud-link tag-link-916513 tag-link-position-30" style="font-size: 11.876923076923pt;" aria-label="foreman (2 items)">foreman</a></li> <li><a href="https://log.alexm.org/tag/fosdem/" class="tag-cloud-link tag-link-37966 tag-link-position-31" style="font-size: 8pt;" aria-label="fosdem (1 item)">fosdem</a></li> <li><a href="https://log.alexm.org/tag/free-software/" class="tag-cloud-link tag-link-802 tag-link-position-32" style="font-size: 11.876923076923pt;" aria-label="free software (2 items)">free software</a></li> <li><a href="https://log.alexm.org/tag/funcionariat/" class="tag-cloud-link tag-link-15106274 tag-link-position-33" style="font-size: 8pt;" aria-label="funcionariat (1 item)">funcionariat</a></li> <li><a href="https://log.alexm.org/tag/gtd/" class="tag-cloud-link tag-link-1247 tag-link-position-34" style="font-size: 11.876923076923pt;" aria-label="gtd (2 items)">gtd</a></li> <li><a href="https://log.alexm.org/tag/infiniband/" class="tag-cloud-link tag-link-1347527 tag-link-position-35" style="font-size: 8pt;" aria-label="infiniband (1 item)">infiniband</a></li> <li><a href="https://log.alexm.org/tag/iwarp/" class="tag-cloud-link tag-link-6620800 tag-link-position-36" style="font-size: 8pt;" aria-label="iwarp (1 item)">iwarp</a></li> <li><a href="https://log.alexm.org/tag/jack/" class="tag-cloud-link tag-link-50808 tag-link-position-37" style="font-size: 8pt;" aria-label="jack (1 item)">jack</a></li> <li><a href="https://log.alexm.org/tag/juju/" class="tag-cloud-link tag-link-62716 tag-link-position-38" style="font-size: 8pt;" aria-label="juju (1 item)">juju</a></li> <li><a href="https://log.alexm.org/tag/karaoke/" class="tag-cloud-link tag-link-22835 tag-link-position-39" style="font-size: 8pt;" aria-label="karaoke (1 item)">karaoke</a></li> <li><a href="https://log.alexm.org/tag/karmic/" class="tag-cloud-link tag-link-1211948 tag-link-position-40" style="font-size: 19.846153846154pt;" aria-label="karmic (6 items)">karmic</a></li> <li><a href="https://log.alexm.org/tag/kde/" class="tag-cloud-link tag-link-804 tag-link-position-41" style="font-size: 8pt;" aria-label="kde (1 item)">kde</a></li> <li><a href="https://log.alexm.org/tag/kernel/" class="tag-cloud-link tag-link-2428 tag-link-position-42" style="font-size: 8pt;" aria-label="kernel (1 item)">kernel</a></li> <li><a href="https://log.alexm.org/tag/kvm/" class="tag-cloud-link tag-link-75342 tag-link-position-43" style="font-size: 8pt;" aria-label="kvm (1 item)">kvm</a></li> <li><a href="https://log.alexm.org/tag/legacy/" class="tag-cloud-link tag-link-91209 tag-link-position-44" style="font-size: 8pt;" aria-label="legacy (1 item)">legacy</a></li> <li><a href="https://log.alexm.org/tag/locoteam/" class="tag-cloud-link tag-link-830516 tag-link-position-45" style="font-size: 19.846153846154pt;" aria-label="locoteam (6 items)">locoteam</a></li> <li><a href="https://log.alexm.org/tag/maas/" class="tag-cloud-link tag-link-1129316 tag-link-position-46" style="font-size: 8pt;" aria-label="maas (1 item)">maas</a></li> <li><a href="https://log.alexm.org/tag/mail/" class="tag-cloud-link tag-link-5653 tag-link-position-47" style="font-size: 11.876923076923pt;" aria-label="mail (2 items)">mail</a></li> <li><a href="https://log.alexm.org/tag/mozilla/" class="tag-cloud-link tag-link-24 tag-link-position-48" style="font-size: 8pt;" aria-label="mozilla (1 item)">mozilla</a></li> <li><a href="https://log.alexm.org/tag/nagios/" class="tag-cloud-link tag-link-167993 tag-link-position-49" style="font-size: 11.876923076923pt;" aria-label="nagios (2 items)">nagios</a></li> <li><a href="https://log.alexm.org/tag/nul/" class="tag-cloud-link tag-link-2733657 tag-link-position-50" style="font-size: 8pt;" aria-label="nul (1 item)">nul</a></li> <li><a href="https://log.alexm.org/tag/ong/" class="tag-cloud-link tag-link-146581 tag-link-position-51" style="font-size: 8pt;" aria-label="ong (1 item)">ong</a></li> <li><a href="https://log.alexm.org/tag/orchestra/" class="tag-cloud-link tag-link-34806 tag-link-position-52" style="font-size: 8pt;" aria-label="orchestra (1 item)">orchestra</a></li> <li><a href="https://log.alexm.org/tag/pair/" class="tag-cloud-link tag-link-346761 tag-link-position-53" style="font-size: 8pt;" aria-label="pair (1 item)">pair</a></li> <li><a href="https://log.alexm.org/tag/papercuts/" class="tag-cloud-link tag-link-559580 tag-link-position-54" style="font-size: 8pt;" aria-label="papercuts (1 item)">papercuts</a></li> <li><a href="https://log.alexm.org/tag/perl/" class="tag-cloud-link tag-link-5226 tag-link-position-55" style="font-size: 8pt;" aria-label="perl (1 item)">perl</a></li> <li><a href="https://log.alexm.org/tag/postfix/" class="tag-cloud-link tag-link-93301 tag-link-position-56" style="font-size: 8pt;" aria-label="postfix (1 item)">postfix</a></li> <li><a href="https://log.alexm.org/tag/postmaster/" class="tag-cloud-link tag-link-1961557 tag-link-position-57" style="font-size: 8pt;" aria-label="postmaster (1 item)">postmaster</a></li> <li><a href="https://log.alexm.org/tag/pulseaudio/" class="tag-cloud-link tag-link-704031 tag-link-position-58" style="font-size: 8pt;" aria-label="pulseaudio (1 item)">pulseaudio</a></li> <li><a href="https://log.alexm.org/tag/puppet/" class="tag-cloud-link tag-link-3548 tag-link-position-59" style="font-size: 16.615384615385pt;" aria-label="puppet (4 items)">puppet</a></li> <li><a href="https://log.alexm.org/tag/rabbitmq/" class="tag-cloud-link tag-link-8662793 tag-link-position-60" style="font-size: 8pt;" aria-label="rabbitmq (1 item)">rabbitmq</a></li> <li><a href="https://log.alexm.org/tag/refactoring/" class="tag-cloud-link tag-link-54712 tag-link-position-61" style="font-size: 8pt;" aria-label="refactoring (1 item)">refactoring</a></li> <li><a href="https://log.alexm.org/tag/server/" class="tag-cloud-link tag-link-18568 tag-link-position-62" style="font-size: 14.461538461538pt;" aria-label="server (3 items)">server</a></li> <li><a href="https://log.alexm.org/tag/shield/" class="tag-cloud-link tag-link-250072 tag-link-position-63" style="font-size: 8pt;" aria-label="shield (1 item)">shield</a></li> <li><a href="https://log.alexm.org/tag/sieve/" class="tag-cloud-link tag-link-4493848 tag-link-position-64" style="font-size: 8pt;" aria-label="sieve (1 item)">sieve</a></li> <li><a href="https://log.alexm.org/tag/team/" class="tag-cloud-link tag-link-8071 tag-link-position-65" style="font-size: 8pt;" aria-label="team (1 item)">team</a></li> <li><a href="https://log.alexm.org/tag/thrust/" class="tag-cloud-link tag-link-1203354 tag-link-position-66" style="font-size: 8pt;" aria-label="thrust (1 item)">thrust</a></li> <li><a href="https://log.alexm.org/tag/tic/" class="tag-cloud-link tag-link-17807 tag-link-position-67" style="font-size: 11.876923076923pt;" aria-label="tic (2 items)">tic</a></li> <li><a href="https://log.alexm.org/tag/tm4sa/" class="tag-cloud-link tag-link-74570256 tag-link-position-68" style="font-size: 8pt;" aria-label="tm4sa (1 item)">tm4sa</a></li> <li><a href="https://log.alexm.org/tag/ubuntu/" class="tag-cloud-link tag-link-255 tag-link-position-69" style="font-size: 22pt;" aria-label="ubuntu (8 items)">ubuntu</a></li> <li><a href="https://log.alexm.org/tag/uds/" class="tag-cloud-link tag-link-1434584 tag-link-position-70" style="font-size: 19.846153846154pt;" aria-label="uds (6 items)">uds</a></li> <li><a href="https://log.alexm.org/tag/upc/" class="tag-cloud-link tag-link-105010 tag-link-position-71" style="font-size: 14.461538461538pt;" aria-label="upc (3 items)">upc</a></li> <li><a href="https://log.alexm.org/tag/upstream/" class="tag-cloud-link tag-link-597055 tag-link-position-72" style="font-size: 8pt;" aria-label="upstream (1 item)">upstream</a></li> <li><a href="https://log.alexm.org/tag/vcs/" class="tag-cloud-link tag-link-42722 tag-link-position-73" style="font-size: 8pt;" aria-label="vcs (1 item)">vcs</a></li> <li><a href="https://log.alexm.org/tag/web/" class="tag-cloud-link tag-link-151 tag-link-position-74" style="font-size: 8pt;" aria-label="web (1 item)">web</a></li> <li><a href="https://log.alexm.org/tag/zeitgeist/" class="tag-cloud-link tag-link-8454 tag-link-position-75" style="font-size: 8pt;" aria-label="zeitgeist (1 item)">zeitgeist</a></li> </ul> </aside><aside id="archives-3" class="widget widget_archive"><h3 class="widget-title">Archives</h3> <ul> <li><a href='https://log.alexm.org/2017/12/'>December 2017</a></li> <li><a href='https://log.alexm.org/2017/11/'>November 2017</a></li> <li><a href='https://log.alexm.org/2017/10/'>October 2017</a></li> <li><a href='https://log.alexm.org/2017/03/'>March 2017</a></li> <li><a href='https://log.alexm.org/2017/02/'>February 2017</a></li> <li><a href='https://log.alexm.org/2016/07/'>July 2016</a></li> <li><a href='https://log.alexm.org/2014/06/'>June 2014</a></li> <li><a href='https://log.alexm.org/2014/05/'>May 2014</a></li> <li><a href='https://log.alexm.org/2013/06/'>June 2013</a></li> <li><a href='https://log.alexm.org/2012/10/'>October 2012</a></li> <li><a href='https://log.alexm.org/2012/02/'>February 2012</a></li> <li><a href='https://log.alexm.org/2012/01/'>January 2012</a></li> <li><a href='https://log.alexm.org/2010/10/'>October 2010</a></li> <li><a href='https://log.alexm.org/2010/04/'>April 2010</a></li> <li><a href='https://log.alexm.org/2010/01/'>January 2010</a></li> <li><a href='https://log.alexm.org/2009/09/'>September 2009</a></li> <li><a href='https://log.alexm.org/2009/07/'>July 2009</a></li> <li><a href='https://log.alexm.org/2009/06/'>June 2009</a></li> <li><a href='https://log.alexm.org/2009/05/'>May 2009</a></li> </ul> </aside> </div><!-- #secondary --> </div><!-- #main .wrapper --> <footer id="colophon" 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="text/javascript"> var infiniteScroll = {"settings":{"id":"content","ajaxurl":"https:\/\/log.alexm.org\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":"page","click_handle":"1","text":"Older posts","totop":"Scroll back to top","currentday":"01.10.12","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":1,"history":{"host":"log.alexm.org","path":"\/page\/%d\/","use_trailing_slashes":true,"parameters":""},"query_args":{"error":"","m":"","p":0,"post_parent":"","subpost":"","subpost_id":"","attachment":"","attachment_id":0,"name":"","pagename":"","page_id":0,"second":"","minute":"","hour":"","day":0,"monthnum":0,"year":0,"w":0,"category_name":"","tag":"","cat":"","tag_id":"","author":"","author_name":"","feed":"","tb":"","paged":0,"meta_key":"","meta_value":"","preview":"","s":"","sentence":"","title":"","fields":"","menu_order":"","embed":"","category__in":[],"category__not_in":[],"category__and":[],"post__in":[],"post__not_in":[],"post_name__in":[],"tag__in":[],"tag__not_in":[],"tag__and":[],"tag_slug__in":[],"tag_slug__and":[],"post_parent__in":[],"post_parent__not_in":[],"author__in":[],"author__not_in":[],"search_columns":[],"lazy_load_term_meta":false,"posts_per_page":10,"ignore_sticky_posts":false,"suppress_filters":false,"cache_results":true,"update_post_term_cache":true,"update_menu_item_cache":false,"update_post_meta_cache":true,"post_type":"","nopaging":false,"comments_per_page":"50","no_found_rows":false,"order":"DESC"},"query_before":"2025-02-19 19:36:47","last_post_date":"2012-10-01 22:07:18","body_class":"infinite-scroll neverending","loading_text":"Loading new page","stats":"blog=6513608&v=wpcom&tz=1&user_id=0&subd=alexmuntada&x_pagetype=infinite"}}; </script> <!-- --> <script type="text/javascript" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=2025087d8bf6c02970a26c6b0c26b0fcfc89796aa30f84307cffd8fd28d2bcca53dd7a" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/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.', 'Profile not found.': 'Profile not found.', 'Too Many Requests.': 'Too Many Requests.', 'Internal Server Error.': 'Internal Server Error.', }, } ); } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } } )(); </script> <div style="display:none"> </div> <div id="infinite-footer"> <div class="container"> <div class="blog-info"> <a id="infinity-blog-title" href="https://log.alexm.org/" rel="home"> my $log; </a> </div> <div class="blog-credits"> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div> </div> </div><!-- #infinite-footer --> <div id="actionbar" dir="ltr" style="display: none;" class="actnbr-pub-twentytwelve actnbr-has-follow actnbr-has-actions"> <ul> <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"><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 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></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://log.alexm.org"> <img loading='lazy' alt='' src='https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=50' srcset='https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=50 1x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=75 1.5x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=100 2x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=150 3x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=200 4x' class='avatar avatar-50' height='50' width='50' /> my $log; </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> <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="6513608" /> <input type="hidden" name="source" value="https://log.alexm.org/" /> <input type="hidden" name="sub-type" value="actionbar-follow" /> <input type="hidden" id="_wpnonce" name="_wpnonce" value="969651f180" /> <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%252Flog.alexm.org%252F2017%252F12%252F01%252Fpaving-the-road-from-critical-to-ok%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://log.alexm.org"> <img loading='lazy' alt='' src='https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=50' srcset='https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=50 1x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=75 1.5x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=100 2x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=150 3x, https://log.alexm.org/wp-content/uploads/2019/01/wp-1547761698453..jpg?w=200 4x' class='avatar avatar-50' height='50' width='50' /> my $log; </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"><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 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></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%252Flog.alexm.org%252F2017%252F12%252F01%252Fpaving-the-road-from-critical-to-ok%252F">Log in</a></li> <li class="flb-report"> <a href="https://wordpress.com/abuse/?report_url=https://log.alexm.org" target="_blank" rel="noopener noreferrer"> Report this content </a> </li> <li class="actnbr-reader"> <a href="https://wordpress.com/reader/feeds/11712682"> View site 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( "load", function( event ) { var link = document.createElement( "link" ); link.href = "https://s0.wp.com/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 = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.js?v=20250204"; script.defer = true; document.body.appendChild( script ); } ); </script> <script type="text/javascript"> window.WPCOM_sharing_counts = {"https:\/\/log.alexm.org\/2017\/12\/01\/paving-the-road-from-critical-to-ok\/":505,"https:\/\/log.alexm.org\/2017\/11\/19\/lideratge-i-prepotencia\/":498,"https:\/\/log.alexm.org\/2017\/10\/13\/my-free-software-ativities-in-jul-sep-2017\/":487,"https:\/\/log.alexm.org\/2017\/03\/03\/notes-from-fosdem\/":359,"https:\/\/log.alexm.org\/2017\/02\/06\/config-management-camp\/":357,"https:\/\/log.alexm.org\/2016\/07\/02\/reunio-de-juny-de-barcelona-pm\/":290,"https:\/\/log.alexm.org\/2014\/06\/18\/packaging-softiwarp-kernel-module-for-debian\/":218,"https:\/\/log.alexm.org\/2014\/05\/29\/col%c2%b7laboracio-en-els-projectes-tic-de-la-upc\/":139,"https:\/\/log.alexm.org\/2013\/06\/11\/el-futur-del-correu-a-la-upc\/":120,"https:\/\/log.alexm.org\/2012\/10\/01\/please-mount-volume-or-label-a-new-one\/":90}; </script> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> <script type="text/javascript"> ( function () { var currentScript = document.currentScript; // Helper function to load an external script. function loadScript( url, cb ) { var script = document.createElement( 'script' ); var prev = currentScript || document.getElementsByTagName( 'script' )[ 0 ]; script.setAttribute( 'async', true ); script.setAttribute( 'src', url ); prev.parentNode.insertBefore( script, prev ); script.addEventListener( 'load', cb ); } function init() { loadScript( 'https://platform.linkedin.com/in.js?async=true', function () { if ( typeof IN !== 'undefined' ) { IN.init(); } } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', init ); } else { init(); } document.body.addEventListener( 'is.post-load', function() { if ( typeof IN !== 'undefined' ) { IN.parse(); } } ); } )(); </script> <script type="text/javascript"> window._idl = {}; _idl.campaign = ""; _idl.variant = "banner"; (function() { var idl = document.createElement('script'); idl.async = true; idl.src = 'https://members.internetdefenseleague.org/include/?url=' + (_idl.url || '') + '&campaign=' + (_idl.campaign || '') + '&variant=' + (_idl.variant || 'banner'); document.getElementsByTagName('body')[0].appendChild(idl); })(); </script> <div id="jp-carousel-loading-overlay"> <div id="jp-carousel-loading-wrapper"> <span id="jp-carousel-library-loading"> </span> </div> </div> <div class="jp-carousel-overlay" style="display: none;"> <div class="jp-carousel-container"> <!-- The Carousel Swiper --> <div class="jp-carousel-wrap swiper-container jp-carousel-swiper-container jp-carousel-transitions" itemscope itemtype="https://schema.org/ImageGallery"> <div class="jp-carousel swiper-wrapper"></div> <div class="jp-swiper-button-prev swiper-button-prev"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12"> <path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/> </mask> <g mask="url(#maskPrev)"> <rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <div class="jp-swiper-button-next swiper-button-next"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12"> <path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/> </mask> <g mask="url(#maskNext)"> <rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/> </g> </svg> </div> </div> <!-- The main close buton --> <div class="jp-carousel-close-hint"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14"> <path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/> </mask> <g mask="url(#maskClose)"> <rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <!-- Image info, comments and meta --> <div class="jp-carousel-info"> <div class="jp-carousel-info-footer"> <div class="jp-carousel-pagination-container"> <div class="jp-swiper-pagination swiper-pagination"></div> <div class="jp-carousel-pagination"></div> </div> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-caption"></h2> </div> <div class="jp-carousel-photo-icons-container"> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/> </mask> <g mask="url(#maskInfo)"> <rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </span> </a> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/> </mask> <g mask="url(#maskComments)"> <rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span> </span> </a> </div> </div> <div class="jp-carousel-info-extra"> <div class="jp-carousel-info-content-wrapper"> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-title"></h2> </div> <div class="jp-carousel-comments-wrapper"> <div id="jp-carousel-comments-loading"> <span>Loading Comments...</span> </div> <div class="jp-carousel-comments"></div> <div id="jp-carousel-comment-form-container"> <span id="jp-carousel-comment-form-spinner"> </span> <div id="jp-carousel-comment-post-results"></div> <form id="jp-carousel-comment-form"> <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label> <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..." ></textarea> <div id="jp-carousel-comment-form-submit-and-info-wrapper"> <div id="jp-carousel-comment-form-commenting-as"> <fieldset> <label for="jp-carousel-comment-form-email-field">Email (Required)</label> <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-author-field">Name (Required)</label> <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-url-field">Website</label> <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" /> </fieldset> </div> <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment" /> </div> </form> </div> </div> <div class="jp-carousel-image-meta"> <div class="jp-carousel-title-and-caption"> <div class="jp-carousel-photo-info"> <h3 class="jp-carousel-caption" itemprop="caption description"></h3> </div> <div class="jp-carousel-photo-description"></div> </div> <ul class="jp-carousel-image-exif" style="display: none;"></ul> <a class="jp-carousel-image-download" href="#" target="_blank" style="display: none;"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/> </mask> <g mask="url(#mask0)"> <rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-download-text"></span> </a> <div class="jp-carousel-image-map" style="display: none;"></div> </div> </div> </div> </div> </div> </div> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-2' href='https://s2.wp.com/_static/??-eJyljUsKhDAQRC80mXZGDLiQOUsmaSTa+ZBOI95eBN260E3BK4pXsGRlU6wYKwRRmWT0kWHCmo2dD4aQ0h5OCBmsKUkYCXjxGYv6S3SEb8v8gge2c3QWd4XVEzo1GiIs6xXtB78wfHT/7Zu203raAHg3ZXE=&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" src="https://s1.wp.com/wp-content/js/mobile-useragent-info.js?m=1609849039i&ver=20241018" id="mobile-useragent-info-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="custom-content-types-data-js-before"> /* <![CDATA[ */ var CUSTOM_CONTENT_TYPE__INITIAL_STATE; typeof CUSTOM_CONTENT_TYPE__INITIAL_STATE === "object" || (CUSTOM_CONTENT_TYPE__INITIAL_STATE = JSON.parse(decodeURIComponent("%7B%22active%22%3Atrue%2C%22over_ride%22%3Afalse%2C%22should_show_testimonials%22%3Atrue%2C%22should_show_portfolios%22%3Atrue%7D"))); /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/_static/??-eJxtjU0OgjAQhS8kTJAE4sJ4FFPKCFOm00qnEG5vTXRj3Lzke3k/sMfKBlEUBZ+ryHkiScC0YIJnxoyzkZFxrV06wf+wQ43GLh8GH4LAncTCkIlHIHmQkGKV7BqYv3zUnuR3VWf05TjmAXQvxlGUNwSXQMxGk1EK79LNX5u+bfvufGla9wIO5UmZ'></script> <script type="text/javascript" src="https://platform.twitter.com/widgets.js?ver=20111117" id="twitter-widgets-js"></script> <script type="text/javascript" id="jetpack-carousel-js-extra"> /* <![CDATA[ */ var jetpackSwiperLibraryPath = {"url":"https:\/\/s2.wp.com\/wp-content\/mu-plugins\/jetpack-plugin\/moon\/_inc\/build\/carousel\/swiper-bundle.min.js"}; var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https:\/\/log.alexm.org\/wp-admin\/admin-ajax.php","nonce":"1b7b909c4d","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https:\/\/alexmuntada.wordpress.com\/wp-login.php?redirect_to=https%3A%2F%2Flog.alexm.org%2F2012%2F10%2F01%2Fplease-mount-volume-or-label-a-new-one%2F","blog_id":"6513608","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=6513608&v=wpcom&tz=1&user_id=0&subd=alexmuntada","is_public":"1"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/carousel/jetpack-carousel.min.js?m=1733853428i'></script> <script type="text/javascript" crossorigin='anonymous' src="https://s0.wp.com/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/tiled-gallery/tiled-gallery/tiled-gallery.min.js?m=1725888675i&ver=14.4-a.6" id="tiled-gallery-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="sharing-js-js-extra"> /* <![CDATA[ */ var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s0.wp.com/_static/??/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/sharedaddy/sharing.min.js,/wp-content/mu-plugins/carousel-wpcom/carousel-wpcom.js?m=1725888675j'></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 type="text/javascript"> (function() { var extend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; }; extend( window.infiniteScroll.settings.scripts, ["jetpack-mu-wpcom-settings","rlt-proxy","jquery-core","jquery-migrate","jquery","wpcom-actionbar-placeholder","grofiles-cards","wpgroho","mobile-useragent-info","custom-content-types-data","jetpack_likes_queuehandler","the-neverending-homepage","twentytwelve-navigation","twitter-widgets","jetpack-carousel","tiled-gallery","sharing-js","carousel-wpcom"] ); extend( window.infiniteScroll.settings.styles, ["jetpack_likes","the-neverending-homepage","wp-block-library","wp-block-library-theme","jetpack-layout-grid","jetpack-ratings","mediaelement","wp-mediaelement","coblocks-frontend","wpcom-core-compat-playlist-styles","wpcom-bbpress2-staff-css","twentytwelve-style","twentytwelve-block-style","twentytwelve-wpcom-style","reblogging","geo-location-flair","infinity-twentytwelve","sharedaddy","social-logos","h4-global","wp-emoji-styles","videopress-video-style","jetpack-sharing-buttons-style","classic-theme-styles","global-styles","twentytwelve-fonts","twentytwelve-ie","akismet-widget-style","jetpack-global-styles-frontend-style","jetpack-carousel-swiper-css","jetpack-carousel","tiled-gallery","core-block-supports-duotone"] ); })(); </script> <span id="infinite-aria" aria-live="polite"></span> <iframe src='https://widgets.wp.com/likes/master.html?ver=20250219#ver=20250219&origin=https://log.alexm.org' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe> <div id='likes-other-gravatars' class='wpl-new-layout' 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?68" defer></script> <script type="text/javascript"> _tkq = window._tkq || []; _stq = window._stq || []; _tkq.push(['storeContext', {'blog_id':'6513608','blog_tz':'1','user_lang':'en','blog_lang':'en','user_id':'0'}]); _stq.push(['view', {'blog':'6513608','v':'wpcom','tz':'1','user_id':'0','subd':'alexmuntada'}]); _stq.push(['extra', {'crypt':'UE40eW5QN0p8M2Y/RE1mNzc2NTVTamdsd0xoLz9RQkM2K298TXY9bERQMXc2MjhEaVZfb2wwakRoSj0mUkp1THptM1NdbkV1WjZIcU9mVWQmPUIvMlN6Jk8wW3NYVEJ3dWZOWExuWD9VNTEucGVsfEdudndPUHpBZkFZSlEyY0ZvWWVnPVFCdkNGLXRYYUJNSEF5cVI/dyxnLFBYdXVlMn5wMU9SJndJTUZmaEw2dzI0ekx0d0ZPTD8lNmtEMD93cHBvVnBzTCZVV3xETlFoTGx3U3RtRDcyLlQ/eVtZLz80cE54bXNsW3lGNjdSZEIueHQrdFVKWWgmbVZLeiZbbmRdR1prVWU2MnJQLW18cD9JLjAyU2s3P3BddXhIaXVnajl+czNtVn5jOS5bXVR5KyxkSlhjQlRWd0k2cGMubSY3XVhJRU5wemFaNjA='}]); _stq.push([ 'clickTrackerInit', '6513608', '0' ]); </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> <script defer id="bilmur" data-provider="wordpress.com" data-service="simple" src="/wp-content/js/bilmur-4.min.js?i=12&m=202508"></script><script> ( function() { function getMobileUserAgentInfo() { if ( typeof wpcom_mobile_user_agent_info === 'object' ) { wpcom_mobile_user_agent_info.init(); var mobileStatsQueryString = ''; if ( wpcom_mobile_user_agent_info.matchedPlatformName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_platforms' + '=' + wpcom_mobile_user_agent_info.matchedPlatformName; } if ( wpcom_mobile_user_agent_info.matchedUserAgentName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_devices' + '=' + wpcom_mobile_user_agent_info.matchedUserAgentName; } if ( wpcom_mobile_user_agent_info.isIPad() ) { mobileStatsQueryString += '&x_' + 'ipad_views' + '=' + 'views'; } if ( mobileStatsQueryString != '' ) { new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?v=wpcom-no-pv' + mobileStatsQueryString + '&baba=' + Math.random(); } } } document.addEventListener( 'DOMContentLoaded', getMobileUserAgentInfo ); } )(); </script></body> </html>