{"componentChunkName":"component---src-templates-blog-post-js","path":"/thoughts-about-productivity","result":{"data":{"markdownRemark":{"html":"<h1>Thoughts About Productivity</h1>\n<h2>Distrative</h2>\n<p>Spot any steps in thw workflow that could easily distract from your work. For example, a developer might occarually run an end to end test. This e2e srcipts need few steps to complete. </p>\n<ol>\n<li>install dependencies</li>\n<li>update webdriver</li>\n<li>start webdriver</li>\n<li>run the test scripts\nThe steps might look simple and easy to follow. But to an ordanary developer like myself, can only vaguely remember how to do this few weeks later. So what ends up is, I alwasy need to check the README or whatever that document the process. This is a distraction. A distraction will end up lots of mental cost, including context switching.\nA developer might developing a feature and just want to know wheather his code will pass the e2e tests, but now he has forced to switch context to learn how to run the tests again.\nIf these steps can be run in a single command, like <code class=\"language-text\">npm run e2e-test</code>, then it is a way better improvement in terms of distraction. A single command is way easy to remember than a sequnce of commands.</li>\n</ol>\n<p>Scripting all simple process if possible.</p>","frontmatter":{"date":"August 08, 2018","path":"/thoughts-about-productivity","tags":["productivity"],"title":"Thoughts About Productivity"}}},"pageContext":{"prev":{"excerpt":"Looking At The Root Problem Sometime when we are working on a hard problem, we will kind of stuck in the middle and found lots of hacky way to overcome the problem. But lots of time, the solution is not perfect and you need to keep coming back cause…","html":"<h1>Looking At The Root Problem</h1>\n<p>Sometime when we are working on a hard problem, we will kind of stuck in the middle and found lots of hacky way to overcome the problem. But lots of time, the solution is not perfect and you need to keep coming back cause sometime it simply doesn't work. Sometimes, you need to look at the big picture, it might solve the problem entirely.</p>\n<p>Here is an example, the product I am working on has to support i18n. Means need to support multiple languages. The problem we have is we don't know when we will recieve the translations. If the translation doesn't come back by the time we ship our code, user will see some missing string when viewing in the languages other then English.</p>\n<p>To overcome this problem, we come up with an idea by adding fallback logic in our code base. If user is not viewing English, then we inject the missing translation in English. This works well, but it is time consuming. Adding the fallback logic is time consuming, removing the logic when translation came back is time consuming too.</p>\n<p>By looking at the problem again, we found we can simply using webpack plugin to merge the translation file, all the missing string in the translation files will be replace with English string. This only took me few hours to implement, but the on going cost of adding and removing fallback logic is uncountable.</p>","id":"5ee5b110-e95b-5143-a043-a56280d46113","timeToRead":1,"frontmatter":{"date":"2018-08-09T06:34:51.232Z","path":"/looking-at-the-root-problem","tags":["probelm solving"],"title":"Looking At The Root Problem"}},"next":{"excerpt":"I really like the idea to embed a chart in the makedown with a very simple and readable syntax. And gatsby already have a plugin for it. gatsby-remark-graph This is a test chart with mermaid plugin.","html":"<p>I really like the idea to embed a chart in the makedown with a very simple and readable syntax. And gatsby already have a plugin for it. <a href=\"https://www.gatsbyjs.org/packages/gatsby-remark-graph/\">gatsby-remark-graph</a></p>\n<p>This is a test chart with mermaid plugin.</p>\n<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1583150209915\" width=\"407.8046875\" xmlns=\"http://www.w3.org/2000/svg\" height=\"166.71875\" viewBox=\"0 0 407.8046875 166.71875\"><style>#mermaid-1583150209915 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}#mermaid-1583150209915 .label text{fill:#333}#mermaid-1583150209915 .node rect,#mermaid-1583150209915 .node circle,#mermaid-1583150209915 .node ellipse,#mermaid-1583150209915 .node polygon,#mermaid-1583150209915 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-1583150209915 .node .label{text-align:center}#mermaid-1583150209915 .node.clickable{cursor:pointer}#mermaid-1583150209915 .arrowheadPath{fill:#333}#mermaid-1583150209915 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-1583150209915 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-1583150209915 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-1583150209915 .cluster text{fill:#333}#mermaid-1583150209915 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-1583150209915 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-1583150209915 text.actor{fill:#000;stroke:none}#mermaid-1583150209915 .actor-line{stroke:grey}#mermaid-1583150209915 .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#mermaid-1583150209915 .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#mermaid-1583150209915 #arrowhead{fill:#333}#mermaid-1583150209915 .sequenceNumber{fill:#fff}#mermaid-1583150209915 #sequencenumber{fill:#333}#mermaid-1583150209915 #crosshead path{fill:#333 !important;stroke:#333 !important}#mermaid-1583150209915 .messageText{fill:#333;stroke:none}#mermaid-1583150209915 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-1583150209915 .labelText{fill:#000;stroke:none}#mermaid-1583150209915 .loopText{fill:#000;stroke:none}#mermaid-1583150209915 .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#ccf}#mermaid-1583150209915 .note{stroke:#aa3;fill:#fff5ad}#mermaid-1583150209915 .noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}#mermaid-1583150209915 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-1583150209915 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-1583150209915 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-1583150209915 .mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .section{stroke:none;opacity:0.2}#mermaid-1583150209915 .section0{fill:rgba(102,102,255,0.49)}#mermaid-1583150209915 .section2{fill:#fff400}#mermaid-1583150209915 .section1,#mermaid-1583150209915 .section3{fill:#fff;opacity:0.2}#mermaid-1583150209915 .sectionTitle0{fill:#333}#mermaid-1583150209915 .sectionTitle1{fill:#333}#mermaid-1583150209915 .sectionTitle2{fill:#333}#mermaid-1583150209915 .sectionTitle3{fill:#333}#mermaid-1583150209915 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-1583150209915 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .grid path{stroke-width:0}#mermaid-1583150209915 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-1583150209915 .task{stroke-width:2}#mermaid-1583150209915 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .taskText:not([font-size]){font-size:11px}#mermaid-1583150209915 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-1583150209915 .task.clickable{cursor:pointer}#mermaid-1583150209915 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209915 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209915 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209915 .taskText0,#mermaid-1583150209915 .taskText1,#mermaid-1583150209915 .taskText2,#mermaid-1583150209915 .taskText3{fill:#fff}#mermaid-1583150209915 .task0,#mermaid-1583150209915 .task1,#mermaid-1583150209915 .task2,#mermaid-1583150209915 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-1583150209915 .taskTextOutside0,#mermaid-1583150209915 .taskTextOutside2{fill:#000}#mermaid-1583150209915 .taskTextOutside1,#mermaid-1583150209915 .taskTextOutside3{fill:#000}#mermaid-1583150209915 .active0,#mermaid-1583150209915 .active1,#mermaid-1583150209915 .active2,#mermaid-1583150209915 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-1583150209915 .activeText0,#mermaid-1583150209915 .activeText1,#mermaid-1583150209915 .activeText2,#mermaid-1583150209915 .activeText3{fill:#000 !important}#mermaid-1583150209915 .done0,#mermaid-1583150209915 .done1,#mermaid-1583150209915 .done2,#mermaid-1583150209915 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-1583150209915 .doneText0,#mermaid-1583150209915 .doneText1,#mermaid-1583150209915 .doneText2,#mermaid-1583150209915 .doneText3{fill:#000 !important}#mermaid-1583150209915 .crit0,#mermaid-1583150209915 .crit1,#mermaid-1583150209915 .crit2,#mermaid-1583150209915 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-1583150209915 .activeCrit0,#mermaid-1583150209915 .activeCrit1,#mermaid-1583150209915 .activeCrit2,#mermaid-1583150209915 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-1583150209915 .doneCrit0,#mermaid-1583150209915 .doneCrit1,#mermaid-1583150209915 .doneCrit2,#mermaid-1583150209915 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-1583150209915 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-1583150209915 .milestoneText{font-style:italic}#mermaid-1583150209915 .doneCritText0,#mermaid-1583150209915 .doneCritText1,#mermaid-1583150209915 .doneCritText2,#mermaid-1583150209915 .doneCritText3{fill:#000 !important}#mermaid-1583150209915 .activeCritText0,#mermaid-1583150209915 .activeCritText1,#mermaid-1583150209915 .activeCritText2,#mermaid-1583150209915 .activeCritText3{fill:#000 !important}#mermaid-1583150209915 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-1583150209915 g.classGroup text .title{font-weight:bolder}#mermaid-1583150209915 g.clickable{cursor:pointer}#mermaid-1583150209915 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-1583150209915 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-1583150209915 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-1583150209915 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-1583150209915 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-1583150209915 .dashed-line{stroke-dasharray:3}#mermaid-1583150209915 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209915 .commit-id,#mermaid-1583150209915 .commit-msg,#mermaid-1583150209915 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209915 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px}#mermaid-1583150209915 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-1583150209915 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-1583150209915 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-1583150209915 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-1583150209915 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-1583150209915 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-1583150209915 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-1583150209915 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-1583150209915 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-1583150209915 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n\n#mermaid-1583150209915 .node rect { fill: cornflowerblue; }\n:root { --mermaid-font-family: \"trebuchet ms\", verdana, arial;}</style><style>#mermaid-1583150209915 {\n    color: rgb(0, 0, 0);\n    font: normal normal 400 normal 16px / normal \"trebuchet ms\", verdana, arial;\n  }</style><g transform=\"translate(0, 0)\"><g class=\"output\"><g class=\"clusters\"></g><g class=\"edgePaths\"><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M63.015625,72.17198090692125L117.34375,38.859375L191.5234375,38.859375\" marker-end=\"url(#arrowhead15)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead15\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M63.015625,105.90614409307875L117.34375,139.21875L171.671875,139.21875\" marker-end=\"url(#arrowhead16)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead16\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M253.2421875,38.859375L298.09375,38.859375L340.5459038469809,72.5869086530191\" marker-end=\"url(#arrowhead17)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead17\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M273.09375,139.21875L298.09375,139.21875L340.5459038469809,106.4912163469809\" marker-end=\"url(#arrowhead18)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead18\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(117.34375,38.859375)\" style=\"opacity: 1;\"><g transform=\"translate(-29.328125,-9.5)\" class=\"label\"><foreignObject width=\"58.65625\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\">Links To</span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node\" id=\"A\" transform=\"translate(35.5078125,89.0390625)\" style=\"opacity: 1;\"><rect rx=\"0\" ry=\"0\" x=\"-27.5078125\" y=\"-19.5\" width=\"55.015625\" height=\"39\" class=\"label-container\"></rect><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-17.5078125,-9.5)\"><foreignObject width=\"35.015625\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Start</div></foreignObject></g></g></g><g class=\"node\" id=\"B\" transform=\"translate(222.3828125,38.859375)\" style=\"opacity: 1;\"><circle x=\"-30.859375\" y=\"-19.5\" r=\"30.859375\" class=\"label-container\"></circle><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-20.859375,-9.5)\"><foreignObject width=\"41.71875\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Circle</div></foreignObject></g></g></g><g class=\"node\" id=\"C\" transform=\"translate(222.3828125,139.21875)\" style=\"opacity: 1;\"><rect rx=\"5\" ry=\"5\" x=\"-50.7109375\" y=\"-19.5\" width=\"101.421875\" height=\"39\" class=\"label-container\"></rect><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-40.7109375,-9.5)\"><foreignObject width=\"81.421875\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Round Rect</div></foreignObject></g></g></g><g class=\"node\" id=\"D\" transform=\"translate(361.44921875,89.0390625)\" style=\"opacity: 1;\"><polygon points=\"38.35546875,0 76.7109375,-38.35546875 38.35546875,-76.7109375 0,-38.35546875\" transform=\"translate(-38.35546875,38.35546875)\" class=\"label-container\"></polygon><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-13.1171875,-9.5)\"><foreignObject width=\"26.234375\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">End</div></foreignObject></g></g></g></g></g></g></svg></div>\n<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1583150209922\" width=\"322.28125\" xmlns=\"http://www.w3.org/2000/svg\" height=\"233\" viewBox=\"0 0 322.28125 233\"><style>#mermaid-1583150209922 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}#mermaid-1583150209922 .label text{fill:#333}#mermaid-1583150209922 .node rect,#mermaid-1583150209922 .node circle,#mermaid-1583150209922 .node ellipse,#mermaid-1583150209922 .node polygon,#mermaid-1583150209922 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-1583150209922 .node .label{text-align:center}#mermaid-1583150209922 .node.clickable{cursor:pointer}#mermaid-1583150209922 .arrowheadPath{fill:#333}#mermaid-1583150209922 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-1583150209922 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-1583150209922 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-1583150209922 .cluster text{fill:#333}#mermaid-1583150209922 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-1583150209922 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-1583150209922 text.actor{fill:#000;stroke:none}#mermaid-1583150209922 .actor-line{stroke:grey}#mermaid-1583150209922 .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#mermaid-1583150209922 .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#mermaid-1583150209922 #arrowhead{fill:#333}#mermaid-1583150209922 .sequenceNumber{fill:#fff}#mermaid-1583150209922 #sequencenumber{fill:#333}#mermaid-1583150209922 #crosshead path{fill:#333 !important;stroke:#333 !important}#mermaid-1583150209922 .messageText{fill:#333;stroke:none}#mermaid-1583150209922 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-1583150209922 .labelText{fill:#000;stroke:none}#mermaid-1583150209922 .loopText{fill:#000;stroke:none}#mermaid-1583150209922 .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#ccf}#mermaid-1583150209922 .note{stroke:#aa3;fill:#fff5ad}#mermaid-1583150209922 .noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}#mermaid-1583150209922 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-1583150209922 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-1583150209922 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-1583150209922 .mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .section{stroke:none;opacity:0.2}#mermaid-1583150209922 .section0{fill:rgba(102,102,255,0.49)}#mermaid-1583150209922 .section2{fill:#fff400}#mermaid-1583150209922 .section1,#mermaid-1583150209922 .section3{fill:#fff;opacity:0.2}#mermaid-1583150209922 .sectionTitle0{fill:#333}#mermaid-1583150209922 .sectionTitle1{fill:#333}#mermaid-1583150209922 .sectionTitle2{fill:#333}#mermaid-1583150209922 .sectionTitle3{fill:#333}#mermaid-1583150209922 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-1583150209922 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .grid path{stroke-width:0}#mermaid-1583150209922 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-1583150209922 .task{stroke-width:2}#mermaid-1583150209922 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .taskText:not([font-size]){font-size:11px}#mermaid-1583150209922 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-1583150209922 .task.clickable{cursor:pointer}#mermaid-1583150209922 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209922 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209922 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-1583150209922 .taskText0,#mermaid-1583150209922 .taskText1,#mermaid-1583150209922 .taskText2,#mermaid-1583150209922 .taskText3{fill:#fff}#mermaid-1583150209922 .task0,#mermaid-1583150209922 .task1,#mermaid-1583150209922 .task2,#mermaid-1583150209922 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-1583150209922 .taskTextOutside0,#mermaid-1583150209922 .taskTextOutside2{fill:#000}#mermaid-1583150209922 .taskTextOutside1,#mermaid-1583150209922 .taskTextOutside3{fill:#000}#mermaid-1583150209922 .active0,#mermaid-1583150209922 .active1,#mermaid-1583150209922 .active2,#mermaid-1583150209922 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-1583150209922 .activeText0,#mermaid-1583150209922 .activeText1,#mermaid-1583150209922 .activeText2,#mermaid-1583150209922 .activeText3{fill:#000 !important}#mermaid-1583150209922 .done0,#mermaid-1583150209922 .done1,#mermaid-1583150209922 .done2,#mermaid-1583150209922 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-1583150209922 .doneText0,#mermaid-1583150209922 .doneText1,#mermaid-1583150209922 .doneText2,#mermaid-1583150209922 .doneText3{fill:#000 !important}#mermaid-1583150209922 .crit0,#mermaid-1583150209922 .crit1,#mermaid-1583150209922 .crit2,#mermaid-1583150209922 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-1583150209922 .activeCrit0,#mermaid-1583150209922 .activeCrit1,#mermaid-1583150209922 .activeCrit2,#mermaid-1583150209922 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-1583150209922 .doneCrit0,#mermaid-1583150209922 .doneCrit1,#mermaid-1583150209922 .doneCrit2,#mermaid-1583150209922 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-1583150209922 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-1583150209922 .milestoneText{font-style:italic}#mermaid-1583150209922 .doneCritText0,#mermaid-1583150209922 .doneCritText1,#mermaid-1583150209922 .doneCritText2,#mermaid-1583150209922 .doneCritText3{fill:#000 !important}#mermaid-1583150209922 .activeCritText0,#mermaid-1583150209922 .activeCritText1,#mermaid-1583150209922 .activeCritText2,#mermaid-1583150209922 .activeCritText3{fill:#000 !important}#mermaid-1583150209922 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-1583150209922 g.classGroup text .title{font-weight:bolder}#mermaid-1583150209922 g.clickable{cursor:pointer}#mermaid-1583150209922 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-1583150209922 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-1583150209922 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-1583150209922 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-1583150209922 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-1583150209922 .dashed-line{stroke-dasharray:3}#mermaid-1583150209922 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1583150209922 .commit-id,#mermaid-1583150209922 .commit-msg,#mermaid-1583150209922 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-1583150209922 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px}#mermaid-1583150209922 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-1583150209922 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-1583150209922 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-1583150209922 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-1583150209922 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-1583150209922 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-1583150209922 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-1583150209922 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-1583150209922 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-1583150209922 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n\n#mermaid-1583150209922 .node rect { fill: cornflowerblue; }\n:root { --mermaid-font-family: \"trebuchet ms\", verdana, arial;}</style><style>#mermaid-1583150209922 {\n    color: rgb(0, 0, 0);\n    font: normal normal 400 normal 16px / normal \"trebuchet ms\", verdana, arial;\n  }</style><g transform=\"translate(0, 0)\"><g class=\"output\"><g class=\"clusters\"></g><g class=\"edgePaths\"><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M49.885508130160275,92.63380112297648L88.484375,27.5L113.484375,27.5\" marker-end=\"url(#arrowhead9)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead9\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M63.484375,116.5L88.484375,116.5L122.34375,116.5\" marker-end=\"url(#arrowhead10)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead10\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g><g class=\"edgePath\" style=\"opacity: 1;\"><path class=\"path\" d=\"M49.885508130160275,140.36619887702352L88.484375,205.5L132.6796875,205.5\" marker-end=\"url(#arrowhead11)\" style=\"fill:none\"></path><defs><marker id=\"arrowhead11\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerUnits=\"strokeWidth\" markerWidth=\"8\" markerHeight=\"6\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowheadPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker></defs></g></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"\" style=\"opacity: 1;\"><g transform=\"translate(0,0)\" class=\"label\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node\" id=\"A\" transform=\"translate(35.7421875,116.5)\" style=\"opacity: 1;\"><circle x=\"-27.7421875\" y=\"-19.5\" r=\"27.7421875\" class=\"label-container\"></circle><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-17.7421875,-9.5)\"><foreignObject width=\"35.484375\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Agile</div></foreignObject></g></g></g><g class=\"node\" id=\"TDD\" transform=\"translate(213.8828125,27.5)\" style=\"opacity: 1;\"><rect rx=\"0\" ry=\"0\" x=\"-100.3984375\" y=\"-19.5\" width=\"200.796875\" height=\"39\" class=\"label-container\"></rect><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-90.3984375,-9.5)\"><foreignObject width=\"180.796875\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Test Driven Development</div></foreignObject></g></g></g><g class=\"node\" id=\"CI\" transform=\"translate(213.8828125,116.5)\" style=\"opacity: 1;\"><rect rx=\"0\" ry=\"0\" x=\"-91.5390625\" y=\"-19.5\" width=\"183.078125\" height=\"39\" class=\"label-container\"></rect><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-81.5390625,-9.5)\"><foreignObject width=\"163.078125\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Continuous Integration</div></foreignObject></g></g></g><g class=\"node\" id=\"CD\" transform=\"translate(213.8828125,205.5)\" style=\"opacity: 1;\"><rect rx=\"0\" ry=\"0\" x=\"-81.203125\" y=\"-19.5\" width=\"162.40625\" height=\"39\" class=\"label-container\"></rect><g class=\"label\" transform=\"translate(0,0)\"><g transform=\"translate(-71.203125,-9.5)\"><foreignObject width=\"142.40625\" height=\"19\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: inline-block; white-space: nowrap;\">Continuous Delivery</div></foreignObject></g></g></g></g></g></g></svg></div>","id":"2a0a38e8-da3d-52cb-9014-dc2ef1f0b66a","timeToRead":1,"frontmatter":{"date":"2018-08-06T23:53:19.791Z","path":"/hello-mermaid","tags":["mermaid"],"title":"Hello Mermaid"}}}}}