Unhappy Path Driven Development

This story — about all the things that could, and do, go wrong in software design and development — is an incredibly important cautionary tale about the work we do in our field, and our role in it.

Read it thoroughly and always from the perspective of how, given the domain, the product failed its us. Customizability breeds problems because it’s the opposite of enforcing constraints, which are fundamental to robust system design. Without constraints, it becomes difficult to scope the impact of changes, to understand how different consumers use our products, and thus, to build.

Repeating information under the format, over and over, dilutes its meaning. Imagine if instead, the application displayed an image of the medicine and maybe even a cute visualization of the pills the hospital would be administering. It’s the same repetition, but easier to digest.

The article talks about the perils of mode switching (think the Caps Lock key and password inputs, or in their case: dosage units). When you’re in a mode, the application should make it obvious that that’s your life now. Otherwise, chaos ensues. (oh hi vim!)

A perhaps even more crucial-to-get-right mode is failure. The product indeed had warnings about the case where an overdose is ordered. Along with just about everything else. In a month, systems for a hospital like the one in the article dump over 381,560 such alerts on the staff.

It’s easy to blame the user. They ignored the warnings, repeatedly. Or the induction process where staff learns early on to ignore every warning the system lobs their way. And for good reason: they wouldn’t be able to do their work otherwise. The user is hardly ever to blame.

The problem here, as is often the case in it industry, is that we want so hard to believe the “happy path” is what’s most important. After all, it’s what we sell. But no. The many, extremely sad garden paths of despair is what we should be must focused on. So what does that mean?

A holistic approach to failure modes. Users trust the system, and in the case of a hospital, they trust process above all. When every single action results in a warning, then warnings mean absolutely nothing. We know that perfectly well, so why do we keep doing this?

Then you get exactly what happened here: users ignore virtually-always meaningless warnings but trust the process and the inputs made by staff before them.

So how do we fix this? Better input modes, visual confirmation of the correctness of those inputs, judicious use of warnings with different severity levels, and for the love of the Matrix, fewer customizability options to prevent an untestable cambrian explosion of use cases.

