CINXE.COM

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="generator" content="Gatsby 4.24.4"/><meta data-react-helmet="true" name="description" content="Steve is an experienced software architect and trainer, focusing currently on ASP.NET Core and Domain-Driven Design."/><meta data-react-helmet="true" name="theme-color" content="#fff"/><meta data-react-helmet="true" property="og:type" content="business.business"/><meta data-react-helmet="true" property="og:title" content="Ardalis is Steve Smith - ardalis"/><meta data-react-helmet="true" property="og:url" content="/"/><meta data-react-helmet="true" property="og:image" content="/img/og-image.jpg"/><style data-href="/styles.eb8fec05cba5de708da7.css" data-identity="gatsby-global-css">@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400);pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{border-right:1px solid #999;font-size:100%;left:-3.8em;letter-spacing:-1px;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;user-select:none;width:3em}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{color:#999;content:counter(linenumber);display:block;padding-right:.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;text-align:right;-webkit-user-select:none;user-select:none}.command-line-prompt>span:before{content:" ";display:block;opacity:.7;padding-right:.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user=root]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}.command-line-prompt>span[data-continuation-prompt]:before{content:attr(data-continuation-prompt)}.command-line span.token.output{opacity:.7}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#f8f8f2;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5;text-shadow:0 1px rgba(0,0,0,.3)}pre[class*=language-]{border-radius:.3em;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.entity{cursor:help}.badgescard,.firstinfo{align-items:center;display:flex;justify-content:center}.container{background-color:#fff;z-index:10}.content-card{-webkit-animation:animatop .9s cubic-bezier(.425,1.14,.47,1.125) forwards;animation:animatop .9s cubic-bezier(.425,1.14,.47,1.125) forwards;position:relative}.card{border-radius:3px;box-shadow:0 10px 20px rgba(0,0,0,.2);font-size:18px;min-height:100px;overflow:hidden;padding:20px;width:700px}.card:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:300px;position:absolute;width:190px}.card-sidebar{background-color:#fff;border-radius:3px;font-size:15px;left:0;margin-top:-4%;min-height:100px;overflow:hidden;padding:10px;position:relative;width:400px!important}.card-sidebar:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:300px;position:absolute;width:190px}.tile.is-child{width:100%}.tile:not(.is-child){display:flex;width:100%}@media only screen and (max-width:1024px){.card{display:none}.card-sidebar,.recent-post{width:100%!important}.twitter-timeline{margin-left:2%!important;width:600px!important}.blog-list-item .featured-thumbnail{margin:0 0 1em;text-align:center;width:100%}.blog-list-item header{display:block;width:800px!important}}@media only screen and (max-width:480px){.card{display:none}.card-sidebar{background-color:#fff;border-radius:3px;font-size:12px;left:0;min-height:180px;overflow:hidden;padding:0;position:relative;width:340px!important}.card-sidebar:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:240px;position:absolute;width:150px}.sidebar{left:50%!important;margin:0!important;visibility:collapse;width:380px!important}.tile:not(.is-child){display:block;width:100%}.recent-post{width:320px!important}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding-bottom:0!important;padding-left:0!important;padding-right:0!important;padding-top:0}.MuiButton-root{margin-left:-5%!important;margin-top:5%!important}.MuiOutlinedInput-input{padding:14.5px 10px!important;width:280px!important}}@media only screen and (min-width:320px){.MuiOutlinedInput-input{padding:14.5px 10px!important;width:250px!important}}.sidebar{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;display:block;left:50%;padding-top:1.25rem;position:absolute;-webkit-transform:translate(-50%);transform:translate(-50%);z-index:0}.sidebar,ul li:before{font-weight:400;line-height:20px}.sidebar,h2,ul li:before{float:none;list-style:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIlJREFUeNpiYCATMKILmBbuMABSAUA84XS/xwdcGpmwiO0H4noQDTREgBSNMGCATzM2jYXEaGbEZhpQYQKQmo8kdAGIHZH9jNWpQAULgFQims3rifUjyBaSQhUWJaDQhfntA5rfccYjuiaQ/y4QE494NRHyI05NIMCCRcwRmuQWADU9YKA2AAgwANXjLnb5SuGCAAAAAElFTkSuQmCC);padding-right:.5em;position:relative;text-decoration:none}.sidebar,h2{font-weight:700;line-height:30px}.twitter-timeline{margin-left:2%!important}.firstinfo{flex-direction:row;padding:0;position:relative;z-index:2}.firstinfo img{border-radius:50%;height:120px;width:120px}.firstinfo .profileinfo{padding:0 10px 0 0}.firstinfo .profileinfo h1{font-size:1.8em}.firstinfo .profileinfo h3{color:#3571b8;font-size:1.2em;font-style:italic}.firstinfo .profileinfo p.bio{color:#5a5a5a;font-style:normal;line-height:1.2;padding:0}@-webkit-keyframes animatop{0%{bottom:-500px;opacity:0}to{bottom:0;opacity:1}}@keyframes animatop{0%{bottom:-500px;opacity:0}to{bottom:0;opacity:1}}@-webkit-keyframes animainfos{0%{bottom:10px}to{bottom:-42px}}@keyframes animainfos{0%{bottom:10px}to{bottom:-42px}}@-webkit-keyframes rotatemagic{0%{left:-253px;opacity:0;top:-24px;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{left:-78px;top:-24px;-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}}@keyframes rotatemagic{0%{left:-253px;opacity:0;top:-24px;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{left:-78px;top:-24px;-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}}.message-body{border-color:#5bc0de!important;border-radius:4px!important;border-style:solid;border-width:0 0 0 6px!important;font-size:1.7em}cite{color:#5bc0de!important}form input{border:2px;border-radius:6px;box-shadow:0 4px 1px rgba(0,0,0,.1);display:block;font-family:Merriweather,sans-serif;font-size:1.5em;margin-top:.5em;outline:0;padding:.7em;resize:none;width:60%}.form-control input:focus{background-color:#ffdae8}.section{padding:.8rem 1.5rem!important}.box{box-shadow:none!important}.navbar{font-size:1.2em;font-variant:unset;font-weight:600;min-height:5em}.recent-post{align-items:center;display:block;font-size:1em;margin-left:13px;width:340px}.recent-post,ul li:before{float:none;font-weight:400;left:3%;line-height:30px;list-style:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIlJREFUeNpiYCATMKILmBbuMABSAUA84XS/xwdcGpmwiO0H4noQDTREgBSNMGCATzM2jYXEaGbEZhpQYQKQmo8kdAGIHZH9jNWpQAULgFQims3rifUjyBaSQhUWJaDQhfntA5rfccYjuiaQ/y4QE494NRHyI05NIMCCRcwRmuQWADU9YKA2AAgwANXjLnb5SuGCAAAAAElFTkSuQmCC);padding-right:.5em;position:relative;text-decoration:none}@media print,screen and (min-width:769px){.column.is-12{flex:none;width:100%}}.subtitle{font-size:1rem!important;padding-top:4px}@media screen and (max-width:768px){.blog-list-item .featured-thumbnail{margin:0 0 1em;max-width:100%;text-align:center}.blog-list-item header{display:block;width:360px!important}}@media screen and (min-width:1024px){.navbar{min-height:4.25rem!important}}pre{font-family:Courier\ 10 Pitch,Courier,monospace;white-space:pre}code,pre{font-size:95%;line-height:140%;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-o-pre-wrap}code{background:#faf8f0;font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace}#content code{border:1px solid #bebab0;display:block;padding:.5em 1em}body{margin:0;overflow:hidden;padding:0;width:100vw}.content .taglist{line-height:.5px!important;padding:2px!important}.MuiButton-root{height:55px!important;left:5%!important}.MuiOutlinedInput-input{width:300px!important}.MuiButton-containedPrimary{background-color:#3571b8!important;color:#fff}.form{left:55%!important;padding:10px!important}.content .catlist{align-items:center;display:block;flex-wrap:wrap;justify-content:left;list-style:none;margin:1.5rem 1.5rem 0 0;word-break:break-word!important}.gatsby-highlight-code-line{background-color:#feb;border-left:.25em solid #f99;display:block;margin-left:-1em;margin-right:-1em;padding-left:.75em;padding-right:1em}.gatsby-highlight pre[class*=language-].line-numbers{overflow:initial;padding:0 0 0 2.8em}.googletextbox{font-size:1em;padding:.1em}code[class*=language-],pre[class*=language-]{color:#9efeff;direction:ltr;font-family:Operator Mono,Fira Code,Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:17px;font-weight:400;-webkit-hyphens:none;hyphens:none;letter-spacing:.5px;line-height:25px;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #222245;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-] ::selection,code[class*=language-]::-moz-selection,code[class*=language-]::selection,pre[class*=language-] ::-moz-selection,pre[class*=language-] ::selection,pre[class*=language-]::-moz-selection,pre[class*=language-]::selection{background:#a599e9;color:inherit}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:2em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1e1e3f}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em}.token{font-weight:400}.token.cdata,.token.comment,.token.prolog{color:#b362ff}.token.atrule,.token.delimiter,.token.important,.token.keyword,.token.selector{color:#ff9d00}.token.attr-name,.token.operator{color:#ffb454}.token.punctuation{color:#fff}.token.boolean{color:#ff628c}.token.builtin,.token.doctype,.token.tag,.token.tag .punctuation{color:#ff9d00}.token.entity,.token.symbol{color:#6897bb}.token.constant,.token.number,.token.property,.token.variable{color:#ff628c}.token.char,.token.string{color:#a5ff90}.token.attr-value,.token.attr-value .punctuation{color:#a5c261}.token.attr-value .punctuation:first-child{color:#a9b7c6}.token.url{color:#287bde;text-decoration:underline}.token.function{color:#fad000}.token.regex{background:#364135}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.inserted{background:#0f0}.token.deleted{background:#ff000d}code.language-css .token.property,code.language-css .token.property+.token.punctuation{color:#a9b7c6}code.language-css .token.id,code.language-css .token.selector>.token.attribute,code.language-css .token.selector>.token.class,code.language-css .token.selector>.token.pseudo-class,code.language-css .token.selector>.token.pseudo-element{color:#ffc66d}.token.class-name{color:#fb94ff}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:none}pre .line-highlight,pre .line-highlight.line-highlight,pre>code.line-highlight{background:linear-gradient(90deg,rgba(179,98,255,.17),transparent);margin-top:36px}pre .line-highlight:before,pre .line-highlight[data-end]:after,pre>code.line-highlight:before,pre>code.line-highlight[data-end]:after{content:""}pre code{padding-left:0}.navbar .navbar-menu{box-shadow:none!important}.content .taglist{align-items:center;display:flex;flex-wrap:wrap;justify-content:left;list-style:none;margin:1.5rem 1.5rem 0 0}.content .taglist li{margin-bottom:1.5rem;margin-top:0;padding:0 2rem 1rem 0}.full-width-image-container{left:50%;margin:2em -50vw;position:relative;right:50%}.full-width-image,.full-width-image-container{align-items:center;background-position:bottom;background-size:cover;display:flex;height:400px;justify-content:center;width:100vw}.btn{background-color:#fff;border-radius:.25rem;box-shadow:inset 0 0 0 2px #3571b8;color:#000;display:inline-block;font-size:18px;font-size:1rem;font-weight:700;line-height:1.25;padding:12px 16px 10px;text-align:center;text-decoration:none;transition:all .15s ease}.btn:hover{background-color:#3571b8;color:#fff}.margin-top-0{margin-top:0!important}.navbar-item .icon{color:#2b2523}.icon svg{fill:currentColor;height:1.5rem;width:1.5rem}.navbar-brand .navbar-item.logo{padding:0 1rem}footer.footer{background-color:transparent;padding:3rem 0 0}.social{padding:2em}.social a{background-color:#f5f5f5;border-radius:1em;display:inline;height:1em;margin:.5em;padding:.5em .5em .3em;vertical-align:middle;width:1em}.blog-list-item.is-featured{background-color:#2989d879}.blog-list-item header{display:flex;margin-bottom:1em}.blog-list-item .featured-thumbnail{flex-basis:100%;margin:0}/*! bulma.io v0.8.2 | MIT License | github.com/jgthms/bulma */@-webkit-keyframes spinAround{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.button{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.box:not(:last-child),.content:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.subtitle:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.button,.input,.textarea{align-items:center;-moz-appearance:none;-webkit-appearance:none;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding:calc(.5em - 1px) calc(.75em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.input:active,.input:focus,.is-active.button,.is-active.input,.is-active.textarea,.textarea:active,.textarea:focus{outline:none}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */body,h1,h2,h3,h4,html,li,p,textarea,ul{margin:0;padding:0}h1,h2,h3,h4{font-size:100%;font-weight:400}ul{list-style:none}button,input,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}html{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:#fff;font-size:16px;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility}article,footer,header,section{display:block}body,button,input,textarea{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}code{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#333;font-size:1em;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#f14668;font-size:.875em;font-weight:400;padding:.25em .5em}img{height:auto;max-width:100%}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}@media screen and (max-width:768px){.is-size-3-mobile{font-size:2rem!important}.is-size-5-mobile{font-size:1.25rem!important}}@media print,screen and (min-width:769px){.is-size-2-tablet{font-size:2.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-4-widescreen{font-size:1.5rem!important}}.has-text-centered{text-align:center!important}.has-background-black{background-color:#2b2523!important}.has-text-primary{color:#2b2523!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#0f0d0c!important}.has-text-white-ter{color:#f5f5f5!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-block{display:block!important}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px #3273dc}a.box:active{box-shadow:inset 0 1px 2px rgba(43,37,35,.2),0 0 0 1px #3273dc}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding:calc(.5em - 1px) 1em;text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover{border-color:#b5b5b5;color:#363636}.button:focus{border-color:#3273dc;color:#363636}.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link:hover{background-color:#276cda}.button.is-link:focus,.button.is-link:hover{border-color:transparent;color:#fff}.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container{max-width:1152px}}@media screen and (min-width:1408px){.container{max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.icon{align-items:center;display:inline-flex;height:1.5rem;justify-content:center;width:1.5rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.notification{background-color:#f5f5f5;border-radius:4px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code{background:#fff}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-link{background-color:#3273dc;color:#fff}@-webkit-keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle span,.title span{font-weight:inherit}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-4{font-size:1.5rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.input,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.textarea:active,.textarea:focus{border-color:#3273dc;box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(43,37,35,.05);max-width:100%;width:100%}.is-link.input,.is-link.textarea{border-color:#3273dc}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.field:not(:last-child){margin-bottom:.75rem}.control{box-sizing:border-box;clear:both;font-size:1rem;text-align:left}.card,.control{position:relative}.card{background-color:#fff;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;max-width:100%}.menu,.message{font-size:1rem}.message{background-color:#f5f5f5;border-radius:4px}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-link{background-color:#eef3fc}.message.is-link .message-body{border-color:#3273dc;color:#2160c4}.message-body{border:solid #dbdbdb;border-radius:4px;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.navbar{background-color:#fff}.navbar{min-height:3.25rem;position:relative;z-index:30}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}}.navbar>.container{width:100%}.navbar-brand,.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem}.navbar-brand{flex-shrink:0}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;margin-left:auto;position:relative;width:3.25rem}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;-webkit-transform-origin:center;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,-webkit-transform;transition-property:background-color,opacity,transform;transition-property:background-color,opacity,transform,-webkit-transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{-webkit-transform:translateY(5px) rotate(45deg);transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:translateY(-5px) rotate(-45deg);transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}a.navbar-item{cursor:pointer}a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#3273dc}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{align-items:center;display:flex}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(43,37,35,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar-burger{display:none}.navbar-item{align-items:center;display:flex}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}a.navbar-item.is-active{color:#2b2523}a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}@media print,screen and (min-width:769px){.column.is-offset-1{margin-left:8.33333%}.column.is-4{flex:none;width:33.33333%}.column.is-6{flex:none;width:50%}.column.is-7{flex:none;width:58.33333%}.column.is-10{flex:none;width:83.33333%}.column.is-12{flex:none;width:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:.75rem}.columns.is-multiline{flex-wrap:wrap}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media print,screen and (min-width:769px){.tile:not(.is-child){display:flex}.tile.is-4{flex:none;width:33.33333%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-10{flex:none;width:83.33333%}.tile.is-12{flex:none;width:100%}}.section{padding:3rem 1.5rem}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}@media screen and (min-width:769px) and (max-width:1023px){.blog-list-item .featured-thumbnail{flex-basis:50%}}@media screen and (max-width:768px){.blog-list-item header{display:block}.blog-list-item .featured-thumbnail{margin:0 0 1em;max-width:70%;text-align:center}}a{text-decoration:none}</style><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', 'GTM-NVBMVX8');</script><title data-react-helmet="true">Productivity | Ardalis is Steve Smith - ardalis</title><link data-react-helmet="true" rel="alternate" type="application/rss+xml" title="RSS Feed for Ardalis" href="/rss.xml/"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"/><link data-react-helmet="true" rel="icon" type="image/png" href="/img/favicon-32x32.png" sizes="32x32"/><link data-react-helmet="true" rel="icon" type="image/png" href="/img/favicon-16x16.png" sizes="16x16"/><link data-react-helmet="true" rel="mask-icon" href="/img/safari-pinned-tab.svg" color="#ff4400"/><link rel="sitemap" type="application/xml" href="/sitemap/sitemap-index.xml"/><style id="jss-server-side"></style></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NVBMVX8" height="0" width="0" style="display: none; visibility: hidden" aria-hidden="true"></iframe></noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><div><nav class="navbar is-transparent" role="navigation" aria-label="main-navigation"><div class="container"><div class="navbar-brand"><a class="navbar-item" title="Logo" href="/"><img src="data:image/png;base64,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" alt="Ardalis" style="width:150px"/></a><div class="navbar-burger burger " data-target="navMenu" role="button" tabindex="0"><span></span><span></span><span></span></div></div><div id="navMenu" class="navbar-menu "><div class="navbar-start has-text-centered"><a class="navbar-item" href="/blog">Blog</a><a class="navbar-item" href="/training-classes">Training</a><a class="navbar-item" href="/mentoring">Mentoring</a><a class="navbar-item" href="/tips">Subscribe</a><a class="navbar-item" href="/interviews">Interviews</a><a class="navbar-item" href="/books">Books</a><a class="navbar-item" href="/tools-used">Tools Used</a><a class="navbar-item" href="/contact-us">Contact</a></div><div class="navbar-end has-text-centered"><a class="navbar-item" href="https://www.facebook.com/StevenAndrewSmith" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RmFjZWJvb2sgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIyLjY3NiAwSDEuMzI0Qy41OTMgMCAwIC41OTMgMCAxLjMyNHYyMS4zNTJDMCAyMy40MDguNTkzIDI0IDEuMzI0IDI0aDExLjQ5NHYtOS4yOTRIOS42ODl2LTMuNjIxaDMuMTI5VjguNDFjMC0zLjA5OSAxLjg5NC00Ljc4NSA0LjY1OS00Ljc4NSAxLjMyNSAwIDIuNDY0LjA5NyAyLjc5Ni4xNDF2My4yNGgtMS45MjFjLTEuNSAwLTEuNzkyLjcyMS0xLjc5MiAxLjc3MXYyLjMxMWgzLjU4NGwtLjQ2NSAzLjYzSDE2LjU2VjI0aDYuMTE1Yy43MzMgMCAxLjMyNS0uNTkyIDEuMzI1LTEuMzI0VjEuMzI0QzI0IC41OTMgMjMuNDA4IDAgMjIuNjc2IDAiLz48L3N2Zz4=" alt="facebook"/></span></a><a class="navbar-item" href="https://www.linkedin.com/in/stevenandrewsmith" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW4gaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIwLjQ0NyAyMC40NTJoLTMuNTU0di01LjU2OWMwLTEuMzI4LS4wMjctMy4wMzctMS44NTItMy4wMzctMS44NTMgMC0yLjEzNiAxLjQ0NS0yLjEzNiAyLjkzOXY1LjY2N0g5LjM1MVY5aDMuNDE0djEuNTYxaC4wNDZjLjQ3Ny0uOSAxLjYzNy0xLjg1IDMuMzctMS44NSAzLjYwMSAwIDQuMjY3IDIuMzcgNC4yNjcgNS40NTV2Ni4yODZ6TTUuMzM3IDcuNDMzYy0xLjE0NCAwLTIuMDYzLS45MjYtMi4wNjMtMi4wNjUgMC0xLjEzOC45Mi0yLjA2MyAyLjA2My0yLjA2MyAxLjE0IDAgMi4wNjQuOTI1IDIuMDY0IDIuMDYzIDAgMS4xMzktLjkyNSAyLjA2NS0yLjA2NCAyLjA2NXptMS43ODIgMTMuMDE5SDMuNTU1VjloMy41NjR2MTEuNDUyek0yMi4yMjUgMEgxLjc3MUMuNzkyIDAgMCAuNzc0IDAgMS43Mjl2MjAuNTQyQzAgMjMuMjI3Ljc5MiAyNCAxLjc3MSAyNGgyMC40NTFDMjMuMiAyNCAyNCAyMy4yMjcgMjQgMjIuMjcxVjEuNzI5QzI0IC43NzQgMjMuMiAwIDIyLjIyMiAwaC4wMDN6Ii8+PC9zdmc+" alt="linkedin"/></span></a><a class="navbar-item" href="https://twitter.com/ardalis" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+VHdpdHRlciBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuOTU0IDQuNTY5Yy0uODg1LjM4OS0xLjgzLjY1NC0yLjgyNS43NzUgMS4wMTQtLjYxMSAxLjc5NC0xLjU3NCAyLjE2My0yLjcyMy0uOTUxLjU1NS0yLjAwNS45NTktMy4xMjcgMS4xODQtLjg5Ni0uOTU5LTIuMTczLTEuNTU5LTMuNTkxLTEuNTU5LTIuNzE3IDAtNC45MiAyLjIwMy00LjkyIDQuOTE3IDAgLjM5LjA0NS43NjUuMTI3IDEuMTI0QzcuNjkxIDguMDk0IDQuMDY2IDYuMTMgMS42NCAzLjE2MWMtLjQyNy43MjItLjY2NiAxLjU2MS0uNjY2IDIuNDc1IDAgMS43MS44NyAzLjIxMyAyLjE4OCA0LjA5Ni0uODA3LS4wMjYtMS41NjYtLjI0OC0yLjIyOC0uNjE2di4wNjFjMCAyLjM4NSAxLjY5MyA0LjM3NCAzLjk0NiA0LjgyNy0uNDEzLjExMS0uODQ5LjE3MS0xLjI5Ni4xNzEtLjMxNCAwLS42MTUtLjAzLS45MTYtLjA4Ni42MzEgMS45NTMgMi40NDUgMy4zNzcgNC42MDQgMy40MTctMS42OCAxLjMxOS0zLjgwOSAyLjEwNS02LjEwMiAyLjEwNS0uMzkgMC0uNzc5LS4wMjMtMS4xNy0uMDY3IDIuMTg5IDEuMzk0IDQuNzY4IDIuMjA5IDcuNTU3IDIuMjA5IDkuMDU0IDAgMTMuOTk5LTcuNDk2IDEzLjk5OS0xMy45ODYgMC0uMjA5IDAtLjQyLS4wMTUtLjYzLjk2MS0uNjg5IDEuOC0xLjU2IDIuNDYtMi41NDhsLS4wNDctLjAyeiIvPjwvc3ZnPg==" alt="twitter"/></span></a><a class="navbar-item" href="https://www.youtube.com/ardalis/" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48dGl0bGU+WW91VHViZSBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuNDk1IDYuMjA1YTMuMDA3IDMuMDA3IDAgMCAwLTIuMDg4LTIuMDg4Yy0xLjg3LS41MDEtOS4zOTYtLjUwMS05LjM5Ni0uNTAxcy03LjUwNy0uMDEtOS4zOTYuNTAxQTMuMDA3IDMuMDA3IDAgMCAwIC41MjcgNi4yMDVhMzEuMjQ3IDMxLjI0NyAwIDAgMC0uNTIyIDUuODA1IDMxLjI0NyAzMS4yNDcgMCAwIDAgLjUyMiA1Ljc4MyAzLjAwNyAzLjAwNyAwIDAgMCAyLjA4OCAyLjA4OGMxLjg2OC41MDIgOS4zOTYuNTAyIDkuMzk2LjUwMnM3LjUwNiAwIDkuMzk2LS41MDJhMy4wMDcgMy4wMDcgMCAwIDAgMi4wODgtMi4wODggMzEuMjQ3IDMxLjI0NyAwIDAgMCAuNS01Ljc4MyAzMS4yNDcgMzEuMjQ3IDAgMCAwLS41LTUuODA1ek05LjYwOSAxNS42MDFWOC40MDhsNi4yNjQgMy42MDJ6Ii8+PC9zdmc+" alt="youtube"/></span></a><a class="navbar-item" href="https://github.com/ardalis" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0iQ2FwYV8xIiB3aWR0aD0iNDM4LjU0OSIgaGVpZ2h0PSI0MzguNTQ5IiB4PSIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MzguNTQ5IDQzOC41NDkiIHk9IjAiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQzOC41NDkgNDM4LjU0OSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggZD0iTTQwOS4xMzIsMTE0LjU3M2MtMTkuNjA4LTMzLjU5Ni00Ni4yMDUtNjAuMTk0LTc5Ljc5OC03OS44QzI5NS43MzYsMTUuMTY2LDI1OS4wNTcsNS4zNjUsMjE5LjI3MSw1LjM2NSBjLTM5Ljc4MSwwLTc2LjQ3Miw5LjgwNC0xMTAuMDYzLDI5LjQwOGMtMzMuNTk2LDE5LjYwNS02MC4xOTIsNDYuMjA0LTc5LjgsNzkuOEM5LjgwMywxNDguMTY4LDAsMTg0Ljg1NCwwLDIyNC42MyBjMCw0Ny43OCwxMy45NCw5MC43NDUsNDEuODI3LDEyOC45MDZjMjcuODg0LDM4LjE2NCw2My45MDYsNjQuNTcyLDEwOC4wNjMsNzkuMjI3YzUuMTQsMC45NTQsOC45NDUsMC4yODMsMTEuNDE5LTEuOTk2IGMyLjQ3NS0yLjI4MiwzLjcxMS01LjE0LDMuNzExLTguNTYyYzAtMC41NzEtMC4wNDktNS43MDgtMC4xNDQtMTUuNDE3Yy0wLjA5OC05LjcwOS0wLjE0NC0xOC4xNzktMC4xNDQtMjUuNDA2bC02LjU2NywxLjEzNiBjLTQuMTg3LDAuNzY3LTkuNDY5LDEuMDkyLTE1Ljg0NiwxYy02LjM3NC0wLjA4OS0xMi45OTEtMC43NTctMTkuODQyLTEuOTk5Yy02Ljg1NC0xLjIzMS0xMy4yMjktNC4wODYtMTkuMTMtOC41NTkgYy01Ljg5OC00LjQ3My0xMC4wODUtMTAuMzI4LTEyLjU2LTE3LjU1NmwtMi44NTUtNi41N2MtMS45MDMtNC4zNzQtNC44OTktOS4yMzMtOC45OTItMTQuNTU5IGMtNC4wOTMtNS4zMzEtOC4yMzItOC45NDUtMTIuNDE5LTEwLjg0OGwtMS45OTktMS40MzFjLTEuMzMyLTAuOTUxLTIuNTY4LTIuMDk4LTMuNzExLTMuNDI5Yy0xLjE0Mi0xLjMzMS0xLjk5Ny0yLjY2My0yLjU2OC0zLjk5NyBjLTAuNTcyLTEuMzM1LTAuMDk4LTIuNDMsMS40MjctMy4yODljMS41MjUtMC44NTksNC4yODEtMS4yNzYsOC4yOC0xLjI3Nmw1LjcwOCwwLjg1M2MzLjgwNywwLjc2Myw4LjUxNiwzLjA0MiwxNC4xMzMsNi44NTEgYzUuNjE0LDMuODA2LDEwLjIyOSw4Ljc1NCwxMy44NDYsMTQuODQyYzQuMzgsNy44MDYsOS42NTcsMTMuNzU0LDE1Ljg0NiwxNy44NDdjNi4xODQsNC4wOTMsMTIuNDE5LDYuMTM2LDE4LjY5OSw2LjEzNiBjNi4yOCwwLDExLjcwNC0wLjQ3NiwxNi4yNzQtMS40MjNjNC41NjUtMC45NTIsOC44NDgtMi4zODMsMTIuODQ3LTQuMjg1YzEuNzEzLTEyLjc1OCw2LjM3Ny0yMi41NTksMTMuOTg4LTI5LjQxIGMtMTAuODQ4LTEuMTQtMjAuNjAxLTIuODU3LTI5LjI2NC01LjE0Yy04LjY1OC0yLjI4Ni0xNy42MDUtNS45OTYtMjYuODM1LTExLjE0Yy05LjIzNS01LjEzNy0xNi44OTYtMTEuNTE2LTIyLjk4NS0xOS4xMjYgYy02LjA5LTcuNjE0LTExLjA4OC0xNy42MS0xNC45ODctMjkuOTc5Yy0zLjkwMS0xMi4zNzQtNS44NTItMjYuNjQ4LTUuODUyLTQyLjgyNmMwLTIzLjAzNSw3LjUyLTQyLjYzNywyMi41NTctNTguODE3IGMtNy4wNDQtMTcuMzE4LTYuMzc5LTM2LjczMiwxLjk5Ny01OC4yNGM1LjUyLTEuNzE1LDEzLjcwNi0wLjQyOCwyNC41NTQsMy44NTNjMTAuODUsNC4yODMsMTguNzk0LDcuOTUyLDIzLjg0LDEwLjk5NCBjNS4wNDYsMy4wNDEsOS4wODksNS42MTgsMTIuMTM1LDcuNzA4YzE3LjcwNS00Ljk0NywzNS45NzYtNy40MjEsNTQuODE4LTcuNDIxczM3LjExNywyLjQ3NCw1NC44MjMsNy40MjFsMTAuODQ5LTYuODQ5IGM3LjQxOS00LjU3LDE2LjE4LTguNzU4LDI2LjI2Mi0xMi41NjVjMTAuMDg4LTMuODA1LDE3LjgwMi00Ljg1MywyMy4xMzQtMy4xMzhjOC41NjIsMjEuNTA5LDkuMzI1LDQwLjkyMiwyLjI3OSw1OC4yNCBjMTUuMDM2LDE2LjE4LDIyLjU1OSwzNS43ODcsMjIuNTU5LDU4LjgxN2MwLDE2LjE3OC0xLjk1OCwzMC40OTctNS44NTMsNDIuOTY2Yy0zLjksMTIuNDcxLTguOTQxLDIyLjQ1Ny0xNS4xMjUsMjkuOTc5IGMtNi4xOTEsNy41MjEtMTMuOTAxLDEzLjg1LTIzLjEzMSwxOC45ODZjLTkuMjMyLDUuMTQtMTguMTgyLDguODUtMjYuODQsMTEuMTM2Yy04LjY2MiwyLjI4Ni0xOC40MTUsNC4wMDQtMjkuMjYzLDUuMTQ2IGM5Ljg5NCw4LjU2MiwxNC44NDIsMjIuMDc3LDE0Ljg0Miw0MC41Mzl2NjAuMjM3YzAsMy40MjIsMS4xOSw2LjI3OSwzLjU3Miw4LjU2MmMyLjM3OSwyLjI3OSw2LjEzNiwyLjk1LDExLjI3NiwxLjk5NSBjNDQuMTYzLTE0LjY1Myw4MC4xODUtNDEuMDYyLDEwOC4wNjgtNzkuMjI2YzI3Ljg4LTM4LjE2MSw0MS44MjUtODEuMTI2LDQxLjgyNS0xMjguOTA2IEM0MzguNTM2LDE4NC44NTEsNDI4LjcyOCwxNDguMTY4LDQwOS4xMzIsMTE0LjU3M3oiLz48L2c+PGRpdiBpZD0iZGl2U2NyaXB0c1VzZWQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiLz48c2NyaXB0IGlkPSJnbG9iYWxWYXJzRGV0ZWN0aW9uIiBzcmM9ImNocm9tZS1leHRlbnNpb246Ly9jbWtkYm1mbmRrZmdlYmxkaG5rYmZobG5lZWZkYWFpcC9qcy93cnNfZW52LmpzIi8+PC9zdmc+" alt="Github"/></span></a></div></div></div></nav><div><section class="section"><div class="container"><div class="columns"><div class="tile is-ancestor"><div class="tile is-vertical is-7"><div class="tile"><div class="tile is-parent"><article class="tile is-child box"><div class="content"><div class="column is-10 is-offset-1" style="margin-bottom:6rem"><h3 class="title is-size-4 is-bold-light">168 posts categorized under “Productivity”</h3><ul class="catlist"><li><a href="/you-should-blog/"><h2 class="is-size-2" style="width:100%;word-break:break-word">You Should Blog</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 August 2024</p><p style="width:100%;margin-top:2rem">As a software developer, you might spend most of your time immersed in code, solving problems, and building innovative solutions. But have you ever considered starting a blog? If you haven&#x27;t, let me give you some compelling reasons why you should. This is advice I frequently give to members of my developer group coaching program at devBetter.com. Watch the Video 1. Sharpen Your Skills One of the…</p><br/></li><li><a href="/stop-debugging-start-running-visual-studio/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Stop Debugging and Start Running in Visual Studio</h2><img src="/static/2770e9f7993e484c471178ad44cced3f/6050d/stop-debugging-start-running-visual-studio.png" alt="Stop Debugging and Start Running in Visual Studio" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->18 April 2024</p><p style="width:100%;margin-top:2rem">NOTE: Watch the video above to see actual timings of starting with and without debugging. Vote for this feature request to make Run vs Debug more obvious in Visual Studio.. Thanks! I work with a lot of different .NET developers as a trainer, architect, and consultant with NimblePros. One thing that I&#x27;m frequently pointing out to them is the difference in startup speed for their applications when…</p><br/></li><li><a href="/how-to-embed-youtube-video-in-github-readme-markdown/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Embed a YouTube Video in GitHub ReadMe Markdown</h2><img src="/static/5578ef900af9ca286377f7990f24a803/4e530/how-to-embed-youtube-video-in-github-readme-markdown.png" alt="How to Embed a YouTube Video in GitHub ReadMe Markdown" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 November 2023</p><p style="width:100%;margin-top:2rem">I keep wanting to do this and forgetting how, so I&#x27;m writing it down. Here&#x27;s how to embed a YouTube video in a GitHub ReadMe markdown file. Thanks for this Stack Overflow answer for the tip. Step 1: Get the YouTube Video ID The YouTube video ID is the part of the URL after the . For example, in the URL , the video ID is . You&#x27;ll need that for the next step. Step 2: Embed the Video To embed the…</p><br/></li><li><a href="/chrome-browser-tabs-to-links/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Chrome Browser Tabs to Links</h2><img src="/static/ebb4a00587ba523618b36f5f473bcdf6/4e530/chrome-browser-tabs-to-links.png" alt="Chrome Browser Tabs to Links" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 January 2023</p><p style="width:100%;margin-top:2rem">It often happens when you&#x27;re looking for a solution to a problem that you end up with a bunch of browser tabs open. Some were dead ends. Some added necessary clues along the way. All of them have some of the context of the thing you were trying to solve. That context took you time - hours, days even - to put together. And yes, there&#x27;s a great sense of relief in finally being able to close those…</p><br/></li><li><a href="/unsupported-audio-format-set-audio-output-pcm/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Solved: Unsupported audio format set the audio output to pulse code modulation PCM</h2><img src="/static/f3b4eb69eef11afc56d7ab34cb5e82b3/4e530/unsupported-audio-format-set-audio-output-pcm.png" alt="Solved: Unsupported audio format set the audio output to pulse code modulation PCM" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 August 2022</p><p style="width:100%;margin-top:2rem">Solved! My dell monitor had started showing an annoying error every 30 seconds or so saying &#x27;Unsupported audio format. Set the audio output to pulse code modulation PCM&#x27;. I solved it with a quick change to my video card settings. I&#x27;m sharing this here for future me when this happens again (probably with a new video card or a driver update), but hopefully it helps some of you as well. My monitor is…</p><br/></li><li><a href="/working-effectively-github-issues/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Working Effectively with GitHub Issues</h2><img src="/static/7b199aea269e6539a30501839d586475/4e530/working-effectively-github-issues.png" alt="Working Effectively with GitHub Issues" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 June 2022</p><p style="width:100%;margin-top:2rem">GitHub Issues offer a simpler approach to work item management than many other systems like Jira or Azure DevOps. Despite being lightweight, it can and is used to effectively track and prioritize work on thousands of projects of all sizes. Everything is an Issue In GitHub, every work item is an Issue. Issues can be decorated with tags that indicate whether a particular Issue is a Bug, Question…</p><br/></li><li><a href="/quickly-trimming-video-files/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Quickly Trimming Video Files</h2><img src="/static/673a95b4e930a063ce370824e885ad94/4e530/quickly-trimming-video-files.png" alt="Quickly Trimming Video Files" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 June 2022</p><p style="width:100%;margin-top:2rem">I do a fair bit of video editing as part of producing content for Pluralsight, clients, and YouTube. Recently I took on the task of editing 48 videos from the Stir Trek 2022 conference, each of which mostly just needed time trimmed from the start and end of the presentation. I tried my usual tools, but then I found a new tool that works much better! TechSmith Camtasia I&#x27;ve been using TechSmith…</p><br/></li><li><a href="/avoid-using-exceptions-determine-api-status/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Avoid Using Exceptions to Determine API Status Codes and Responses</h2><img src="/static/2448fafd367e7b0fd9e7b43137c5e22e/4e530/avoid-using-exceptions-determine-api-status.png" alt="Avoid Using Exceptions to Determine API Status Codes and Responses" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->16 November 2021</p><p style="width:100%;margin-top:2rem">It&#x27;s typical for API endpoints to call application or domain services. In the case of success, the API can simply return Ok and the result of the service call. But for non-success cases, should you use exceptions to communicate from the service to the endpoint, so that it can return an appropriate status code and response? Assuming you read the title of this article, you probably already know the…</p><br/></li><li><a href="/screencast-video-demo-checklist/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Screencast Video Demo Checklist</h2><img src="/static/b0f2b6fea99cb3cdb893656cca316a07/4e530/screencast-video-demo-checklist.png" alt="Screencast Video Demo Checklist" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->09 November 2021</p><p style="width:100%;margin-top:2rem">Recording a short screencast video can be a very effective way to provide a demo to stakeholders or show how a bug can be reproduced. Follow this checklist to make sure you don&#x27;t miss something important. In a previous article, I wrote about how to make better, faster demos using screencast videos. Once you&#x27;ve got that all sorted out and have chosen the technology you want to use to record and…</p><br/></li><li><a href="/markdown-code-block-syntax-highlighting-and-diff/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Markdown Code Block Syntax Highlighting and Diff</h2><img src="/static/bd35ea6896cd4e45dd1ecd440df2b441/4e530/markdown-code-block-syntax-highlighting-and-diff.png" alt="Markdown Code Block Syntax Highlighting and Diff" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->03 November 2021</p><p style="width:100%;margin-top:2rem">If you&#x27;re writing blog posts, GitHub content, and/or Stack Over flow questions and answers using Markdown, it&#x27;s often helpful to show code in code blocks of within code fences. Did you know these support many different languages to allow for proper syntax highlighting, including a diff &#x27;language&#x27;? Markdown code fences Markdown is a great language to use to write content in, because it offers built…</p><br/></li><li><a href="/better-faster-demos-with-screencast-videos/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Better Faster Demos with Screencast Videos</h2><img src="/static/b9a9a599a940cd87ad9cf4f6977e7f0f/4e530/better-faster-demos-with-screencast-videos.png" alt="Better Faster Demos with Screencast Videos" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 October 2021</p><p style="width:100%;margin-top:2rem">Do you ever need to demo your app to users, customers, or stakeholders? Is it part of your regular software delivery process? What about when you want to describe to a coworker how a new feature should work, or what the repro of a bug looks like? If pictures are worth 1000 words, videos are worth millions. Let&#x27;s explore some scenarios in which video could be useful and usually far more efficient…</p><br/></li><li><a href="/script-new-dotnet-solution-from-cli/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Create a new Solution and Projects using dotnet CLI</h2><img src="/static/c8f8b1640918fd48e7de3f007469fa18/4e530/create-new-solution-and-projects-using-dotnet-cli.png" alt="How to Create a new Solution and Projects using dotnet CLI" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->17 August 2021</p><p style="width:100%;margin-top:2rem">I create a lot of samples, demos, open source projects, etc. and I like to use the fairly standard repository layout of having a solution file in the root and project files in a src subfolder. Achieving this in Visual Studio is tedious, but fortunately this series of dotnet CLI commands quickly create the structure for you. This script uses the following commands, which have good documentation…</p><br/></li><li><a href="/writing-efficiently/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Writing Efficiently</h2><img src="/static/769fa3ef3ad3056ad5f0dd2389ad4f46/4e530/writing-efficiently.png" alt="Writing Efficiently" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 August 2021</p><p style="width:100%;margin-top:2rem">Working in professional software development teams requires a lot of writing. As you advance in your career, frequently the percentage of time you&#x27;ll be writing emails and other correspondence versus writing source code will increase. As your responsibilities grow, so too does your need to communicate effectively with larger numbers of people in and beyond your organization. Writing effectively is…</p><br/></li><li><a href="/choose-excitement-over-fear/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Choose Excitement over Fear</h2><img src="/static/4705e4ff2b2752ac1097b3f428f763d3/4e530/choose-excitement-over-fear.png" alt="Choose Excitement over Fear" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 January 2021</p><p style="width:100%;margin-top:2rem">There&#x27;s virtually no difference, physiologically, between the sensations and symptoms of fear and excitement. But there is a big difference in how we react based on these feelings. If you find yourself living in fear of something, but rationally you recognize that the fear isn&#x27;t justified, it may help you to try and reshape that feeling into something else, like excitement. Fear Almost all humans…</p><br/></li><li><a href="/how-to-easily-format-tables-in-markdown/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Easily Format Tables in Markdown</h2><img src="/static/46c31e72aea021fa834215762a78612b/4e530/how-to-easily-format-tables-in-markdown.png" alt="How to Easily Format Tables in Markdown" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->01 July 2020</p><p style="width:100%;margin-top:2rem">I&#x27;m a big fan of Markdown. It provides a simple way to richly format text without the complexity or security issues that would come from using HTML. Support for Markdown is ubiquitous within the software development industry, with native support everywhere from GitHub to StackOverflow. I&#x27;ve written everything from short documentation articles to several entire ebooks for Microsoft using Markdown…</p><br/></li><li><a href="/rip-dvds-with-handbrake-and-anydvd/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Rip DVDs with Handbrake and AnyDVD</h2><img src="/static/befc7711c3be582342646b3dc871316e/4e530/rip-dvds-with-handbrake-and-anydvd.png" alt="How to Rip DVDs with Handbrake and AnyDVD" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 June 2020</p><p style="width:100%;margin-top:2rem">I&#x27;m a big fan of Plex and have a lifetime subscription. If you&#x27;re not familiar with it, it basically lets you have your own Netflix hosted on a computer in your house that you can watch from anywhere. If you&#x27;ve ever wanted to watch a movie or show that you already own, without having to deal with the discs, and it&#x27;s not on one of your various streaming services, you understand the value. Also, if…</p><br/></li><li><a href="/integrate-github-and-discord-with-webhooks/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Integrate GitHub and Discord with Webhooks</h2><img src="/static/3478884e59b30a4f547fce05978530f5/4c509/integrate-github-discord-webhooks-760x360.png" alt="Integrate GitHub and Discord with Webhooks" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->30 April 2020</p><p style="width:100%;margin-top:2rem">I&#x27;ve started using Discord more and more for things like my private group coaching program focused on software developers. It&#x27;s worked quite well and is completely free for our needs. You can easily add bots and notifications from other systems, including your own ASP.NET web applications, using web hooks. One of the easier ways to configure notifications from things you care about as a developer…</p><br/></li><li><a href="/adapter-design-pattern/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Adapter Design Pattern</h2><img src="/static/e30d0ec244eb22cee8ce354effced5ed/4e530/adapter-design-pattern.png" alt="Adapter Design Pattern" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->01 April 2020</p><p style="width:100%;margin-top:2rem">A couple of months ago I published a new, revised course called C# Design Patterns: Adapter on Pluralsight. It&#x27;s one of my favorite patterns and its predecessor, the Design Patterns Library, remains one of the most popular courses of all time on Pluralsight. It&#x27;s almost 16 hours long but I encourage you to get through it as an achievement if you can. Look for a revised learning path through the…</p><br/></li><li><a href="/streaming-checklist/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Streaming Checklist</h2><img src="/static/f306f54c7bc53504e561f9b18bc48a06/4c509/streaming-checklist-760x360.png" alt="Streaming Checklist" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 March 2020</p><p style="width:100%;margin-top:2rem">I&#x27;m a fan of checklists – they&#x27;re an intermediate step before automating a process to ensure it&#x27;s done correctly and consistently. You&#x27;ll find a number of different checklists on this site. This one is about streaming, specifically for my twitch.tv/ardalis account. I&#x27;ve been meaning to blog about this forever, but it&#x27;s just been sitting in my OneNote for the longest time while other things have…</p><br/></li><li><a href="/github-draft-pull-requests/"><h2 class="is-size-2" style="width:100%;word-break:break-word">GitHub Draft Pull Requests</h2><img src="/static/fa2c1e0845d898cb665cf03388301f4a/4c509/github-draft-pull-requests-760x360.png" alt="GitHub Draft Pull Requests" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->25 March 2020</p><p style="width:100%;margin-top:2rem">A feature introduced last month by the GitHub team is called draft pull requests. When you create a Draft Pull Request, it cannot be merged until it is marked as ready for review. This is useful because often pull requests are used as conversations, often prior to the work being ready to merge. Common approaches to this in the past have included such classic approaches as: Adding “WIP” for “Work…</p><br/></li><li><a href="/priorities-of-work-on-a-board/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Priorities of Work on a Board</h2><img src="/static/a6c44a53f6b61b1d0167d3aa843f9d34/4c509/priorities-of-work-on-board-760x360.png" alt="Priorities of Work on a Board" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 March 2020</p><p style="width:100%;margin-top:2rem">This is obvious once you think about it but I’ve found many people haven’t thought about it so I’m going to lay it out here real quick. A lot of teams use some kind of task or kanban board today to track the status of work. This is typically part of some kind of agile or Scrum or kanban process. If you want to learn more about kanban, check out my short course on the fundamentals of kanban…</p><br/></li><li><a href="/git-autocorrect/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Git Autocorrect</h2><img src="/static/c61ca4e0043c30d3e765ce4df9dc75f4/4c509/git-autocorrect-still-760x360.png" alt="Git Autocorrect" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 February 2020</p><p style="width:100%;margin-top:2rem">I don’t know how I didn’t know about this before now, but apparently you can turn on autocorrect for your git command line, and it will accept (after a short delay in which you can cancel) commands that are close to but not exactly correct. Example: You probably meant: And it will go ahead and do that for you. Setting it up You can set this up in your git config, either globally or per repo. I don…</p><br/></li><li><a href="/year-in-review-post-checklist/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Year in Review Post Checklist</h2><img src="/static/743ebd43ab8a39b30d98b5a280705885/4c509/year-in-review-post-checklist-760x360.png" alt="Year in Review Post Checklist" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 January 2020</p><p style="width:100%;margin-top:2rem">You have a blog. It’s early January. You need something to post. Why not post a [Current Year – 1] in Review post? Something like this 2017 in Review or 2018 Year in Review or any of these developer year in review posts? Great idea! But what should you include? You don’t want to forget anything important. That’s why I’m creating this software developer blog year in review article checklist. Now…</p><br/></li><li><a href="/be-humble-and-kind/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Be Humble and Kind</h2><img src="/static/3956fc3af4a54de22ff2229e1b4fde36/4c509/be-humble-and-kind-760x360.png" alt="Be Humble and Kind" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->28 October 2019</p><p style="width:100%;margin-top:2rem">This originally went out just to my Weekly Dev Tips mailing list, but I got a lot of positive comments and requests to share it, so I’m publishing it here. Sign up for Weekly Dev Tipsto get a new tip in your inbox each Wednesday. I’m not a big fan of country music (my wife is, however) but Tim McGraw’s Humble and Kind has it right. Don’t let success get to your head. You don’t know everything – be…</p><br/></li><li><a href="/how-to-delete-hiberfil-sys-and-recover-disk-space-on-windows/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Delete hiberfil.sys and Recover Disk Space on Windows</h2><img src="/static/2cc0012da6dec0524df5314cc6a6cf2e/05ae8/image-4.png" alt="How to Delete hiberfil.sys and Recover Disk Space on Windows" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->21 August 2019</p><p style="width:100%;margin-top:2rem">Desktop computers rarely need to hibernate, so you can probably safely remove the hiberfil.sys file and save yourself a few GB of space. To do so, just open up a new command prompt as an administrator: Click on the Start button Type ‘cmd’ (don’t hit enter) Right click on the Command Prompt that comes up and choose Run As Administrator. Once you have an administrator command prompt up, just run…</p><br/></li><li><a href="/create-alias-to-set-window-title-in-powershell/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Create Alias to Set Window Title in PowerShell</h2><img src="/static/71d14e85497a0a397b06479e9a55075d/4c509/create-alias-to-set-window-title-in-powershell-760x360.png" alt="Create Alias to Set Window Title in PowerShell" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->30 May 2019</p><p style="width:100%;margin-top:2rem">I’ve written previously about how to set the window title in PowerShell. Unfortunately, it’s a little complicated. Recently on twitter, though, Greg MacLellan showed me how to create an alias so you can just type to set the window title. This involves editing your PowerShell profile, which you may not even have, so here are the steps to take to make this happen. First, determine if you have a…</p><br/></li><li><a href="/speaking-and-presenting-last-minutes-checklist/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Speaking and Presenting Last Minutes Checklist</h2><img src="/static/30c82f70c0bdcb9fe5fc4379cd07bcd3/4c509/speaking-and-presenting-last-minutes-checklist-760x360.png" alt="Speaking and Presenting Last Minutes Checklist" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 May 2019</p><p style="width:100%;margin-top:2rem">You have a presentation to give. You’ve been asked to speak to a group of your peers. You’re giving a conference session. The previous presenter just finished – you’re up as the next speaker. You have fifteen minutes. What do you need to do? This isn’t the checklist for what to do after you’ve just found out you have a presentation to give, or you were just accepted to speak at a conference. There…</p><br/></li><li><a href="/finding-a-career-horse-to-ride/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Finding a Career Horse to Ride</h2><img src="/static/3df86455a758b705afbc4bd523c90cdb/4c509/finding-a-career-horse-to-ride-760x360.png" alt="Finding a Career Horse to Ride" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 May 2019</p><p style="width:100%;margin-top:2rem">About 20 years ago I read the book, Horse Sense, by Al Ries and Jack Trout. The authors posit, “The key to success if finding a horse to ride.” In the authors typically direct and simple style, filled with real world stories and anecdotal evidence, they categorize the many different “horses” one might find to ride toward success. I’ve gifted this book to many people over the years because the…</p><br/></li><li><a href="/how-to-add-files-to-a-github-repo-you-don’t-own/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Add Files to a GitHub Repo You Don’t Own</h2><img src="/static/9ef24b37b1db2b3116c9d46edb2f5783/4c509/how-to-add-files-to-a-github-repo-you-dont-own-760x360.png" alt="How to Add Files to a GitHub Repo You Don’t Own" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->03 May 2019</p><p style="width:100%;margin-top:2rem">There are a bunch of GitHub (and other git host) repositories that aren’t really for software projects, but rather are for documentation or other resources. For example, the ASP.NET Core docs, or various awesome lists, or the slides and materials from conferences like Stir Trek. Frequently, even as a non-developer, you may want to contribute to such repositories, maybe even just as simply as to…</p><br/></li><li><a href="/using-pablo-to-create-title-images/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Using Pablo to Create Title Images</h2><img src="/static/76cd5967cfa1bda62babfbe5a98fe094/4e530/using-pablo-to-create-title-images.png" alt="Using Pablo to Create Title Images" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 May 2019</p><p style="width:100%;margin-top:2rem">I recently was introduced to Pablo by Buffer. Ok, not really that recently - I started this post months ago but never finished it. Oops. ? Pablo is a great, simple service that I&#x27;ve looked for in the past but never found. Basically, it provides a super-easy way to take some stock photography, apply a simple contract or blur filter to it, and add some text on top. It&#x27;s free. It&#x27;s easy. I&#x27;ve used it…</p><br/></li><li><a href="/ultimate-developer-rig-2019/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Ultimate Developer Rig 2019</h2><img src="/static/fe3a9caa7173795f0d37401d6ff30781/4c509/dev-machine-2019-buildout-760x360.png" alt="Ultimate Developer Rig 2019" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->30 April 2019</p><p style="width:100%;margin-top:2rem">I recently upgraded my desktop developer machine. My goal was to support more docker-based application development including ones that run multiple microservices at the same time, like the eShopOnContainers sample that I assist with (see also my own eShopOnWeb sample and eBook). My friend Bill Henning (of Actipro Software fame) came up with the initial parts list for his machine back in November…</p><br/></li><li><a href="/5-solid-ways-to-come-up-with-good-blog-post-topics/"><h2 class="is-size-2" style="width:100%;word-break:break-word">5 Solid Ways to Come Up with Good Blog Post Topics</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 April 2019</p><p style="width:100%;margin-top:2rem">A couple of days ago Mike J. wrote me the following (shared with permission): Hi Steve, A while back you wrote about things to do to help further your career, and blogging was one of them. My question is how do you create posts without just sounding like you&#x27;re plagiarizing or rehashing what&#x27;s been said 100 times over? What makes a good blog? You and Julie Lerman are two of my favorites. Mike J…</p><br/></li><li><a href="/the-more-you-know-the-more-you-realize-you-dont-know/"><h2 class="is-size-2" style="width:100%;word-break:break-word">The More You Know The More You Realize You Don&#x27;t Know</h2><img src="/static/c1908a187b30eb7597d9927a8d7aea2d/6050d/IMG_0133.png" alt="The More You Know The More You Realize You Don&#x27;t Know" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 February 2019</p><p style="width:100%;margin-top:2rem">Aristotle famously wrote, &quot;The more you know, the more you realize you don&#x27;t know.&quot; In the image above, you can see the effect this has on confidence as one&#x27;s experience grows. Initially, your confidence is low since you know you&#x27;re inexperienced. However, after a short while, you start to &quot;get it&quot;, and you get into a comfort zone. Depending on how demanding your environment is, you might stay…</p><br/></li><li><a href="/keeping-a-work-journal/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Keeping a Work Journal</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 January 2019</p><p style="width:100%;margin-top:2rem">Not long ago I saw a tweet from Brian Hogan describing a tool he uses for journaling while at work. I&#x27;ve kept notes in a variety of formats throughout my career but have never really kept a journal per se, so I thought I&#x27;d give it a try. He recommended trying jrnl.sh, a simple command line tool, so I did. Here&#x27;s a quick overview and getting started guide. Getting jrnl.sh Head over to the…</p><br/></li><li><a href="/2018-year-in-review/"><h2 class="is-size-2" style="width:100%;word-break:break-word">2018 Year in Review</h2><img src="/static/baf3bb2aa0528a692e126b0c3aacbf34/4e530/2018-year-in-review.png" alt="2018 Year in Review" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->17 January 2019</p><p style="width:100%;margin-top:2rem">Now that 2018&#x27;s been over for a few weeks, I&#x27;ve had a chance to compile some data from a variety of sources that I thought some people might find interesting, including future me. This post will include details on the traffic for my blog as well as other properties, how things are going with my podcast, where things are headed with devBetter, and a few other random bits. This Blog In 2018, I…</p><br/></li><li><a href="/bulk-delete-old-and-big-gmail-email/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Bulk Delete Old and Big GMail Email</h2><img src="/static/0116e0eb5617d54281c7498ca5bc2967/d5da6/large-gmail-messages-1.png" alt="Bulk Delete Old and Big GMail Email" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 January 2019</p><p style="width:100%;margin-top:2rem">My GMail is complaining it&#x27;s running out of space. I remember the days when GMail would show an ever-increasing counter of how much more space I had in my inbox, but apparently those days are over. I rarely delete anything in GMail, because I&#x27;ve been trained to just archive things with the click of a keystroke (&#x27;e&#x27; by default once you enable keyboard shortcuts). Thus, I have a lot of email in my…</p><br/></li><li><a href="/add-pins-and-create-custom-google-maps/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Add Pins and Create Custom Google Maps</h2><img src="/static/eceb31061a5f40416a6d043c3a4a62b3/74ecc/google-maps-vegas.png" alt="Add Pins and Create Custom Google Maps" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->15 November 2018</p><p style="width:100%;margin-top:2rem">I really like Google Maps. I&#x27;ve been a fan since it first came out. Being able to zoom into almost any location on Earth is amazing. And yet, somehow I only recently learned how to create my own maps with my own pins that I can save and share and collaborate with others on. You may want to do something similar, so here&#x27;s how. First, go to Google Maps. Next, click on the menu icon (hamburger,…</p><br/></li><li><a href="/moving-from-wpengine-to-siteground/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Moving from WPEngine to SiteGround</h2><img src="/static/4b0a45ab0ad59b275be8ef49ed0d4aaa/0ff54/moving-from-wpengine-to-siteground.jpg" alt="Moving from WPEngine to SiteGround" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->09 November 2018</p><p style="width:100%;margin-top:2rem">I started hosting my Wordpress-powered blog on WPEngine several years ago. They weren&#x27;t the cheapest option, but I&#x27;d had some bad experiences with super-cheap hosts and they offered service and features that I was happy with. I recommended them to many people and was generally satisfied. Unfortunately, they shifted their pricing plans over the years, and my blog&#x27;s traffic (happily) grew, such that…</p><br/></li><li><a href="/a-retrospective-retro/"><h2 class="is-size-2" style="width:100%;word-break:break-word">A Retrospective Retro</h2><img src="/static/1ef38f164c4620f711d785680c2e94b8/0ff54/blank-color-colorful-209678.jpg" alt="A Retrospective Retro" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->18 October 2018</p><p style="width:100%;margin-top:2rem">At a client today I facilitated a retrospective for the dev team. I&#x27;ve done a few of these in the past, both for agile software teams and also After Action Reviews (AARs) in the US Army. For AARs, the usual format is to discuss what was supposed to happen, what really happened, what went well, and what didn&#x27;t go well. Then, identify any changes or controls that should be added to improve for next…</p><br/></li><li><a href="/weeklydevtips-podcast-checklist/"><h2 class="is-size-2" style="width:100%;word-break:break-word">WeeklyDevTips Podcast Checklist</h2><img src="/static/549509c74b92757685909e5e224b6efc/8c332/WeeklyDevTips_600x591-600x360.png" alt="WeeklyDevTips Podcast Checklist" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->15 April 2018</p><p style="width:100%;margin-top:2rem">I&#x27;ve been doing a podcast for a little over six months now, called Weekly Dev Tips. The episodes are just 5-10 minutes long and don&#x27;t have a lot of extra fluff - they&#x27;re just straight and to the point, describing a particular tip that some developers will find helpful. The idea is that you can binge on back episodes (ideally start at the beginning) and get a ton of actionable tips in the time you…</p><br/></li><li><a href="/how-to-get-involved-with-microsoft-developer-community/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Get Involved with the Microsoft Developer Community</h2><img src="/static/8f42821ba4fd8318dfb972520b1cae96/6050d/microsoft-developer.png" alt="How to Get Involved with the Microsoft Developer Community" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 January 2018</p><p style="width:100%;margin-top:2rem">The other day, someone wrote me to ask: To cut to the chase, I was wondering if, given your experience, you had any recommendations or advice for landing an internship with Microsoft. I work a lot with .NET and Azure through my web development business and I am extremely interested in all things Microsoft. This particular question related to an internship, but I&#x27;ve often seen similar questions…</p><br/></li><li><a href="/2017-in-review/"><h2 class="is-size-2" style="width:100%;word-break:break-word">2017 In Review</h2><img src="/static/54f96a85da8ad6aff3607b1a4e75446c/f9f6e/BlogPostsByMonth2017.png" alt="2017 In Review" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 January 2018</p><p style="width:100%;margin-top:2rem">Now that 2017 is behind us, I thought I&#x27;d share some stats and other details about my blog (and podcast and other such things) for those who may be interested. 2017 was a pretty solid year for me as a blogger, and I wrote 66 articles, averaging about 5.5 per month. Apparently I write a lot in the middle month of each quarter (Feb, May, Aug, Nov) for no reason I can fathom: Blog Posts By Month 201…</p><br/></li><li><a href="/simple-flowcharts-and-state-diagrams-with-webgraphviz/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Simple Flowcharts and State Diagrams with WebGraphViz</h2><img src="/static/c1855916b466979f456d2f9e8f5c770a/6050d/DoYouUnderstandFlowCharts.png" alt="Simple Flowcharts and State Diagrams with WebGraphViz" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 December 2017</p><p style="width:100%;margin-top:2rem">I&#x27;ve used the GraphViz tool locally to quickly produce graphs and state diagrams from text input. Recently (2017), I learned about WebGraphViz, which lets you do the same thing from a browser. For instance, if you want to teach someone how to use a flow chart, you could send them to this classic XKCD comic, or you could generate your own similar flowchart by copying and pasting the following into…</p><br/></li><li><a href="/easy-money-in-2017/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Easy Money in 2017</h2><img src="/static/1e545a83c3a204f46c291113659e1b60/0ff54/dollar-currency-money-us-dollar-47344.jpg" alt="Easy Money in 2017" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 November 2017</p><p style="width:100%;margin-top:2rem">dollars and money I&#x27;ve written a while back about what a good idea it is for companies to incentivize both parties with their referral programs. A couple of recent companies who are following this strategy are Coinbase and Square Cash. Coinbase lets you purchase Bitcoin and other cryptocurrencies, and will give you $10 when you buy at least $100 of Bitcoin or another cryptocurrency like Ethereum…</p><br/></li><li><a href="/weekly-dev-tips-podcast/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Weekly Dev Tips Podcast</h2><img src="/static/68653507ac9f41cbf5dfc44d3a1a1d5b/8c332/WeeklyDevTips_600x591.png" alt="Weekly Dev Tips Podcast" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->15 September 2017</p><p style="width:100%;margin-top:2rem">I started a weekly newsletter last year that&#x27;s been going for over 70 weeks now sending a short, practical developer tip each week. You can subscribe to it here if you haven&#x27;t already. Tips go out every Wednesday at 10am Eastern Time. In August 2017, I launched a podcast with a similar structure. Weekly Dev Tips just published its 5th episode, and each episode so far is under 10 minutes long. They…</p><br/></li><li><a href="/working-through-roadblocks-a-guide-for-new-programmers/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Working Through Roadblocks - A Guide for New Programmers</h2><img src="/static/4fb4ac75fbd03f00f42e4ac3586c8265/c3638/NotSureIfGoodProgrammer.jpg" alt="Working Through Roadblocks - A Guide for New Programmers" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 September 2017</p><p style="width:100%;margin-top:2rem">Last Updated April 2024 This is advice that I have given to many novice developers, and that I would like to have been able to give to myself when I just getting started (though some of the advice refers to resources that didn&#x27;t exist then - alas). If you find it useful, please consider sharing it with someone you know who might also benefit from it. Roadblocks As a programmer or software…</p><br/></li><li><a href="/set-cmd-or-powershell-window-title/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Set cmd or PowerShell Window Title</h2><img src="/static/8f50ec730dc05f8c16e716b844ea9cec/9a8d7/PowerShellTitle.png" alt="Set cmd or PowerShell Window Title" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 June 2017</p><p style="width:100%;margin-top:2rem">As CLI tools become more and more popular, it&#x27;s not unusual that I find I have more than one command, bash, or PowerShell window open. Often, each window is serving a specific purpose. While I really like that I can integrate a command shell right into Visual Studio Code, when I&#x27;m not doing that it&#x27;s nice to be able to give each window a name that makes sense. Setting Window Title of Windows cmd…</p><br/></li><li><a href="/life-hack-listen-faster/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Life Hack - Listen Faster</h2><img src="/static/9583871558b1e0ed17029e4073fcbaa2/4c509/Screenshot-2017-05-23-19.46.14-760x360.png" alt="Life Hack - Listen Faster" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 May 2017</p><p style="width:100%;margin-top:2rem">I&#x27;ve been doing some traveling lately, which is when I tend to have time to catch up on listening to podcasts. I&#x27;m a fan of DotNetRocks, Hanselminutes, and Radiolab, among others. Unfortunately (or to be honest, fortunately), my daily commute with kids usually consists of only 10-15 minutes, and isn&#x27;t amenable to podcast listening. But when traveling I often have hours at a time to listen and…</p><br/></li><li><a href="/profit-center-or-cost-center/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Are You a Profit Center or a Cost Center?</h2><img src="/static/abf313dcbb4afd2de56a8669888b6c17/0ff54/ledger-1428230_1920.jpg" alt="Are You a Profit Center or a Cost Center?" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 April 2017</p><p style="width:100%;margin-top:2rem">I recently was on a panel at the Hudson Ohio coworking space Tech Hub Hudson organized by the Akron Women in Technology group. There were four other panelists (I was a last minute addition) and the topic of the evening centered around advice for junior developers. There was a lot of great experience shared both by the panel and by audience members, and I&#x27;ll probably draw on some of it again in…</p><br/></li><li><a href="/share-what-you-learn-even-if-youre-not-an-expert/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Share What You Learn (even if you&#x27;re not an expert)</h2><img src="/static/0ff151708a7d99836ac443d66f8ece25/c3638/person-apple-laptop-notebook_600x400.jpg" alt="Share What You Learn (even if you&#x27;re not an expert)" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 April 2017</p><p style="width:100%;margin-top:2rem">A lot of people, myself included, suffer from imposter syndrome. That feeling that you&#x27;re really not good enough to be doing whatever it is you&#x27;re doing. Maybe it&#x27;s writing a blog. Maybe it&#x27;s public speaking. Maybe it&#x27;s just answering a question in front of a group, team, or class. Imposter syndrome is a real thing, and it&#x27;s incredibly common, so first off, realize that most people feel that way…</p><br/></li><li><a href="/windows-mac-native-google-mail-client/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Windows Mac Native Google Mail Client</h2><img src="/static/a030db37232c4d3cdb90c9e787ce178c/4c509/WMail-760x360.png" alt="Windows Mac Native Google Mail Client" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 February 2017</p><p style="width:100%;margin-top:2rem">I&#x27;m involved in quite a few businesses and ventures at any given time, and most of them have an email account associated with them. My preferred email client is Google/GMail/Google Apps/G suite, mainly because it&#x27;s fast, ubiquitous, and (mostly) free (google apps was free for a very long time, and now has pretty reasonable per-user pricing similar to O365). Checking a bunch of different accounts…</p><br/></li><li><a href="/open-command-or-powershell-window-from-explorer/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Open Command or Powershell Window From Explorer</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 December 2016</p><p style="width:100%;margin-top:2rem">Command line tools are becoming increasingly popular, so this tip may save you some time. On Windows, there are several ways to open up a command window. My typical method is to just hit the Start key and type &#x27;cmd&#x27; and then enter. This will open a window in my user folder, which is exactly where I want to be precisely 0% of the time. From there, it&#x27;s usually just a few dozen commands to change…</p><br/></li><li><a href="/be-a-thankful-developer/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Be a Thankful Developer</h2><img src="/static/82c306dc9561b3e1fba64d0ef3536768/4c509/be-a-thankful-developer-760x360.png" alt="Be a Thankful Developer" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 November 2016</p><p style="width:100%;margin-top:2rem">It doesn’t cost much to acknowledge those who have helped you, and it can be very rewarding. Regardless of where you are in your career as a software developer (or most other careers, but this is mainly directed at developers), show appreciation for those who make your job easier or who help you improve. This might be a peer or mentor who takes the time to guide you, it could be your boss or your…</p><br/></li><li><a href="/4-tips-to-integrate-teamcity-and-github/"><h2 class="is-size-2" style="width:100%;word-break:break-word">4 Tips to Integrate TeamCity and GitHub</h2><img src="/static/1c2cab1a4ad0986142596c27658dd26a/86c85/teamcity_github.jpg" alt="4 Tips to Integrate TeamCity and GitHub" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 November 2016</p><p style="width:100%;margin-top:2rem">Last updated: 13 October 2023 TeamCity Logo I&#x27;ve been a fan of JetBrains TeamCity for many years now. It&#x27;s a great continuous integration / build server product, with an extremely responsive web-based user interface that&#x27;s great to work with. What&#x27;s more, the basic version supports up to 20 projects for FREE, which is tough to beat. However, like peanut butter and chocolate, TeamCity gets even…</p><br/></li><li><a href="/how-to-change-drawing-scale-in-visio-professional/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Change Drawing Scale in Visio Professional</h2><img src="/static/dadf27b48b521120a075c923c33f4f53/bfd29/HowToChangeTheScaleInAVisioDrawing.png" alt="How to Change Drawing Scale in Visio Professional" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 July 2016</p><p style="width:100%;margin-top:2rem">This is much harder than it should be to find, especially when most of the help online is wrong and refers to previous versions. For instance, there is no Page Setup menu under the File menu in recent versions of Visio. I have Visio Professional 2016 - if you&#x27;re not sure, go to Start -&gt; Add or Remove Programs and look for your version there. If you&#x27;re creating an office layout, for example, and…</p><br/></li><li><a href="/speaker-alert/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Speaker Alert</h2><img src="/static/81c885ee1bbf2d7d84adf0a326d532fe/03abd/iconfull.png" alt="Speaker Alert" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 April 2016</p><p style="width:100%;margin-top:2rem">I&#x27;ve wanted a decent speaker timer to use during my conference presentations for a while, now. Some of the fancier slide advancers have a timer functionality, but I&#x27;m pretty happy with the one I have and I was looking for something I could glance at on the table/podium rather than a tiny display in my hand. I have an iPhone, and a quick search through the app store (like, 5 minutes before my talk…</p><br/></li><li><a href="/developer-user-group-tips/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Developer User Group Tips</h2><img src="/static/c26a2503c85b03727405e609f8bae928/3bf7d/3724791747_6d8a51dd1e_z.jpg" alt="Developer User Group Tips" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->17 April 2015</p><p style="width:100%;margin-top:2rem">I&#x27;ve been a participant in a number of software developer user groups for many years, and an organizer of the Hudson Software Craftsmanship group since 2009. A few years ago, I was a member of the INETA Speaker Bureau, and would travel to a number of user groups around the country (and occasionally, the world - including Moscow in 2006). Recently I participated in a discussion about things to…</p><br/></li><li><a href="/anthropomorphism-raised-to-organizationalism/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Anthropomorphism Raised to Organizationalism</h2><img src="/static/8f42821ba4fd8318dfb972520b1cae96/6050d/microsoft-developer.png" alt="Anthropomorphism Raised to Organizationalism" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->21 August 2014</p><p style="width:100%;margin-top:2rem">Recently on twitter, Michael Feathers raised some interesting points about how the media tends to naturally group individuals together, especially “on the Internet”: As he notes, we already have a word for treating inanimate objects as if they were alive, sentient, humans:anthropomorphism: Obviously when we do this, we’re telling a small lie. Non-sentient objects do not have feelings or intentions…</p><br/></li><li><a href="/free-stock-photos-for-presentations/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Free Stock Photos for Presentations</h2><img src="/static/eb9bb45936f0641792affe33a12efa08/0ff54/stock-photo.jpg" alt="Free Stock Photos for Presentations" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 July 2014</p><p style="width:100%;margin-top:2rem">6812132167_e26473b22c_mIf you’ve graduated from basic death-by-bullet-point presentations to something that will keep your audience interested, you’ve probably encountered the problem of “where can I find the perfect image to underscore my point,” preferably without having to pay an arm and a leg for it. I recommend books like Presentation Zen to learn more about how to amp up your presentations…</p><br/></li><li><a href="/incent-all-parties-involved/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Incent All Parties Involved</h2><img src="/static/7c42ff234744372066e8f0b4c3416131/5b766/image_6.png" alt="Incent All Parties Involved" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 March 2014</p><p style="width:100%;margin-top:2rem">Incentives and offers are a mainstay of modern business sales and marketing. People feel better about making a purchasing decision if they think they are getting a deal, and frequently people need some kind of a push to get them to buy now, even when they’ve otherwise made up their mind that they’re ready to buy, soon. In most cases, incentives are given to just one person, the potential customer…</p><br/></li><li><a href="/walking-while-working/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Walking While Working</h2><img src="/static/1901816d284f641dd0a849af43a6ce27/67577/standing.png" alt="Walking While Working" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 February 2014</p><p style="width:100%;margin-top:2rem">DSC_0031 - Cropped Staying in shape as a programmer can be difficult, but recent studies have shown that even if you&#x27;re among those in our profession who do work out regularly, sitting for long periods of time at work is detrimental to your health. To be a bit more dramatic about it, sitting is killing you (see Phil Haacks blog post on this from last year). So, how can we combat this risk while…</p><br/></li><li><a href="/final-verdict-on-haswell-ultrabook/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Final Verdict on Haswell Ultrabook</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->21 October 2013</p><p style="width:100%;margin-top:2rem">I’ve had a pre-release Intel Ultrabook with the new Haswell processor in it for about two months now, so it’s time for one last review of the device. You can read my previous reviews: First Impressions of the Intel Haswell Ultrabook Intel Haswell Ultrabook Preview Unit Experience Overview This device has met or exceeded my expectations for performance, power use, and overall fit and finish. The…</p><br/></li><li><a href="/3-reasons-why-dropbox-is-your-friend/"><h2 class="is-size-2" style="width:100%;word-break:break-word">3 Reasons Why DropBox is Your Friend</h2><img src="/static/c04666141b4e9c5b2d2268fe498c02bb/6050d/dropbox.png" alt="3 Reasons Why DropBox is Your Friend" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 October 2013</p><p style="width:100%;margin-top:2rem">I’ve been a huge fan of DropBox since its early days. In fact, I’ve been using similar tools, like FolderShare (until Microsoft killed it), for many years, but DropBox is by far the best one I’ve ever used. I work from 3 different machines on a regular basis (work desktop, home desktop, laptop for meetings/travel), and DropBox ensures that every one of them always has all the files I need to be…</p><br/></li><li><a href="/intel-haswell-ultrabook-preview-unit-experience/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Intel Haswell Ultrabook Preview Unit Experience</h2><img src="/static/c26ac3d9fc62f6b8e2195912475a5008/18f0b/DSC01543_thumb.jpg" alt="Intel Haswell Ultrabook Preview Unit Experience" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 September 2013</p><p style="width:100%;margin-top:2rem">I&#x27;ve been using my Intel Haswell Ultrabook for about a month now, so it&#x27;s time to follow up on my first impressions review. Overview Last month I was happy to receive an Intel Haswell Ultrabook Software Developer Preview device, for review purposes. This unit is actually the 3rd Ultrabook I&#x27;ve used, and certainly it is the best of the three. The first one, an Asus Zen I got in early 201…</p><br/></li><li><a href="/first-impressions-of-the-intel-haswell-ultrabook/"><h2 class="is-size-2" style="width:100%;word-break:break-word">First Impressions of the Intel Haswell Ultrabook</h2><img src="/static/5472bf481d040839d3247313acda6741/18f0b/DSC01446_1.jpg" alt="First Impressions of the Intel Haswell Ultrabook" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 August 2013</p><p style="width:100%;margin-top:2rem">I was on vacation last week, and spent most of Monday driving home. When I got there, I found that a nice present had arrived: a new Intel 4th generation Haswell Ultrabook for me to review. If you haven’t heard about the latest generation of Intel processors, The Verge covered them in June. All of this adds up to what could be the most significant update for laptop processors in years… With faster…</p><br/></li><li><a href="/how-do-i-shutdown-windows-8/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How Do I Shutdown Windows 8</h2><img src="/static/e745695dec9486efcc1ff63e6fd6594d/0ff54/win-8.jpg" alt="How Do I Shutdown Windows 8" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 June 2013</p><p style="width:100%;margin-top:2rem">With the new Windows 8 operating system, Microsoft has made it harder than ever to figure out how to actually shut down your computer. I think this is due to a major emphasis on the tablet form factor, which one will typically not shut down, or will shut down via a hardware button. In any event, many desktop and laptop users with Windows 8 installed must figure out how to actually shut down the…</p><br/></li><li><a href="/speed-up-youtube-videos/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Speed Up YouTube Videos</h2><img src="/static/5e0d59a319f9753d0781d0e8cb23ce3d/d09f9/youtube-1.png" alt="Speed Up YouTube Videos" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 March 2013</p><p style="width:100%;margin-top:2rem">If you’ve ever wanted to speed up a YouTube video, like you can do with Pluralsight training videos, here’s a quick tip to show you how to do so. Today, I was watching the KendoUI 2013Q1 Release Keynote on YouTube, because I wasn’t able to catch it live. It’s a little over an hour long, and I’ve become rather spoiled lately by Pluralsight’s video player, which lets you adjust the speed to whatever…</p><br/></li><li><a href="/when-should-you-arrive-for-an-interview/"><h2 class="is-size-2" style="width:100%;word-break:break-word">When Should You Arrive for an Interview</h2><img src="/static/dc2275b9a50200f9d30ad6e1f6878347/4c509/when-should-you-arrive-for-an-interview.png" alt="When Should You Arrive for an Interview" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 March 2013</p><p style="width:100%;margin-top:2rem">We’ve been doing a lot of interviewing as we grow our team in Hudson, Ohio for Telerik Services. We have a fairly small office in a suburban environment, where you can basically park right outside the building and walk right in – no elevators, reception area, parking decks, or other hassles you might find in a more urban location. As a result, we’ve learned that if we schedule an interview, we…</p><br/></li><li><a href="/limit-sql-server-memory-use-on-dev-machine/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Limit SQL Server Memory Use on Dev Machine</h2><img src="/static/552991b78e4fb9f7d3eeb807f6c5886e/4e530/limit-sql-server-memory-use-on-dev-machines.png" alt="Limit SQL Server Memory Use on Dev Machine" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 November 2012</p><p style="width:100%;margin-top:2rem">If you’re a developer running SQL Server locally, you may sometimes need to limit how much memory the database is consuming. Under normal conditions, SQL Server likes to use as much memory as it can get, since keeping results in memory improves the database’s performance. In typical production scenarios, this is the ideal behavior, but on a dev machine you probably want your RAM for other things…</p><br/></li><li><a href="/the-ivy-bridge-ultrabook-continued/"><h2 class="is-size-2" style="width:100%;word-break:break-word">The Ivy Bridge Ultrabook Continued</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 October 2012</p><p style="width:100%;margin-top:2rem">I’ve now had the new Intel Ivy Bridge Ultrabook machine for about six weeks, and have been carrying it as my primary machine for much of that time. You can read about my initial impressions of the Ultrabook here. The short version, for those who don’t like to click on links, is that this is a pre-release hardware clamshell Ultrabook with a touch screen and a slew of sensors that you can code…</p><br/></li><li><a href="/unboxing-and-first-impressions-of-new-intel-ultrabook/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Unboxing and First Impressions of New Intel Ultrabook</h2><img src="/static/897bd3b50efea6abc2c70ec6fba954c9/23495/IMG_3556_thumb.png" alt="Unboxing and First Impressions of New Intel Ultrabook" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 September 2012</p><p style="width:100%;margin-top:2rem">I recently received a preview-hardware next generation Ivy Bridge Ultrabook from Intel, optimized for and pre-installed with Windows 8. I suspect we’ll be seeing these available in stores and via online outlets soon. I’m a fan of the Ultrabook brand and concept – thin, sleek, and light, with powerful hardware capable of running developer tools. I’ve already happily switched away from much heavier…</p><br/></li><li><a href="/how-to-disable-resharper-in-visual-studio/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How To Disable ReSharper in Visual Studio</h2><img src="/static/4cac1374575b46b401d813cdef89caec/5b766/SNAGHTML1ff3360d_1.png" alt="How To Disable ReSharper in Visual Studio" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->31 July 2012</p><p style="width:100%;margin-top:2rem">Something I’ve had to do from time to time is disable a plug-in in Visual Studio, either permanently or temporarily, such as ReSharper. Just now was one of those times, and as in the past I had to hunt through a variety of Visual Studio menus in order to find it. Personally, I think Visual Studio has some work to do on how many kinds of plug-ins, add-ons, and extensions it supports, which I hope I…</p><br/></li><li><a href="/gas-pump-ui-failure/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Gas Pump UI Failure</h2><img src="/static/18c316694ef52ed616b528094ad510a4/08990/032111-img_1813-sams-gas-station-useme.jpg" alt="Gas Pump UI Failure" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 July 2012</p><p style="width:100%;margin-top:2rem">Take a look at this picture (click to enlarge): IMG_3346 What do you notice about the octane stickers? If this were a software application and you were implementing some kind of behavior/click tracking, where are most of the clicks taking place? Since this is basically a touch interface, you can see that the largest “buttons” are the octane stickers. Above them are small headings, but to the user…</p><br/></li><li><a href="/asus-zen-ultrabook-revisited/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Asus Zen Ultrabook Revisited</h2><img src="/static/1e8d7b0a7da86c9b8436585e94e18cd0/0ff54/asus.jpg" alt="Asus Zen Ultrabook Revisited" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 March 2012</p><p style="width:100%;margin-top:2rem">A couple of months ago I got an Asus Zen ultrabook, which I posted about when I first got it, and a month or so later. Now that I’ve had it a while, I thought I’d post one more time with how it’s continued to work for me. I’m still very happy with its look, feel, and speed. It’s very responsive both while up and running and when waking up or shutting down. One thing I wish it came with is an HDMI…</p><br/></li><li><a href="/kanban-book-review/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Kanban Book Review</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->16 March 2012</p><p style="width:100%;margin-top:2rem">While researching material for my Kanban Fundamentals video training course on Pluralsight, I read Kanban: Successful Evolutionary Change for Your Technology Business, by David J. Anderson. I’ve previously reviewed a couple of other related books, including Personal Kanban and Scrumban, if you’re interested in learning more about this topic. I would recommend Personal Kanban as the most…</p><br/></li><li><a href="/reviewing-scrumban-the-book/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Reviewing Scrumban the Book</h2><img src="/static/8f42821ba4fd8318dfb972520b1cae96/6050d/microsoft-developer.png" alt="Reviewing Scrumban the Book" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 February 2012</p><p style="width:100%;margin-top:2rem">imageI’ve been reading a bunch of kanban and lean books recently as I work on my Pluralsight course on Introducing Kanban. The most recent one I’ve finished is Scrumban, Essays on Kanban Systems for Lean Software Development, by Corey Ladas (I’m doing the reviews in LIFO order). I made a bunch of notes while reading this book, and it has a great deal of useful information. I read David Anderson’s…</p><br/></li><li><a href="/asus-zen-ultrabook-one-month-later/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Asus Zen Ultrabook One Month Later</h2><img src="/static/beb91b9a65a14ef84f4ef668e09415ed/5b766/SNAGHTML912ee44_thumb.png" alt="Asus Zen Ultrabook One Month Later" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 February 2012</p><p style="width:100%;margin-top:2rem">I wrote a few weeks ago about my new Asus Zen Ultrabook computer. I’ve been using it as my primary laptop computer since then, and thought I’d write up a follow-up on how it’s been. Overall, I’m quite pleased with it. The performance is great, the battery life is quite good, and the instant on/off experience makes it almost as quick and easy to use as my phone or iPad. In fact, I’ve just spent the…</p><br/></li><li><a href="/excel-cumulative-flow-diagram/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Excel Cumulative Flow Diagram</h2><img src="/static/0be064a818c19e870aac03c269501cd4/91749/image_5_excel.png" alt="Excel Cumulative Flow Diagram" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 February 2012</p><p style="width:100%;margin-top:2rem">I’m working on a Kanban Fundamentals course that should go live soon on Pluralsight. One of the topics I’m touching on is Cumulative Flow Diagrams, and how these can be used to analyze flow of a process. Some electronic kanban tools like AgileZen have some built-in support for CFD-style reports, but for instructional purposes it’s nice to be able to create one on-the-fly with whatever data one…</p><br/></li><li><a href="/team-workspace-reflections/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Team Workspace Reflections</h2><img src="/static/36d2ae7af7dec132c8f3902cc7f6ee4f/b9902/image_3_workspace.png" alt="Team Workspace Reflections" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 February 2012</p><p style="width:100%;margin-top:2rem">imageWe’ve been fans of team rooms and collaborative work environments at NimblePros for some time. In building out our new building, we took care to create several large open spaces to be used as team rooms, with plenty of room in the middle for workstations (configured for pair programming) and lots of open wall space around the outside for whiteboards and information radiators. You can see one…</p><br/></li><li><a href="/laptop-rebuild-ndash-essential-apps/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Laptop Rebuild - Essential Apps</h2><img src="/static/d6836f2a309a8526afac1522b6fb1c12/0ff54/laptop-rebuild.jpg" alt="Laptop Rebuild - Essential Apps" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 February 2012</p><p style="width:100%;margin-top:2rem">When we last saw our hero, he had fallen victim to an evil plot to disable his computer’s ability to boot up. After great efforts at recovery, eventually he was forced to concede defeat to Vista and reinstall everything from scratch. Let’s return now to see what’s in store in the next chapter of our story, already in progress… So, day 2 after my issue with Vista and I’m now at least able to use my…</p><br/></li><li><a href="/outlook-send-mail-infinite-loop-ndash-message-in-outbox/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Outlook Send Mail Infinite Loop - Message in Outbox</h2><img src="/static/d6836f2a309a8526afac1522b6fb1c12/0ff54/laptop-rebuild.jpg" alt="Outlook Send Mail Infinite Loop - Message in Outbox" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 February 2012</p><p style="width:100%;margin-top:2rem">Last week I encountered a problem with Outlook that I’m happy to report I’ve just solved. I found a bunch of things on the Interwebs that looked like they might be useful, but none of the fixes there did the trick for me (of the ones I tried – some fixes were more extreme than I wanted to attempt). Here are some resources that may help you if my fix does not: Outlook Send-Mail Infinite Loop…</p><br/></li><li><a href="/xbox-360-ndash-home-media-center/"><h2 class="is-size-2" style="width:100%;word-break:break-word">XBox 360 - Home Media Center</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 February 2012</p><p style="width:100%;margin-top:2rem">Recently I picked up an HP MediaSmart EX470 Windows Home Server to help consolidate my files at home and to provide a simple backup solution. It’s been great and it’s an extremely economical way to get backups. You can hook it up with Amazon S3 using JungleDisk and get simple offsite backup of the files (but not the backups) easily and cheaply as well, and JungleDisk is just one of many plugins…</p><br/></li><li><a href="/updating-blog-to-orchard-and-switching-domains/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Updating Blog to Orchard and Switching Domains</h2><img src="/static/9e2e3f2ce74c380baa35eb9f62641883/1dd16/image_thumb_orchard.png" alt="Updating Blog to Orchard and Switching Domains" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 January 2012</p><p style="width:100%;margin-top:2rem">image So, yesterday I posted a review of the new Asus Ultrabook and, as has become rather predictable lately, the virtual web server hosting my Graffiti-powered blog started having 100% CPU for quite a while after the post went live. Now, I don’t get *that* much traffic, but apparently something with my configuration of Graffiti, the server, and the traffic that I do get is enough for it to bring…</p><br/></li><li><a href="/asus-zen-ultrabook-first-impressions/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Asus Zen Ultrabook First Impressions</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->25 January 2012</p><p style="width:100%;margin-top:2rem">Last week a received a new Asus UX31E Zenbook Ultrabook laptop computer, which I’ve been putting through the paces.  I’d like to write up my thoughts on the unboxing and my initial impression of the machine, and I’ll write more in a few weeks once I’ve had some more time to use it.  Overall, I really like it so far.  It’s thin, light, shiny, and feels solidly put together.  It’s also extremely…</p><br/></li><li><a href="/getting-started-with-kanban/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Getting Started with Kanban</h2><img src="/static/dffc2e5ee7bcda30d3f8d197b7c1b49a/4e530/getting-started-with-kanban.png" alt="Getting Started with Kanban" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 November 2011</p><p style="width:100%;margin-top:2rem">Kanban can mean a number of things. In Japanese, the literal translation is “signboard,” but it also refers to a system of lean manufacturing, or in fact to a process for eliminating waste from a production system of any kind. In this article, I’ll quickly describe how kanban cards are used, and how the Kanban with a capital K system can be used to improve existing systems. Examples of Kanban If…</p><br/></li><li><a href="/represent-behavior-with-classes-not-flags/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Represent Behavior with Classes not Flags</h2><img src="/static/6358b02d375e54c630c8d2133e4d88be/4e530/represent-behavior-with-classes.png" alt="Represent Behavior with Classes not Flags" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->11 November 2011</p><p style="width:100%;margin-top:2rem">In any non-trivial software applications, there will be different kinds of behavior attributed to different kinds of objects. For instance, maybe a discount is only applied to some products, but not others. Or a validation rule is applied in most cases, but not for this particular class of item. Perhaps an email-sending application should perform some checks to insure it has certain elements…</p><br/></li><li><a href="/view-html-source-of-email-in-gmail-and-google-apps/"><h2 class="is-size-2" style="width:100%;word-break:break-word">View HTML Source of Email in GMail and Google Apps</h2><img src="/static/943494dc9698f143f38ae2136dba9859/5b766/image_3_gmail.png" alt="View HTML Source of Email in GMail and Google Apps" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 November 2011</p><p style="width:100%;margin-top:2rem">If you’re working on creating a pleasant-looking HTML email template for your site’s newsletter, you’ll want to test it out on the major email clients, including Outlook and GMail.  For instance, if you get The Code Project’s Insider Daily News in your GMail inbox, it will look something like this: image Now, if you view the source for this page, you’ll get something that’s less than useful.  The…</p><br/></li><li><a href="/using-if-this-then-that-to-automate-your-life/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Using If This Then That to Automate Your Life</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 October 2011</p><p style="width:100%;margin-top:2rem">I’ve just started getting into If This Then That (ifttt.com) and have set up a simple task that will update my Steve Smith Facebook Page whenever I post something here to my blog.  Getting this set up was extremely simple to do, and so far although I’ve only been using it for about an hour I’m quite impressed and enamored with ifttt.com.  Here’s how easy it is to set up something like this:…</p><br/></li><li><a href="/display-plus-sign-in-excel-if-value-is-positive/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Display Plus Sign in Excel if Value is Positive</h2><img src="/static/3a91967fce63f4882625219073a9e1cd/5b766/excel_1.png" alt="Display Plus Sign in Excel if Value is Positive" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 July 2011</p><p style="width:100%;margin-top:2rem">Sometimes in Excel you may want to actually display a + character (or plus sign) in front of the cell value if the value is positive.  For instance, if you’re showing the change in a value, like this (note these are made up values): excel_1 In this case, you can imagine that the Change columns are relative to the previous month’s report, so this gives an at-a-glance idea of the trend.  However…</p><br/></li><li><a href="/drawing-directed-graphs-with-graphviz/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Drawing Directed Graphs with GraphViz</h2><img src="/static/7542b3eb3c580db0bea32f9057d68fd3/5b766/image_3_graphviz.png" alt="Drawing Directed Graphs with GraphViz" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->15 July 2011</p><p style="width:100%;margin-top:2rem">I’ve been wanting to draw some simple circle-and-arrow directed graphs for a while, because of a few problem domains I’m working in.  One example pertains to articles and related educational content, which I’d like to represent as a series of modules linked by arrows that represent prerequisites.  You can see a wonderful example of such a diagram on the Khan Academy’s site in their Exercise…</p><br/></li><li><a href="/how-to-find-conference-and-user-group-presenters/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Find Conference and User Group Presenters</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->13 July 2011</p><p style="width:100%;margin-top:2rem">5451873949_d43dbb8c2dIf you’re a user group leader or event organizer and are looking for quality presenters for your event, here are some resources that should help get you started.  This is not meant to be an all-inclusive or exhaustive list, of course, and to that end I fully expect that there will be great resources left as an exercise for you, the reader, to add via the comments.  Thanks for…</p><br/></li><li><a href="/working-with-value-objects/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Working with Value Objects</h2><img src="/static/a6a3866fe4a56b81633ac0d712eabe93/4e530/working-with-value-objects.png" alt="Working with Value Objects" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 July 2011</p><p style="width:100%;margin-top:2rem">Introduction A Value Object is an object that has no unique identity, but rather represents a characteristic of something else. For instance, the integer 7 can be used anywhere and always means the same thing - we don&#x27;t think about this or that particular instance of the integer 7. Likewise, a given date like 11 July 2011 (GMT) is the same everywhere - it has no additional identity. In…</p><br/></li><li><a href="/sql-server-sa-password-reset/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Reset a SQL Server SA Password</h2><img src="/static/2eeb66cab21ff5feef8dd2b8b43a7188/4e530/reset-sql-sa-password.png" alt="How to Reset a SQL Server SA Password" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->28 June 2011</p><p style="width:100%;margin-top:2rem">Introduction If you need to reset the SA (system administrator) password on a MS SQL Server database because you&#x27;ve lost or forgotten the old password or you&#x27;ve change your active directory domain, you can do so provided that you can access the server with an account that has local administrator permissions. This article describes the steps required to do so. Step by Step First off, you need to…</p><br/></li><li><a href="/single-payee-credit-cards-for-recurring-payments/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Single Payee Credit Cards for Recurring Payments</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 June 2011</p><p style="width:100%;margin-top:2rem">4596638035_c616ea6a83_zHave you ever set up a recurring payment with a vendor using a credit card?  I have.  It’s very convenient, both for the consumer and the vendor, because neither one needs to be bothered with invoicing and paying bills on a regular basis.  Everything’s great, as long as the consumer really does still want the product or service offered by the vendor, and as long as the…</p><br/></li><li><a href="/seth-godin-the-dip/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Seth Godin The Dip</h2><img src="/static/1e8d7b0a7da86c9b8436585e94e18cd0/0ff54/asus.jpg" alt="Seth Godin The Dip" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 June 2011</p><p style="width:100%;margin-top:2rem">imageI picked up The Dip by Seth Godin a while back and thought I’d post my thoughts on it.  It’s a quick read, at only 80 pages or so.  I’m generally a fan of Seth’s books, and I enjoyed this one.  His style is entertaining to read, and the book was worth the &lt; $10 it cost on Amazon.  The key takeaway from this book is that when you hit the hard part of any activity you’re pursuing, you determine…</p><br/></li><li><a href="/creating-solid-vs-solution/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Creating a SOLID Visual Studio Solution</h2><img src="/static/f3eae0cb5a39d712f73a90167a3ee70d/4e530/solid-vs-solution.png" alt="Creating a SOLID Visual Studio Solution" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 June 2011</p><p style="width:100%;margin-top:2rem">Introduction The SOLID acronym describes five object-oriented design principles that, when followed, produce code that is cleaner and more maintainable. The last principle, the Dependency Inversion Principle, suggests that details depend upon abstractions. Unfortunately, typical project relationships in .NET applications can make this principle difficult to follow. In this article, I&#x27;ll…</p><br/></li><li><a href="/using-google-realtime-search-to-track-trends/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Using Google Realtime Search to track Trends</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 June 2011</p><p style="width:100%;margin-top:2rem">You can use Google’s Realtime search feature to track trending topics on social media networks like Twitter.  To find it, just do a search as usual, then click on the More icon on the left to open up the Realtime option (or just go to http://google.com/realtime). image image The default view will show you the most recent items for the given term(s).  You’ll also see a timeline showing the…</p><br/></li><li><a href="/deploy-test-azure-platform-ready/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Deploy and Test an Azure App with Platform Ready</h2><img src="/static/2d63599e08c230fd18504b6970ebddc4/4e530/azure-app-platform-ready.png" alt="Deploy and Test an Azure App with Platform Ready" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 May 2011</p><p style="width:100%;margin-top:2rem">Introduction Microsoft Platform Ready provides technical and marketing resources for companies building applications for the Microsoft platform. Currently they are working with The Code Project on a promotion that will pay $250 USD to companies for their FIRST Windows Azure Application that is verified compatible using the Microsoft Platform Ready testing tools. The contest is valid only through…</p><br/></li><li><a href="/binding-data-web-performance-tests/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Binding Data to Web Performance Tests</h2><img src="/static/397c7beb22649fd83dface45bb2beadd/4e530/binding-data-performance-tests.png" alt="Binding Data to Web Performance Tests" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->03 May 2011</p><p style="width:100%;margin-top:2rem">Introduction Visual Studio&#x27;s Web Performance Tests can be used to test whether web pages return the correct results and/or whether they respond quickly enough. You can record these tests manually, but if you have a large number of scenarios you need to test for using the same set of pages, it&#x27;s much more efficient to use the built in data source and data binding tools to do so. This article…</p><br/></li><li><a href="/aspnet-mvc3-scaffolding/"><h2 class="is-size-2" style="width:100%;word-break:break-word">ASP.NET MVC 3 Scaffolding Quick Start</h2><img src="/static/63b1860c0b744cc90b46b7588094ccb7/4e530/mvc-3-scaffolding.png" alt="ASP.NET MVC 3 Scaffolding Quick Start" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 April 2011</p><p style="width:100%;margin-top:2rem">Introduction One of the new features in ASP.NET MVC 3 is its scaffolding feature, which basically lets you very quickly produce data entry controllers and views based on a particular model, even if you don&#x27;t yet have a database in place. This can let you very quickly produce a proof-of-concept, or iterate through some design options, without the need to go through a big process of setting up a…</p><br/></li><li><a href="/simple-aspnet-report-export-excel/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Creating a Simple ASP.NET Report with Export to Excel</h2><img src="/static/f2ac6959636c297362b4adb9a683e8fd/4e530/aspnet-report-excel.png" alt="Creating a Simple ASP.NET Report with Export to Excel" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 April 2011</p><p style="width:100%;margin-top:2rem">Introduction One of my very first articles was on exporting reports to Excel using Active Server Pages, and this article still gets over a thousand views per month. Today I had to create a quick report for internal use and I thought it would be helpful for the user to be able to quickly export the results to Excel. Thus I found myself, over a decade later, going through much the same process as…</p><br/></li><li><a href="/introducing-pair-programming-at-cinci-day-of-agile/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Introducing Pair Programming at Cinci Day Of Agile</h2><img src="/static/1e8d7b0a7da86c9b8436585e94e18cd0/0ff54/asus.jpg" alt="Introducing Pair Programming at Cinci Day Of Agile" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->30 March 2011</p><p style="width:100%;margin-top:2rem">Last weekend I presented at the Cincinnati Day of Agile event on Introducing Pair Programming (see on slideshare).  The event was nearly sold out with about 240 people in attendance, a mix of devs and PMs.  The content and (other) speakers I thought were great – Phil and his team did a great job.  I took a few pictures during the event, which you can see below: Phil and Joel Semeniuk DSC_001…</p><br/></li><li><a href="/orchard-content-management/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Installing Orchard Content Management System</h2><img src="/static/123f5a1fb745447aa399cba447edb7b0/4e530/orchard-content-management.png" alt="Installing Orchard Content Management System" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 March 2011</p><p style="width:100%;margin-top:2rem">Introduction Orchard is a free, open source, community-focused content management system built on the ASP.NET platform. It uses ASP.NET MVC 3, the Razor view engine, and is an Outercurve Foundation project. In this article, we&#x27;ll look at how to get started with Orchard 1.0 by installing it. Installing Orchard There are a few different ways you can install Orchard. Probably the simplest if you…</p><br/></li><li><a href="/handling-errors-mvc/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Handling Errors with ASP.NET MVC</h2><img src="/static/c81a302fa3322deec11cd504cc37e6e1/4e530/handling-errors-mvc.png" alt="Handling Errors with ASP.NET MVC" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 March 2011</p><p style="width:100%;margin-top:2rem">Introduction Nobody likes to talk about it, but sometimes your web application is going to fail. When it does, you want to make sure your users still get the best possible experience, and ideally that you as the developer get what you need to fix the problem. In this article, you&#x27;ll learn how to configure error handling in your ASP.NET MVC 3 applications. In the beginning... When you first…</p><br/></li><li><a href="/code-analysis-atomiq/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Code Analysis Using Atomiq</h2><img src="/static/e247ac75856d5364c9ab880d47f9277f/4e530/atomiq.png" alt="Code Analysis Using Atomiq" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 March 2011</p><p style="width:100%;margin-top:2rem">Introduction Atomiq is a code analysis tool that quickly locates duplicate code within software applications by analyzing the source code. It works at the source, not binary, level, and so can be applied to applications written in a variety of languages. Although it doesn&#x27;t support auto-correction or refactoring within the application, it can quickly locate problems which can then be addressed…</p><br/></li><li><a href="/avoid-collections-as-properties/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Avoid Exposing Collections Directly as Properties</h2><img src="/static/939dc30767b102ced84c1f46db369c47/4e530/avoid-collections-as-properties.png" alt="Avoid Exposing Collections Directly as Properties" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 February 2011</p><p style="width:100%;margin-top:2rem">Introduction Sometimes your domain objects have one-to-many or many-to-many relationships with other objects. For instance, your Customers might have collections of Orders associated with them. The simplest way to model this is to expose a field or property off of your Customer class. Unfortunately, this has a number of negative consequences because of how it breaks encapsulation. Fortunately…</p><br/></li><li><a href="/how-to-record-a-screencast-with-expression-encoder-4/"><h2 class="is-size-2" style="width:100%;word-break:break-word">How to Record a Screencast with Expression Encoder 4</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->16 February 2011</p><p style="width:100%;margin-top:2rem">I’m a huge fan of TechSmith Camtasia and use it for pretty much all of my screencasts.  However, I’m currently recording some presentations for the Code Project Agile Virtual Tech Summit that’s taking place next week, and the preferred capture program for the platform is Expression Encoder 4.  So, I figured while I’m learning how to do it, I might as well share how it works and how I find it…</p><br/></li><li><a href="/live-essentials-evilness/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Live Essentials Evilness</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->31 January 2011</p><p style="width:100%;margin-top:2rem">Hey, Microsoft, please stop trying to reset my home page and change my search preferences when I install the one tool from Live Essentials that I find useful, Live Writer (which is awesome, by the way).  I’m pretty sure my browser already has a preferences section wherein I can set my home page, and likewise my search engine of choice, and your presumption that by installing another tool that is…</p><br/></li><li><a href="/where-is-outlook-2010-export/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Where is Outlook 2010 Export</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->31 January 2011</p><p style="width:100%;margin-top:2rem">In an example of extremely intuitive user experience, the latest version of Outlook has moved things around in the interests of ribbonizing everything.  This would be fine if in fact the trendy new ribbon UI was organized in a fashion that was, well, based on logic.  Sadly, at least in the case of Exporting data, this is not the case.  In previous versions of Outlook, one could navigate to File…</p><br/></li><li><a href="/398/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Sharp XV-Z9000U Projector Wont Power Up - Solution</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->21 January 2011</p><p style="width:100%;margin-top:2rem">I have a fairly old projector that recently required a new bulb.  It’s a Sharp XV-Z9000U model, which has bulbs that last for something like 2000 hours, and the projector has a timer in it that starts warning you when you’re approaching this number.  Ultimately, when you’ve ignored the warnings long enough (because the existing bulb keeps on working fine), the projector starts to shut itself down…</p><br/></li><li><a href="/command-query-responsibility-separation/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Introducing Command Query Responsibility Separation (CQRS)</h2><img src="/static/eb83eee933e7067b644de019d19546bc/4e530/cqrs.png" alt="Introducing Command Query Responsibility Separation (CQRS)" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->11 January 2011</p><p style="width:100%;margin-top:2rem">Introduction The Command Query Responsibility Separation (CQRS) pattern is an enterprise pattern that can be used to increase the performance, scalability, and reliability of distributed applications that may experience heavy load. It is especially effective in situations where an immediate response is not required, or often even expected, by the user, or to offload processing that need not occur…</p><br/></li><li><a href="/abstract-to-privileges-not-roles/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Abstract to Privileges rather than to Roles in ASP.NET Applications</h2><img src="/static/d9b32301b083af15660523e6da6d983e/4e530/privileges-not-roles.png" alt="Abstract to Privileges rather than to Roles in ASP.NET Applications" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 December 2010</p><p style="width:100%;margin-top:2rem">The Problem If you&#x27;ve written much ASP.NET code since 2005, you&#x27;ve probably used the built-in role provider, or rolled your own, and written code that checks whether the current user belongs to a particular role. For instance, for an article site like ASPAlliance.com, you might choose to show an Edit link to editors with some code like this: Of course, it might also be true that authors should be…</p><br/></li><li><a href="/134/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Get the Batch Files Path in a Batch File</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 December 2010</p><p style="width:100%;margin-top:2rem">I’m a huge fan of build automation, and all of my dev projects include scripts to build, test, deploy, run etc.  Sometimes these use PowerShell and quite often they use MSBuild (or occasionally NAnt) but batch files remain a very simple and powerful way to take care of automation business.  Today I’m trying to wrap up my use of NServiceBus on a project that’s going live with some CQRS goodness…</p><br/></li><li><a href="/the-message-is-the-message-received/"><h2 class="is-size-2" style="width:100%;word-break:break-word">The Message Is The Message Received</h2><img src="/static/f3971c620a62694c3f141316bea9b069/57fe4/communication-sender-medium-receiver.png" alt="The Message Is The Message Received" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 October 2010</p><p style="width:100%;margin-top:2rem">I recall early on in my military career, in an ROTC class, learning about communication.  Communication is very important in the military, and at least as important in civilian life.  Especially today, when there are so many ways to communicate, and so many ways to communicate poorly. In a recent twitter conversation, I was reminded of one of the lessons from this class, which was summed up as…</p><br/></li><li><a href="/startup-business-checklist-2010/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Startup Business Checklist 2010</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->18 August 2010</p><p style="width:100%;margin-top:2rem">checklist Below is my current checklist for startup businesses in 2010.  This is meant to be relatively industry-agnostic and focuses primarily on online components of the business (meaning, it may not apply to businesses which avoid the Internet for whatever reason).  I’ve included numerous links to more information and references.  Checklists are a great way to ensure you don’t forget important…</p><br/></li><li><a href="/screencast-and-podcast-recording-gear/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Screencast and Podcast Recording Gear</h2><img src="/static/1e8d7b0a7da86c9b8436585e94e18cd0/0ff54/asus.jpg" alt="Screencast and Podcast Recording Gear" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 August 2010</p><p style="width:100%;margin-top:2rem">I’m working on some screencasts and have had some gear recommended to me that I’m ordering now.  I’ll post back later with an update on how I like these, but if anybody else is interested in what I’ve been told is the best stuff to get, here you go. Microphone rode-podcasterThe microphone of choice is the Rode Podcaster, pictured at right.  It has a built-in pop filter, so no need to pick up one…</p><br/></li><li><a href="/shared-folders-in-virtualbox-on-windows-7/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Shared Folders in VirtualBox on Windows 7</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Shared Folders in VirtualBox on Windows 7" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 May 2010</p><p style="width:100%;margin-top:2rem">In my adventures with VirtualBox, my latest victory was in figuring out how to share folders between my host OS (Windows 7) and my virtual OS (Windows Server 2008). I&#x27;m familiar with VirtualPC and other such products, which allow you to share local folders with the VM. When you do, they just show up in Windows Explorer and all is good. However, after configuring shared folders in VirtualBox like…</p><br/></li><li><a href="/powershell-control-over-nikon-d3000-camera/"><h2 class="is-size-2" style="width:100%;word-break:break-word">PowerShell Control over Nikon D3000 Camera</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="PowerShell Control over Nikon D3000 Camera" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 April 2010</p><p style="width:100%;margin-top:2rem">My wife got me a Nikon D3000 camera for Christmas last year, and I&#x27;m loving it but still trying to wrap my head around some of its features. For instance, when you plug it into a computer via USB, it doesn&#x27;t show up as a drive like most cameras I&#x27;ve used to, but rather it shows up as Computer D3000. After a bit of research, I&#x27;ve learned that this is because it implements the MTP/PTP protocol, and…</p><br/></li><li><a href="/inbound-marketing-and-small-business-trends/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Inbound Marketing and Small Business Trends</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Inbound Marketing and Small Business Trends" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->03 February 2010</p><p style="width:100%;margin-top:2rem">I recently read Dharmesh’s and Brian Halligan’s Inbound Marketing book, which has a lot of good tips for startup companies to follow in order to maximize their online reach and popularity. Many of the tips are pretty obvious: start a blog, get people linking to you, build a following on twitter. But there are some that are pretty easy to overlook, and at the end of the book is a very good appendix…</p><br/></li><li><a href="/goals-for-2010/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Goals for 2010</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Goals for 2010" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->16 January 2010</p><p style="width:100%;margin-top:2rem">I recently wrote about how I did with my 2009 goals, now it’s time to set a few for this year. Let’s start with two that didn’t go so well for me last year: 1. Get In Shape. By the end of 2010 I will be under 200 pounds. I will have achieved my Brown Belt in karate. I will have biked 100 miles. (I have a Wii Fit Plus now, so I’m sure I’ll also get better at many of the games on the system).…</p><br/></li><li><a href="/unlock-all-doors-when-parking-honda-ridgeline/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Unlock All Doors When Parking Honda Ridgeline</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Unlock All Doors When Parking Honda Ridgeline" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 January 2010</p><p style="width:100%;margin-top:2rem">I’ve had a Honda Ridgeline for a little over a year now and one of the absolute most annoying things about this vehicle is that when you drive, it locks all the doors, but when you stop, it only unlocks the driver’s door. Now, this is independent of the child safety locks that are switch-activated for the back doors. This is just a pure annoyance that makes me want to strangle some engineer…</p><br/></li><li><a href="/hide-windows-language-updates-in-windows-7/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Hide Windows Language Updates in Windows 7</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Hide Windows Language Updates in Windows 7" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 December 2009</p><p style="width:100%;margin-top:2rem">Setting up a new machine and going through the Windows Update Dance as I install the various updates that are available now (Windows 7 has been out for almost 3 months now and you know). And of course once I’ve installed the required updates, it’s always nice to see what’s in the Optional list. However, I’d like when I’m done installing everything I intend to install for Microsoft Update (note…</p><br/></li><li><a href="/where-is-the-fix-button-in-windows-photo-viewer-in-windows-7/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Where is the Fix button in Windows Photo Viewer in Windows 7?</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Where is the Fix button in Windows Photo Viewer in Windows 7?" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->18 December 2009</p><p style="width:100%;margin-top:2rem">I love Windows 7. I&#x27;m using it now on my new primary laptop computer, and going through pictures getting ready for the holidays. And of course, a few of them need cropped, or red eye fixed, etc. Simple things that Vista included in the Windows Photo Viewer that was one of the things I loved about Vista vs. XP (yes, there were things improved in Vista over XP). But wait, where&#x27;d the “Fix” option go…</p><br/></li><li><a href="/ad-landing-pages-and-customer-conversations/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Ad Landing Pages and Customer Conversations</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Ad Landing Pages and Customer Conversations" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 August 2009</p><p style="width:100%;margin-top:2rem">One of Lake Quincy Media’s clients recently wrote to me in response to my previous post about the Principle of Least Surprise and its relationship to online advertising. Their question revolved around whether it was appropriate in their case to use their company’s home page as the landing page for their advertisements, something they were doing across the board. I suggested to them that, in my…</p><br/></li><li><a href="/art-of-agile-development/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - The Art of Agile Development</h2><img src="/static/23b49ac738033b9cc44b75b0498ee988/4e530/art-of-agile.png" alt="Review - The Art of Agile Development" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 August 2009</p><p style="width:100%;margin-top:2rem">Summary This book provides an excellent field manual for implementing agile software techniques. It includes practical advice with extensive cross referencing to theory and principles that are core to agile methodologies. I would recommend it to individuals in the agile team lead/coach role, or senior developers in general interested in agile in practice. Its primary focus is on Extreme…</p><br/></li><li><a href="/advertising-and-the-principle-of-least-surprise/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Advertising and the Principle of Least Surprise</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Advertising and the Principle of Least Surprise" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 July 2009</p><p style="width:100%;margin-top:2rem">Advertising on the Internet is here to stay, and love it or hate it, good advertising is certainly preferable to bad advertising. One thing that is important for advertising is that it follow the Principle of Least Surprise, which I recently discussed as it pertains to software application development. In online advertising, this principle can be applied in a couple of ways First, recognize that…</p><br/></li><li><a href="/silverlight-3-on-xbox-360/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Silverlight 3 on XBox 360</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Silverlight 3 on XBox 360" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 June 2009</p><p style="width:100%;margin-top:2rem">devmavens scottgu Scott Guthrie earlier today twittered about a sneak peek shown today of Silverlight 3 running on an XBox 360. I&#x27;ve been waiting a long time for this and I really hope that the XBox platform will be able to take advantage of some of the opportunities that Silverlight has to offer. I&#x27;d really like to see the XBox opened up into a more flexible app server, as well as having access…</p><br/></li><li><a href="/excel-2007-named-ranges-and-data-validation/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Excel 2007 Named Ranges and Data Validation</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Excel 2007 Named Ranges and Data Validation" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 June 2009</p><p style="width:100%;margin-top:2rem">It’s hard to find information on Excel Named Ranges for Excel 2007 using a search engine. The problem isn’t that there’s no information available, but rather that most of it refers to older versions of Excel. And of course, that would be fine, if Excel 2007 didn’t go and move everything around and add that darned Ribbon thing to make it impossible to find anything. But I digress. Today I’m working…</p><br/></li><li><a href="/upgrading-hp-mediasmart-ex470-to-2gb-of-ram/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Upgrading HP MediaSmart ex470 to 2GB of RAM</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Upgrading HP MediaSmart ex470 to 2GB of RAM" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->07 June 2009</p><p style="width:100%;margin-top:2rem">After the horrible experience of trying to restore some files from my Windows Home Server while it was continuously thrashing due to insufficient memory, I picked up a 2GB stick of RAM (which arrived a couple of days ago) and am in the process of doing the upgrade with the help of this step-by-step guide which was the first result in my Bing Search. So far it’s smooth sailing, though as you can…</p><br/></li><li><a href="/vista-disconnect-from-network-share-or-unc-path/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Vista Disconnect From Network Share or UNC Path</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Vista Disconnect From Network Share or UNC Path" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 May 2009</p><p style="width:100%;margin-top:2rem">Occasionally I&#x27;ll try to connect to a UNC share or network device and I&#x27;ll forget my proper username and password for the device (NAS, router, another box, etc.). In the case of one of my NAS drives at home, it will let me guess three times what my credentials are, and then it will just connect me as whatever my last guess was, but at that point I&#x27;m basically attached as guest. Once that happens…</p><br/></li><li><a href="/goals-for-2009/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Goals for 2009</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Goals for 2009" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->25 January 2009</p><p style="width:100%;margin-top:2rem">Wow, I’m really getting a late start on this post. I’d meant to come up with some goals for the year back at the start of the month, and here it is nearly February and I’m just now getting to it. So before the kids start screaming or some other emergency distracts me, here’s some quick things I’d like to achieve (personally, not business) by the end of 2009: Get In Shape (obligatory)– I’m hovering…</p><br/></li><li><a href="/zune-feature-requests/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Zune Feature Requests</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Zune Feature Requests" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 January 2009</p><p style="width:100%;margin-top:2rem">I&#x27;ve been the proud owner of a black Zune 30 for a couple of years now. I think it&#x27;s great and I really don&#x27;t foresee a need to get a Zune 80 since I&#x27;ve never come close to using the 30GB of space available, even when I&#x27;ve put a dozen or so movies on the thing. The upgrades in software have been nice, though I do miss the quick list feature that used to be there on the device. Of course I noticed…</p><br/></li><li><a href="/travel-gadget-–-power-splitter/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Travel Gadget – Power Splitter</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Travel Gadget – Power Splitter" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->22 July 2008</p><p style="width:100%;margin-top:2rem">power splitter Something I always keep in my laptop bag is a Liberator power splitter. All this does is split one power outlet into two, with a little bit of extension cord thrown in for added convenience. You can find a wide variety of such things here. Always Enough Power For You So, what’s the big deal about having one of these? Well, you could throw a whole power strip in your bag, but that’s…</p><br/></li><li><a href="/blog-roll/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Blog Roll</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Blog Roll" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->13 July 2008</p><p style="width:100%;margin-top:2rem">I want to update my blog reading habits and make sure there aren’t really great bloggers out there of whom I’m unaware (I’m sure there are plenty). If you’d like to help out, please email me with your top 3 bloggers whom you actually read on a regular basis. Please *leave out* the really big and obvious names like ScottGu,Jeff Atwood,ScottHa, and Phil Haack. I’m already subscribed :). You’re also…</p><br/></li><li><a href="/word-2007-search-commands/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Word 2007 Search Commands</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Word 2007 Search Commands" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->13 July 2008</p><p style="width:100%;margin-top:2rem">I recently complained on Twitter that the UI in Office 2007 (and specifically Word in this case) makes it incredibly difficult to find many of the things that I knew how to find in Word 2003/2000/XP/97/Every. Other. Version. This is understandably frustrating and I don&#x27;t really see the Ribbon UI as a quantum leap forward in UI design. I do think it&#x27;s nice, in many ways, and does make it easier to…</p><br/></li><li><a href="/going-solo-birds-of-a-feather-follow-up/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Going Solo Birds of a Feather Follow Up</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Going Solo Birds of a Feather Follow Up" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->10 June 2008</p><p style="width:100%;margin-top:2rem">Last week I co-hosted a birds-of-a-feather session with Julia Lerman on Going Solo. Julie and I did a similar BOF session a couple of years ago at another TechEd and both times we’ve gotten a pretty good crowd. In an effort to continue the conversation and help people learn about the challenges of running your own business (be it consulting, ISV, or whatever), we are pointing anyone interested at…</p><br/></li><li><a href="/atlas-tripped-over-his-own-feet/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Atlas Tripped Over His Own Feet</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Atlas Tripped Over His Own Feet" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 June 2008</p><p style="width:100%;margin-top:2rem">Through Lake Quincy Media, we work with a variety of ad management platforms used by our customers. This is a story about Atlas, as told by our CEO Michelle. It is not a pleasant story, as a Microsoft customer and evangelist (Microsoft acquired Atlas a little while back), and hopefully there is enough constructive criticism in this story to qualify it as more than a simple rant. Read on… In our…</p><br/></li><li><a href="/implementing-session-timeout-aspnet/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Implementing a Session Timeout Page in ASP.NET</h2><img src="/static/a3a5a683a943d9075dc767bbc251a703/4e530/implementing-session-timeout.png" alt="Implementing a Session Timeout Page in ASP.NET" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 April 2008</p><p style="width:100%;margin-top:2rem">Introduction In many applications, an authenticated user&#x27;s session expires after a set amount of time, after which the user must log back into the system to continue using the application. Often, the user may begin entering data into a large form, switch to some other more pressing task, then return to complete the form only to find that his session has expired and he has wasted his time. One way…</p><br/></li><li><a href="/extreme-dotnet/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - eXtreme.NET by Dr. Neil Roodyn</h2><img src="/static/ac23b5df57545a68958d526381f7113f/4e530/xtreme-dotnet.png" alt="Review - eXtreme.NET by Dr. Neil Roodyn" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 March 2008</p><p style="width:100%;margin-top:2rem">Review eXtreme .NET by Dr. Neil Roodyn provides a good introduction to Extreme Programming (XP) to .NET developers. The book&#x27;s examples are in C# and include common XP tasks such as refactoring and writing unit tests. The book also includes exercises for the reader, which provide opportunities to gain practical experience, and which also may make the book appropriate for use in a classroom…</p><br/></li><li><a href="/money-for-content/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - Money for Content and Your Clicks For Free</h2><img src="/static/28d92b2469c58f8c90d79d63e348e622/4e530/money-for-content.png" alt="Review - Money for Content and Your Clicks For Free" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 February 2008</p><p style="width:100%;margin-top:2rem">Overview &quot;Money for Content and Your Clicks for Free&quot; is by cartoonist JD Frazer, aka Iliad, author of the popular computer geek cartoon series, User Friendly. Right away, this should tell you that this book is not going to be boring to read and dry like many advertising and economics books can be. What is more, JD Frazer had direct experience building up an online community site driven by…</p><br/></li><li><a href="/extending-dropdownlist-enums/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Extending the DropDownList to Support Enums</h2><img src="/static/58d326e88317d8dcb24fa6f71dee926a/4e530/dropdown-enums.png" alt="Extending the DropDownList to Support Enums" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->04 December 2007</p><p style="width:100%;margin-top:2rem">Introduction A fairly common task in some of the applications I work with is to provide a user with a DropDownList of options that is populated by an enum. This can easily be done with a little bit of code to bind a stock DropDownList control to the enum, but this kind of thing quickly starts to violate the DRY (Don&#x27;t Repeat Yourself) principle, so I created a simple derived DropDownList control…</p><br/></li><li><a href="/zune-hacks/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Zune Hacks</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Zune Hacks" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 December 2006</p><p style="width:100%;margin-top:2rem">These are some cool links I&#x27;ve found for my Zune so far: HOW TO – Copy data off a Microsoft Zune (use as a hard drive) http://www.makezine.com/blog/archive/2006/11/how_to_copy_dat.html How To Bypass The Zune&#x27;s WiFi Sharing DRM http://www.gizmodo.com/gadgets/portable-media/how-to-bypass-the-zunes-wifi-sharing-drm-217042.php HOW TO – Run Zune Software on Windows Vista http://www.modaco.com/zunevista…</p><br/></li><li><a href="/18518/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Google Spreadsheets Announced</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Google Spreadsheets Announced" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 June 2006</p><p style="width:100%;margin-top:2rem">From Online Media Daily: Google Unveils Spreadsheet App by Shankar Gupta, Wednesday, Jun 7, 2006 6:00 AM ET IN A MOVE THAT GIVESconsumers another reason to use Google for more than just Web searches, the company Tuesday released a spreadsheet program into a closed beta test. The new Google application not only allows users to post data to a Web-based spreadsheet, but also enables users to share…</p><br/></li><li><a href="/18336/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Adobe, PDF, Microsoft, and Office</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Adobe, PDF, Microsoft, and Office" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->02 June 2006</p><p style="width:100%;margin-top:2rem">Office 2007 won’t include Save As PDF by default, but you can still get it as a free download. More information here– I’ll save the analysis for others. http://blogs.msdn.com/brian_jones/archive/2006/06/02/613702.aspx</p><br/></li><li><a href="/visual-studio-debugger-tips-tricks/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Visual Studio Debugger Tips and Tricks</h2><img src="/static/9ac8bf4002c3f0af67d6f25a28faa653/4e530/vs-debugger-tips.png" alt="Visual Studio Debugger Tips and Tricks" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 May 2006</p><p style="width:100%;margin-top:2rem">Introduction Visual Studio 2005 provides a powerful debugger which makes stepping through your code to find problems a breeze. However, sometimes it offers too much information, and it can become tedious to find just what you are looking for amidst all of the extra noise. Fortunately, the debugger can be customized using a few simple techniques. TMI! Too Much Information Many times the debugger…</p><br/></li><li><a href="/17718/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Atlas GeoTagging Tool</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Atlas GeoTagging Tool" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->11 May 2006</p><p style="width:100%;margin-top:2rem">DotNetSlackers has a new Atlas tool written by Alessandro Gallo that combines geotagging, Flickr images, and a mapping tool. Pretty cool. One of these days I will have to play with Flickr…</p><br/></li><li><a href="/15951/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Mini Microsoft Blog</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Mini Microsoft Blog" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->24 March 2006</p><p style="width:100%;margin-top:2rem">Just found the Mini-Microsoft blog– definitely a good read. I’ll be back.</p><br/></li><li><a href="/15653/"><h2 class="is-size-2" style="width:100%;word-break:break-word">IE6 Flash Eolas Patch Workaround</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="IE6 Flash Eolas Patch Workaround" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 March 2006</p><p style="width:100%;margin-top:2rem">I’ve been dealing with the IE6 Eolas Patch that was released last week (February 28) via Windows Update as an optional download. This patch affects IE by forcing the user to click on any active content (Flash being the one I’m concerned with here) to activate it before the use can interact with the content. Since I don’t want my Flash movies to alter their behavior in response to this patch, I’m…</p><br/></li><li><a href="/15595/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Another Viral Marketing Buzz Campaign Almost Over</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Another Viral Marketing Buzz Campaign Almost Over" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 March 2006</p><p style="width:100%;margin-top:2rem">Ron McDaniel who is into Buzz Marketing posted about the TextPayMe marketing effort that I’m participating in. When I last checked, they’d given away 11 $300 XBox 360 systems (5 of which appear to be to the same CP from Washington). That works out to about $3300 assuming they’re paying retail, which is unlikely. Considering the amount of buzz they’ve generated through this contest, and the number…</p><br/></li><li><a href="/browserhawk9/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - BrowserHawk 9</h2><img src="/static/b1f239f77c5cfaf28eaaf26c87b23086/4e530/browserhawk9.png" alt="Review - BrowserHawk 9" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->08 February 2006</p><p style="width:100%;margin-top:2rem">Bottom Line Up Front If you need to detect browser capabilities, browser settings, Java, JavaScript, or Flash, then I would strongly recommend you download cyScape BrowserHawk and give it a test drive. I found the product to be very mature, well-documented, easy to use, and full-featured. What issues I did encounter were &quot;user error&quot; (i.e., my fault), but even still cyScape&#x27;s support was very…</p><br/></li><li><a href="/1920/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Handy PowerPoint Tips</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Handy PowerPoint Tips" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 September 2005</p><p style="width:100%;margin-top:2rem">Clemenscame up with a handy VBA macro that makes copying diagrams from one PPT to another much less painful. He explains the problem in more detail in his blog entry, but the basic issue is that different powerpoint files may use different color schemes. Copying from one to another may change all the colors in your diagram, often in ways you’d prefer to avoid. Another trick I recently learned…</p><br/></li><li><a href="/1916/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Two Kinds of Writing</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Two Kinds of Writing" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 August 2005</p><p style="width:100%;margin-top:2rem">If you don’t know me, just click here. Detailed Version If you do know me, you should read this interesting article(ok, blog entry) by Seth Godin, marketing guru, about why we are overly verbose when we’re trying to get information across to strangers, but typically too curt when we’re seeking to win over our friends and colleagues. I’m only telling you all this because, if you’ve read this far…</p><br/></li><li><a href="/1905/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Laptop Stands</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Laptop Stands" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 August 2005</p><p style="width:100%;margin-top:2rem">I got a new laptop stand from my buddy Scott Cate last week which is making me much happier. I used to have to hunch over all day so I could look directly at my laptop screen, and I didn’t want to spend $100+ for a manufacturer laptop stand (and I don’t need a port replicator). So Scott’s cheap but effective (and light and portable!) solution seems to be working quite well for me. Here’s my setup…</p><br/></li><li><a href="/1897/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Tip For Employees – Don&#x27;t Stop Looking</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Tip For Employees – Don&#x27;t Stop Looking" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->28 July 2005</p><p style="width:100%;margin-top:2rem">A few years ago, I worked for a consulting company for five years, which during that time (and somewhat still today) was quite a long time to remain with one company. It was a common occurrence for clients to offer me positions in their companies, but this practice was strongly frowned upon by my employer, who actively discouraged such recruiting. I never ended up accepting any such offers, but…</p><br/></li><li><a href="/1890/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Write For AspAlliance</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Write For AspAlliance" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 July 2005</p><p style="width:100%;margin-top:2rem">As Ambrose has already announced, and Cindy has noted as well, AspAlliance.com is looking for more content. We’ve recently revised our article compensation model to make it much simpler and to provide a greater up-front incentive to our authors. The site publishes technical articles, product reviews, and even simple code snippets and samples that others may find useful. Anything relevant to ASP…</p><br/></li><li><a href="/9314/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Google Earth</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Google Earth" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 July 2005</p><p style="width:100%;margin-top:2rem">If you haven’t played with it yet and you have a decent computer, download Google Earth. It’s very cool. It’s a desktop application that lets you view aerial imagery of the planet. You can basically fly around and zoom in and out, and it downloads the imagery on-demand (requires decent network connection). I was able to find the bases I visited while I was in Iraq last year pretty easily, and…</p><br/></li><li><a href="/1830/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Reason Number 10,001 Why I Am Glad To Be Self Employed</h2><img src="/static/87cf4f76ee5961606f3a6855814db4a6/a84be/default-post-image.jpg" alt="Reason Number 10,001 Why I Am Glad To Be Self Employed" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->14 February 2005</p><p style="width:100%;margin-top:2rem">This article, When Blogging Gets Risky, talks about some of the negative effects blogging can have on employees when their employers read everything they say on their blogs. It also makes a good point that companies should have blogging policies, and talks about some success stories for companies who have embraced blogging (Sun, Google), though notably absent is Microsoft despite their hundreds of…</p><br/></li><li><a href="/aspnet-whidbey/"><h2 class="is-size-2" style="width:100%;word-break:break-word">ASP.NET Whidbey Overview</h2><img src="/static/aac9a81b84b20501924e5eae25528ce4/4e530/whidbey.png" alt="ASP.NET Whidbey Overview" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->29 March 2004</p><p style="width:100%;margin-top:2rem">Introduction ASP.NET was first previewed at PDC in July of 2000. The first beta followed about a year later and the actual RTM of ASP.NET 1.0 came in February of 2002. ASP.NET 1.1 and Visual Studio 2003 came about a year after that, but did not include many feature updates. ASP.NET 2.0 / Visual Studio 2005, collectively code-named &#x27;Whidbey&#x27;, have been in development since before ASP.NET 1.0 was…</p><br/></li><li><a href="/caching-tips-pdc2003/"><h2 class="is-size-2" style="width:100%;word-break:break-word">ASP.NET Caching Tips from PDC 2003</h2><img src="/static/71d75233c2cb50b8942b0b40c16264dd/4e530/pdc-2003-caching.png" alt="ASP.NET Caching Tips from PDC 2003" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->30 October 2003</p><p style="width:100%;margin-top:2rem">Caching Tips I hosted a Birds of a Feather Session at PDC 2003 which was attended by about 30 people, including Rob Howard from the ASP.NET team. During the course of the event, a number of tips and resources for caching in .NET were revealed. The highlights are listed here. Output caching, even for just a couple of seconds, can dramatically reduce database load if pages are being hit several…</p><br/></li><li><a href="/vault-source-control/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - Vault Source Control</h2><img src="/static/3ac3a1ed06767c1fb2887a192c043873/4e530/vault-source-control.png" alt="Review - Vault Source Control" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 October 2003</p><p style="width:100%;margin-top:2rem">Introduction - What is Vault? SourceGear Vault (Version 1.2.2 as of this writing) is a version control system for Windows developers. If you&#x27;ve used Visual SourceSafe, Vault is a similar (but much better) product. It is built entirely on the .NET Framework with a SQL Server 2000 backend storage system (as compared to VSS&#x27;s file system storage system). A key feature of Vault is its backward…</p><br/></li><li><a href="/whidbey-caching/"><h2 class="is-size-2" style="width:100%;word-break:break-word">ASP.NET Whidbey Caching Overview</h2><img src="/static/c43a79556217a32ff986106d54bccb62/4e530/whidbey-caching.png" alt="ASP.NET Whidbey Caching Overview" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 October 2003</p><p style="width:100%;margin-top:2rem">Caching in 1.x... ASP.NET Caching in 1.x is very powerful and includes three pieces: output caching, fragment caching, and the cache API. The simplest form, output caching, simply caches the output of a page. Fragment caching is a bit more granular, and caches the output of a user control. Finally, the most powerful caching functionality is achieved using the cache API, and allows any…</p><br/></li><li><a href="/dynamic-excel-asp/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Dynamic Excel Reports with ASP</h2><img src="/static/f85835bac66ee13f15fcc1a574e97764/4e530/dynamic-excel.png" alt="Dynamic Excel Reports with ASP" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->20 September 2003</p><p style="width:100%;margin-top:2rem">Technique There are many situations in which you may wish to convert table data into an Excel spreadsheet format for the user. There are several methods available for doing this; I will describe in this article one of the simplest ones. It basically tricks the user&#x27;s browser into thinking the HTML it is downloading is actually an Excel document, and then Excel does the rest of the work by parsing…</p><br/></li><li><a href="/dundas-chart/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - Dundas Chart 3.5</h2><img src="/static/12612968f21ef7d70204bfd20cc253d5/4e530/dundas-chart.png" alt="Review - Dundas Chart 3.5" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->27 July 2003</p><p style="width:100%;margin-top:2rem">Installation Dundas Chart 3.5 (in beta at time of publication) is the latest version of Dundas&#x27; Charting component for ASP.NET. I&#x27;ve had the opportunity to use it for some simple real-world applications I&#x27;ve been building, and I thought I&#x27;d share my experiences here. Detected and uninstalled previous version - no problem. Installed in about 5 minutes with no errors or problems. My configuration…</p><br/></li><li><a href="/10552/"><h2 class="is-size-2" style="width:100%;word-break:break-word">InfoPath / XDocs</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->26 July 2003</p><p style="width:100%;margin-top:2rem">I&#x27;m learning more about InfoPath (formerly XDocs), and it seems like it&#x27;ll be a really cool addition to the Office toolset.  Has anybody had much of an opportunity to play with this using the beta?  What did you think?</p><br/></li><li><a href="/10455/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Outlook 2003 Beta</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->23 July 2003</p><p style="width:100%;margin-top:2rem">Thought I&#x27;d blog about my experience thus far with the beta.  As I wrote in an earlier entry, I upgraded to Outlook 2003 Beta some weeks ago.  The results have been largely positive, but I do have a few complaints.  Here&#x27;s the rundown: Best Features: Junk Mail Support - It has yet to mis-classify a message as spam, and it has reduced my spam that I actually have to deal with by about 90 to 95% I&#x27;d…</p><br/></li><li><a href="/8895/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Trying out w.bloggar 3.01</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->18 June 2003</p><p style="width:100%;margin-top:2rem">I just installed w.bloggar 3.01 and the WMPAmplog Plug-In. Let&#x27;s see how it works... I used Daniel Bright&#x27;s setup instructions to get set up in about 20 seconds. If you&#x27;re reading this, everything must have worked. Ah, something for the wmpamplog FAQ - it doesn&#x27;t work until you exit and restart Winamp. Pretty easy one to troubleshoot, though. Also looks like I&#x27;ll have to set up my own CSS file to…</p><br/></li><li><a href="/8569/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Outlook 2003 Beta 2 (was Outlook Express)</h2></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->12 June 2003</p><p style="width:100%;margin-top:2rem">I&#x27;m finally upgrading from OE to Outlook on the advice of Brian Tinkler of the Wisconsin .NET User Group (among many others over the past few years).  The main reason that I stuck with/chose OE over Outlook was that Outlook97 didn&#x27;t have an easy way to select which FROM address to use for emails, and I was frequently switching between several POP3 accounts from several organizations.  OE had a…</p><br/></li><li><a href="/maxivista-desktop-sharing/"><h2 class="is-size-2" style="width:100%;word-break:break-word">Review - MaxiVista Desktop Sharing Software</h2><img src="/static/2072573dc6ff85e4572ad7f0fa9d8470/4e530/maxivista-title.png" alt="Review - MaxiVista Desktop Sharing Software" width="100%"/></a><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->19 April 2003</p><p style="width:100%;margin-top:2rem">Review Let me preface this review by saying that I&#x27;m one of those people who never has enough desktop space. I&#x27;ve got a laptop with a WUXGA screen that I run at 1920x1200 and it&#x27;s still not enough room. A large part of the reason for this is that I typically have open Outlook 2003, Visual Studio .NET 2003, a few IE6 windows, and a few instant messenger windows. Since I like to be able to keep…</p><br/></li></ul><p><a href="/category/">Browse all categories</a></p></div></div></article></div></div></div><div><header><div><div class="tile is-parent"><article class="tile is-child box"><div class="sidebar" id="sidebar"><div class="content has-text-centered"><div class="content-card"><div class="card-sidebar"><div class="firstinfo"><img src="/static/steve-smith-ardalis-200x200-e9fab63b806b33a2ee3ded4a954bbdfa.jpg" alt="Steve Smith"/><div class="profileinfo"><h1>About Ardalis</h1><h3>Software Architect</h3><p class="bio">Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.</p></div></div></div></div></div><div style="padding:8px;margin-left:10px">Get a <a href="/tips">Free Developer Tip</a> in your inbox every Wednesday.</div><div><a href="/search"><h2 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="magnifying glass">🔍</span> SEARCH</h2></a></div> <br/><div><h2 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="graduation cap">🎓</span> ONLINE TRAINING</h2></div> <br/><div class="recent-post"><ul class="recent-post"><li><a href="https://dometrain.com/bundle/from-zero-to-hero-modular-monoliths-in-dotnet/">From Zero to Hero: Modular Monoliths in .NET</a></li><li><a href="https://www.pluralsight.com/courses/refactoring-solid-c-sharp-code">Refactoring to SOLID C# Code</a> NEW!</li><li><a href="https://www.pluralsight.com/courses/aspdotnet-core-6-web-api-best-practices">ASP.NET Core 6 Web API: Best Practices</a></li><li><a href="https://www.pluralsight.com/courses/working-c-sharp-generics-best-practices">Working with C# Generics: Best Practices</a></li><li><a href="https://www.pluralsight.com/courses/fundamentals-domain-driven-design">Domain-Driven Design Fundamentals</a></li><li><a href="https://www.pluralsight.com/courses/refactoring-csharp-developers">Refactoring for C# Devs</a></li><li><a href="https://www.pluralsight.com/courses/kanban-getting-started">Kanban: Getting Started</a></li><li><a href="https://www.pluralsight.com/courses/csharp-solid-principles">SOLID Principles for C# Devs</a></li><li><a href="https://www.pluralsight.com/courses/design-patterns-overview">Design Patterns Overview</a></li></ul></div> <br/><div class="recent-post"><h2 style="font-size:22px;padding:7px;font-weight:BOLD"><span role="img" aria-label="clipboard">📋</span> CATEGORIES</h2> <br/><ul class="recent-post" style="text-transform:uppercase"><li><a href="/category/career-advice/">Career Advice<!-- --> (<!-- -->2<!-- -->)</a></li><li><a href="/category/iraq/">Iraq<!-- --> (<!-- -->158<!-- -->)</a></li><li><a href="/category/personal/">Personal<!-- --> (<!-- -->37<!-- -->)</a></li><li><a aria-current="page" class="" href="/category/productivity/">Productivity<!-- --> (<!-- -->168<!-- -->)</a></li><li><a href="/category/security/">Security<!-- --> (<!-- -->7<!-- -->)</a></li><li><a href="/category/software-development/">Software Development<!-- --> (<!-- -->960<!-- -->)</a></li><li><a href="/category/uncategorized/">Uncategorized<!-- --> (<!-- -->435<!-- -->)</a></li></ul> </div><div><br/><h4 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="book">📘</span> FREE ARCHITECTURE EBOOK</h4><br/><center><a href="/architecture-ebook"><img src="/static/Architecture-eBook-Cover-242x300-09d775f8f28cb004b00c47b84c574494.png" alt="book"/></a><h4><a href="/architecture-ebook">Get the Book!</a></h4></center><br/><h1 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="pen">🖊️</span> RECENT ARTICLES</h1><br/><div class="columns is-multiline"><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/interfaces-describe-what-implementations-describe-how/">Interfaces Describe What - Implementations Describe How</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/you-should-blog/">You Should Blog</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/from-microservices-to-modular-monoliths/">From Microservices to Modular Monoliths</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/navigation-properties-between-aggregates-modules/">Modeling Navigation Properties Between Aggregates or Modules</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/comparing-unit-testable-code-with-maintainable-code/">Comparing Unit Testable Code with Maintainable Code</a></li></ul></div></header></article></div></div><br/><h1 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="bird">🐦</span> RECENT TWEETS</h1><a class="twitter-timeline" data-width="400" data-height="800" data-theme="light" href="https://twitter.com/ardalis?ref_src=twsrc%5Etfw" data-chrome="noscrollbar">Tweets by ardalis</a><script async="" src="https://platform.twitter.com/widgets.js" charSet="utf-8" type="text/javascript"></script></div><div></div></div></article></div></div></header></div></div></div></div></section></div><footer class="footer has-background-black has-text-white-ter"><div class="content has-text-centered has-background-black has-text-white-ter"><div class="container has-background-black has-text-white-ter"><div class="columns"><div class="column is-4"><form action="https://www.google.com/search" method="get"><input type="hidden" name="q" value="site:ardalis.com"/><input type="text" name="q" alt="search" class="googletextbox"/><input type="submit" value="Search my Site with Google" class="googletextbox"/></form><br/><a href="/interviews/">Interviews</a><br/><a href="/contact">Contact</a></div><div class="column is-4"><div class="content has-text-centered"><img src="data:image/png;base64,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" alt="Ardalis" style="width:5em;height:5em"/><p>Copyright © 2024</p><br/></div></div><div class="column is-4 social"><a title="facebook" href="https://www.facebook.com/StevenAndrewSmith"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RmFjZWJvb2sgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIyLjY3NiAwSDEuMzI0Qy41OTMgMCAwIC41OTMgMCAxLjMyNHYyMS4zNTJDMCAyMy40MDguNTkzIDI0IDEuMzI0IDI0aDExLjQ5NHYtOS4yOTRIOS42ODl2LTMuNjIxaDMuMTI5VjguNDFjMC0zLjA5OSAxLjg5NC00Ljc4NSA0LjY1OS00Ljc4NSAxLjMyNSAwIDIuNDY0LjA5NyAyLjc5Ni4xNDF2My4yNGgtMS45MjFjLTEuNSAwLTEuNzkyLjcyMS0xLjc5MiAxLjc3MXYyLjMxMWgzLjU4NGwtLjQ2NSAzLjYzSDE2LjU2VjI0aDYuMTE1Yy43MzMgMCAxLjMyNS0uNTkyIDEuMzI1LTEuMzI0VjEuMzI0QzI0IC41OTMgMjMuNDA4IDAgMjIuNjc2IDAiLz48L3N2Zz4=" alt="Facebook" style="width:1em;height:1em"/></a><a title="linkedin" href="https://www.linkedin.com/in/stevenandrewsmith"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW4gaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIwLjQ0NyAyMC40NTJoLTMuNTU0di01LjU2OWMwLTEuMzI4LS4wMjctMy4wMzctMS44NTItMy4wMzctMS44NTMgMC0yLjEzNiAxLjQ0NS0yLjEzNiAyLjkzOXY1LjY2N0g5LjM1MVY5aDMuNDE0djEuNTYxaC4wNDZjLjQ3Ny0uOSAxLjYzNy0xLjg1IDMuMzctMS44NSAzLjYwMSAwIDQuMjY3IDIuMzcgNC4yNjcgNS40NTV2Ni4yODZ6TTUuMzM3IDcuNDMzYy0xLjE0NCAwLTIuMDYzLS45MjYtMi4wNjMtMi4wNjUgMC0xLjEzOC45Mi0yLjA2MyAyLjA2My0yLjA2MyAxLjE0IDAgMi4wNjQuOTI1IDIuMDY0IDIuMDYzIDAgMS4xMzktLjkyNSAyLjA2NS0yLjA2NCAyLjA2NXptMS43ODIgMTMuMDE5SDMuNTU1VjloMy41NjR2MTEuNDUyek0yMi4yMjUgMEgxLjc3MUMuNzkyIDAgMCAuNzc0IDAgMS43Mjl2MjAuNTQyQzAgMjMuMjI3Ljc5MiAyNCAxLjc3MSAyNGgyMC40NTFDMjMuMiAyNCAyNCAyMy4yMjcgMjQgMjIuMjcxVjEuNzI5QzI0IC43NzQgMjMuMiAwIDIyLjIyMiAwaC4wMDN6Ii8+PC9zdmc+" alt="Linkedin" style="width:1em;height:1em"/></a><a title="twitter" href="https://twitter.com/ardalis"><img class="fas fa-lg" src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+VHdpdHRlciBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuOTU0IDQuNTY5Yy0uODg1LjM4OS0xLjgzLjY1NC0yLjgyNS43NzUgMS4wMTQtLjYxMSAxLjc5NC0xLjU3NCAyLjE2My0yLjcyMy0uOTUxLjU1NS0yLjAwNS45NTktMy4xMjcgMS4xODQtLjg5Ni0uOTU5LTIuMTczLTEuNTU5LTMuNTkxLTEuNTU5LTIuNzE3IDAtNC45MiAyLjIwMy00LjkyIDQuOTE3IDAgLjM5LjA0NS43NjUuMTI3IDEuMTI0QzcuNjkxIDguMDk0IDQuMDY2IDYuMTMgMS42NCAzLjE2MWMtLjQyNy43MjItLjY2NiAxLjU2MS0uNjY2IDIuNDc1IDAgMS43MS44NyAzLjIxMyAyLjE4OCA0LjA5Ni0uODA3LS4wMjYtMS41NjYtLjI0OC0yLjIyOC0uNjE2di4wNjFjMCAyLjM4NSAxLjY5MyA0LjM3NCAzLjk0NiA0LjgyNy0uNDEzLjExMS0uODQ5LjE3MS0xLjI5Ni4xNzEtLjMxNCAwLS42MTUtLjAzLS45MTYtLjA4Ni42MzEgMS45NTMgMi40NDUgMy4zNzcgNC42MDQgMy40MTctMS42OCAxLjMxOS0zLjgwOSAyLjEwNS02LjEwMiAyLjEwNS0uMzkgMC0uNzc5LS4wMjMtMS4xNy0uMDY3IDIuMTg5IDEuMzk0IDQuNzY4IDIuMjA5IDcuNTU3IDIuMjA5IDkuMDU0IDAgMTMuOTk5LTcuNDk2IDEzLjk5OS0xMy45ODYgMC0uMjA5IDAtLjQyLS4wMTUtLjYzLjk2MS0uNjg5IDEuOC0xLjU2IDIuNDYtMi41NDhsLS4wNDctLjAyeiIvPjwvc3ZnPg==" alt="Twitter" style="width:1em;height:1em"/></a><a title="youtube" href="https://www.youtube.com/ardalis/"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48dGl0bGU+WW91VHViZSBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuNDk1IDYuMjA1YTMuMDA3IDMuMDA3IDAgMCAwLTIuMDg4LTIuMDg4Yy0xLjg3LS41MDEtOS4zOTYtLjUwMS05LjM5Ni0uNTAxcy03LjUwNy0uMDEtOS4zOTYuNTAxQTMuMDA3IDMuMDA3IDAgMCAwIC41MjcgNi4yMDVhMzEuMjQ3IDMxLjI0NyAwIDAgMC0uNTIyIDUuODA1IDMxLjI0NyAzMS4yNDcgMCAwIDAgLjUyMiA1Ljc4MyAzLjAwNyAzLjAwNyAwIDAgMCAyLjA4OCAyLjA4OGMxLjg2OC41MDIgOS4zOTYuNTAyIDkuMzk2LjUwMnM3LjUwNiAwIDkuMzk2LS41MDJhMy4wMDcgMy4wMDcgMCAwIDAgMi4wODgtMi4wODggMzEuMjQ3IDMxLjI0NyAwIDAgMCAuNS01Ljc4MyAzMS4yNDcgMzEuMjQ3IDAgMCAwLS41LTUuODA1ek05LjYwOSAxNS42MDFWOC40MDhsNi4yNjQgMy42MDJ6Ii8+PC9zdmc+" alt="YouTube" style="width:1em;height:1em"/></a><a title="github" href="https://github.com/ardalis"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+R2l0SHViIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0xMiAuMjk3Yy02LjYzIDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMyAzLjQzOCA5LjggOC4yMDUgMTEuMzg1LjYuMTEzLjgyLS4yNTguODItLjU3NyAwLS4yODUtLjAxLTEuMDQtLjAxNS0yLjA0LTMuMzM4LjcyNC00LjA0Mi0xLjYxLTQuMDQyLTEuNjFDNC40MjIgMTguMDcgMy42MzMgMTcuNyAzLjYzMyAxNy43Yy0xLjA4Ny0uNzQ0LjA4NC0uNzI5LjA4NC0uNzI5IDEuMjA1LjA4NCAxLjgzOCAxLjIzNiAxLjgzOCAxLjIzNiAxLjA3IDEuODM1IDIuODA5IDEuMzA1IDMuNDk1Ljk5OC4xMDgtLjc3Ni40MTctMS4zMDUuNzYtMS42MDUtMi42NjUtLjMtNS40NjYtMS4zMzItNS40NjYtNS45MyAwLTEuMzEuNDY1LTIuMzggMS4yMzUtMy4yMi0uMTM1LS4zMDMtLjU0LTEuNTIzLjEwNS0zLjE3NiAwIDAgMS4wMDUtLjMyMiAzLjMgMS4yMy45Ni0uMjY3IDEuOTgtLjM5OSAzLS40MDUgMS4wMi4wMDYgMi4wNC4xMzggMyAuNDA1IDIuMjgtMS41NTIgMy4yODUtMS4yMyAzLjI4NS0xLjIzLjY0NSAxLjY1My4yNCAyLjg3My4xMiAzLjE3Ni43NjUuODQgMS4yMyAxLjkxIDEuMjMgMy4yMiAwIDQuNjEtMi44MDUgNS42MjUtNS40NzUgNS45Mi40Mi4zNi44MSAxLjA5Ni44MSAyLjIyIDAgMS42MDYtLjAxNSAyLjg5Ni0uMDE1IDMuMjg2IDAgLjMxNS4yMS42OS44MjUuNTdDMjAuNTY1IDIyLjA5MiAyNCAxNy41OTIgMjQgMTIuMjk3YzAtNi42MjctNS4zNzMtMTItMTItMTIiLz48L3N2Zz4=" alt="GitHub" style="width:1em;height:1em"/></a><a title="mastodon" rel="me" href="https://fosstodon.org/@ardalis">Mastodon</a></div></div><div class="columns"><div class="column is-12"> <br/></div></div></div></div></footer></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/category/productivity/";window.___webpackCompilationHash="9f072ce39b8c45e776d8";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-7da9e88def8c798a4eb9.js"],"app":["/app-405db4ecfef604df7c88.js"],"component---src-pages-404-js":["/component---src-pages-404-js-1976de88f000a167ddcd.js"],"component---src-pages-blog-xxindex-js":["/component---src-pages-blog-xxindex-js-6bcf93906ae77ae2d8f9.js"],"component---src-pages-category-index-js":["/component---src-pages-category-index-js-48d61f4a46bb641b8956.js"],"component---src-pages-contact-us-index-js":["/component---src-pages-contact-us-index-js-5b411c187d58149838fb.js"],"component---src-pages-contact-us-thanks-js":["/component---src-pages-contact-us-thanks-js-4628b8a932d6ba8aab4f.js"],"component---src-pages-search-js":["/component---src-pages-search-js-a08b213b54d487a46d0b.js"],"component---src-pages-tags-index-js":["/component---src-pages-tags-index-js-19205344ecd0edc99e53.js"],"component---src-templates-assessments-page-js":["/component---src-templates-assessments-page-js-6eb574b0cb3280515679.js"],"component---src-templates-blog-list-js":["/component---src-templates-blog-list-js-0654f80ec4fb1083e770.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-a0b924a3ca1633ff2ab9.js"],"component---src-templates-category-js":["/component---src-templates-category-js-fcf4126d77453579328c.js"],"component---src-templates-ebook-page-js":["/component---src-templates-ebook-page-js-bd3cc1f64c724e6b2225.js"],"component---src-templates-index-page-js":["/component---src-templates-index-page-js-e858569f1b057f1865d5.js"],"component---src-templates-interviews-page-js":["/component---src-templates-interviews-page-js-ba4485a2c98fe4cbe0d7.js"],"component---src-templates-mentoring-page-js":["/component---src-templates-mentoring-page-js-5bb43e188b85eb0ea5d8.js"],"component---src-templates-software-craftsmanship-2016-wall-calendar-sponsorship-page-js":["/component---src-templates-software-craftsmanship-2016-wall-calendar-sponsorship-page-js-336fba6ad39c3dd88394.js"],"component---src-templates-tags-js":["/component---src-templates-tags-js-be64cf526cda48ad19f7.js"],"component---src-templates-tips-page-js":["/component---src-templates-tips-page-js-46547b7f6de4bc8075e7.js"],"component---src-templates-tools-used-page-js":["/component---src-templates-tools-used-page-js-57cf6d51808846c98f3d.js"],"component---src-templates-training-classes-page-js":["/component---src-templates-training-classes-page-js-9f8bb3852c890a4a7db3.js"]};/*]]>*/</script><script src="/polyfill-7da9e88def8c798a4eb9.js" nomodule=""></script><script src="/app-405db4ecfef604df7c88.js" async=""></script><script src="/532a2f07-f97befafd74bf8dd0311.js" async=""></script><script src="/framework-3a4fd0dc0ae7f6fdcce7.js" async=""></script><script src="/webpack-runtime-3c5edcbff810762fe2d4.js" async=""></script></body></html>

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