html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;position:relative;vertical-align:baseline}sup{top:-.5em}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto;resize:vertical;min-height:280px;max-height:900px}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item;margin:-10px -20px;padding:10px;background-color:#f6f6f6;cursor:pointer;border-bottom:2px solid #ddd}[hidden],template{display:none}body,body:after,body:before,html,html:after,html:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}@-moz-keyframes bg-rainbow{0%{background-color:#e92c6c}50%{background-color:#f1e05a}90%{opacity:.6;background-color:#37ed2c}}@-webkit-keyframes bg-rainbow{0%{background-color:#e92c6c}50%{background-color:#f1e05a}90%{opacity:.6;background-color:#37ed2c}}@-o-keyframes bg-rainbow{0%{background-color:#e92c6c}50%{background-color:#f1e05a}90%{opacity:.6;background-color:#37ed2c}}@keyframes bg-rainbow{0%{background-color:#e92c6c}50%{background-color:#f1e05a}90%{opacity:.6;background-color:#37ed2c}}@-moz-keyframes sb-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,.5);box-shadow:0 0 0 0 rgba(233,44,108,.5)}70%{-webkit-box-shadow:0 0 0 15px rgba(233,44,108,0);box-shadow:0 0 0 15px rgba(233,44,108,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,0);box-shadow:0 0 0 0 rgba(233,44,108,0)}}@-webkit-keyframes sb-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,.5);box-shadow:0 0 0 0 rgba(233,44,108,.5)}70%{-webkit-box-shadow:0 0 0 15px rgba(233,44,108,0);box-shadow:0 0 0 15px rgba(233,44,108,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,0);box-shadow:0 0 0 0 rgba(233,44,108,0)}}@-o-keyframes sb-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,.5);box-shadow:0 0 0 0 rgba(233,44,108,.5)}70%{-webkit-box-shadow:0 0 0 15px rgba(233,44,108,0);box-shadow:0 0 0 15px rgba(233,44,108,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,0);box-shadow:0 0 0 0 rgba(233,44,108,0)}}@keyframes sb-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,.5);box-shadow:0 0 0 0 rgba(233,44,108,.5)}70%{-webkit-box-shadow:0 0 0 15px rgba(233,44,108,0);box-shadow:0 0 0 15px rgba(233,44,108,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(233,44,108,0);box-shadow:0 0 0 0 rgba(233,44,108,0)}}body{margin:0;font-family:’Helvetica Neue’,HelveticaNeue,TeXGyreHeros,FreeSans,’Nimbus Sans L’,’Liberation Sans’,Helvetica,Arial,sans-serif;background:#fcfcfc;color:#333}img{max-width:100%;border:none}.md-markdown figure:not(.twitter-tweet-figure){background-color:#f6f6f6}.md-markdown figure:not(.twitter-tweet-figure)>a{display:block}.md-markdown figure:not(.twitter-tweet-figure)>a>img,.md-markdown figure:not(.twitter-tweet-figure)>img{display:block;margin-left:auto;margin-right:auto}.md-markdown figcaption{padding:10px;font-style:italic;font-size:14px;background:-webkit-linear-gradient(left,#fff9e2 33%,#fcf9ee 100%);background:-moz-linear-gradient(left,#fff9e2 33%,#fcf9ee 100%);background:-o-linear-gradient(left,#fff9e2 33%,#fcf9ee 100%);background:-ms-linear-gradient(left,#fff9e2 33%,#fcf9ee 100%);background:linear-gradient(to right,#fff9e2 33%,#fcf9ee 100%);color:#555}.md-markdown .figure-has-loaded{background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fcf9ee 100%);background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fcf9ee 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0,#fcf9ee 100%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#fcf9ee 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fcf9ee 100%)}b,em,font-style italic,font-weight bold,i,ins,strong{text-decoration:none}del{text-decoration:line-through}sub,sup{bottom:0;line-height:18px}button,input{overflow:visible;border-radius:0}button{border:none;padding:6px 8px;font-size:1.2em;background:0 0}button[disabled]{color:#cbccbc!important}input,select,textarea{display:block;width:100%;padding:10px 8px;line-height:18px;border:none;font:inherit}select{height:38px}ol,ul{padding:0;margin:0;list-style-position:inside}li>ol,li>ul{margin-left:20px}hr{border:none;border-top:5px solid rgba(0,0,0,.05);margin:20px 0}kbd{display:inline-block;border:1px solid #ccc;margin:0 .1em;padding:.1em .6em;line-height:1.4;font-size:11px;background-color:#f7f7f7;-webkit-box-shadow:0 1px 0 #bbb,0 0 0 2px #fff inset;box-shadow:0 1px 0 #bbb,0 0 0 2px #fff inset;border-radius:3px;color:#333;text-shadow:0 1px 0 #fff;white-space:nowrap}iframe{display:inline-block;border:none;max-width:100%}summary:hover{opacity:.8}details{padding:10px 20px 20px;border-bottom:2px dashed #ddd}details[open] summary{margin-bottom:20px}blockquote{border:none}ol,p,ul{line-height:35px}p{margin:35px 0}@media only screen and (min-width:768px){ol,p,ul{line-height:30px}}a,button,input[type=submit]{cursor:pointer;text-decoration:none}.lk-link{color:#e92c6c;border-bottom:1px solid transparent;background-color:rgba(255,255,255,.04)}.lk-link .md-code-inline{position:relative}.lk-link .md-code-inline:only-child{display:inline-block;line-height:17px}.lk-link .md-code-inline:before{content:”;position:absolute;background-color:#f1e05a;top:0;left:0;right:0;bottom:0;opacity:.04}.lk-link:visited{background-color:rgba(233,44,108,.04)}.lk-link:visited .md-code-inline:before{background-color:#e92c6c}.lk-link:hover{border-bottom:1px solid #e92c6c}.lk-rainbows{position:relative;color:#333;margin-bottom:5px}.lk-rainbows:hover:before{position:absolute;content:”;left:0;right:0;bottom:-8px;height:3px;opacity:.8;-webkit-transition:.1s ease-in-out;-moz-transition:.1s ease-in-out;-o-transition:.1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:.1s ease-in-out;-webkit-animation:.5s infinite bg-rainbow;-moz-animation:.5s infinite bg-rainbow;-o-animation:.5s infinite bg-rainbow;-ms-animation:bg-rainbow .5s infinite;animation:.5s infinite bg-rainbow}.lk-icon{color:#333}.lk-icon:hover{color:#e92c6c}.lk-visitor{color:#333}.lk-visitor:after{display:inline-block;font:.7em/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:’f00c’;border-bottom:1px dotted #cbccbc;color:#cbccbc;margin-left:5px}.lk-visitor.lk-visitor-large:after{font-size:1em}.lk-visitor:hover:after{color:#333;border-bottom-style:solid}.lk-visitor:visited:after{color:#7d5cff}.lk-visitor-inside{color:#333}.lk-visitor-inside .lk-visitor-target:before{display:inline-block;font:.7em/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:’f00c’;border-bottom:1px dotted #cbccbc;color:#cbccbc;margin-right:5px}.lk-visitor-inside.lk-visitor-large .lk-visitor-target:before{font-size:1em}.lk-visitor-inside:hover .lk-visitor-target:before{color:#333;border-bottom-style:solid}.lk-visitor-inside:visited .lk-visitor-target:before{color:#7d5cff}.lk-visitor-before{color:#333}.lk-visitor-before:before{display:inline-block;font:.7em/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:’f00c’;border-bottom:1px dotted #cbccbc;color:#cbccbc;margin-right:5px}.lk-visitor-before.lk-visitor-large:before{font-size:1em}.lk-visitor-before:hover:before{color:#333;border-bottom-style:solid}.lk-visitor-before:visited:before{color:#7d5cff}.lk-visitor-before-no-underline:before{border-bottom-width:0}.lk-link-to-green{color:#cbccbc}.lk-link-to-green:visited,.lk-link-to-green:visited:before{color:#1bc211;background-color:#1bc211}.lk-link-to-green:active{outline-color:#1bc211}.lk-link-to-green:hover,.lk-link-to-green:hover:before{color:#8be186;border-bottom-color:#1bc211}.lk-green .lk-link,a.lk-green{color:#1bc211}.lk-green .lk-link:visited,a.lk-green:visited{background-color:rgba(27,194,17,.04)}.lk-green .lk-link:visited .md-code-inline:before,a.lk-green:visited .md-code-inline:before{background-color:#1bc211}.lk-green .lk-link:active,a.lk-green:active{outline-color:#1bc211}.lk-green .lk-link:hover,a.lk-green:hover{border-bottom-color:#1bc211}.lk-green.lk-icon:hover{color:#1bc211}.lk-pink-light .lk-link,a.lk-pink-light{color:#ea6c93}.lk-pink-light .lk-link:visited,a.lk-pink-light:visited{background-color:rgba(234,108,147,.04)}.lk-pink-light .lk-link:visited .md-code-inline:before,a.lk-pink-light:visited .md-code-inline:before{background-color:#ea6c93}.lk-pink-light .lk-link:active,a.lk-pink-light:active{outline-color:#ea6c93}.lk-pink-light .lk-link:hover,a.lk-pink-light:hover{border-bottom-color:#ea6c93}.lk-pink-light.lk-icon:hover{color:#ea6c93}.lk-black .lk-link,a.lk-black{color:#333}.lk-black .lk-link:visited,a.lk-black:visited{background-color:rgba(51,51,51,.04)}.lk-black .lk-link:visited .md-code-inline:before,a.lk-black:visited .md-code-inline:before{background-color:#333}.lk-black .lk-link:active,a.lk-black:active{outline-color:#333}.lk-black .lk-link:hover,a.lk-black:hover{border-bottom-color:#333}.lk-black.lk-icon:hover{color:#333}.lk-gray .lk-link,a.lk-gray{color:#999}.lk-gray .lk-link:visited,a.lk-gray:visited{background-color:rgba(153,153,153,.04)}.lk-gray .lk-link:visited .md-code-inline:before,a.lk-gray:visited .md-code-inline:before{background-color:#999}.lk-gray .lk-link:active,a.lk-gray:active{outline-color:#999}.lk-gray .lk-link:hover,a.lk-gray:hover{border-bottom-color:#999}.lk-gray.lk-icon:hover{color:#999}.lk-white .lk-link,a.lk-white{color:#fcfcfc}.lk-white .lk-link:visited,a.lk-white:visited{background-color:rgba(252,252,252,.04)}.lk-white .lk-link:visited .md-code-inline:before,a.lk-white:visited .md-code-inline:before{background-color:#fcfcfc}.lk-white .lk-link:active,a.lk-white:active{outline-color:#fcfcfc}.lk-white .lk-link:hover,a.lk-white:hover{border-bottom-color:#fcfcfc}.lk-white.lk-icon:hover{color:#fcfcfc}.lk-orange .lk-link,a.lk-orange{color:#f3720d}.lk-orange .lk-link:visited,a.lk-orange:visited{background-color:rgba(243,114,13,.04)}.lk-orange .lk-link:visited .md-code-inline:before,a.lk-orange:visited .md-code-inline:before{background-color:#f3720d}.lk-orange .lk-link:active,a.lk-orange:active{outline-color:#f3720d}.lk-orange .lk-link:hover,a.lk-orange:hover{border-bottom-color:#f3720d}.lk-orange.lk-icon:hover{color:#f3720d}.lk-lilly .lk-link,a.lk-lilly{color:#7d5cff}.lk-lilly .lk-link:visited,a.lk-lilly:visited{background-color:rgba(125,92,255,.04)}.lk-lilly .lk-link:visited .md-code-inline:before,a.lk-lilly:visited .md-code-inline:before{background-color:#7d5cff}.lk-lilly .lk-link:active,a.lk-lilly:active{outline-color:#7d5cff}.lk-lilly .lk-link:hover,a.lk-lilly:hover{border-bottom-color:#7d5cff}.lk-lilly.lk-icon:hover{color:#7d5cff}.lk-blue .lk-link,a.lk-blue{color:#1a4d7f}.lk-blue .lk-link:visited,a.lk-blue:visited{background-color:rgba(26,77,127,.04)}.lk-blue .lk-link:visited .md-code-inline:before,a.lk-blue:visited .md-code-inline:before{background-color:#1a4d7f}.lk-blue .lk-link:active,a.lk-blue:active{outline-color:#1a4d7f}.lk-blue .lk-link:hover,a.lk-blue:hover{border-bottom-color:#1a4d7f}.lk-blue.lk-icon:hover{color:#1a4d7f}.lk-inherited .lk-link,a.lk-inherited{color:inherit}.lk-inherited .lk-link:active,a.lk-inherited:active{outline-color:inherit}.lk-inherited .lk-link:hover,a.lk-inherited:hover{border-bottom-color:inherit}.lk-inherited.lk-icon:hover{color:inherit}.lk-twitter .lk-link,a.lk-twitter{color:#55acee}.lk-twitter .lk-link:visited,a.lk-twitter:visited{background-color:rgba(85,172,238,.04)}.lk-twitter .lk-link:visited .md-code-inline:before,a.lk-twitter:visited .md-code-inline:before{background-color:#55acee}.lk-twitter .lk-link:active,a.lk-twitter:active{outline-color:#55acee}.lk-twitter .lk-link:hover,a.lk-twitter:hover{border-bottom-color:#55acee}.lk-twitter.lk-icon:hover{color:#55acee}.lk-facebook .lk-link,a.lk-facebook{color:#3b5998}.lk-facebook .lk-link:visited,a.lk-facebook:visited{background-color:rgba(59,89,152,.04)}.lk-facebook .lk-link:visited .md-code-inline:before,a.lk-facebook:visited .md-code-inline:before{background-color:#3b5998}.lk-facebook .lk-link:active,a.lk-facebook:active{outline-color:#3b5998}.lk-facebook .lk-link:hover,a.lk-facebook:hover{border-bottom-color:#3b5998}.lk-facebook.lk-icon:hover{color:#3b5998}.lk-clean{background-color:transparent}.lk-chrome:hover{color:#4989f4}.lk-teal .lk-link,a.lk-teal{color:#00a19c}.lk-teal .lk-link:visited,a.lk-teal:visited{background-color:rgba(0,161,156,.04)}.lk-teal .lk-link:visited .md-code-inline:before,a.lk-teal:visited .md-code-inline:before{background-color:#00a19c}.lk-teal .lk-link:active,a.lk-teal:active{outline-color:#00a19c}.lk-teal .lk-link:hover,a.lk-teal:hover{border-bottom-color:#00a19c}.lk-teal.lk-icon:hover{color:#00a19c}table{width:100%;border-spacing:0;border-collapse:separate}td,th{padding:8px}@media only screen and (max-width:950px){.table-responsive{display:block}.table-responsive>thead{display:none}.table-responsive>tbody,.table-responsive>tfoot{display:block}.table-responsive>tbody>tr,.table-responsive>tfoot>tr{display:block;background-color:rgba(203,204,188,.1);margin-bottom:30px}.table-responsive>tbody>tr:nth-child(even),.table-responsive>tfoot>tr:nth-child(even){background-color:rgba(203,204,188,.15)}.table-responsive>tbody>tr:last-child,.table-responsive>tfoot>tr:last-child{margin-bottom:0}.table-responsive>tbody>tr>td,.table-responsive>tfoot>tr>td{display:block;text-align:left}.table-responsive>tbody>tr>td:before,.table-responsive>tfoot>tr>td:before{display:block;content:attr(data-label);color:#555;font-size:13px;margin:0 0 5px}.table-responsive .table-responsive-hide{display:none}}.c-oreilly-teal{color:#00a19c}.c-yellow-highlight{color:#ffe270}.c-dark-orange{color:#f3720d}.c-pink{color:#e92c6c}.c-purple{color:#900070}.c-blue{color:#1a4d7f}.c-dark-turquoise{color:#1686a2}.c-dark-green{color:#1bc211}.c-white{color:#fcfcfc}.c-gray{color:#b7b7b7}.c-lilly{color:#7d5cff}.c-teal{color:#3aca96}.c-bg-oreilly-teal{background-color:#00a19c}.c-bg-yellow-highlight{background-color:#ffe270}.c-bg-dark-orange{background-color:#f3720d}.c-bg-pink{background-color:#e92c6c}.c-bg-purple{background-color:#900070}.c-bg-blue{background-color:#1a4d7f}.c-bg-dark-turquoise{background-color:#1686a2}.c-bg-dark-green{background-color:#1bc211}.c-bg-white{background-color:#fcfcfc}.c-bg-gray{background-color:#b7b7b7}.c-bg-lilly{background-color:#7d5cff}.c-bg-teal{background-color:#3aca96}.tj-emoji{width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.dc-header{margin-bottom:60px}.dc-heading{text-align:center;font-size:4em;padding:0 10px;margin-top:0;margin-bottom:10px}.dc-role{line-height:26px;padding:0 20px;margin-top:10px;text-align:center;font-style:italic;color:#cbccbc}.dc-colored{background:#f6f6f6;border-top:9px solid rgba(125,92,255,.5)}.md-markdown blockquote,.md-markdown code,.md-markdown ol,.md-markdown p,.md-markdown table,.md-markdown ul{max-width:800px}.md-markdown blockquote:not(.twitter-tweet){margin:0;padding:20px 0;border:none;border-top:5px solid rgba(0,0,0,.05);border-bottom:5px solid rgba(0,0,0,.05)}.md-markdown blockquote:not(.twitter-tweet) h1,.md-markdown blockquote:not(.twitter-tweet) h2,.md-markdown blockquote:not(.twitter-tweet) h3,.md-markdown blockquote:not(.twitter-tweet) h4,.md-markdown blockquote:not(.twitter-tweet) h5,.md-markdown blockquote:not(.twitter-tweet) h6{margin:-20px 0;padding:20px 0}.md-markdown blockquote:not(.twitter-tweet) .md-code-block{margin:0}.md-markdown blockquote:not(.twitter-tweet) .md-code-block:last-child{margin-bottom:-20px}.md-markdown img:first-child{margin-top:0}.md-markdown img:last-child{margin-bottom:0}.md-markdown p:first-child{margin-top:0}.md-markdown p:last-child{margin-bottom:0}.md-markdown .md-code-block+ol,.md-markdown .md-code-block+ul,.md-markdown ol+.md-code-block,.md-markdown ul+.md-code-block{margin-top:35px}.md-markdown a:not(.md-heading){color:#e92c6c;border-bottom:1px solid transparent;background-color:rgba(255,255,255,.04)}.md-markdown a:not(.md-heading) .md-code-inline{position:relative}.md-markdown a:not(.md-heading) .md-code-inline:only-child{display:inline-block;line-height:17px}.md-markdown a:not(.md-heading) .md-code-inline:before{content:”;position:absolute;background-color:#f1e05a;top:0;left:0;right:0;bottom:0;opacity:.04}.md-markdown a:not(.md-heading):visited{background-color:rgba(233,44,108,.04)}.md-markdown a:not(.md-heading):visited .md-code-inline:before{background-color:#e92c6c}.md-markdown a:not(.md-heading):hover{border-bottom:1px solid #e92c6c}.md-markdown thead{background-color:#e0e0e0}.md-markdown tbody{background-color:#f6f6f6}.md-markdown tbody tr:nth-child(even){background-color:#f9f9f9}.md-markdown h1,.md-markdown h2,.md-markdown h3,.md-markdown h4,.md-markdown h5,.md-markdown h6{padding:10px 0}.md-markdown h1:first-child,.md-markdown h2:first-child,.md-markdown h3:first-child,.md-markdown h4:first-child,.md-markdown h5:first-child,.md-markdown h6:first-child{margin-top:0}.md-markdown h1:last-child,.md-markdown h2:last-child,.md-markdown h3:last-child,.md-markdown h4:last-child,.md-markdown h5:last-child,.md-markdown h6:last-child{margin-bottom:0}.md-markdown iframe{display:block;margin:35px auto}.md-markdown iframe:first-child{margin-top:0}.md-markdown iframe:last-child{margin-bottom:0}.md-markdown li>p:only-child{display:inline}.md-markdown ul{list-style-type:none}.md-markdown ul>li:before{content:’◯’;margin-right:5px}.md-heading{color:inherit}.md-markdown-inline{display:inline}.md-markdown-inline p{display:inline;line-height:initial}.md-code-block,.ocha-highlighted{margin:0 -20px}.md-code-block{padding:10px 40px;line-height:24px}.ocha-code-block{padding:18px 50px}.md-markdown:not(.mm-content-html) .md-code-block+blockquote{max-width:inherit!important;margin:0 -20px;padding-left:20px;padding-right:20px}.md-code-block .md-code{display:block}.md-markdown-summary p{margin:10px 0}@media only screen and (min-width:768px){.md-markdown h1,.md-markdown h2,.md-markdown h3,.md-markdown h4,.md-markdown h5,.md-markdown h6{margin-left:-40px;margin-right:-40px;padding:10px 40px}.md-code-block,.ocha-highlighted{margin:0 -40px}.md-markdown:not(.mm-content-html) .md-code-block+blockquote{margin:0 -40px;padding-left:40px;padding-right:40px}}@media only screen and (min-width:1300px){.md-markdown blockquote,.md-markdown code,.md-markdown ol,.md-markdown p,.md-markdown table,.md-markdown ul{max-width:900px}}@media only screen and (min-width:1400px){.md-markdown blockquote,.md-markdown code,.md-markdown ol,.md-markdown p,.md-markdown table,.md-markdown ul{max-width:1000px}.md-code-block,.md-markdown:not(.mm-content-html) .md-code-block+blockquote,.ocha-highlighted{margin:0 -400px 0 -40px}}.md-markdown-large blockquote,.md-markdown-large code,.md-markdown-large ol,.md-markdown-large p,.md-markdown-large table,.md-markdown-large ul{max-width:inherit}.md-footnotes{margin-top:80px;padding:20px 0;border-top:1px dashed #cbccbc}.md-footnote{margin:0;padding:8px 0;font-size:14px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.md-footnote p{line-height:16px}.md-footnote-anchor{padding:2px 6px;margin-right:10px;text-align:center;font-weight:700;color:#e92c6c}.ly-custom-subheading .md-footnote-anchor,.ly-lean .md-footnote-anchor{font-family:Merriweather,Georgia,serif}.md-markdown a.md-footnote-anchor{border:1px solid #e92c6c}.md-markdown a.md-footnote-anchor:hover{background-color:#e92c6c;color:#fcfcfc}.md-footnote-ref{margin-left:1px;margin-right:3px}.md-markdown a.md-footnote-ref{border-bottom:1px dotted}.md-code-block,.md-code-inline{-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;background:#fcfcf5;color:#4d4d4c}.md-code{padding:8px 10px}.md-code-inline{padding:0 6px}a .md-code{color:inherit}.md-code-comment{color:#8e908c}.md-code-attribute,.md-code-built_in,.md-code-constant,.md-code-literal,.md-code-number,.md-code-params,.md-code-pragma,.md-code-preprocessor,.md-code-regexp,.md-code-tag,.md-code-variable,.md-lang-css .md-code-class,.md-lang-css .md-code-id,.md-lang-css .md-code-pseudo,.md-lang-html .md-code-doctype,.md-lang-ruby .md-code-constant,.md-lang-xml .md-code-doctype,.md-lang-xml .md-code-pi,.md-lang-xml .md-code-tag .md-code-title,color #c82829{color:#f5871f}.md-lang-css .md-code-rule .md-code-attribute,.md-lang-ruby .md-code-class .md-code-title{color:#eab700}.md-code-header,.md-code-inheritance,.md-code-name,.md-code-string,.md-code-value,.md-lang-ruby .md-code-symbol,.md-lang-xml .md-code-cdata{color:#718c00}.md-code-title,.md-lang-css .md-code-hexcolor{color:#3e999f}.md-code-function,.md-lang-coffeescript .md-code-title,.md-lang-javascript .md-code-title,.md-lang-perl .md-code-sub,.md-lang-python .md-code-decorator,.md-lang-python .md-code-title,.md-lang-ruby .md-code-function .md-code-title,.md-lang-ruby .md-code-title .md-code-keyword{color:#4271ae}.md-code-keyword,.md-lang-javascript .md-code-function{color:#8959a8}.md-lang-coffeescript .md-lang-javascript,.md-lang-javascript .md-lang-xml,.md-lang-tex .md-code-formula,.md-lang-xml .md-code-cdata,.md-lang-xml .md-lang-css,.md-lang-xml .md-lang-javascript,.md-lang-xml .vbscript{opacity:.5}.md-code-deletion{background-color:rgba(244,0,30,.05);color:#f4001e}.md-code-addition{background-color:rgba(27,194,17,.05);color:#1bc211}.md-mark{background-color:rgba(255,226,112,.5);color:inherit}.md-mark span{color:inherit}.md-heading-hover{cursor:pointer;background-color:rgba(22,134,162,.1)}.mde-text-left{text-align:left}.mde-text-center{text-align:center}.mde-text-right{text-align:right}.mde-size-small{font-size:12px}.mde-size-small,.mde-size-small p{line-height:12px}.mde-size-large{font-size:36px}.mde-size-large,.mde-size-large p{line-height:36px}.mde-size-giant{font-size:72px}.mde-size-giant,.mde-size-giant p{line-height:72px}.mde-clearfix:after{content:’ ‘;display:block;visibility:hidden;clear:both;font-size:0;height:0}.mde-quote{margin:0;padding:20px 0;border:none;border-top:5px solid rgba(0,0,0,.05);border-bottom:5px solid rgba(0,0,0,.05)}.mde-core{font-family:’Helvetica Neue’,HelveticaNeue,TeXGyreHeros,FreeSans,’Nimbus Sans L’,’Liberation Sans’,Helvetica,Arial,sans-serif}.mde-mono{font-family:Consolas,Menlo,Monaco,’Lucida Console’,’Liberation Mono’,’DejaVu Sans Mono’,’Bitstream Vera Sans Mono’,’Courier New’,monospace,serif}.ly-custom-heading .mde-heading,.ly-lean .mde-heading{font-family:Neuton,’Hoefler Text’,Palatino,Baskerville,Georgia,’Times New Roman’,serif}.ly-custom-subheading .mde-subheading,.ly-lean .mde-subheading{font-family:Merriweather,Georgia,serif}.mde-pad-0{padding:0}.mde-pad-5{padding:5px}.mde-pad-10{padding:10px}.mde-pad-15{padding:15px}.mde-pad-20{padding:20px}.mde-pad-25{padding:25px}.mde-pad-30{padding:30px}.mde-pad-50{padding:50px}.mde-mar-0{margin:0}.mde-mar-5{margin:5px}.mde-mar-10{margin:10px}.mde-mar-15{margin:15px}.mde-mar-20{margin:20px}.mde-mar-25{margin:25px}.mde-mar-30{margin:30px}.mde-mar-50{margin:50px}@media only screen and (min-width:900px){.mde-left{float:left}.mde-right{float:right}.mde-inline{display:inline-block;vertical-align:top}.mde-20{max-width:20%}.mde-25{max-width:25%}.mde-33{max-width:33.3333333333%}.mde-50{max-width:50%}.mde-66{max-width:66.6666666666%}.mde-75{max-width:75%}}.twitter-tweet-figure{background:0 0;padding:0}.twitter-tweet-figure:before{content:none}.twitter-tweet-figure .twitter-tweet{margin:0 auto}blockquote.twitter-tweet{overflow:hidden;color:#1c2022;background-color:#fff;border:1px solid #e1e8ed;border-radius:4px;width:500px;max-width:100%;min-width:220px;padding:1.25rem 1.25rem .725rem}blockquote.twitter-tweet:before{content:none}blockquote.twitter-tweet p{white-space:pre-wrap;font:16px/1.4 Helvetica,Roboto,’Segoe UI’,Calibri,’Helvetica Neue’,HelveticaNeue,TeXGyreHeros,FreeSans,’Nimbus Sans L’,’Liberation Sans’,Helvetica,Arial,sans-serif}blockquote.twitter-tweet a,blockquote.twitter-tweet a:visited{color:#2b7bb9}.at-header{padding:20px 0 80px;margin-bottom:0;min-height:250px;position:relative;background-repeat:no-repeat;background-position:center;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;background-color:#d9eaee}.at-header code{color:inherit;background-color:transparent}.at-title-wrapper{text-align:center;padding:0 20px;margin:0 10px}.at-title{display:inline;margin:0;padding:0;font-size:2.6em;line-height:1.1em;mix-blend-mode:hard-light;background-color:rgba(22,134,162,.8);color:#fcfcfc}.ly-custom-heading .at-title,.ly-lean .at-title{font-size:3em}.at-title .tj-emoji{mix-blend-mode:difference}.at-actions{height:35px;text-align:right}.at-teaser{margin-top:0;padding:0;text-align:left;color:inherit}.ly-custom-subheading .at-teaser,.ly-lean .at-teaser{font-family:Merriweather,Georgia,serif}.at-section{padding:20px}.at-section:empty{padding:0}.at-header-tags{margin:30px 20px}.at-header-tags .tg-tag-item{color:#fcfcfc}.at-header-tags .tg-tag{background-color:rgba(85,85,85,.7)}@supports (mix-blend-mode:hard-light){.at-header-tags .tg-tag{mix-blend-mode:hard-light;background-color:rgba(144,0,112,.5)}}.at-siblings{margin:0 20px}.at-editor-note{background-color:rgba(250,238,241,.5)}.at-editor-note:after{display:block;text-align:right;font-style:italic;content:’— Editor’s note.’;margin-top:10px}.ly-custom-subheading .at-editor-note:after,.ly-lean .at-editor-note:after{font-family:Merriweather,Georgia,serif}.at-body{position:relative}.at-body:before{position:absolute;left:0;right:0;bottom:-4px;height:4px;content:”;background:-webkit-linear-gradient(left,#fcfcfc 0,#ffe270 66%,#e92c6c 100%);background:-moz-linear-gradient(left,#fcfcfc 0,#ffe270 66%,#e92c6c 100%);background:-o-linear-gradient(left,#fcfcfc 0,#ffe270 66%,#e92c6c 100%);background:-ms-linear-gradient(left,#fcfcfc 0,#ffe270 66%,#e92c6c 100%);background:linear-gradient(to right,#fcfcfc 0,#ffe270 66%,#e92c6c 100%);max-width:800px;margin:0 20px}.at-subscribe{margin:0 20px 40px}@media screen and (min-width:768px){.at-header{padding-bottom:50px}.at-header-tags{position:absolute;right:7px;top:7px;margin:0}.at-header-tags .tg-tag-item{display:block;text-align:right;margin-right:0;color:#fcfcfc}.at-header-tags .tg-tag{display:inline-block;background-color:rgba(85,85,85,.7)}@supports (mix-blend-mode:hard-light){.at-header-tags .tg-tag{mix-blend-mode:hard-light;background-color:rgba(144,0,112,.5)}}.at-title-wrapper{margin-left:0;margin-right:0;max-width:75%;text-align:left}.at-section{padding:20px 40px}.at-body:before{margin:0 40px}.at-subscribe{margin:0 40px 40px;max-width:800px}.at-siblings{max-width:800px;margin:0 40px}.at-title{font-size:3em}.ly-custom-heading .at-title{font-size:4em}}@media screen and (min-width:1200px){.at-container .de-sidebar{padding-top:20px}}@media screen and (min-width:1400px){.at-body:before,.at-siblings,.at-subscribe{max-width:1000px}}
Source: Pony Foo